A szoftver-folyamat Szoftver életciklus modellek Irodalom Ian Sommerville: Software Engineering, 7th e. chapter 4. Roger S. Pressman: Software Engineering, 5th e. chapter 2. 2
A szoftver-technológia aspektusai Történelmi aspektus fejlesztési módszerek, technológiák fejl!dése Gazdasági aspektus fejlesztési költségek ~ m"ködési nyereség Életciklus aspektus a szoftver-folyamat Management aspektus team fejlesztések 3 A szoftver-folyamat Szoftver rendszer fejlesztésére irányuló tevékenység struktúrált meghatározott lépések Absztrakt reprezentáció 4
A szoftver-folyamat technológiai nézetben A szoftver-folyamat rétegz!dése folyamat réteg keret, kontextus management módszerek, módszertan réteg tevékenységek irányítása eszköz réteg automatikus, félautomatikus támogatás CASE Módszer 1 Eszköz 1 Folyamat Eszköz 2 Módszer 2 Eszköz 3 5 A szoftver-folyamat szerepl!i Megrendel! szervezet Szoftvert fejleszt! szervezet Managerek Szoftver mérnökök (informatikusok) Eszközök a kapcsolódó háttérrel 6
Generikus szoftverfolyamat A folyamat fázisai definíciós fázis (mit?) fejlesztési fázis (hogyan?) támogatási fázis (változások) 7 Átfogó tevékenységek a szoftver-folyamatban Projektkövetés, ellen!rzés Szoftver-min!ségbiztosítási megoldások Konfiguráció management Dokumentációs tevékenység Kockázat kezelés 8
Szoftver-folyamat modellek Munkafolyamat modellek (workflow) tevékenységek sorrendje, függéseik Adatfolyam modellek (dataflow) tevékenységek mint adat transzformációk Szerep modellek (role) szerepekhez tartozó tevékenységek 9 A szoftver-folyamat tevékenységei Szoftver specifikáció Szoftver tervezés Implementáció Szoftver validálás Szoftver karbantartás 10
Szoftver specifikáció Szolgáltatások meghatározása M"ködési és fejlesztési környezet Követelmény meghatározási folyamat Megvalósíthatósági elemzés Követelmények meghatározása, elemzése Követelmények specifikálása Követelmények validálása 11 Követelmény meghatározás Megvalósíthatósági elemzés Követelmény elemzés Követelmény specifikálás Megvalósíthatósági jelentés Követelmény validálás Rendszer modellek Követelmények Követelmény dokumentáció 12
Szoftver tervezés és implementáció Szoftver tervezés A specifikációt megvalósító szoftver struktúra megtervezése Implementáció A szoftver struktúra futtatható szoftverré alakítása Összefügg!, átfed! tevékenységek 13 Programozás, debuggolás A terv programmá (kóddá) alakítása és a hibák eltávolítása A programozásra általában nincsenek generikus folyamatok A debuggolás a programozás során alkalmazott hiba felderítés és elhárítás 14
Szoftver validálás Verifikáció a szoftver megfelel a specifikációjának Validáció a szoftver megfelel a megrendel! igényeinek Eszközök folyamatok felügyelete a rendszer tesztelése 15 Szoftver tesztelés A szoftverben lév! hibák feltárása Komponens / egység tesztelés Rendszer tesztelés Elfogadási / átvételi teszt Szoftver Specifikáció Összehasonlítás Eredmény Tesztesetek 16
Szoftver karbantartás A szoftver megváltozatása javítás adaptív változtatás kib!vítés A szoftver projektek jelent!s hányada Követelmények meghatározása Meglév! rendszer értékelése A rendszer megváltoztatása Meglév! rendszer Új rendszer 17 Generikus szoftverfolyamat modellek Vízesés modell / lineáris szekvenciális modell elválasztott specifikációs és fejlesztési fázis Evolúciós fejlesztés specifikáció, fejlesztés és validáció váltogatja egymást Komponens alapú fejlesztés fejlesztés létez! komponensekb!l 18
Vízesés modell Követelmények meghatározása Rendszer- és szoftvertervezés Implementáció és egységtesztelés Integráció és rendszertesztelés M!ködtetés és karbantartás 19 Vízesés modell 20
A vízesés modell jellemz!i Nehéz a változások figyelembevétel Csak a el!z! fázis befejezése után kezdhet! a következ! Jól meghatározott követelmények és kevés változás esetén alkalmazható 21 Evolúciós fejlesztés Explorációs fejlesztés Jól megértett követelmények, kezdeti specifikáció Megrendel! által felvetett funkciók hozzáadása Eldobható prototípusok Cél a követelmények megértése, tisztázása 22
Evolúciós fejlesztés (folyt.) Specifikálás Kiindulási verzió Körvonalazott követelmények Fejlesztés Átmeneti verziók Validálás Konkurrens tevékenységek Végs! verzió 23 Az evolúciós fejlesztés jellemz!i Nem jó a folyamat láthatósága Rosszul struktúrált rendszer Speciális eszközök szükségesek Kis és közepes méret" interaktív rendszerek fejlesztése Nagy rendszerek részrendszereinek fejlesztése Rövid életciklusú szoftverek fejlesztése 24
Komponens alapú szoftverfejlesztés Újrafelhasználható komponensekb!l integrált rendszerek el!állítása buy, don t build rapid prototyping Komponens szabványok szerepe 25 Komponens alapú szoftverfejlesztés Követelmények specifikálása Komponensek elemzése Követelmény módosítás Rendszertervezés Komponens alkalmassági értékelése Komponens adaptálása Fejlesztés, komponens integrálás Validálás white box gray box black box 26
Iteratív folyamatok Követelmények változása Korábbi fázisok újra átdolgozása Iteratív fejlesztési modellek Iteráció alkalmazható a generikus modellekre Inkrementális fejlesztés Spirál modell 27 Iteratív folyamatok 28
Inkrementális fejlesztés Követelmények prioritás alapú felosztása Fejlesztés felbontása inkrementumokra követelmények befagyasztása kívánt funkcionalitású inkrementum létrehozása els! inkrementum - core product 29 Inkrementális fejlesztés (folyt.) Követelmények meghatározása Követelmények inkrementumokhoz rendelése Inkrementum fejlesztése Inkrementum validálása Inkrementum integrálása Rendszer validálása Végs! rendszer nem teljes rendszer 30
Inkrementális fejlesztés (folyt.) Kovetelmény meghatározás Tervezés Implementálás Tesztelés 1. inkrementum Kovetelmény meghatározás Tervezés Implementálás Tesztelés 2. inkrementum Kovetelmény meghatározás Tervezés Implementálás Tesztelés 3. inkrementum id! 31 Az inkrementális fejlesztés jellemz!i Korai megjelenés Inkrementumok prototípusként m"ködhetnek Kockázat csökkentése Legfontosabb komponensek több tesztelést kapnak 32
Spirál fejlesztési modell Nincsenek rögzített fázisok, tevékenység szekvenciák a spirál egy köre felel meg egy fázisnak Explicit kockázatkezelés 33 Célok, alternatívák meghatározása Spirál fejlesztési modell (folyt.) Kockázat elemzés Kockázat elemzés Kockázat elemzés Proto 1 Proto 2 Alternatívák értékelése, kockázat elemzése Proto 3 Proto 4 Következ! fázis tervezése Követelmény elemzési terv Fejlesztési terv Integrálási, tesztelési terv Koncepció kialakítása Követelmények validálása Validálás Követelmények Terv V&V Integr. teszt Bench mark Termék terv Egység teszt Kódolás Részletes terv Fejlesztés, verifikáció 34
A spirál modell jellemz!i Boehm 88 Tevékenység régiók fejleszt! - megrendel! kommunikációja tervezés kockázat elemzés prototípusok létrehozása konstrukció megrendel!i értékelés 35 Agilis fejlesztés gyors reagálás a változásokra kevesebb hangsúly az elemzésen és tervezésen, rövid dokumentáció m"köd! szoftver fontossága szoros együttm"ködés a megrendel!vel refactoring csapaton belüli interakció szabad szoftverek használata Extreme programming (XP) pair programming, test driven development 36
Agilis fejlesztés Változtatás történet Kezdeti architektúra elképzelés Független tesztelés Napi munka Napi eligazítás Legnagyobb prioritású elemek Iteráció Projekt kezdés Kezdeti követelmények Iteráció elemei Taszkok M!köd" rendszer Termel" rendszer Visszacsatolás Munkaelemek Javítási igények Kezdés/0. iteráció Kidolgozás Átmenet Termelés 37 Kétdimenziós modellek Fejlesztési tevékenységek nem köthet!k id!beli fázisokhoz átfedések iterációk átfogó tevékenységek pl. RUP 38
Módszerek, módszertanok Struktúrált megközelítés min!ségi követelmények költséghatékonyság A módszerek elemei: rendszer modell leírások (jelölés) szabályok ajánlások, heurisztikák, minták el!írt folyamatok 39 CASE technológia CASE eszközök szoftver folyamat támogatása tevékenységek automatizálása rendszermodellezés (grafikus eszközök) adatszótárak, fejlesztési adattárak kódgenerálás grafikus felhasználói felület konstruálás debuggerek, profilerek, tesztkörnyezetek dokumentálás 40
CASE eszközök CASE eszközök csoportosítása funkcionalitás szerint szoftver-folyamat támogatása szerint integráltság 41 Fejleszt! eszközök Egyszer" eszközök editor, lekérdezés tervez!, stb. Workbenchek szoftver-folyamat egy fázisának támogatása Környezetek integrált eszközök 42
Kockázatkezelés Kockázatok azonosítása Kockázatok hatásának csökkentésére vonatkozó tervek készítése Kockázatok valamilyen valószín"séggel fellép! negatív hatású események 43 Kockázatok a szoftverfejlesztésben Projekt kockázatok ütemezés, er!források Termék kockázatok min!ség, teljesítmény Üzleti kockázatok üzleti haszon 44
Projekt kockázatok Személyzeti problémák Management változása Hardver szállítási problémák Követelmények változása Méret alulbecslése Technológiai változások Piaci versenyhelyzet 45 Szoftver kockázatok egy rendszerben Kockázati elemek A szoftver aránya a rendszerben Függ!ség a szoftvert!l A szoftver komplexitása 46
50.0 37.5 Szoftver hibák és kockázatuk Hiba keletkezése 25.0 12.5 50.0 37.5 25.0 12.5 0 Követelmények Tervezés Kódolás Modul tesztek Rendszer teszt Használat Hiba detektálása 0 20 15 10 5 Követelmények Tervezés Kódolás Modul tesztek Rendszer teszt Használat Költség/hiba 0 Követelmények Tervezés Kódolás Modul tesztek Rendszer teszt Használat 47 Kockázatelemzés Kockázatok valószín"ségének és hatásának (súlyosságának) meghatározása Valószín"ségek nagyon alacsony, alacsony, mérsékelt, magas,nagyon magas Hatások katasztrófális, súlyos, tolerálható, jelentéktelen 48
Kockázatkezelési stratégiák Elkerülési stratégiák megjelenési valószín"ség csökkentése Hatás minimalizálási stratégiák kockázat hatásának csökkentése Elhárítási tervek a kockázat fellépésekor annak helyes kezelése 49 Kockázat indikátorok Technológia Személyzet Management Eszközök Követelmények Kés!i szállítás, támogatás hiánya Rossz munkamorál, betöltetlen pozíciók Magasszint" döntések hiánya Nem használt eszközök Követelmények gyakori változása 50
Összefoglalás Szoftver-folyamat: tevékenységek szoftver rendszer létrehozására, karbantartására A szoftver-folyamat elemei: specifikálás, tervezés, implementálás, validálás, karbantartás Szoftver-folyamat modellek: vízesés modell, evolúciós fejlesztés, komponens alapú fejlesztés, spirál modell, agilis fejlesztés CASE technológia szoftver-folyamat támogatása Kockázat kezelés negatív hatások elkerülése 51