Životní cyklus softwaru

Software development process

Etapy

Analýza a specifikace požadavků (8 %)1) Procenta v závorkách ukazují finanční a časovou náročnost jednotlivých etap.

Architektonický a podrobný návrh (7 %)

Implementace (12 %)

Integrace a testování (6 %)

Provoz a údržba (67 %)

Analýza a specifikace požadavků

Snažíme se přesně specifikovat co zákazník chce (ale neřešíme jak toho dosáhnout), protože on to většinou neví. V této etapě také zjistíme jestli to zákazník produkt opravdu potřebuje. Výstupem může být analýza rizik, ale především akceptační testy – testy, které si provede zákazník při převzetí, a pokud jsou splněny, je SW v pořádku.

Architektonický a podrobný návrh

Naplánování rozdělení na podproblémy, specifikace jejich funkcionalit a rozhraní mezi nimi. Také se plánují podrobnější testy systému.

Také je vhodné už teď naplánovat postup nasazení, protože zatím nejsme ve stresu a tlačeni časem a tak se nad tím dá v klidu zamyslet.

Podrobný návrh

Podrobnější zamyšlení nad jednotlivými moduly, jejich algoritmy a datovými strukturami. Výstupem by měl být odhad ceny a jednotlivých modulů, jejich nároků na lidské zdroje a čas. Výstupem by také měly být podrobnější testy jednotlivých modulů

Implementace a testování součástí

Programování, realizace, dokumentace.

Integrace a testování systému

Začlenění jednotlivých modulů dohromady a jejich testování. Při testování se často vracíme k předchozímu kroku, kvůli opravám chyb.

Akceptační testování a instalace

Otestování systému uživatelem, který se na základě (ne)splnění akceptačních testů produkt (ne)převzít. Proto jsou akceptační testy důležité, jinak by mohl zákazník oddalovat převzetí projektu (a samozřejmě by nechtěl za prodloužení platit) a my bychom na něj neměli žádné páky.

Provoz a údržba

Řešení problémů při provozu a opravy nalezených chyb. Také rozšiřování o nové funkce.

Základni modely

Vodopádový

Jednotlivé etapy na sebe navazují. Až je jedna etapa dokončena, začne teprve další. Nejjednodušší a nejpřirozenější model.

Nevýhodou je, že když zákazník dostane hotový produkt a něco si rozmyslí, musí se začít v podstatě od začátku. Což může být problém, protože analytici už nejspíš pracují na jiném projektu a tento si jen matně vybavují. V reálném životě se navíc jednotlivé etapy často překrývají, nebo jsou dokonce v jiném pořadí.

Iterativní a inkrementální

Jednotlivé etapy (kromě prvotní analýzy a předání produktu) se opakují, a teprve až je vše v pořádku, dojde k předání výsledného softwaru.

Spirálový

Jednotlivé etapy se opakují jako u iterativního modelu, ale je zde zaveden tzv. prototyp, který si může zákazník vyzkoušet. Při každé další iteraci je tak výsledek značně blíže cíli, protože velmi rychle získáváme zpětnou vazbu od zákazníka.

Prototyp se od „verze s omezenou funkcionalitou“ liší tím, že je po otestování zahozen, a nový prototyp se vytváří znovu (často se však „zrecyklují“ staré fungující kusy projektu).

RUP

IBM Rational Unified Process

Agilní

Agile software development

Shrnutí

nutnost plánování projektu, protože jinak je to naprostý chaos

základní fáze: analýza požadavků, návrhy, implementace, testování a odevzdávání, provoz a údržba (nejnáročnější)

vodopádový model, iterativní model, spirálovitý model (prototypy)

RUP: iterativní vývoj, aktivní správa požadavků, komponentová struktura, ověřování kvality, vizuální modelování, řízení změn

RUP fáze: zahájení, příprava, konstrukce, předávání

RUP disciplíny: tvorba podnikového modelu, správa požadavků, analýza a návrh, implementace, testování, nasazení

Agilní: krátké časové úseky, malé jednotky lidí, kteří se starají o své moduly, rychlé vytváření meziproduktů, snížený důraz na dokumentaci, …

Agilní metody: například extrémní programování

Agilní postupy: např. test-driven programming, analýza a code-refactoring