Metodiky vývoje software, MDA



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

Unifikovaný proces vývoje

Agile Software Development

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

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

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

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

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

Obsah. Zpracoval:

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

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

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

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

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

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

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

Analýza a Návrh. Analýza

UML - opakování 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

Problémy při zavádění agilních přístupů

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

PŘÍLOHA C Požadavky na Dokumentaci

CASE nástroje. Jaroslav Žáček

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

7 Jazyk UML (Unified Modeling Language)

Unifikovaný modelovací jazyk UML

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

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

7 Jazyk UML (Unified Modeling Language)

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

CASE. Jaroslav Žáček

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

10 Metody a metodologie strukturované analýzy

Modelování procesů s využitím MS Visio.

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

XINF1. Jaroslav Žáček

2 Životní cyklus programového díla

POČÍTAČE A PROGRAMOVÁNÍ

Vývoj informačních systémů. Obecně o IS

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

8 Přehled OO metodik (metod, metodologií)

8 Přehled OO metodik (metod, metodologií)

UML a jeho použití v procesu vývoje. Jaroslav Žáček jaroslav.zacek@osu.cz

Principy UML. Clear View Training 2005 v2.2 1

SOFTWAROVÉ INŽENÝRSTVÍ 1

Analytická specifikace a její zpracování

Seznam.cz. Tomáš Pergler. najdu tam, co neznám!

Jiří Mašek BIVŠ V Pra r ha

Agilní metodiky a techniky. analýza a vývoj IS

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

Objektová tvorba SW, Analýza požadavků 2006 UOMO 53

Agilní modelování. ing. Alena Buchalcevová, Ph.D. Katedra informačních technologií VŠE Praha nám. W.Churchilla 4, Praha 3

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

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

Manažerská informatika - projektové řízení

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

METODIKY VÝVOJE SOFTWARE STUDIJNÍ OPORA PRO KOMBINOVANÉ

RUP - Motivace, principy. Jaroslav Žáček

RUP - MOTIVACE, PRINCIPY JAROSLAV ŽÁČEK

Návrh IS - UML. Jaroslav Žáček

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

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

6 Objektově-orientovaný vývoj programového vybavení

Návrh IS - UML. Jaroslav Žáček

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: AVTK. Úvod. strana 1

5 Požadavky a jejich specifikace

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

Přednáška. Sběr požadavků na SW s použitím metody C.C a nástroje Craft.CASE. e-fractal, s.r.o.

Modelování požadavků

5 Požadavky a jejich specifikace

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

Pokročilé typové úlohy a scénáře 2006 UOMO 71

Novinky v UML 2.5 a agilní modelování

Business Process Modeling Notation

EXIN Agile Scrum Foundation Příručka ke zkoušce. Vydání

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

Metodiky vývoje SW. Taxonomie metodik. Metodiky pro softwarový proces. Moderní strukturovaná analýza. Unifikovaný proces vývoje (UP) Klasické.

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

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

OOT Objektově orientované technologie

Modelem řízený vývoj. SWI 1 Jan Kryštof

Vývoj řízený testy Test Driven Development

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

Co je to SCRUM! FRAMEWORK vs METODIKA. Ken Schwaber a Jeff Sutherland ho mají za framework Kde hledat detaily?

Analýza a návrh webových aplikací 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

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

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

Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování.

Metodický rámec budování IS/ICT

Softwarový proces Martin Hlavatý 4. říjen 2018

Informační systémy. Jaroslav Žáček

OOT Objektově orientované technologie

Agilní metodiky vývoje softwaru

Jakou metodiku použít pro

7.2 Model použití (jednání) (Use Case)

1. VYMEZENÍ ODBORNÉ STÁŽE

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

Informační systémy ve strojírenství

Životní cyklus vývoje SW. Jaroslav Žáček

Architektura softwarových systémů

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

Transkript:

Metodiky vývoje software, MDA Karel Richta Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze richta@fel.cvut.cz, 2011 Softwarové inženýrství I., BI-SI1 04/2011, Přednáška 10 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 1/65

Metodiky vývoje software Klasické metodiky Moderní strukturovaná analýza (MSA) Unifikovaný proces vývoje (UP) Agilní metodiky Extrémní programování (XP) SCRUM Modelem řízený vývoj (MDD, MDA) richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 2/65

Proces vývoje software Jedním ze základních cílů softwarového inženýrství je efektivní vytváření softwarových produktů. Chceme-li vytvářet software efektivně, musíme studovat proces jeho tvorby říká se mu také softwarový proces. Musíme se zabývat otázkou, jak by se mělo postupovat, jaké fáze a kroky v životním cyklu produktu jsou podstatné, co je jejich vstupem a výstupem. Musíme se zabývat otázkou, kdo tyto kroky realizuje, zda všichni dělají totéž, nebo se mohou specializovat. Všechny takové znalosti můžeme shrnout do doporučení, jak organizovat proces vývoje metodiky pro proces vývoje. Metodika není metodologie (nauka o metodách). richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 3/65

Softwarové profese Manažer projektu Vedoucí týmu Procesní analytik Softwarový architekt Návrhář (rozhranní, API, grafik, ) Vývojář (ideový programátor, druhý programátor) Kodér Testér Manažer kvality Knihovník Specialista na jazyk, prostředí, knihovnu, Dokumentarista Správce (sítě, aplikace, databáze, ) Redaktor obsahu richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 4/65

Software někdo vytváří. Softwarové týmy Jedním zprojevů přechodu od ruční výroby kmanufaktuře je definice softwarových profesí. Řešení velkých projektů vyžaduje spolupráci mnoha řešitelů a práci je nutno rozdělit. Dělba práce vyžaduje organizaci týmů řešících větší softwarové projekty. Týmy lze organizovat jako strukturované nebo nestrukturované. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 5/65

Organizace týmů Nestrukturované týmy Dělí práci podle objemu. Mohou být organizovány jako: Osamělí vlci Horda Demokratická skupina Strukturované týmy Dělí práci podle profese. Mohou být organizovány jako: Chirurgický tým Tým hlavního programátora Agilní skupina Více-týmová organizace richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 6/65

Kterou organizaci zvolit? Volba organizace je dána rozsahem projektu a schopností zdrojů (liší se v rozsahu 1-20). Pro menší rozsah lze použít nestrukturovaný tým. Pro větší projekty se samozřejmě hodí strukturované týmy. Máme-li dost prostředků, nejvýkonnější je chirurgický tým. Nemáme-li, nejefektivnější může být tým hlavního programátora, agilní skupina, nebo demokratická skupina. Na větší projekty je třeba více-týmová organizace (pravidlo 7±2). richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 7/65

Životní cyklus program. díla Nápad Neformální specifikace (vize, odborný článek) Katalog požadavků(aktéři, úvodní studie) Formální specifikace(analýza) Dekompozice (návrh) Řešení komponent (modulů) Implementace komponent Testování komponent Integrace komponent do celku Testování celku (akceptační test) Instalace Provoz a údržba Programování ve velkém Programování v malém richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 8/65

Fáze tvorby SW produktu Úvodní studie (informační plánování, feasibility study, sběr požadavků) podklady pro rozhodnutí, zda vůbec má projekt smysl. Analýza(specifikace) vytvoření dostatečně přesné specifikace produktu. Návrh(design) dekompozice systému na komponenty, které lze naprogramovat. Implementace(konstrukce) realizace komponent definovaných v návrhu a jejich sestavení do výsledného produktu. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 9/65

Náročnost fází životního cyklu Každý produkt by měl projít všemi fázemi životního cyklu. Ze statistik (pro velké systémy řádově stovky tisíc řádků kódu) vyplývá, že úsilí věnované těmto fázím by mělo být rozděleno zhruba v poměru: analýza 40% návrh 40% implementace 20% Pokudnevěnujemepočátečním fázím dostatečné úsilí, projeví se to zvýšenými nároky při implementaci či údržbě systému. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 10/65

Modely životního cyklu Pro standardizaci postupů jsou zavedeny typové modely životních cyklů, např.: Model vodopád (Waterfall) Model průzkumník Spirálový model Přírůstkový model Model životního cyklu určuje základní schéma postupu. Životní cyklus by měl vždy začínat dostatečně přesnou specifikací a návrhem. Není nutno realizovat celý systém najednou naopak přírůstky poskytují uživateli dobrý pocit postupu prací. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 11/65

Model vodopád Nikdy se nevracet zpět richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 12/65

Přírůstkový model Rozdělíme řešení na přírůstky richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 13/65

Spirálový model PROVOZ ANALÝZA IMPLEMEN- TACE NÁVRH richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 14/65

Model průzkumník Nejsme schopni odhadnout dopředu, jak to dopadne richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 15/65

Jiné modely životního cyklu Model RAD (Rapid Application Development) model určený pro dobře srozumitelné a dobře vymezené problémy, s malými riziky, využívající krátký vývojový cyklus (cca do 3 měsíců), problém je rozdělen na samostatné moduly -model založen na rychlé tvorbě prototypů Evoluční model využívá skládání komponent, které mohou být vyvíjeny současně, či zakoupeny a upraveny Formální metody využívají specifikací řízený styl vývoje, tj. generování programů ze specifikací Extrémní programování a podobné techniky Testy řízený vývoj (spirála s testy) richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 16/65

V-model act V-Model Vodopád s testy Úvodní studie Akceptační testy Analýza Integrační testy Návrh Testy jednotek Implementace richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 17/65

Metodiky pro softwarový proces Co to je softwarový proces umění, manufaktura, modelování? Proces vývoje software by se měl řídit nějakým doporučením sníží se tím pravděpodobnost chyb, opomenutí apod. Doporučení jsou obvykle shrnuta do metodiky(angl. methodology). Metodika je jen šablona, musíme ji přizpůsobit firmě, týmu, projektu, účelu (vývoj, provoz, přizpůsobení). Metodika předepisuje postup, jeho kroky a artefakty získané v těchto krocích. Skutečný proces vývoje pak využívá různé standardy, idiomy, předepsané formáty apod. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 18/65

Klasické Taxonomie metodik Strukturované, objektové, komponentové Vodopád (MSA, SSADM) Unifikovaný proces (UP) RUP (Rational Unified Process) Agilní (vycházejí z manifestu agilních metod) Testy řízený vývoj Extrémní programování (XP) SCRUM AUP (Agile Unified Process) richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 19/65

Moderní strukturovaná analýza (MSA) Autoři E.Yourdon (analýza), M.Page-Jones (návrh). Klasický vodopádový model. Sběr požadavků výstupem je odborný článek a hrubý model jednání. Analýza (E.Yourdon): Vytváří analytický model, který se skládá z datového modelu a funkční hierarchie sady diagramů datových toků (diagramů aktivit), popisujících požadovanou funkčnost. Návrh (M.Page-Jones): Výstup analýzy podrob tzv. transakční a transformační analýze a navrhni řešení. Implementace podle návrhu richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 20/65

act Moderní strukturov aná analýza (MSA) Hledání aktérů a případů užití «centralbuffer» Model jednání Náv rh funkcí Generalizace «centralbuffer» Model chov ání Doplnění dat «centralbuffer» Datov ý model Dekompzice Transakční analýza Transformační analýza «centralbuffer» Logický model richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 21/65

MSA: Analýza Vstupem je neformální specifikace (vize projektu). Sestavte aktéry a případy užití (kontext). Pro každý případ užití navrhněte funkci (proces), která bude tento případ obsluhovat. Zjistěte potřebná data pro každou funkci vymysli vstupní a výstupní data. Proveďte generalizaci a dekompozicitěchto funkcí. Generalizací dospějete k modelu jednání, navrhněte strukturu menu aplikace. Dekompozicí postupně dojdete k elementárním funkcím, které již postačí popsat textově (pomocí tzv. minispecifikací). richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 22/65

MSA: Návrh Proveď transakční analýzu-vezmi všechny diagramy datových toků (aktivity) a vyber z nich sadu pro každou transakci (případ užití). Pro každý takto získaný popis transakce vysleduj jádro, které transformuje data tzv. transformační analýza. Z jádra učiň ředitele této transakce (řídicí třídu) a doplň komunikaci s třídami získávajícími vstupní data a formátujícími výstupní data. K této sadě přidej tzv. transakční monitor: modul, který zjistí, o kterou transakci se jedná a vyvolá odpovídající řidící třídu. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 23/65

Unifikovaný proces vývoje (UP) UP je: Průmyslový standard kostry vývojového procesu Využívá notace UML (Unified Modeling Language) Je to otevřený standard (na rozdíl např. od RUP Rational Unified Process, dříve Rational, nyní IBM) Základem je publikace Jacobson, Booch, Rumbaugh: The Unified Software Development Process" UP je: Řízen požadavky a případy užití (use case driven) Řízen rizikem Staví na architektuře, komponentách a znovupoužití Iterativní a přírůstkový proces UP je: pouze generická metodika, musí být uzpůsobena pro danou firmu, projekt - standardy, šablony, nástroje, richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 24/65

Agilní metodiky Vycházejí z principů Manifestu agilních metodik. Psychologie týmu (http://agilemanifesto.org/) SCRUM (http://www.scrumalliance.org/) CrystalClear(http://www.agilekiwi.com/crystal_clear.htm) XP - Extreme Programming (http://www.extremeprogramming.org/) Dynamic Systems Development Method Adaptive Software Development Feature Driven Development Lean Development OpenUP richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 25/65

Extrémní programování (XP) Agilní technika vývoje softwaru, která dle agilního manifestu upřednostňuje: Týmovou spolupráci a interakci před formálními procesy a nástroji. Fungující software před obsáhlou, komplexní dokumentací. Spolupráci mezi zákazníkem a vývojáři před specifikacemi, zadáními, dohodnutými kontrakty. Rychlou adaptaci na změny v zadání před dodržováním předem stanovených pravidel. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 26/65

XP: Základní principy Řízeno požadavky uživatelů (user stories). Vyvíjí se v iteracích. Pracuje se ve dvojicích. Co nejjednodušší návrh (neprogramujeme dopředu), okamžité testování. Refaktorizace kódu, kód je společný - standardy pro kódování. Co nejrychlejší zpětná vazba, uživatel součástí vývojového týmu, minimum dokumentace. Nepřehánět zátěž - 40 hodin týdně. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 27/65

12 technik používaných v XP Plánování hrou Malé dodávky (releases) Metafory Jednoduchý návrh Párové programování Intezivní testování Refaktorizace kódu Kolektivní vlastnictví kódu Spojitá intergace 40 hodin/týden Zákazník součástí týmu Kódové standardy richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 28/65

Kdy se hodí XP? Když je limitovaný čas nebo finance. Když zákazník není přesně co chce, nebo není schopen dodat dostatečně přesné zadání. Když zákazník chce spolupracovat na projektu. Když se ví, že se bude systém měnit. Když jsou členové týmu schopni spolupracovat a dobře spolu vycházejí. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 29/65

Kdy se nehodí XP? Když je nutný větší tým vývojářů (více než 15). Když je vývojový cyklus (oprava, překlad, sestavení spuštění) příliš dlouhý (5 minut, hodina). Když jsou testy příliš dlouhé (minuty, hodiny). Když nelze zákazníka dostat do týmu. Když zákazník nechápe principy XP. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 30/65

Srovnání XP představuje alternativu k UP, či vodopádovému modelu. Není to nekoordinované hackování kódu zdivočelými programátory. Aby fungovalo, musí mít tým jisté zkušenosti a musí dodržovat všech 12 technik. XP není všelék, hodí se jen někdy, ale někdy může přinášet lepší výsledky za kratší čas. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 31/65

SCRUM (pojem z rugby) Žádné týmové hierarchie, tým do 7 osob, pracuje se v jedné místnosti (osmóza), tým si volí šéfa (scrum master) Krátké iterace (sprints) Plánovací schůzka před každou iterací Seznam akcí pro danou iteraci (backlog) Denní skrumáže (co jsem udělal, co budu dělat, jaké mám problémy) Retrospekce po každé iteraci (heartbeat session) Vlastníkem kódu je tým - standardy pro kódování richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 32/65

Role v metodice SCRUM Metodika SCRUM stanovuje následující role: vedoucí projektu (ScrumMaster) řídí procesy a celkovou práci, zadavatel (Product Owner) který reprezentuje zainteresované osoby (stakeholders) a vývojář (TeamMember) který zahrnuje členy týmu. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 33/65

SCRUM -postup Vytvoření plánu projektu (project backlog) Sestavení případů užití (user stories) Definice potřebných úloh (sprintů). Realizace plánu projektu Výběr sprintu (sprint backlog) Realizace sprintu Denní setkání (SCRUM Meetings, skrumáže) Sledování postupu (burndown graf). Zdroj: Wikipedia richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 34/65

Agilní přístupy a dokumentace Představa, že v agilních metodikách se nevytváří žádná dokumentace, či modely, ale pouze kód, není pravdivá. V agilních metodikách modelujeme, dokumentujeme, ale pouze v jiné formě a pouze to, co je nezbytně nutné. Uživatelské příběhy (user stories) popisují funkčnost a detaily jsou zachyceny v testech. Další dokumentací je samozřejmě dobře strukturovaný a komentovaný zdrojový kód. Modely také existují ale například pouze jako náčrty na tabuli či na papíře. Jelikož jsou běžné krátké obrátky, kód se často mění (refaktoruje), stálo by přepracování modelů či jiných dokumentů spoustu úsilí nebo by se tyto staly brzy neaktuální, proto opravdu dokumentujeme jen důležité věci. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 35/65

Agilní přístupy a architektura Není pravda, že v agilních metodikách nenavrhujeme žádnou architekturu je pravdou, že na začátku projektu si nesedneme ke všem požadavkům (protože je ani nemáme) a neřešíme papírovou architekturu. V úvodních iteracích ale řešíme určitou kostru aplikace, vrstvy, způsob ukládání dat, komunikaci s ohledem na celé řešení, definujeme rozhraní vrstev, jelikož toto mohou být zásadní technické problémy (např. integrace se zastaralým legacy -bankovním systémem, pravidelné dávkové importy, implementace standardů), které mohou silně ovlivnit celé řešení použitou technologii, způsob komunikace mezi vrstvami, nutnost prototypů apod. Detailní architekturou se pak zabýváme vždy jen pro danou iteraci (tj. jen pro scénáře které nyní implementujeme), neřešíme architekturu s ohledem na požadavky, které bychom měli implementovat v budoucích iteracích, protože se mohou změnit priority, tyto požadavky se mohou posunout do dalších verzí, či úplně zrušit a naše snaha může přijít vniveč. Neděláme tedy architekturu do šuplíku, ale jen pro aktuální potřebu. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 36/65

Agilní jsou/mají být jen vývojáři? Agilní nemohou být jen vývojáři, obchodníci a management musí agilnímu přístupu rozumět také. Pokud zákazníkovi řekneme (tedy spíše naši obchodníci), že jsme schopni dodat opravdu všechno, co si vymyslel, za tu cenu, v tom čase a v té kvalitě (což se opravdu často děje), bez ohledu na to, co říká trojúhelník kvality, pak nás samozřejmě ani agilní přístupy nezachrání. Pokud zákazník nebude chtít spolupracovat, nebude se chtít účastnit pravidelných schůzek (user play), kde si hraje s dosud vyvinutým řešením, komentuje se a připomínkuje, nelze očekávat úspěch. Musíme zákazníka učit, vysvětlovat, proč je nutné vidět aplikaci a korigovat své i naše představy, že jen tak dostane opravdu to, co očekával. Je to těžké, protože zákazník byl po léta zvyklý na začátku nadiktovat všechny, tedy i ty nepotřebné požadavky (kterých je podle Standish Group více než polovina) a na konci očekával řešení. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 37/65

Podpora vedení firmy není třeba? Podpora vedení firmy je velmi důležitá. Nestačí, aby vedení vývojářům řeklo: ano, nějak si to teda udělejte (rozuměj zaveď agilní metodiku) to je další častou chybou a naivní představou. Co je ještě horší, je zavádět agilní praktiky a životní cyklus potají. Tajné zavádění či nedostatečná podpora ze strany managementu v podstatě úplně zhatí celou snahu, jelikož bez podpory managementu (který má tuto vizi protlačit) a bez oficiálních prostředků a schválení (vývojáři absolvují tréninky, zpomalí se tempo vývoje) agilní přístup ani zavést nelze, jedná se totiž o úplnou změnu chování a myšlení všech lidí v organizaci a také o změnu vystupování směrem k zákazníkovi (což potají moc dobře nejde :-). StandishGroupřadí podporu managementu (executivesupport) na 1. místo svého pravidlenéhotzv. Chaos report, který popisuje situaci ohledně projektů v IT. Angažovanost uživatelů v projektu řadí až na 2. místo. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 38/65

Agilní přístupy obecné shrnutí Agilní přístupy jako Scrum, XP, Leandevelopment, OpenUP, AUP apod. většinou představují sadu doporučení, co se v praxi osvědčilo. Metodika přesně říká co, kdy, kdo a jak má dělat. Zde se často popisují kroky, které je možné provádět při vývoji software, jaké artefakty mohou zachycovat různé informace, prostě jaké činnosti se v praxi osvědčily. Na nás pak je, abychom si vybrali, co konkrétně nyní potřebujeme, uznáme za vhodné dělat, tj. vytvořili si vlastní proces. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 39/65

Nutné je přizpůsobení metodiky Je to pochopitelné, každá organizace je jiná, má jinou strukturu, kulturu, distribuce týmu se různí, členové týmu mají jiné zkušenosti a znalosti, jejich povahové rysy jsou různé, také zákazník se chová jinak. Proto není možné postupovat vždy podle stejné či podobné metodiky, ale je třeba si daný proces vývoje upravit podle potřeb daného projektu (přesně toto doporučují či říkají dané přístupy). Samozřejmě je třeba dodržet a následovat určité zásady a principy. Funguje to stejně jako s bufetem ve formě švédských stolů. Bereme si jen to, co máme rádi (ne všechno častá dezinterpretace UP, že je příliš těžkopádná; nikde však není psáno, že máme dělat vše, co UP popisuje), s čím máme dobré zkušenosti, sem tam zkusíme něco nového a snažíme se tomu přijít na chuť, ale musíme dodržovat určité zásady. Jídlo dáváme na talíř, většinou jíme příbory, nápoje naléváme do skleniček apod. Zdroj: Procházka: Problémy s adopcí agile přístupů richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 40/65

Snaha o standardizaci V roce 1979 vytváří FletcherBuckleystandard IEEE 370 pro vytváření plánů zajišťujících kvalitu software. V roce 1986 vzniká standard IEEE 1002, který definuje taxonomii softwarově inženýrských standardů. 1990 1995 vznikají standardy pro proces životního cyklu software (Standard forsoftware LifeCycleProcesses) -standard ISO/IEC12207, vychází z DoDStd498. Standardizováno je všechno možné (např. ISO 5218 -reprezentace pohlaví). Vznikají normy jako CMMI, ISO. Standardy pro řízení procesu vývoje ISO 9001:2000. CMMIje zkratkou z anglického TheCapabilityMaturity Model Integration-volně přeloženo: integrovaný, účinný a funkční model řízení procesů vývoje. Jedná se o soubor pravidel, požadavků a doporučení, které mají splňovat firemní procesy a co je třeba dodržovat, aby procesy vývoje byly efektivní, účinné a spolehlivé. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 41/65

Modelem řízený vývoj Model vzniká vždy. Někdy bohužel jen v hlavách vývojářů. Sdružení OMG propaguje přechod na modelem řízený vývoj - MDA Guide(http://www.omg.org/mda). Alternativní označení MDD (Model DrivenDevelopment), či dokonce MDE (Model Driven Engineering) Model je kombinací textu a diagramů. Model by měl být čitelný i bez diagramů. Diagramy pouze usnadňují pochopení základní myšlenky popisovaného. Každý digram by měl obsahovat pouze jednu myšlenku. Vytváření modelu je tedy převážně mentální úsilí vyúsťující v psaní textu a kreslení diagramů. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 42/65

Proč modely vytvářet? Zaměstnanci přicházejí a odcházejí, modely zůstávají. Znovu-použitelnost (firemní know-how). Sledovatelnost realizace požadavků. Zvýšení udržovatelnosti produktů. Možnost kontroly, animace. Možnost automatizovaného zpracování. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 43/65

Modelemřízený vývoj (OMG) Konceptuální model Doménový model Logický model ISM (Implementation Specific Model Zdroj: Materiály OMG Fyzický model richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 44/65

Reverzní inženýrství Reverzní inženýrství v informaticeje definováno jako proces analýzy předmětného systému s cílem identifikovat komponenty systému a jejich vzájemné vazby a/nebo vytvořit reprezentaci systému v jiné formě nebo na vyšší úrovni abstrakce (Wikipedie). Reverzní inženýrství řeší v České republice Autorský zákon tedy zákon 121/2000Sb. 65 (2) Myšlenky a principy, na nichž je založen jakýkoli prvek počítačového programu, včetně těch, které jsou podkladem jeho propojení s jiným programem, nejsou podle tohoto zákona chráněny. 66 Omezení rozsahu práv autora k počítačovému programu. Do práva autorského nezasahuje oprávněný uživatel rozmnoženiny počítačového programu, jestliže: b) jinak rozmnožuje, překládá, zpracovává, upravuje či jinak mění počítačový program, je-li to nezbytné k využití oprávněně nabyté rozmnoženiny počítačového programu v souladu s jeho určením, není-li dohodnuto jinak, d) zkoumá, studuje nebo zkouší sám nebo jím pověřená osoba funkčnost počítačového programu za účelem zjištění myšlenek a principů, na nichž je založen kterýkoli prvek počítačového programu, činí-li tak při takovém zavedení, uložení počítačového programu do paměti počítače nebo při jeho zobrazení, provozu či přenosu, k němuž je oprávněn. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 45/65

Sen OMG. Okružní jízda ( Round-Trip ) Vezmu existující systém, reverzním inženýrstvím z něj udělám model, ten opravím a vygeneruji novou verzi systému. Vezmu model z repositáře, upravím model podle požadavků, vygeneruji pracovní verzi systému, opravím v ní chyby, reverzním inženýrstvím z ní vytvořím opravený model, který schovám do repositáře. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 46/65

Okružní jízda (Round-Trip) Doménový model (CIM) Analýza Konceptuální Model (PIM) Návrh Logický model (PSM) Implementace Reverzní inženýrství Fyzický model (ISM kód) Provoz richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 47/65

Podmínky pro okružní jízdu Nástroje pro práci s modely na všech úrovních. Nástroje pro transformace modelů v obou směrech. Řada nástrojů již umí některé přímé transformace. Např. pro datový model se umí generovat různé PSM z konceptuálního PIM. Speciálně pro relační platformu generují z konceptuálního PIM relační model (PSM) a posléze také SQL (ISM). Méně nástrojů umí zpětné transformace. Řada nástrojů umí vyrobit z kódu (ISM) jistou část platformověspecifického modelu, např. z SQL relačního PSM. richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 48/65

The End richta@fel.cvut.cz (ČVUT) Metodiky vývoje software, MDA BI-SI1, 2011, Přednáška 10, 49/65