Úvod do softwarového inženýrství IUS 2009/2010 p.1/55



Podobné dokumenty
ÚVOD DO SOFTWAROVÉHO INŽENÝRSTVÍ

Testování software. Jaroslav Žáček

Návrh softwarových systémů - úvod, motivace

Návrh softwarových systém. Návrh softwarových systémů

Zajištění kvality programového vybavení - testování

A7B36SI2 Tematický okruh SI08 Revidoval: Martin Kvetko

Vývoj řízený testy Test Driven Development

1 Úvod 1.1 Vlastnosti programového vybavení (SW)

Řízení reálných projektů, agilní metodiky

CASE. Jaroslav Žáček

Metodika analýzy. Příloha č. 1

Vývoj informačních systémů. Jak vyvíjet v týmu

CASE nástroje. Jaroslav Žáček

Agile Software Development

10 Metody a metodologie strukturované analýzy

12 Zajištění kvality programového vybavení

Životní cyklus produktu (IS / IT služby) Životní cyklus projektu Životní cyklus řízení projektu. Vývoje produktu Implementace produktu

Proces vývoje HRIS Vema (Human Resources Information System) Jaroslav Šmarda

Ročníkový projekt. Jaroslav Žáček

Klasické metodiky softwarového inženýrství I N G M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

12 Zajištění kvality programového vybavení

X36SIN: Softwarové inženýrství. Životní cyklus a plánování

Kvalita SW produktů. Jiří Sochor, Jaroslav Ráček 1

SOFTWAROVÉ INŽENÝRSTVÍ Řízení IT projektů

TREND POPIS ODPOVĚDNOSTI PRACOVNÍKA MANAŽER VÝVOJE

Zuzana Šochová MFF Modelování a realizace softwarových projektů

Obsah. Úvod 9 Poděkování 10 Co je obsahem této knihy 10 Pro koho je tato kniha určena 11 Zpětná vazba od čtenářů 11 Errata 11

Úvod do softwarového inženýrství IUS 2009/2010 p.1/40

Vývoj informačních systémů. Přehled témat a úkolů

2 Životní cyklus programového díla

Agilní metodiky vývoje softwaru

Vývoj informačních systémů. Přehled témat a úkolů

Analytická specifikace a její zpracování

Základy analýzy. autor. Jan Novotný února 2007

Testování Java EE aplikací Petr Adámek

Softwarový proces. Bohumír Zoubek, Tomáš Krátký

Testování softwaru. 10. dubna Bořek Zelinka

Program a životní cyklus programu

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Metodiky pro efektivní vývoj software (agilní programování)

14 Úvod do plánování projektu Řízení projektu

PROBLÉMY A SPECIFIKA VÝVOJE SOFTWARE

4IT445 - AGILNÍ VÝVOJ WEBOVÝCH APLIKACÍ AGILNÍ METODIKY VÝVOJE SW ING. JAN ČERNÝ

14 Úvod do plánování projektu Řízení projektu

XINF1. Jaroslav Žáček

KIV/ASWI 2007/2008 Pokročilé softwarové inženýrství. Cíle předmětu Organizační informace Opakování

Návrh softwarových systémů - architektura softwarových systémů

Ročníkový projekt. Jaroslav Žáček

Softwarové inženýrství 01. doc. Ing. František Huňka, CSc.

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

ZEMĚMĚŘICKÝ ÚŘAD. Výzkum a vývoj programového aparátu pro generalizaci státního mapového díla. Ing. Přemysl JINDRÁK

SOFTWAROVÉ INŽENÝRSTVÍ 1

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Specializace Návrhář software na základě analýzy vytváří návrh softwarových aplikací ve formě schémat a diagramů.

Analýza a Návrh. Analýza

01 Teoretické disciplíny systémové vědy

Jak testovat software v praxi. aneb šetříme svůj vlastní čas

Citace článku. Alena Buchalcevová, Jan Kučera. Katedra informačních technologií VŠE Praha nám. W.Churchilla 4, Praha 3

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

5 Požadavky a jejich specifikace

Význam měřm. Mgr. Anna Borovcová doc. Ing. Alena Buchalcevová, Ph.D. VŠE Praha

Jakou metodiku použít pro

Vedení projektů, Odhadování, historie

Agilní přístupy k vývoji SW. Jaroslav Žáček

Seminární práce Vývoj informačního systému. Manažerská informatika 2 Ing. Miroslav Lorenc

Design systému. Komponentová versus procesní architektura

Přehled rolí v jednotlivých metodikách

Novinky v UML 2.5 a agilní modelování

1.1 Zátěžové testování

Vnitřní kontrolní systém a jeho audit

Projekt Velryba Ozdravné pobyty pro děti. Semestrální projekt

Software generické produkty - smluvní, zakázkové produkty - - udržovatelnost spolehlivost efektivita použitelnost specifikace

Zátěžové testy aplikací

PowerOPTI Řízení účinnosti tepelného cyklu

5 Požadavky a jejich specifikace

Úvod. Programovací paradigmata

Agile. nejžádanější způsob vývoje software. Tomáš Tureček. Business consultant, Lean&Agile coach Tieto

RUP - Motivace, principy. Jaroslav Žáček

RUP - MOTIVACE, PRINCIPY JAROSLAV ŽÁČEK

Diagram nebo text? Miroslav Benešovský, BenSoft s.r.o

TÉMATICKÝ OKRUH Softwarové inženýrství

End-to-end testování. 26. dubna Bořek Zelinka

Smysl metodiky IS/IT. Koncentrovaná zkušenost Checklist na nic nezapomeneme

PŘÍLOHA C Požadavky na Dokumentaci

Agenda. Docházka Odhadování Neohlášený test Vedení projektů Historie projektů

Nebojte se přiznat, že potřebujete SQA

1. VYMEZENÍ ODBORNÉ STÁŽE

1. VYMEZENÍ ODBORNÉ STÁŽE

AGILNÍ METODIKY VÝVOJE SOFTWARE

Řízení SW projektů. Lekce 3. Projektové procesy a znalostní oblasti. přednáška pro studenty FJFI ČVUT. zimní semestr 2012

2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

2. Začlenění HCI do životního cyklu software

Vývoj IS. Vladimíra Zádová, KIN, EF TUL- ISN3

A7B36SI2 Tematický okruh SI11 Revidoval: Martin Kvetko

ŠVP Gymnázium Ostrava-Zábřeh Úvod do programování

Obsah. Zpracoval:

Matematika v programovacích

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

VÝVOJ ŘÍDICÍCH ALGORITMŮ HYDRAULICKÝCH POHONŮ S VYUŽITÍM SIGNÁLOVÉHO PROCESORU DSPACE

Normy kvality softwaru a jejich podpora v metodikách budování informačních systémů

Transkript:

Úvod do softwarového inženýrství IUS 2009/2010 8. přednáška Ing. Radek Kočí, Ph.D. Ing. Bohuslav Křena, Ph.D. Úvod do softwarového inženýrství IUS 2009/2010 p.1/55

Dnešní téma Implementace a testování Strategie implementace Techniky testování Strategie testování Agilní metodologie Základní principy Srovnání metodologií Extreme programming (XP) Úvod do softwarového inženýrství IUS 2009/2010 p.2/55

Implementace softwaru transformace návrhu jednotlivých modulů (návrhových podsystémů) a jejich vzájemných vazeb do programové realizace kritéria posuzování implementace (procesu tvorby programu) srozumitelnost (programu, výstupu programu) čitelnost udržovatelnost efektivnost aplikace (doba odezvy, požadavky na pamět,... ) přenositelnost efektivnost procesu tvorby programu důležitost jasných cílů (všechna kritéria nelze obvykle splnit) Úvod do softwarového inženýrství IUS 2009/2010 p.3/55

Implementace softwaru transformace návrhu jednotlivých modulů (návrhových podsystémů) a jejich vzájemných vazeb do programové realizace kritéria posuzování implementace (procesu tvorby programu) srozumitelnost (programu, výstupu programu) čitelnost udržovatelnost efektivnost aplikace (doba odezvy, požadavky na pamět,... ) přenositelnost efektivnost procesu tvorby programu důležitost jasných cílů (všechna kritéria nelze obvykle splnit) Vzpomínáte si ještě, co je to udržovatelnost a přenositelnost? Úvod do softwarového inženýrství IUS 2009/2010 p.3/55

Implementace softwaru transformace návrhu jednotlivých modulů (návrhových podsystémů) a jejich vzájemných vazeb do programové realizace kritéria posuzování implementace (procesu tvorby programu) srozumitelnost (programu, výstupu programu) čitelnost udržovatelnost efektivnost aplikace (doba odezvy, požadavky na pamět,... ) přenositelnost efektivnost procesu tvorby programu důležitost jasných cílů (všechna kritéria nelze obvykle splnit) Udržovatelnost úsilí, které je potřeba vynaložit na další vývoj a údržbu softwaru podle měnících se potřeb zákazníka a také v důsledku měnícího se okolí (např. změna legislativy). Přenositelnost úsilí, které je nutné pro přenos softwaru z jedné platformy na jinou. Úvod do softwarového inženýrství IUS 2009/2010 p.3/55

Implementace softwaru Podíl implementace na celkovém objemu prací v životním cyklu softwaru se snižuje: zavedením 4GL jazyků vizuálním programováním (zejména v souvislosti s tvorbou GUI) využíváním integrovaných vývojových prostředí využívání pokročilých prostředků trasování a ladění programů generováním aplikací (např. z Rational Rose) vývojem prostředků spolupráce aplikací (middleware) rozšířením a rozvojem OO/AO/komponentního přístupu znovupoužitelností (využití internetu) Úvod do softwarového inženýrství IUS 2009/2010 p.4/55

Generace programovacích jazyků první generace programování přímo v binárním kódu druhá generace asemblery, symbolické vyjádření binárních instrukcí (1 ku 1) třetí generace procedurální jazyky jeden příkaz se transformuje do 5-10 instrukcí v binárním kódu čtvrtá generace (4GL) neprocedurální jazyky (definuje se, co je třeba vykonat, ne jak) jeden příkaz se přeloží do cca 30-50 instrukcí v binárním kódu často méně efektivní realizace kódu nemožnost ovlivnit zabudovaný způsob realizace jednotlivých akcí uživatelské programování, angl. "End-User Programming" např. Microsoft Excel Úvod do softwarového inženýrství IUS 2009/2010 p.5/55

Strategie implementace postup, jakým se realizují jednotlivé softwarové součásti a odevzdávají na testování částečná závislost na architektuře a strategii návrhu potřeba inkrementálního (postupného) vývoje strategie implementace zpravidla podmiňuje strategii testování Implementace zdola-nahoru systém je možné předvádět až po jeho úplném dokončení možnost přímého použití odladěných modulů nižších úrovní chyby v logice se identifikují až v etapě integračního testování testování modulů na nižších úrovních: potřeba speciálních modulů (simulace chování/dat vyšších úrovní) testování modulů jednotlivě je jednodušší než testování logiky celého systému Úvod do softwarového inženýrství IUS 2009/2010 p.6/55

Strategie implementace Implementace shora-dolů možnost demonstrace systému poměrně brzy včasná identifikace najzávažnějších chyb logika systému se ověřuje několikrát (testování celého systému) testování systému: potřeba simulačních modulů (simulace práce podsystémů) nedá sa použít, pokud se požaduje implementace některých modulů nejnižší úrovně na začátku (např. výstupní sestavy) testování logiky systému je náročnější než testování modulů jednotlivě Úvod do softwarového inženýrství IUS 2009/2010 p.7/55

Strategie implementace Implementace shora-dolů možnost demonstrace systému poměrně brzy včasná identifikace najzávažnějších chyb logika systému se ověřuje několikrát (testování celého systému) testování systému: potřeba simulačních modulů (simulace práce podsystémů) nedá sa použít, pokud se požaduje implementace některých modulů nejnižší úrovně na začátku (např. výstupní sestavy) testování logiky systému je náročnější než testování modulů jednotlivě V praxi se požívá kombinace přístupu zdola-nahoru a shora-dolů. Úvod do softwarového inženýrství IUS 2009/2010 p.7/55

Implementace shrnutí Programy se nevytvářejí tak, aby se lehce psaly, ale aby se lehce četly a modifikovaly! Úvod do softwarového inženýrství IUS 2009/2010 p.8/55

Validace a verifikace programu Zjišt ujeme, zda software odpovídá specifikaci a splňuje požadavky uživatele. verifikace: Vytváříme výrobek správně? (podle požadavků, specifikace,... ) validace: Vytváříme správný výrobek? (Jsou splněny potřeby uživatele? Odpovídá tomu specifikace?) Sledované vlastnosti: správnost spolehlivost efektivnost bezpečnost... Úvod do softwarového inženýrství IUS 2009/2010 p.9/55

Validace a verifikace programu Správnost výrobku nepostačuje! Dokonce správnost někdy není nevyhnutelná! Příklad specifikace procedury SORT: Vstupní podmínka A: array(1..n) of integer Výstupní podmínka B: array(1..n) of integer, přičemž B(1) B(2)... B(N) Implementace: procedure SORT begin for i:= 1 to N do B[i] := 0; end Chyba ve specifikaci:... a prvky pole B jsou permutací prvků pole A. Úvod do softwarového inženýrství IUS 2009/2010 p.10/55

Cíle verifikace a validace odhalit chyby během vývoje Test, který neodhalí nesprávné chování systému, je neúspěšný. prokázat požadované vlastnosti Dijkstra: "Testování nemůže prokázat, že v programu nejsou chyby. Může pouze ukázat, že tam chyby jsou!" Murphy: "Když může systém spadnout, tak taky spadne, a to v tom nejnevhodnějším okamžiku." Úvod do softwarového inženýrství IUS 2009/2010 p.11/55

Typy ověřování statické nevyžaduje běh programu, lze v libovolné etapě vývoje SW dynamické proces odvození vlastností výrobku na základě výsledků použití (běhu) programu s vybranými vstupy statické ověřování specifikace požadavků návrh programy prototyp dynamické ověřování Úvod do softwarového inženýrství IUS 2009/2010 p.12/55

Přístupy statického ověřování Prohlídka dokumentu formální (inspection) neformální (walkthrough) je založena na statické prohlídce vytvořených dokumentů (i zdrojových textů programů) Matematická verifikace formální matematický důkaz ověřovaný dokument musí být formálně reprezentovaný (přesná definice sémantiky) Úvod do softwarového inženýrství IUS 2009/2010 p.13/55

Přístupy dynamického ověřování (testování) cíl: vybrat takové testovací vstupy, pro které je pravděpodobnost příslušnosti do množiny I ch vysoká Úvod do softwarového inženýrství IUS 2009/2010 p.14/55

Množina testovacích vstupů velikost množiny testovacích vstupů musí být přijatelná testovací vstup se vybírá na základě testovacího kritéria testovací kritérium určuje podmínky, které musí splňovat množina testovacích vstupů, např. pokrytí všech příkazů v programu Program Specifikace Aplikování kritéria Množiny testovacích vstupů Kritérium Úvod do softwarového inženýrství IUS 2009/2010 p.15/55

Vlastnosti testovacího kritéria spolehlivost: kritérium K je spolehlivé, když všechny množiny testovacích vstupů splňující kritérium K odhalí ty samé chyby nezáleží na tom, která množina testovacích vstupů se vybere, vždy odhalíme ty samé chyby platnost: kritérium K je platné, když pro každou chybu v programu existuje množina testovacích vstupů, která splňuje kritérium K a která odhalí chybu Když je testovací kritérium spolehlivé a platné a množina testovacích vstupů, která splňuje kritérium, neodhalí žádné chyby, tak program neobsahuje chyby. Úvod do softwarového inženýrství IUS 2009/2010 p.16/55

Vlastnosti testovacího kritéria spolehlivost: kritérium K je spolehlivé, když všechny množiny testovacích vstupů splňující kritérium K odhalí ty samé chyby nezáleží na tom, která množina testovacích vstupů se vybere, vždy odhalíme ty samé chyby platnost: kritérium K je platné, když pro každou chybu v programu existuje množina testovacích vstupů, která splňuje kritérium K a která odhalí chybu Když je testovací kritérium spolehlivé a platné a množina testovacích vstupů, která splňuje kritérium, neodhalí žádné chyby, tak program neobsahuje chyby. ALE Bylo dokázané, že neexistuje algoritmus, který určí platné kritérium pro libovolný program. Úvod do softwarového inženýrství IUS 2009/2010 p.16/55

Proces testování Testovací vstupy Testovací údaje Výsledky Navrhni testovací vstupy Připrav testovací vstupy Proved program Porovnej výsledky Zpráva Úvod do softwarového inženýrství IUS 2009/2010 p.17/55

Techniky testování náhodné testování množina testovacích vstupů se vybere náhodně funkcionální testování na základě specifikace programu (vstupy, výstupy) metoda černé skříňky black box, data driven, functional, input/output driven, closed box strukturální testování na základě vnitřní struktury programu metoda bílé skříňky white box, glass box, logic driven, path oriented, open box testování rozhraní na základě znalostí rozhraní mezi moduly a specifikace programu Úvod do softwarového inženýrství IUS 2009/2010 p.18/55

Funkcionální testování zjištění zda vstupně-výstupní chování vyhovuje specifikaci např. matematická funkce se specifikuje vstupy a výstupy testovací vstupy se odvozují přímo ze specifikace neuvažuje se vnitřní struktura, logika modulu velká množina testovacích vstupů (problém) úplné funkcionální testování je v praxi nemožné Příklad: ABS(x) vstup (x) -5 5-2 2 0 0 5 5 výstup Úvod do softwarového inženýrství IUS 2009/2010 p.19/55

Třídy ekvivalence vstupů/výstupů každý možný vstup/výstup patří do jedné z tříd ekvivalence, pro které je chování systému identické (vstup-výstup) žádný vstup/výstup nepatří do více tříd ekvivalence pokud se při daném vstupu/výstupu zjistí chyba, tak stejnou chybu je možné odhalit použitím jiného vstupu/výstupu z dané třídy ekvivalence Úvod do softwarového inženýrství IUS 2009/2010 p.20/55

Třídy ekvivalence vstupů/výstupů Granularita třídy ekvivalence rozsah hodnota podmnožina Výběr testovacích údajů z třídy ekvivalence průměr, medián třídy ekvivalence hranice třídy ekvivalence (příp. s okolními hodnotami) náhodně (doplnění množiny testovacích vstupů) Příklad: ABS(x) třídy ekvivalence vybrané vstupy/výstupy (x:int) (, 0) ( 32767,32767), ( 16384,16384), ( 1,1),... 0 (0, 0) (0, ) (32768,32768), (16384,16384), (1, 1),... Úvod do softwarového inženýrství IUS 2009/2010 p.21/55

Strukturální testování vychází se z vnitřní struktury programu testuje se implementace programu snaha o pokrytí různých struktur programu řízení údaje (data) kritéria: založená na tocích řízení (pokrytí cest, pokrytí rozhodovacích bloků nebo podmínek a pokrytí příkazů) založená na tocích dat mutační testování do programu se úmyslně zavedou chyby kontrolujeme, zda navržené testy tyto chyby odhalí (kvalita testu) Příklad: if x > 0 then y := x else y := -x; Úvod do softwarového inženýrství IUS 2009/2010 p.22/55

Strategie testování Testování zdola-nahoru (bottom-up testing) testují se komponenty na nižší úrovni, poté se integrují do komponenty vyšší úrovně a znovu testují vhodné, pokud většina modulů stejné úrovně je připravena Testování shora-dolů (top-down testing) testují se integrované moduly nejvyšší úrovně, poté se testují submoduly problém s připraveností všech modulů (simulace modulů na nižších úrovních) Sendvičové testování (sandwich testing) kombinace strategií bottom-up a top-down testování moduly se rozdělí do dvou skupin logické: řízení a rozhodování, top-down funkční : vykonávání požadovaných funkcí, bottom-up Úvod do softwarového inženýrství IUS 2009/2010 p.23/55

Strategie testování Jednofázové testování (big-bang testing) moduly se otestují samostatně a poté se naráz integrují náročná identifikace místa chyby při integraci náročné rozlišení chyb v rozhraní modulů od ostatních chyb Testování porovnáváním (comparison testing, back-to-back testing) více verzí systému na testování prototyp technika programování N-verzí vývoj vysoce spolehlivých systémů vývoj více verzí produktu pro různé platformy stejné výsledky značí, že verze pravděpodobně pracují správně problémy: stejné chyby ve verzích nevyhovující specifikace Úvod do softwarového inženýrství IUS 2009/2010 p.24/55

Akceptační testování Testuje se na reálných datech. Testuje se u uživatele. Uživatel určí, zda produkt splňuje zadání. Další změny po akceptaci systému již představují údržbu systému. Vztahuje se na zakázkový software. Úvod do softwarového inženýrství IUS 2009/2010 p.25/55

Alfa a Beta testování... pro generické softwarové výrobky, kde není možné provést akceptační testy u každého zákazníka (operační systémy, kompilátory,... ) Alfa testování tam, kde se vyvíjí software testuje uživatel, vývojáři sledují a evidují chyby známé prostředí Beta testování testují uživatelé u sebe neznámé prostředí výsledkem je zpráva uživatele modifikace softwaru předání softwaru k používání Úvod do softwarového inženýrství IUS 2009/2010 p.26/55

Téma: Agilní metodologie Úvod do softwarového inženýrství IUS 2009/2010 p.27/55

Metodologie disciplinovaný proces nad vývojem softwaru s cílem zajistit tento vývoj více predikovatelný a efektivnější častá kritika "byrokratizace" metodologií příliš mnoho aktivit, které metodologie předepisuje, způsobuje snížení efektivity celého procesu vývoje nová skupina metodologií lightweight methodologies, dnes agile methodologies (agilní metodologie) Úvod do softwarového inženýrství IUS 2009/2010 p.28/55

Agilní metodologie snaha o kompromis mezi chaotickým přístupem bez procesů a přístupem s mnoha procesy rozumná velikost souboru procesů k zajištění přiměřeného zisku menší objem dokumentace v každém kroku klíčová část dokumentace je zdrojový kód! základní charakteristiky: adaptivní vs. prediktivní metody (přístupy) people-oriented vs. process-oriented metody (přístupy) Úvod do softwarového inženýrství IUS 2009/2010 p.29/55

Základní srovnání metod Adaptivní vs. prediktivní prediktivní metody plánují velké části softwarových procesů velmi detailně pro dlouhý časový úsek adaptivní metody (agilní metodologie) reagují na změny, procesy se v čase vyvíjejí People-oriented vs. process-oriented process-oriented metody definují pevnou posloupnost kroků procesy by měly fungovat za všech okolností (změna týmu,... ) people-oriented metody (agilní metodologie) žádný proces nikdy nevytváří dovednosti (znalosti) vývojového týmu úlohou procesu je podpora práce vývojového týmu Úvod do softwarového inženýrství IUS 2009/2010 p.30/55

Predikovatelnost procesu vývoje existují projekty, kde máme na začátku poměrně jasnou představu projekty vyžadující mnoho procedur, času, velké týmy a stabilní požadavky projekty NASA,... dobrá predikovatelnost procesu vývoje existují projekty, kde máme na začátku poměrně jasnou představu ale s časem se mění okolní podmínky a tedy i požadavky business projekty,... horší predikovatelnost procesu vývoje existují projekty, kde máme na začátku poměrně mlhavou představu business projekty,... špatná predikovatelnost procesu vývoje Úvod do softwarového inženýrství IUS 2009/2010 p.31/55

Predikovatelnost procesu vývoje Problém většiny projektů je, že se požadavky neustále mění. Je tedy predikovatelnost nemožná? Úvod do softwarového inženýrství IUS 2009/2010 p.32/55

Predikovatelnost procesu vývoje Přístupy k řešení requirements engineering před tvorbou softwaru získat plně srozumitelný obraz požadavků schválený (podepsaný) zákazníkem definování procedur limitujících změny požadavků po schválení klade vysoké nároky na proces specifikace požadavků a preciznost jejich vyjádření fixní požadavky jejich vytvoření stojí příliš mnoho energie a času adaptivní metody... Úvod do softwarového inženýrství IUS 2009/2010 p.32/55

Řízení adaptivních procesů Iterativní vývoj inkrementální spirálový... Každá iterace zahrnuje analýzu požadavků návrh (úpravy návrhu) implementaci testování analýzu rizik Otázka délky iterace týdny měsíce... Úvod do softwarového inženýrství IUS 2009/2010 p.33/55

Řízení adaptivních procesů Plánování procesů v první iteraci se vždy provádí plánování procesů, a to na základě zkušeností či dostupných metodik tento plán se během iterací vyvíjí (zpřesňuje) podle reálného stavu Úvod do softwarového inženýrství IUS 2009/2010 p.34/55

Process-oriented methods striktně definované procesy lidé jsou zdroje, které jsou dostupné v několika rolích analytik manažer programátor tester... podstatná je role, nikoliv individualita lidí není důležité jaké analytiky máte, ale kolik jich máte člověk je jednoduše nahraditelná komponenta vývojového procesu za standardní prostředek komunikace se považuje dokumentace Úvod do softwarového inženýrství IUS 2009/2010 p.35/55

Process-oriented methods striktně definované procesy lidé jsou zdroje, které jsou dostupné v několika rolích analytik manažer programátor tester... podstatná je role, nikoliv individualita lidí není důležité jaké analytiky máte, ale kolik jich máte člověk je jednoduše nahraditelná komponenta vývojového procesu za standardní prostředek komunikace se považuje dokumentace Teze: člověk vykonávající práci není ten, kdo může nejlépe určit, jak tuto práci nejlépe udělat Úvod do softwarového inženýrství IUS 2009/2010 p.35/55

People-oriented methods Design and programming are human activities; forget that and all is lost. Bjarne Stroustrup, 1991 lidé mají problémy fungovat konzistentně v průběhu času pokud člověk dostane každý den stejný úkol, vytvoří podobné výsledky, ale nikdy ne stejné schopnost pracovního nasazení/soustředění se mění den ze dne, z místa na místo (někteří pracují lépe v noci) lidé jsou komunikující bytosti fyzická blízkost gestikulace, hlasový projev, intonace otázky a odpovědi v reálném čase Úvod do softwarového inženýrství IUS 2009/2010 p.36/55

People-oriented methods Design and programming are human activities; forget that and all is lost. Bjarne Stroustrup, 1991 lidé mají problémy fungovat konzistentně v průběhu času pokud člověk dostane každý den stejný úkol, vytvoří podobné výsledky, ale nikdy ne stejné schopnost pracovního nasazení/soustředění se mění den ze dne, z místa na místo (někteří pracují lépe v noci) lidé jsou komunikující bytosti fyzická blízkost gestikulace, hlasový projev, intonace otázky a odpovědi v reálném čase Teze: člověk je kompetentní profesionál schopný rozhodovat všechny technické otázky své práce. Úvod do softwarového inženýrství IUS 2009/2010 p.36/55

Efektivnost komunikace efektivnost komunikace whiteboard telefon mail dokument forma komunikace Úvod do softwarového inženýrství IUS 2009/2010 p.37/55

Agilní metodologie Základní teze Jediná cesta, jak prověřit správnost navrženého systému, je co nejrychleji jej vyvinout, předložit zákazníkovi a na základě zpětné vazby upravovat. Člen týmu je schopen rozhodovat technické otázky své práce. Rozumná velikost souboru procesů. Klasické pravidlo Implementujeme pro dnešek, navrhujeme pro zítřek. Úvod do softwarového inženýrství IUS 2009/2010 p.38/55

Agilní metodologie Základní teze Jediná cesta, jak prověřit správnost navrženého systému, je co nejrychleji jej vyvinout, předložit zákazníkovi a na základě zpětné vazby upravovat. Člen týmu je schopen rozhodovat technické otázky své práce. Rozumná velikost souboru procesů. Klasické pravidlo Implementujeme pro dnešek, navrhujeme pro zítřek. Upravené pravidlo Implementujeme pro dnešek, navrhujeme pro úspěšnou implementaci. Úvod do softwarového inženýrství IUS 2009/2010 p.38/55

Agilní metodologie Agilní metodologie Extreme programming (XP) Crystal Scrum Feature Driven Development Dynamic System Development Method (DSDM)... Úvod do softwarového inženýrství IUS 2009/2010 p.39/55

Extrémní programování (XP) Kořeny XP Kent Beck: Extreme Programming Explained: Embrace Change Kent Beck, Ward Cunningham 80. léta Smalltalk 90. léta získávání zkušeností v různých projektech, rozšiřování idejí agilního přístupu http://www.extremeprogramming.org Úvod do softwarového inženýrství IUS 2009/2010 p.40/55

Charakteristické prvky XP Komunikace programátoři, zákazníci a manažeři musí spolu komunikovat XP využívá takové techniky, které komunikaci vyžadují (testování, párové programování, odhady úkolů) člen týmu, který udržuje komunikační toky, pomáhá programátorům s technickými dovednostmi, komunikuje s manažery na vyšších úrovních Úvod do softwarového inženýrství IUS 2009/2010 p.41/55

Charakteristické prvky XP Komunikace programátoři, zákazníci a manažeři musí spolu komunikovat XP využívá takové techniky, které komunikaci vyžadují (testování, párové programování, odhady úkolů) člen týmu, který udržuje komunikační toky, pomáhá programátorům s technickými dovednostmi, komunikuje s manažery na vyšších úrovních Zpětná vazba "Zeptej se systému", "Už máš napsaný test?" snaha mít co nejdříve nejdůležitější části systému, nejlépe přímo v provozu zpětná vazba by měla být rychlá přehnaný optimismus se léčí zpětnou vazbou člen týmu, který sleduje metriky, srovnává je s očekávaným stavem (nutnost malé režie) Úvod do softwarového inženýrství IUS 2009/2010 p.41/55

Charakteristické prvky XP Jednoduchost "Co je nejjednodušší věc, která by ještě fungovala?" je dobré udržovat si přehled o tom, co bude nicméně je nutné soustředit se na to, co je potřeba právě ted jednoduché věci je třeba vytvářet jednoduše úspora času na opravdu složité věci v případě potřeby není problém jednoduché věci rozšířit Úvod do softwarového inženýrství IUS 2009/2010 p.42/55

Charakteristické prvky XP Jednoduchost "Co je nejjednodušší věc, která by ještě fungovala?" je dobré udržovat si přehled o tom, co bude nicméně je nutné soustředit se na to, co je potřeba právě ted jednoduché věci je třeba vytvářet jednoduše úspora času na opravdu složité věci v případě potřeby není problém jednoduché věci rozšířit Odvaha nebát se provést zásadní změny (např. i za cenu dočasného snížení úspěšnosti testů a tedy zvýšeného úsilí) nebát se zahodit naprogramovaný kód nebát se zkusit neznámé (když nevíš, že to nejde, může se to podařit) Úvod do softwarového inženýrství IUS 2009/2010 p.42/55

Základní techniky XP Přírůstkové (malé) změny návrh a implementace se mění v čase jen pozvolna uvolňování malých verzí systému (nejpodstatnější požadavky, postupně vylepšované a doplňované) Úvod do softwarového inženýrství IUS 2009/2010 p.43/55

Základní techniky XP Přírůstkové (malé) změny návrh a implementace se mění v čase jen pozvolna uvolňování malých verzí systému (nejpodstatnější požadavky, postupně vylepšované a doplňované) Testování "Co nelze otestovat, to neexistuje." ke každé funkci píšeme testy (mnohdy testujeme dříve, než programujeme) zautomatizovaný systém testů integrace a integrační testování Úvod do softwarového inženýrství IUS 2009/2010 p.43/55

Základní techniky XP Párové programování jednu věc programují vždy 2 programátoři (ale pouze 1 skutečně píše) ten, kdo píše, se soustřed uje na nejlepší způsob implementace problému druhý se soustřed uje na problém z globálnějšího pohledu bude to fungovat, jaké další testy, možnost zjednodušení,... páry jsou dynamické Úvod do softwarového inženýrství IUS 2009/2010 p.44/55

Základní techniky XP Párové programování jednu věc programují vždy 2 programátoři (ale pouze 1 skutečně píše) ten, kdo píše, se soustřed uje na nejlepší způsob implementace problému druhý se soustřed uje na problém z globálnějšího pohledu bude to fungovat, jaké další testy, možnost zjednodušení,... páry jsou dynamické Refaktorizace úprava stávajícího programu zjednodušení, zefektivnění návrhu odstranění (úprava) nepotřebných částí změna architektury (pravidlo přírůstkové změny) při refaktorizaci se nemění funkcionalita! Úvod do softwarového inženýrství IUS 2009/2010 p.44/55

Základní techniky XP Metriky důležitá součást určení kvality softwarových procesů např. poměr plánovaného času a skutečného času přiměřený počet metrik (3 4) pokud přestane metrika plnit svůj účel nahradit jinou např. metrika testů funkcionality se blíží 100% nahradit jinou s menší úspěšností existují pravidla udávající kdy a jak často by se měly jednotlivé techniky používat Úvod do softwarového inženýrství IUS 2009/2010 p.45/55

Proces vývoje v XP Iterace 1 4 týdny nezbytným výsledkem je sada testů funkcionality v první iteraci základy architektury výsledkem je základní funkční systém v dalších iteracích rozšiřování základní verze hledání odchylek od plánu (čas, testování,... ) v případě odchylek změna plánu nebo změna procesu Úvod do softwarového inženýrství IUS 2009/2010 p.46/55

Proces vývoje v XP Správný návrh se vyznačuje všechny testy fungují, neobsahuje duplicitní logiku, má co nejmenší počet tříd a metod, programátor zná všechny záměry návrhu. Motivace vývojářů lidé lépe pracují, pokud je práce baví jídlo, hračky, vybavení pracoviště,... Úvod do softwarového inženýrství IUS 2009/2010 p.47/55

Je RUP agilní metodou? Úvod do softwarového inženýrství IUS 2009/2010 p.48/55

Je RUP agilní metodou? Základní charakteristika základní vyjadřovací prostředek je UML pracuje v iteracích definuje obsah každé iterace definuje pracovní rámec (framework) Použití RUP klasický heavyweight proces agilní proces Úvod do softwarového inženýrství IUS 2009/2010 p.48/55

Je RUP agilní metodou? Craig Larman "light RUP" měsíční iterace první 3 dny iterace využití UML pro přiblížení návrhu pro danou iteraci dx proces minimální RUP proces považuje UML za jeden z možných pomocných prostředků Úvod do softwarového inženýrství IUS 2009/2010 p.49/55

Principy agilních metodologií shrnutí Iterativní a inkrementální vývoj krátké iterace nové funkce (funkcionalita) se dodávají často zákazník má pocit, že se něco děje, má možnost rychle modifikovat funkcionalitu / požadavky Princip jednoduchosti "Implementujeme pro dnešek, navrhujeme pro zítřek." {problém predikovatelnosti} zvyšování funkcionality (nákladů) na základě spekulace "Do systému vložíme to, co potřebujeme, když to potřebujeme." Osobní komunikace v týmu zásadní problém každé skupiny je komunikace komunikace jako jedna z forem vývoje softwaru používají se takové techniky, které komunikaci vyžadují párové programování, refaktorizace, časté schůzky se zákazníkem,... Úvod do softwarového inženýrství IUS 2009/2010 p.50/55

Principy agilních metodologií shrnutí Zákazník je členem vývojového týmu zákazník komunikuje s vývojovým týmem zákazník se spolupodílí na návrhu systému, na testech,... Průběžné automatizované testování časté změny systému vyžadují časté ověřování správnosti testy by měly být automatizované testy by měly být napsány před implementací Dokumentace význam formálních dokumentů je snižován základní dokumentace je zdrojový kód (klade se na něj největší důraz) uživatelský manuál (ne příliš rozsáhlý) Úvod do softwarového inženýrství IUS 2009/2010 p.51/55

Prediktivní či agilní metodologii? Kdy použít agilní metodologii? neurčité nebo měnící se požadavky odpovědní a dobře motivovaní vývojáři zákazník, který je ochoten zapojit se do vývoje Kdy použít prediktivní metodologii? velký vývojový tým (více jak 100 lidí) pevný rozsah projektu Výběr metodologie ovšem závisí na mnoha dalších aspektech... Úvod do softwarového inženýrství IUS 2009/2010 p.52/55

Poznatky z praxe Přístupy lidí vývoj podle předpisů můžeme říci, že neúspěch není naše chyba lidé preferují konzervativní přístup a neúspěch než riskovat úspěch s odlišnou metodou každá nová technika návrhu vypadá příliš složitě na použití návrhové týmy ignorují nástroje a techniky, které nemají rádi lidé pracují (učí se) dobře podle příkladů Metodologie většina metodologií může být vytvořena (použita) tak, aby pracovala v nějakém projektu libovolná metodologie může vést nějaký projekt k neúspěchu úspěšné týmy používají inkrementální vývoj "heavy" procesy bývají úspěšné "light" procesy jsou častěji úspěšné, úspěch je připisován právě "lightness" použité metodologie Úvod do softwarového inženýrství IUS 2009/2010 p.53/55

SW inženýr a metodologie Co musí umět dobrý SW inženýr? vybrat vhodnou metodologii nebo na základě metodologií vytvořit scénář vývoje softwaru tak, aby projekt úspěšně dosáhl stanoveného cíle, stanovit cíle splnitelné v daném prostředí cena termín dokončení funkčnost kvalita a to s ohledem na vývojový tým, který má k dispozici. Úvod do softwarového inženýrství IUS 2009/2010 p.54/55

Další reference http://www.martinfowler.com/articles/newmethodology.html http://agilemanifesto.org/ Václav Kadlec. Agilní programování: Metodiky efektivního vývoje softwaru. Craig Larman. Agile and iterative development: a manager s guide. Scott W. Ambler. Agile database techniques: effective strategies for the agile software developer. Mike Cohn. Agile estimating and planning. http://alistair.cockburn.us http://www.controlchaos.com Kent Beck. Extreme Programming Explained: Embrace Change. Alistair Cockburn. Agile Software Development: The Cooperative Game. Alistair Cockburn. Crystal Clear: A Human-Powered Methodology for Small Teams. Ken Schwaber, Mike Beedle. Agile Software Development with SCRUM. Úvod do softwarového inženýrství IUS 2009/2010 p.55/55