290 likes | 298 Views
Princ ípy softvérového inžinierstva Prednáška 1 2 : Met ódy tvorby softvéru. Mária Bieliková, Jakub Šimko maria.bielikova @stuba.sk j akub.simko @ stuba.sk. Stav bodov zo vstupn ých testov ( zost áva posledný). Metódy tvorby softvéru.
E N D
Princípy softvérového inžinierstvaPrednáška 12:Metódy tvorby softvéru Mária Bieliková, Jakub Šimko maria.bielikova@stuba.sk jakub.simko@stuba.sk
Softvéroví inžinieri sa viac než 50 rokov snažili prísť na vždy úspešný postup tvorby softvéru • toto sa nepodarilo (a zrejme sa ani nepodarí) • avšak neznamená to, že nemáme nič v rukách...
Prístupy k tvorbe softvéru „úplné“ (metódy) „čiastkové“ (praktiky) individuálne praktiky riešiace partikulárny problém / aspekt vývoja skupiny praktík snažiace sa pokryť celý vývoj Tohto je veľa ... ... aj tohto • Príklady: • SSADM • Unifiedprocess • Test drivendevelopment • Scrum (agilná metóda) • ... • Príklady: • sledovanie prípadov použitia • prototypovanie • vzájomná validácia modelov • testovanie (rozličné druhy) • refaktoring, aplikácia vzorov • ... pomerne rôznorodá zbierka využívané v ... Zopár metód si ukážeme Prečo?
Za každou metódou treba hľadať snahu vysporiadať sa s neistotou • Ak by som to brutálne zjednodušil: • Metóda buď kladie dôraz na dobrú prípravu (špecifikácie, návrhu...) • [proaktívny prístup] • [prediktívne riadenie] • ... alebo sa snaží rýchlou spätnou väzbou zisťovať problémy čo najskôr • [reaktívny prístup] • [adaptívne riadenie]
Inkrementálny vývoj je reaktívny: pridávanie malých kúskov softvéru ktoré sa vzápätí validujú
Iteratívny vývoj je tiež reaktívny: vytvára softvér na viac krát, postupne vylepšuje fidelity (hodnovernosť)
Kombinovaný iteratívno-inkrementálny vývoj je taktiež reaktívny
Reaktívnym prístupom (II vývoj), sa darí neistotu odstraňovať lepšie Nie je to však pravidlo
Poznámka: • vodopádovýani iteratívno-inkrementálny vývoj ešte nepredstavujú metódy vývoja softvéru • sú na to príliš abstraktné • tvoria však jasný základ konkrétnejších metód
Príklad „tradičnej“ vodopádovej metódy:SSADM (Structured systems analysis and design method) • Vznik v 80tych rokoch (britská vláda) • Namodelujme podrobne biznis ... • ... najmä dátové entity a ich transformácie ... • ... a postupne odvoďme štruktúru softvéru. • Formálne procesy • Veľa dokumentácie • Veľa expertného odhadovania
Etapy SSADM (nasledujú jedna po druhej) • 0. Štúdia vhodnosti • Prieskum súčasných podmienok • Biznis modelovanie a stav po zavedení softvéru (často pomocou diagramu tokov údajov) • Špecifikácia požiadaviek (kompletná, verifikovaná) • Modelovanie tokov údajov • Logické dátové modely • Modelovanie udalostí a života entít • Technické rozpracovanie (architektúra, použité technológie, odhady implementačných nákladov, ...) • Logický návrh • (Dátové modely, algoritmy, používateľské rozhrania...) • Fyzický návrh (implementácia) Tu bol najväčší dôraz
Príklad tradičnej iteratívno-inkrementálnej metódy:UP (UnifiedProcess) • Koniec 90tych rokov (IBM, Jacobson, Booch, Rumbaugh) • Najznámejšia adaptácia:RationalUnifiedProcess • (iné adaptácie: OpenUP, Agile Unified Process) • Iteratívno-inkrementálny vývoj • Dopredu identifikovať riziká a predchádzať im • Dopredu a dobre premyslieť architektúru • Use-casedriven(neustálne sledovanie prípadov použitia, viď sledovateľnosť požiadaviek)
Unifiedprocessrozlišuje 4 fázy projektu Zdroje Konštrukcia Zavedenie Rozpracovanie Inicializácia Čas
V každej fáze unifiedprocessje rozličná intenzita typov prác (tzv. disciplín)
RAD (Rapid ApplicationDevelopment): snaha dodávať rýchlejšie a adaptívnejšie • 90te roky (James Martin) • Na začiatku len rámcová špecifikácia • Potom prototypovať so zapojením používateľov • Na záver upratovať, testovať, dokumentovať, nasadzovať Oproti Unifiedprocess ešte intenzívnejšie iterovanie
Agilné metódy: silno iteratívno-inkrementálny prístup s dôrazom na veľkú adaptívnosť • Druhá polovica 90tych rokov a neskôr • Agilemanifesto:http://agilemanifesto.org/ • Individuals and Interactions over processes and tools • Working Software over comprehensive documentation • Customer Collaboration over contract negotiation • Responding to Change over following a plan
Agilných metód je (ako inak) viacero • RAD • Scrum • Kanban • ExtremeProgramming • Lean Software Development • ...
Scrum: pracuje sa v striktne pravidelných iteráciách (šprintoch) Jediným meradlom úspechu je fungujúci softvér na konci iterácie
Komunikácia v tíme prebieha na dennej báze. Zákazník je prakticky členom tímu.
Komunikácia v tíme prebieha na dennej báze. Zákazník je prakticky členom tímu.
Test driven development (TDD): testy skôr ako implementácia + malé a časté iterácie
Posledná poznámka: prototypovanie • Prototyp == pokusne vytvorený softvér pomáhajúci zisťovať vlastnosti budúceho softvéru • Rozlišujeme: • Evolučný prototyp • prototypujemenajistejšie súčasti • Prototyp na zahodenie • prototypujemenajmenej isté súčasti
Zhrnutie: metód tvorby softvéru je veľa • SSADM • Unifiedprocess • Rapid applicationdevelopment • Agilné metódy (Scrum, Kanban, ...) • Test drivendevelopment • ... • Líšia sa v použitých praktikách • Líšia sa (okrem iného) aj mierou iteratívnosti • Žiadna nefunguje univerzálne • Žiadna neposkytuje komfort „mechanickej“ práce • Vždy ale treba nejakú použiť, inak to bude chaos