Základní schéma životního cyklu software. Pracnost jednotlivých etap. Techniky specifikace požadavků. Varianty životního cyklu. SW prototypy. Strukturovaný vývoj.
Software je souhrn počítačových programů, dat a dokumentace, který náleží k provozu počítačového systému.
Počátek jeho životního cyklu začíná nápadem na to začít vymýšlet nějaký software a končí v okamžiku kdy jej poslední člověk přestane používat.
Mezitím lze jeho životní cyklus popsat zhruba takto:
V každé fázi by mělo probíhat ověřování a testování SW:
Obecně nejpracnější činností je vytváření dokumentace a odstraňování defektů v programech. U velkých systémů zabere 90% času odstraňování problémů. Obecně platí, že ve zmíněném životním cyklu je velmi obtížné vracet se o více než jeden krok zpět. Tj. opravovat chybu ve specifikaci až když je projekt předaný je velmi obtížné.
Jako další pohled se často uvádí fakt, že největší část vývoje software zabere jeho údržba – tj. následný provoz, aktualizace atd.
Ideální specifikace požadavků systému by měla být naprosto pevná, přesná, úplná a bezesporná.
Specifikace vzniká v několika krocích, kde na začátku vznikne neformální specifikace požadavků – odborný článek, která obsahuje prvotní nápad co by systém měl dělat. Na základě ní vytvoří dodavatel funkční specifikaci, která je už mnohem přesnější a zpravidla využívá některých metod formální specifikace. Týká se hlavně toho jak bude systém pracovat navenek, ne jak bude vypadat uvnitř. Bývá také součástí kontraktu mezi dodavatelem software a zákazníkem. Pro fungování vnitřní části systému lze pak případně vytvořit tzv. návrh implementace.
Může obsahovat soubory use case diagramů, které jsou známy jako funkční požadavky, zachycující všechny možné interakce uživatele se systémem. Součástí mohou být i požadavky nesouvisející přímo s funkcí software tzv. nefunkční požadavky. Mohou to být např. požadavky na rychlost software, předepsaná metodika vývoje, legislativa, množství peněz na vývoj atd.
Specifikaci si tak můžeme představit jako dokument, který obsahuje všechny uživatelovy požadavky na systém ve strukturované a srozumitelné formě. Tento dokument je závazným podkladem pro návrh a realizaci systému.
● Interview: hlavní prostředek získávání požadavků, dobře připravený pohovor o tom, co uživatel dělá, co by mohl IS zlepšit či přinést, varianta porady, kde se jedna skupina převážně ptá a druhá odpovídá
● Strukturované interview: interview, kde se postupně odpovídá na otázky podle předem připraveného dotazníku
● Dotazník: podobné strukturovanému interview – pouze dostane na stůl a nikdo mu s tím neradí. Výhoda: pro rychlé zjištění relativně jednoduchých informací, levné.
● Studium dokumentu (a existujícího IS): výhoda: vzor řešení (např. obrazovek) + levné, nevýhoda: nebezpečí opakování chyb
● Účast/sledování prac. procesu: výhoda: nezprostředkovaná informace, nevýhoda: výběrové efekty (nezachytí se činnosti vyskytované zřídka), velmi drahé, ruší to
● Brainstorming: Neformální porada s cílem najít nová řešení, vize a myšlenky, okamžité nápady se hned zapisují na flipcharty a obvykle neformálně hodnotí, i bláznivé nápady se nezatracují a zapisují, vyhodnocení a koordinace nápadů již nebývá součástí porady
● Workshop: Pro hodnocení a kontrolu průběhu prací, získání přehledu o stavu prací
● Oponentury: nejefektivnější detekce anomálií, snížení rizika neúspěchu ale pracné, detekuji ale nemám opravovat
Je jedním z klasických způsobů vývoje software, skládající se z jednotlivých etap, které na sebe navazují a mohou se i překrývat. Dobře se řídí, ovšem obtížně se vyrovnáva s chybami vnesenými do procesu na začátku. Dá se přirovnat ke stavbě budovy. Skládá se z navazujících činností:
Jedním ze zásadních problémů tohoto přístupu je, že zákazník vidí svůj software až na konci procesu, což je problém v okamžiku, kdy na začátku procesu vlastně ani neví co chce. Tento model se hodí pro oblasti, které řešitelský tým dobře ovládá. Jsou vyžadování talentovaní pracovníci. Jakékoliv změny poškozují strukturu a jejich následky jsou nákladné na opravu a rostou společně s etapami. Proces není viditelný a manažér potřebuje pravidelné výstupy (dokumenty), aby ho mohl řídit. Existuji různé verze modelu vodopádu, které umožňují se u některých kroků vracet zpět. Teoreticky je možné se po všech krocích pohybovat oběma směry, avšak vždy při pohybu zpět je situace nákladná a složitá, především u vracení se o více kroků.
Tento model je vhodný řekněme pro programování věcí, které řešitelé neznají. Skládá z operací:
Tento systém práce se obtížně řídí a plánuje, má problémy s dokumentací a zpravidla do vývoje vidí jen jeden výzkumník nebo výzkumný tým a jejich rozpad či odchod pracovníka znamená ukončení projektu. Je to experimentování a výsledek je nejistý.
Tato metoda se snaží překonat problémy spočívající v nepřesně formulovaných, případně měnících se požadavcích na systém. Spočívá ve vytváření tzv. protopypů, což jsou částečné implementace výsledného produktu se všemi rozhraními, které pak potenciální uživatelé testují. Prototypy se pak případně vylepšují, použijí nebo zahodí. Nejedná se o metodiku s kompletním přístupem k vývoji, ale spíše k jednotlivým částem jiných metodik (spirála, Rad, atd.). Opět existuje mnoho podob prototypování, základní myšlenka je však v opakovaném vytváření a hodnocení (analýze) prototypů. Používá se obvykle u menších systémů a zpravidla je nutné stanovit hranici pro vytváření prototypů, aby se nevytvářely donekonečna.
Inkrementální přístup je vhodný pro kombinaci sekvenčních a iteračních metodik softwarového vývoje. Cílem je omezit projektová rizika rozdělením projektu na menší segmenty a zjednodušuje možnost zavedení změn během procesu vývoje. Základní principy inkrementálního přístupu:
Vytvořený hlavně za účelem minimalizace rizik při postupu pomocí vodopádu. Jednotlivé kroky se ve spirále opakují se stále vyšším a vyšším stupněm zvládnutí problematiky. Spirála většinou začíná analýzou rizik, dále se rozvíjí prototyp a zakončuje se kontrolou výsledků a testováním.
Během každého cyklu spirály jsou spouštěny čtyři základní fáze (kvadranty):
Cyklus může začít prvním nebo i druhým krokem.
Strukturované programovvání
SSADM (Structured Systems Analysis and Design Methodology)
Objektově orientované programování/design (OOP/OOD)
Unified Process (UP) - založen na UML
RUP (Rational Unified Process) - aplikace UP
AUP (Agile Unified Process)
Extrémní programování
Agilní programování
SW prototyp = částečně funkční model systému, který realizuje či simuluje některé vlastnosti systému.
Prototypování umožňuje odhalit nedostatky již v začátku projektu. Prototyp není určen k cílovému řešení, pouze k ověření specifikace funkcí, zpřesnění požadavků. Bohužel zřídka otestuje vlastnosti, jež se ukážou až v provozu.
Důvody pro vytvoření prototypů:
Výhody: ověření správnosti, lepší konzultace se zákazníkem a odhady pracnosti, brzo máme něco v ruce.
Nevýhody: větší pracnost, ne vždy odhalí funkční chyby
Strukturovaný vývoj je založený na strukturované analýze, což je druhá část vývoje projektu. První část vývoje je soubor uživatelských požadavků na systém. Strukturované metody:
Strukturovaná analýza a specifikace systému (SASS) DeMarco a jeho 4 modely:
Pro modelování systému používá metodika strukturované analýzy tyto nástroje:
Později přišli jiní pánové (Gane, Sarson) s vylepšením této metody s názvem Logické modelování. Vývoj při něm probíhá takto:
(DFD, Pameti, ERD, Vazby, Prekresleni, Jednotky, Popis)
PB007 Analýza a návrh systémů
Marek Menšík UČO 255679
Nevím přesně, kdo otázky zpracoval přede mnou, pouze jsem je sem umístil, doplnil chybějící věci a opravil nepřesnosti. Připomínám, že věci zde uvedené nemusí být korektní a zatím neprošly kontrolou žádného z profesorů. Z mé strany je tato otázka dokončena a případné chybějící věci a chyby mě můžete napsat na UČO mail nebo se registrujte a upravte je sami.
Skripta předmětu PB007
http://users.csc.calpoly.edu/~jdalbey/308/Lectures/SoftwareProcessModels.html
http://statnice.dqd.cz/mgr-szz:in-ins:1.1-ins
Pekny material Strukturovane analyzy: http://www.fit.vutbr.cz/study/courses/PPS/public/pdf/9_stran.pdf