Sekvenční a iterativní přístup k vývoji software, výhody, nevýhody, důsledky, způsoby dodávky produktu.

Sekvenční a iterativní přístup k vývoji software, výhody, nevýhody, důsledky, způsoby dodávky produktu.

Sekvenční a iterativní přístup k vývoji software

Sekvenční

Skládá se z několika po sobě jdoucích fází, typický příklad takového procesu je waterfall – inception, elaboration, construction, transition

Vhodné pro velmi malé projekty s jednoznačným zadáním

U větších projektů riziko, že výsledek nebude v souladu s tím, co si zákazník představoval

Nutné přesně definovat požadavky

Iterativní přístup rozdělí celý proces vývoje software na menší celky, tzv. iterace, kdy v rámci dané iterace probíhá vývoj sekvenčně a na konci je třeba mít funkční výstup.

Na konci každé iterace je funkční výstup

Konzultace se zákazníkem, odchýlení se od požadavků se projeví včas a ne až na konci

Postupné zpřesňování požadavků

Složitější na implementaci než vodopád

Náročnější údržba software díky změnám v požadavcích

Způsoby dodávky produktu

Velký třesk

Typicky u vodopádu, zákazník netuší až do konce jak produkt vypadá

Přírůstkově

určení přírůstků, plán, úpravy složité

Evolučně

Postupně dodáváme software ve funkčním stavu a přidáváme funkcionalitu do nových verzí – určení cíle, dodávka, zpřesnění

Sekvenční přístup

vztažené na celý produkt- velký třesk

naplánované pro celý projekt, oddělené meziprodukty

vhodné pouze pro malé projekty s malou mírou neznáma (change management, náklady na změny, ...)

předání až na konci celého projektu

Životní cyklus projektu je rozdělen na 4 základní fáze:

Analýza požadavků a jejich specifikace

Testování a udržování vytvořeného produktu

Následující množina činností spjatá s danou fází nemůže započít dříve než skončí předchozí

dobrá možnost řízení a sledování postupu řešení (milníky (milestones) – voleny po činnostech)

klade důraz na dokumentaci - specifikace, design, analýza

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

Iterativní přístup

Vývoj rozdělen na malé části, miniaturní úplné projekty s cca vodopádovým modelem, tzv. Iterace. (Charakteristika a vlastnosti / průběh iterace viz. Otázka 1.1.4.)

Inkrementální rozšiřování produktu z původní hrubé formy do výsledné podoby -> Umožňuje postupné upřesňování požadavků na cílový produkt

Řízen riziky a priority uživatele na funkčnost produktu

Zaměření na architekturu produktu

Požadavky mají zásadní vliv na návrh a implementaci produktu

Řízení a plánování iterativně vedeného softwarového projektu viz. Otázka 1.1.5.

Menší časové úseky v dodávkách produktu -> zvýšení úspěšnosti produktu díky zpětné vazbě

Snížení rizik

Snazší řízení změn na základě zpětné vazby uživatele

Vyšší míra znovuvyužitelnosti

Projektový tým se může učit během procesu vývoje

Vyšší kvalita produktu

Průběžné změny mohou způsobit porušení původní systémové struktury což vede k náročnější údržbě softwaru

Vyžaduje přísnější management

Způsoby dodávky produktu

Velký třesk

malé projekty, jasné požadavky 

Přírůstkově 

určení přírůstků -> plán -> postupné dodávky 

zpětná vazba, ale úpravy projektu obtížné 

Evolučně 

cyklus: určení cíle -> dodávka -> zpřesnění ("growing sw")
