CS 410/510 – Szoftverfejlesztés órai jegyzet

Hivatkozás: 2. fejezet

A nagy kép

A szoftverfolyamat a szoftverrendszer fejlesztéséhez szükséges tevékenységek strukturált halmaza. Vegyük észre, hogy “szoftverfolyamatról” — nem pedig “szoftverfejlesztési folyamatról” — beszélünk.”

A szoftverfolyamatoknak sokféle fajtája létezik, de mindegyiket az alábbi négy alapvető tevékenységtípus alkotja:

  • Szoftver specifikáció – annak meghatározása, hogy a rendszernek mit kell tennie;
  • Szoftvertervezés és megvalósítás – a rendszer szervezetének meghatározása és a rendszer megvalósítása;
  • Szoftver validálás – annak ellenőrzése, hogy a rendszer azt teszi-e, amit az ügyfél akar;
  • Szoftverfejlesztés – a rendszer módosítása az ügyfél változó igényeinek megfelelően.

A szoftverfolyamat-modell egy folyamat absztrakt ábrázolása. Egy folyamat leírását mutatja be valamilyen meghatározott nézőpontból. Amikor szoftverfolyamatokat írunk le és tárgyalunk, általában az ezekben a folyamatokban végzett tevékenységekről, például egy adatmodell meghatározásáról, egy felhasználói felület megtervezéséről stb. és e tevékenységek sorrendjéről beszélünk.A folyamatleírások tartalmazhatnak továbbá:

  • termékeket, amelyek egy folyamattevékenység eredményei;
  • szerepeket, amelyek a folyamatban részt vevő személyek felelősségét tükrözik;
  • elő- és utófeltételeket, amelyek olyan állítások, amelyek egy folyamattevékenység végrehajtása vagy egy termék előállítása előtt és után igazak.

A tervvezérelt folyamatok olyan folyamatok, amelyekben az összes folyamattevékenységet előre megtervezik, és az előrehaladást ehhez a tervhez mérik. Az agilis folyamatokban a tervezés inkrementális, és a folyamatot könnyebb a változó vevői igényeknek megfelelően módosítani. A gyakorlatban a legtöbb gyakorlati folyamat mind a tervvezérelt, mind az agilis megközelítés elemeit tartalmazza.

Szoftverfolyamat-modellek

A vízesésmodell Tervvezérelt modell. A specifikáció, a szoftvertervezés, a megvalósítás, a tesztelés és a karbantartás különálló és elkülönült fázisai. Inkrementális fejlesztés A specifikáció, a fejlesztés és a validálás egymásba fonódik. A rendszer fejlesztése verziók (inkrementumok) sorozataként történik, és minden egyes verzió az előző verzióhoz képest új funkciókat ad hozzá. Lehet tervvezérelt vagy agilis. Integráció és konfiguráció Jelentős számú újrafelhasználható komponens/rendszer meglétén alapul. A rendszerfejlesztési folyamat ezeknek az összetevőknek a rendszerbe történő integrálására összpontosít, ahelyett, hogy a semmiből fejlesztené őket. Lehet tervvezérelt vagy agilis.

A gyakorlatban a legtöbb nagy rendszert olyan folyamat segítségével fejlesztik, amely az összes fenti modell elemeit tartalmazza.

A vízesésmodell

A vízesésmodellben külön azonosított fázisok vannak:

Követelményelemzés és -meghatározás A rendszer szolgáltatásait, korlátait és céljait a rendszer felhasználóival konzultálva határozzák meg. Ezután ezeket részletesen meghatározzák, és rendszerspecifikációként szolgálnak. Rendszer- és szoftvertervezés A rendszertervezési folyamat az átfogó rendszerarchitektúra kialakításával a követelményeket vagy hardver- vagy szoftverrendszerekhez rendeli hozzá. A szoftvertervezés magában foglalja az alapvető szoftverrendszer-absztrakciók és kapcsolataik azonosítását és leírását. Implementálás és egységtesztelés Ebben a szakaszban a szoftvertervezés programok vagy programegységek halmazaként valósul meg. Az egységtesztelés magában foglalja annak ellenőrzését, hogy az egyes egységek megfelelnek-e a specifikációnak. Integráció és rendszertesztelés Az egyes programegységeket vagy programokat integrálják és teljes rendszerként tesztelik, hogy megbizonyosodjanak arról, hogy a szoftverkövetelmények teljesülnek. A tesztelés után a szoftverrendszert átadják a megrendelőnek. Üzemeltetés és karbantartás Általában (bár nem feltétlenül) ez a leghosszabb életciklus-fázis. A rendszert telepítik és gyakorlati használatba veszik. A karbantartás magában foglalja az életciklus korábbi szakaszaiban fel nem fedezett hibák kijavítását, a rendszeregységek megvalósításának javítását és a rendszer szolgáltatásainak fejlesztését az új követelmények felfedezésével.

A vízesésmodell legfőbb hátránya, hogy a folyamat elindulása után nehéz a változtatásokat befogadni. Elvileg egy fázisnak be kell fejeződnie, mielőtt a következő fázisra léphetnénk. A vízesésmodell problémái a következők:

Nehéz kezelni a változásokat A projekt különálló szakaszokra való rugalmatlan felosztása megnehezíti a változó vevői igényekre való reagálást.Ezért ez a modell csak akkor megfelelő, ha a követelmények jól ismertek, és a változások meglehetősen korlátozottak lesznek a tervezési folyamat során. Kevés üzleti rendszer rendelkezik stabil követelményekkel. Nagyon kevés valós alkalmazás A vízesésmodellt leginkább olyan nagy rendszerfejlesztési projekteknél használják, ahol egy rendszert több helyszínen fejlesztenek.Ilyen körülmények között a vízesésmodell tervvezérelt jellege segíti a munka koordinálását.

Inkrementális fejlesztési modell

A inkrementális fejlesztés előnyei:

A változások alacsonyabb költségei A változó vevői igényekhez való alkalmazkodás költségei csökkennek. Sokkal kevesebb elemzést és dokumentációt kell újra elkészíteni, mint a vízeséses modell esetében. Gyakori visszajelzés Könnyebb visszajelzést kapni az ügyféltől az elvégzett fejlesztési munkáról. Az ügyfelek véleményezhetik a szoftver bemutatóit, és láthatják, hogy mennyi mindent valósítottak meg. Gyorsabb átadás A hasznos szoftver gyorsabb átadása és az ügyfélhez való eljuttatása lehetséges. Az ügyfelek hamarabb tudják használni és hasznosítani a szoftvert, mint a vízeséses eljárás során.

Az inkrementális fejlesztés problémái (a vezetés szempontjából):

A folyamat nem látható A vezetőknek rendszeres eredményekre van szükségük a haladás méréséhez. Ha a rendszereket gyorsan fejlesztik, nem költséghatékony olyan dokumentumokat készíteni, amelyek a rendszer minden egyes verzióját tükrözik. A rendszer struktúrája hajlamos romlani az új inkrementumok hozzáadásával Hacsak nem fordítanak időt és pénzt a szoftver javítását célzó refaktorálásra, a rendszeres változtatás hajlamos elrontani a szerkezetét. A további szoftvermódosítások beépítése egyre nehezebbé és költségesebbé válik.

Integráció és konfiguráció

Ez a megközelítés szisztematikus újrafelhasználáson alapul, ahol a rendszereket meglévő komponensekből vagy COTS (Commercial-off-the-shelf) rendszerekből integrálják.A folyamat szakaszai:

  • komponenselemzés;
  • követelmények módosítása;
  • rendszertervezés újrafelhasználással;
  • fejlesztés és integráció.

Az újrafelhasználás ma már számos típusú üzleti rendszer építésének standard megközelítése.

A szoftverkomponensek típusai:

  • Szolgáltatási szabványok szerint fejlesztett, távoli meghívásra elérhető webszolgáltatások.
  • Objektek gyűjteményei, amelyeket csomagként fejlesztenek egy komponens keretrendszerrel, például .NET vagy J2EE integrálására.
  • Egy adott környezetben való használatra konfigurált, önálló, kereskedelmi forgalomban kapható rendszerek (COTS).

Szoftverfolyamat-tevékenységek

A valódi szoftverfolyamatok technikai, együttműködési és vezetői tevékenységek egymásra épülő sorozatai, amelyek átfogó célja egy szoftverrendszer specifikálása, tervezése, megvalósítása és tesztelése.

A specifikáció, a fejlesztés, a validálás és az evolúció négy alapvető folyamattevékenységét a különböző fejlesztési folyamatokban különbözőképpen szervezik. A vízesésmodellben sorrendben szerveződnek, míg az inkrementális fejlesztésnél egymásra épülnek.

Szoftver specifikáció A rendszer működéséhez és fejlesztéséhez szükséges szolgáltatások, valamint a rendszer működésére és fejlesztésére vonatkozó korlátozások megállapításának folyamata. Követelménytervezési folyamat:

  • Megvalósíthatósági tanulmány: műszakilag és pénzügyileg megvalósítható-e a rendszer megépítése?
  • Követelmények kiváltása és elemzése: mit igényelnek vagy várnak el a rendszer érdekeltjei a rendszertől?
  • Követelményspecifikáció: a követelmények részletes meghatározása
  • Követelmények validálása: a követelmények érvényességének ellenőrzése

Szoftvertervezés és megvalósítás A rendszer specifikációjának futtatható rendszerré alakításának folyamata.

  • Szoftvertervezés: a specifikációt megvalósító szoftverstruktúra megtervezése;
  • Megvalósítás: e struktúra lefordítása futtatható programmá;

A tervezés és a megvalósítás tevékenységei szorosan kapcsolódnak egymáshoz, és átlapolhatók. A tervezési tevékenységek közé tartoznak:

  • Építészeti tervezés: a rendszer általános szerkezetének, a fő komponenseknek (néha alrendszereknek vagy moduloknak nevezik őket), azok kapcsolatainak és elosztásuk módjának meghatározása.
  • Interfésztervezés: a rendszer komponensei közötti interfészek meghatározása.
  • Komponenstervezés: Vegyük az egyes rendszerösszetevőket, és tervezzük meg, hogyan fognak működni.
  • Adatbázis-tervezés: tervezze meg a rendszer adatszerkezeteit és azt, hogy ezeket hogyan kell ábrázolni az adatbázisban.

Szoftverérvényesítés Az ellenőrzés és érvényesítés (V & V) célja annak bizonyítása, hogy a rendszer megfelel a specifikációjának és megfelel a rendszer megrendelőjének követelményeinek.

  • Validálás: a megfelelő terméket építjük-e (amit a megrendelő akar)?
  • Ellenőrzés: helyesen építjük-e a terméket?

A V & V magában foglalja az ellenőrzési és felülvizsgálati folyamatokat és a rendszer tesztelését. A rendszertesztelés magában foglalja a rendszer futtatását olyan tesztesetekkel, amelyek a rendszer által feldolgozandó valós adatok specifikációjából származnak. A tesztelés a leggyakrabban alkalmazott V & V tevékenység, és a következő szakaszokat foglalja magában:

  • Fejlesztési vagy komponenstesztelés: az egyes komponenseket egymástól függetlenül tesztelik; a komponensek lehetnek funkciók vagy objektumok, illetve ezek összefüggő csoportosításai.
  • Rendszertesztelés: a rendszer egészének tesztelése, különösen fontos a felmerülő tulajdonságok tesztelése.
  • Átvételi tesztelés: vevői adatokkal végzett tesztelés annak ellenőrzésére, hogy a rendszer megfelel-e a vevő igényeinek.

A szoftver fejlődése A szoftver eredendően rugalmas és változhat. Ahogy a követelmények a változó üzleti körülmények miatt változnak, az üzletet támogató szoftvernek is fejlődnie és változnia kell.Bár eddig volt egy elhatárolás a fejlesztés és az evolúció (karbantartás) között, ez egyre kevésbé releváns, mivel egyre kevesebb rendszer teljesen új.

A változással való megbirkózás

A változás minden nagy szoftverprojektben elkerülhetetlen.Az üzleti változások új és megváltozott rendszerkövetelményekhez vezetnekAz új technológiák új lehetőségeket nyitnak a megvalósítások javítására.A változó platformok alkalmazásváltozásokat igényelnek.A változás átdolgozáshoz vezet, így a változás költségei magukban foglalják mind az átdolgozást (pl.pl. a követelmények újraelemzése), valamint az új funkciók megvalósításának költségeit is.

Két stratégia az átdolgozás költségeinek csökkentésére:

Változáselkerülés A szoftverfolyamat olyan tevékenységeket tartalmaz, amelyek előre jelzik a lehetséges változásokat, mielőtt jelentős átdolgozásra lenne szükség. Például prototípus rendszert lehet fejleszteni, hogy a rendszer néhány fő jellemzőjét bemutassák az ügyfeleknek. Változás-tűrés A folyamatot úgy tervezik meg, hogy a változások viszonylag kis költséggel elviselhetők legyenek.Ez általában a növekményes fejlesztés valamilyen formáját foglalja magában. A javasolt változtatásokat olyan inkrementumokban lehet végrehajtani, amelyeket még nem fejlesztettek ki. Ha ez nem lehetséges, akkor csak egyetlen inkrementumot (a rendszer egy kis részét) kell módosítani a változás beépítése érdekében.

Szoftverprototípus

A prototípus egy rendszer kezdeti változata, amelyet koncepciók bemutatására és tervezési lehetőségek kipróbálására használnak. A prototípus felhasználható:

  • A követelménytervezési folyamatban, hogy segítse a követelmények kiváltását és érvényesítését;
  • A tervezési folyamatokban a lehetőségek feltárására és a felhasználói felület kialakítására;
  • A tesztelési folyamatban az egymás utáni tesztek futtatására.

A prototípus készítés előnyei:

  • A rendszer használhatóságának javítása.
  • A felhasználók valós igényeinek való jobb megfelelés.
  • A tervezés minőségének javítása.
  • A karbantarthatóság javítása.
  • A fejlesztési erőfeszítés csökkentése.

A prototípusok alapulhatnak gyors prototípus készítő nyelveken vagy eszközökön. A funkciók elhagyásával járhatnak:

  • A prototípusnak a termék azon területeire kell összpontosítania, amelyek nem jól ismertek;
  • A hibák ellenőrzése és helyreállítása nem szerepelhet a prototípusban;
  • A funkcionális és nem funkcionális követelmények, például a megbízhatóság és a biztonság helyett a funkcionális követelményekre összpontosít.

A prototípusokat a fejlesztés után el kell vetni, mivel nem jó alapot jelentenek egy gyártórendszer számára:

  • Lehet, hogy lehetetlen a rendszert úgy hangolni, hogy megfeleljen a nem funkcionális követelményeknek;
  • A prototípusok általában nem dokumentáltak;
  • A prototípus szerkezete általában a gyors változtatások miatt romlik;
  • A prototípus valószínűleg nem felel meg a szokásos szervezeti minőségi szabványoknak.

Inkrementális fejlesztés/szállítás

Ahelyett, hogy a rendszert egyetlen szállításként szállítanák, a fejlesztés és a szállítás inkrementumokra bomlik, és minden egyes inkrementum a szükséges funkciók egy részét szállítja.A felhasználói követelményeket rangsorolják, és a legmagasabb prioritású követelményeket a korai inkrementumok tartalmazzák.Amint egy inkrementum fejlesztése megkezdődött, a követelmények befagyasztásra kerülnek, bár a későbbi inkrementumok követelményei tovább fejlődhetnek.

A inkrementális szállítás előnyei:

  • A vevői értéket minden egyes inkrementummal át lehet adni, így a rendszer funkcionalitása korábban elérhetővé válik.
  • A korai inkrementumok prototípusként működnek, amelyek segítenek a későbbi inkrementumok követelményeinek megállapításában.
  • Kisebb a projekt teljes kudarcának kockázata.
  • A legmagasabb prioritású rendszerszolgáltatások általában a legtöbb tesztelést kapják.

Az inkrementális szállítás problémái:

  • A legtöbb rendszerhez alapvető eszközökre van szükség, amelyeket a rendszer különböző részei használnak. Mivel a követelményeket nem határozzák meg részletesen, amíg egy inkrementumot meg nem valósítanak, nehéz lehet azonosítani azokat a közös létesítményeket, amelyekre minden inkrementumnak szüksége van.
  • Az iteratív folyamatok lényege, hogy a specifikációt a szoftverrel együtt fejlesztik. Ez azonban sok szervezet beszerzési modelljével ellentétes, ahol a teljes rendszerspecifikáció a rendszerfejlesztési szerződés része.

Folyamatfejlesztés

Néhány szoftvercég fordult a szoftverfolyamatok fejlesztéséhez, hogy javítsa a szoftverek minőségét, csökkentse a költségeket vagy felgyorsítsa a fejlesztési folyamatokat. A folyamatfejlesztés a meglévő folyamatok megértését és megváltoztatását jelenti a termékminőség javítása és/vagy a költségek és a fejlesztési idő csökkentése érdekében.

Folyamatérettségi megközelítés A folyamat- és projektmenedzsment javítására és a helyes szoftverfejlesztési gyakorlat bevezetésére összpontosít. A folyamatérettségi szint azt tükrözi, hogy a szervezeti szoftverfejlesztési folyamatokban milyen mértékben vezették be a helyes műszaki és irányítási gyakorlatot. Agilis megközelítés Az iteratív fejlesztésre és a szoftverfolyamat általános költségeinek csökkentésére összpontosít. Az agilis módszerek elsődleges jellemzői a funkciók gyors átadása és a változó vevői igényekre való reagálás.

A folyamatfejlesztési tevékenységek egy visszacsatolási hurokkal rendelkező folyamatos ciklust alkotnak:

  • A szoftverfolyamat vagy a termék egy vagy több attribútumának mérése. Ezek a mérések egy alapszintet képeznek, amely segít eldönteni, hogy a folyamatfejlesztések hatékonyak voltak-e.
  • Elemzi a jelenlegi folyamatot, és azonosítja a szűk keresztmetszeteket.
  • Módosítsa a folyamatot az azonosított folyamat gyenge pontjainak kezelése érdekében. Ezeket bevezetik, és a ciklus folytatódik, hogy adatokat gyűjtsenek a változtatások hatékonyságáról.

Folyamatmérés

  • Ahol csak lehetséges, mennyiségi folyamatadatokat kell gyűjteni.
  • A folyamatméréseket a folyamatfejlesztések értékelésére kell használni.
  • A mérések közé tartozhatnak:
    • A folyamattevékenységek elvégzéséhez szükséges idő, e.pl. naptári idő vagy egy tevékenység vagy folyamat elvégzéséhez szükséges erőfeszítés.
    • A folyamatokhoz vagy tevékenységekhez szükséges erőforrások, pl. a teljes erőfeszítés személynapokban kifejezve.
    • Egy adott esemény előfordulásának száma, pl. a felfedezett hibák száma.

A SEI képességérettségi modell

  • Initial: Lényegében ellenőrizetlen
  • Megismételhető: Meghatározott és használt termékmenedzsment eljárások
  • Meghatározott: Meghatározott és használt folyamatirányítási eljárások és stratégiák
  • Irányított: Minőségirányítási stratégiák meghatározása és alkalmazása
  • Optimalizálás: Folyamatfejlesztési stratégiák meghatározása és alkalmazása