Základní modely životního cyklu software, softwarový proces
Z Na státnice zvesela!
Obsah[skrýt] | 
[editovat] Softwarový proces
- systematická série akcí, jejímž výstupem je software
 -  typy:
- řízené plánem (jistotou) = vodopád, V-model
 - řízené riziky = exploratory/prototype model
 - řízené změnou = iterativní, agilní
 
 
[Zdroj: ASWI přednášky, Brada]
[editovat] Potup vývoje software
- ad-hoc (nahodilé, bez využité konkrétní metodiky)
 - sekvenční (všechny kroky vývoje jdou postupně po sobě, viz vodopád)
 - cyklický (aktivity se opakují a produkt postupně roste, viz spirála)
 - agilní (iterativní + navíc vítaná změna, spolupráce, důraz na funkční software)
 
[Zdroj: ASWI přednášky, Brada]
[editovat] Vodopádový model
- Jeden z nejstarších modelů (dokonce asi první)
 - 	Hlavní myšlenky:
- před návrhem řešení se musí kompletně rozumět zadání
 - výstup jedné aktivity je vstupem následující
 
 - 	Základní aktivity jsou
- 	Analýza a definice požadavků (Requirements definition)
- Konzultací s uživateli systému se zjistí cíle, požadované služby a omezení kladená na systém
 - To se podrobně definuje v dokumentu, který slouží jako specifikace systému (Dokument Specifikace Požadavků)
 
 - 	Design systému a sw (System and software design)
- Provede se návrh systému, rozdělí se celkové požadavky na požadavky na HW a požadavky na SW, určí se celková architektura systému
 
 - 	Implementace a testování modulů (Implementation and unit testing)
- programování množiny modulů
 - Testování na úrovni modulů, ověření, že každý modul odpovídá specifikaci modulu
 
 - 	Integrace a testování systému (Integration and system testing)
- Jednotlivé moduly jsou sestaveny do výsledného systému
 - Úplný systém je otestován na shodu se specifikací
 - Po otestování je systém předán zákazníkovi
 
 - 	Provoz a údržba (Maintenance)
- Nejdelší fáze životního cyklu – systém se prakticky používá
 - Údržba = oprava chyb programu a designu, které nebyly odhaleny v předchozích fázích + rozšiřování systému podle nových požadavků + zlepšování implementace
 
 
 - 	Analýza a definice požadavků (Requirements definition)
 - 	Výhody
- snadné k pochopení
 - dobrá možnost řízení a sledování postupu řešení (milníky(milestones))
 - klade důraz na dokumentaci -- specifikace, design, analýza
 
 - 	Nevýhody
- vyžaduje mít na počátku přesně a úplně definované požadavky (uživatel často nedokáže stanovit předem)
 - provozuschopnost verze vidí zákazník až v závěrečných fázích řešení, případné závažné nedostatky jsou odhaleny velmi pozdě.
 - během vývoje se mohou měnit požadavky a výsledkem je, že dodaný produkt není to, co zákazník chtěl
 - během implementace se zjistí, že design není v pořádku a je třeba ho změnit
 
 - vhodný pro projekty s předem známou problematikou a neměnnými požadavky
 
[editovat] V-model
- jedna z nejznámějších variant vodopádového modelu
 - důraz na testování sw, každá aktivita musí být verifikována
 
[editovat] Průzkumný vývoj (exploratory development)
- vytvoří se počáteční implementace, ta se vystaví komentářům uživatele a postupně se vylepšuje přes meziverze, dokud se nedostaneme k adekvátnímu výsledku
 - cílem je spolupracovat se zákazníkem na zjištění jeho požadavků, abychom mu nakonec dodali požadovaný systém
 - vývoj obvykle začíná dobře srozumitelnými částmi systému
 - systém se vyvíjí přidáváním nových vlastností navrhovaných zákazníkem
 - 	VÝHODY
- systém je velice dobře přizpůsobitelný i dodatečným požadavkům zákazníka.
 
 - 	NEVÝHODY
- manažersky velmi náročné – etapy lze stěží plánovat časově, finančně i personálně.
 - dokumentace – pokud nevzniká průběžně, je odrazem hotového díla.
 - není jasné, které požadavky byly stanoveny při zadání a které jsou nyní nové.
 
 
[editovat] Prototyp (throw-away prototyping)
- tvorba prototypu, který bude zahozen
 - ověřuje funkcionalitu výsledného systému
 - zaměřuje se na ty části požadavků zákazníka, kterým se moc nerozumí
 - cílem je lepší pochopení zákazníkových požadavků a v důsledku vytvoření lepší definice požadavků na systém
 - 	VÝHODY
- budoucí uživatelé testují a ověřují prototyp a je upřesňována specifikace požadavků.
 
 - 	NEVÝHODY
- náročný na vedení v okamžiku, kdy existuje třeba i několik nezávislých vývojových skupin. Počet pracovníků a způsob vývoje se pak samozřejmě nepříznivě projeví i na nákladech projektu.
 
 
Smíšený přístup
- špatně srozumitelné části – throw-away prototyping -> zpřesnění DSP (dokument specifikace požadavků)
 - dobře srozumitelné části – vodopádový model
 - uživatelské rozhraní - exploratory development
 
Pozn. Oproti průzkumnému vývoji dochází po vytvoření "úplného" prototypu teprve k vytvoření specifikace a následně k výsledné implementaci. K implementaci mohou být využity znovupoužitelné části prototypu.
[editovat] Spirála (Boehm, 1988)
- iterativní přístup
 - určen pro velké, složité a nákladné projekty
 - základem celého modelu je neustálé opakování vývojových kroků tak, že v každém dalším kroku se na již ověřenou část systému přibalují části na vyšší úrovni.
 - 	každá otočka spirály je rozdělena do 4 sektorů
- 	specifikace cílů a určení plánu řešení
- určíme alternativní možnosti realizace
 - identifikujeme omezení daných alternativ (cena, časový plán, přenositelnost)
 
 - 	vyhodnocení a snížení rizik
- pro každé z identifikovaných rizik je provedena detailní analýza a kroky ke snížení rizika
 
 - vývoj a validace
 - 	plánování
- naplánujeme další fázi projektu (organizace, požadavky na zdroje, rozdělení práce, časový plán, výstupy)
 - každá otočka je zakončena posouzením všech produktů vytvořených v předešlém cyklu
 
 
 - 	specifikace cílů a určení plánu řešení
 
Náklady a čas nutný na realizaci jednotlivých částí projektu, či na řešení celého projektu jsou patrné z modelu, neboť úhlová dimenze udává časovou náročnost a radiální úroveň udává rostoucí náklady.
Výhody
- explicitně uvažuje rizika projektu
 - umožňuje konzultovat požadavky zákazníků v jednotlivých krocích a modifikovat systém podle upřesněných požadavků
 - první verze systému je možné sledovat a hodnotit při jejich postupném vzniku
 - cenové a časové odhady se v průběhu projektu stávají realističtějšími, protože důležité vlastnosti systému jsou objeveny brzy
 - vývojáři mohou začít pracovat velmi brzy
 
Nevýhody
- řešení systému pomocí tohoto modelu vyžaduje neustálou spolupráci zákazníků, proto není vhodný zejména pro systémy vyvíjené na zakázku bez účasti budoucích uživatelů.
 - neumožňuje přesné naplánování termínů, cen a jednotlivých výstupů a tím i jejich plnění.
 - je nutné provést bezchybnou analýzu rizik a vybrat aspekty u nichž budeme rizika prověřovat, neboť na této analýze jsou založeny další fáze projektu. Pozdní zjištění komponent s vysokou mírou rizika může mít zásadní vliv na celý projekt.
 
(zdroj: Kubovec - Okruhy otázek ke státní závěrečné zkoušce z předmětu - Návrh informačních systémů (NIS) 2005/2006)




