A szoftver-folyamat Szoftver életciklus modellek
Szoftver-technológia I.
Szoftver-technológia I.
Irodalom
• Ian Sommerville: Software
Engineering, 7th e. chapter 4.
• Roger S. Pressman: Software
Engineering, 5th e. chapter 2.
2
Szoftver-technológia I.
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
Szoftver-technológia I.
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
Szoftver-technológia I.
•
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 Folyamat CASE
•
•
• • • • •
•
Módszer 2 Módszer 1 Eszköz 1
Eszköz 2
Eszköz 3
5
Szoftver-technológia I.
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
Szoftver-technológia I.
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
Szoftver-technológia I.
Á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-technológia I.
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
Szoftver-technológia I.
A szoftver-folyamat tevékenységei
• Szoftver specifikáció • Szoftver tervezés • Implementáció • Szoftver validálás • Szoftver karbantartás 10
Szoftver-technológia I.
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
Szoftver-technológia I.
Megvalósíthatósági elemzés
Követelmény meghatározás Követelmény elemzés Követelmény specifikálás Követelmény validálás
Megvalósíthatósági jelentés
Rendszer modellek
Követelmények
Követelmény dokumentáció
12
Szoftver-technológia I.
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
Szoftver-technológia I.
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-technológia I.
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-technológia I.
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-technológia I.
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
Szoftver-technológia I.
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
Szoftver-technológia I.
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
Szoftver-technológia I.
Vízesés modell
20
Szoftver-technológia I.
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
Szoftver-technológia I.
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
Szoftver-technológia I.
Evolúciós fejlesztés (folyt.) Specifikálás
Körvonalazott követelmények
Fejlesztés
Kiindulási verzió
Átmeneti verziók
Validálás
Konkurrens tevékenységek
Végs! verzió
23
Szoftver-technológia I.
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
Szoftver-technológia I.
• Ú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
Szoftver-technológia I.
Követelmények specifikálása
Komponens alkalmassági értékelése
Komponensek elemzése
Követelmény módosítás
Rendszertervezés
Fejlesztés, komponens integrálás
Komponens adaptálása
Validálás white box gray box black box
26
Szoftver-technológia I.
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
Szoftver-technológia I.
Iteratív folyamatok
28
Szoftver-technológia I.
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
Szoftver-technológia I.
Követelmények meghatározása
Inkrementum fejlesztése
Inkrementális fejlesztés (folyt.) Követelmények inkrementumokhoz rendelé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.)
Szoftver-technológia I.
Kovetelmény meghatározás
Tervezés
Kovetelmény meghatározás
Implementálás
Tervezés
Implementálás
Kovetelmény meghatározás
Tervezés
Tesztelés
Tesztelés
Implementálás
1. inkrementum
2. inkrementum
Tesztelés
3. inkrementum
id!
31
Szoftver-technológia I.
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
Szoftver-technológia I.
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
Szoftver-technológia I.
Spirál fejlesztési modell (folyt.)
Célok, alternatívák meghatározása
Kockázat elemzés Kockázat elemzés
Alternatívák értékelése, kockázat elemzése
Kockázat elemzés
Proto 4 Proto 3 Proto 2
Proto 1
Következ! fázis tervezése
Bench mark Követelmény elemzési Koncepció terv kialakítása Követelmények Termék Részletes Követelmények terv terv Fejlesztési validálása terv Kódolás Terv V&V Integrálási, tesztelési Egység terv teszt Integr. Fejlesztés, Validálás teszt verifikáció
34
A spirál modell jellemz!i
Szoftver-technológia 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
Szoftver-technológia I.
•
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
Szoftver-technológia I.
Változtatás történet Független tesztelés
Napi munka
Kezdeti architektúra elképzelés
Napi eligazítás Iteráció Legnagyobb prioritású elemek
Iteráció elemei
Kezdeti követelmények
Taszkok M!köd" rendszer
Projekt kezdés
Termel" rendszer
Visszacsatolás
Munkaelemek Kezdés/0. iteráció
Javítási igények
Kidolgozás
Átmenet
Termelés
37
Szoftver-technológia I.
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
Szoftver-technológia I.
• 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
Szoftver-technológia I.
•
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
Szoftver-technológia I.
CASE eszközök
• CASE eszközök csoportosítása • funkcionalitás szerint • szoftver-folyamat támogatása szerint
• integráltság 41
Szoftver-technológia I.
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
Szoftver-technológia I.
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
Szoftver-technológia I.
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
Szoftver-technológia I.
• • • • • • •
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-technológia I.
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
Szoftver hibák és kockázatuk
Szoftver-technológia I.
50.0 Hiba keletkezése
37.5 25.0 12.5 0
Követelmények
50.0
Tervezés
Kódolás
Modul tesztek
Rendszer teszt
Használat
37.5 Hiba detektálása
25.0 12.5 0 20
Követelmények
Tervezés
Kódolás
Modul tesztek
Rendszer teszt
Használat
Kódolás
Modul tesztek
Rendszer teszt
Használat
15 Költség/hiba
10 5 0
Követelmények
Tervezés
47
Kockázatelemzés
Szoftver-technológia I.
• 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
Szoftver-technológia I.
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
Szoftver-technológia I.
Kockázat indikátorok
Technológia
Kés!i szállítás, támogatás hiánya
Személyzet
Rossz munkamorál, betöltetlen pozíciók
Management
Magasszint" döntések hiánya
Eszközök
Nem használt eszközök
Követelmények
Követelmények gyakori változása
50
Összefoglalás
Szoftver-technológia I.
• • •
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