Softwarový proces
- aktivity nutné k dokončení softwarového produktu
- specifikace - jak to má vypadat?
- zjistit - definovat - shodnout se na řešení
- omezení vývoje (peníze, aktuální podmínky atd.)
- nejdůležitější část (když to zkazím hned tady, tak se to potáhne všude dál)
- nutné znát i problematiku zakázky
- výstupem je formální definice = dokument specifikace požadavků (DSP)
- studie proveditelnosti → zjištění a analýza požadavků → soupis požadavků → kontrola co jsme udělali
- návrh + vývoj - ta technická část
- validace - ověření, toho co se udělalo
- evoluce - úpravy při tom, co SW už běží
Vodopádový model
- fáze procesu jako samostatné jednotky (fáze je po dokončení “ukončena”)
- v modelu se nepřekrývají, v praxi ano
- během implementace je možné provádět jemné změny v hotových částech nebo část zmrazit a chyby v ní se odloží na později
- výhody: jednoduchá měřitelnost pokroku a řádná dokumentace k ukončeným fázím
- nevýhody: možná špatná struktura, první verze až po ukončení 1. vodopádu (trvá dlouho)
Tip
- kloc … thousand lines of code
- Jednotka používaná pro měření rozsahu projektu.
Evoluční model
- rychle se vyvine prvotní verze (můžeme ukázat zákazníkovi) ⇒ upřesňování požadavků ⇒ vývoj verze finální
- extrémně důležitá zpětná vazba
- vhodný pro menší projekty (do 500 kloc)
- průzkumný vývoj
- zákazník je aktivní v procesu vývoje
- vývoj jde od částí, kde zákazník ví co chce a následně je přidána další funkcionalita
- postupný (throwaway) vývoj
- pro lepší pochopení potřeb zákazníka
- prototyp se zaměří na nejasné části ⇒ obvykle se následně zahodí (po analýze) ⇒ výsledný produkt vznikne reimplementací na základě požadavků
Iterativní model
- hybridní model
- častá iterace celého vývojového procesu
- nadmnožina 2 typů
Inkrementální vývoj
- přírůstkový model
- postupné dodávání malých přírůstků od jádra
- tento postup se opakuje
- systém je v provozu od ranných začátků (kritické části jsou v provozu nejdéle ⇒ nejlépe otestovány)
- nutné správně určit jádro systému na začátku
Spirálový vývoj
- 1 otočka spirály = 1 fáze SW procesu
- spirála je rozdělena na jednotlivé sektory
- určení záměrů (alternativní možnosti, analýza, definice rizik)
- vyhodnocení a snížení rizik (prototypy, simulace, dotazníky)
- vývoj a validace (zpracování a ověření dané fáze)
- plánování (revize předchozí části, plánování další, info zákazníkovi)
- jediná metoda explicitně řešící rizika
Agilní metody vývoje
- Metody založené na iterativním vývoji
- Umožňují rychlý vývoj a dokáží pružně reagovat na změnu požadavků
- Obvykle rozdělují vývoj do menších částí/cyklů (tzv. sprints) a také menších týmů
- Týmy se sebeorgnaizují
- Tady je tzv. agile manifesto, kde se dají nalézt původní a hlavní myšlenky
SCRUM
- Sprint pevně daná časová jednotka po jejímž konci se dodá funkční celek
- Denní scrum mítinky - krátké denní stand-up porady
- Scrum master - osoba která zajišťuje, aby v týmu vše fungovalo
Kanban
- Práce a její dílčí úkoly by se měli vizualizovat (nějaká tabule obvykle)
- Vhodné tam, kde je neustálý příliv úkolů
- WIP limit (work in progress) - maximální počet úkolů ve sloupci
- V grafu se dá znázornit % položek v jednotlivých částech tabule