metodiky vývoje is
DESCRIPTION
Metodiky vývoje IS. Roman Danel VŠB – TU Ostrava HGF Institut ekonomiky a systémů řízení. Literatura. Guckenheimer, S. – Perez, J.: Efektivní softwarové projekty. Zoner Press, Brno 2007 Paleta, P.: Co programátory ve škole neučí. Computer Press, 2003 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/1.jpg)
Metodiky vývoje IS
Roman Danel
VŠB – TU OstravaHGF
Institut ekonomiky a systémů řízení
![Page 2: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/2.jpg)
Literatura
• Guckenheimer, S. – Perez, J.: Efektivní softwarové projekty. Zoner Press, Brno 2007
• Paleta, P.: Co programátory ve škole neučí. Computer Press, 2003
• Kadlec, V.: Agilní programování – metodiky efektivního vývoje softwaru. ComputerPress, Brno 2004.
![Page 3: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/3.jpg)
O čem je tato přednáška?
1. Pohled do historie vývoje SW.
2. Softwarová krize a dnešní pohled na problémy softwarové krize
3. Odlišnosti vývoje SW oproti jiným oborům.
4. Metodiky vývoje SW1. Klasické
2. Agilní
![Page 4: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/4.jpg)
Metodiky vývoje software
Vývoj prvních programů:
• Nadšenci
• Programy šité na míru
• Žádná metodika neexistuje
• Vývoj SW = výzkum
Na přelomu 60. a 70. let 20. století se začalo mluvit o tzv. „softwarové krizi“.
![Page 5: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/5.jpg)
Softwarová krize
• Neúnosné prodražování projektů
• Neúnosné prodlužování projektů
• Nízká kvalita programů
• Nízká produktivita programátorů
• Neefektivita vývoje
• Nejistota výsledku
![Page 6: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/6.jpg)
Jak vypadají problémy „softwarové krize“ z dnešního pohledu?
![Page 7: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/7.jpg)
Problém: špatná komunikace
Jedním z hlavních problémů při vývoji SW je špatná komunikace.
Zákazník jedná přímo s programátorem.
Dnes:
tendence k oddělení funkce analytika od vývojáře (kodéra)
![Page 8: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/8.jpg)
Problém: nesprávný přístup
Problém přístupu lidí k vývoji. Programátoři občas sklouzávají k tendenci předvést se, seberealizovat, „vyřádit se“.
Dnes:
zaměření na týmovou spolupráci, důležitá je spokojenost zákazníka
![Page 9: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/9.jpg)
Problém: špatné plánování
Je obtížné vypracovat plán vývoje, který je přijatelný pro zákazníka a realizovatelný pro vývojáře. Představa typu „ nějak se to stihne“.
Po zadání projektu někdy následovalo bezprostřední „bušení do klávesnice“.
Dnes: metodiky vývoje software
![Page 10: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/10.jpg)
Problém: nízká produktivita
Programátoři se zabývali vším možným jen ne tím, co bylo potřeba. Tendence psát kód okamžitě, vychrlit čím jak nejvíce řádků kódu.
Dnes:
Tým s přidělenými rolemi. Důraz na koordinaci vývoje. Vývoj podle předem stanovených specifikací.
![Page 11: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/11.jpg)
Problém: podcenění hrozeb a rizik
Problémy, které by mohly být vyřešeny hned na začátku, byly přehlíženy. „To vyřešíme nakonec“, „to nebude problém“, „to se nepozná“.
Dnes: snaha odhalit chyby na začátku. Metodiky na provádění analýzy rizik (rozbor potenciálních hrozeb). Metodiky, které berou riziko jako základní jednotku.
![Page 12: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/12.jpg)
Nejčastější problémy vývoje SW!
• Zpoždění
• Vysoká chybovost
• Neplnění požadované funkčnosti
• Nedostatečná výkonnost
• Složité uživatelské rozhraní
• Obtížná udržovatelnost programu
![Page 13: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/13.jpg)
Základní příčiny problémů při vývoji IS
• Podcenění projektu a špatný odhad (čas, náklady)• Špatné zadání• Nedostatečná analýza• Přílišná složitost projektu• Přehnaný důraz na technologii (použití novinek bez
zkušeností)• Špatná kvalita programového kódu (chybový,
nesrozumitelný, pomalý, nedostatečně komentovaný)• Nevhodné metodiky, postupy, technologie• Nedostatečné testování• Špatné projektové řízení
![Page 14: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/14.jpg)
Co je „softwarové inženýrství“?
![Page 15: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/15.jpg)
Softwarové inženýrství
Softwarové inženýrství je zavedení a používání inženýrských principů tak, abychom dosáhli ekonomické tvorby softwaru.
Takto vytvořený software je spolehlivý a pracuje na dostupných výpočetních prostředcích.
![Page 16: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/16.jpg)
Podmínky úspěšné tvorby SW
• Vhodné sestavení vývojového týmu
• Volba správných nástrojů
• Úvaha koupit/vyvíjet
• Nalézt společnou řeč se zadavatelem
• Řešení budoucí údržby/rozšiřování
![Page 17: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/17.jpg)
Co je to metodika?
Metodika vývoje SW - všechny etapy řešení
Proč? Kdo? Kdy? Co?
Souhrn postupů vedoucích k dodání funkčního software.
![Page 18: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/18.jpg)
Metodiky vývoje SW
Tradiční metodiky– Model „napiš – oprav“ (Build and Fix)– Striktní posloupnost fází (Stagewise)– Vodopádový model (Waterfall)– Spirálový model– Další metodiky: RUP, USDP, …
Agilní metodiky– Extrémní programování– Crystal– SCRUM– Aspect Oriented Programming– Test Driven Development
![Page 19: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/19.jpg)
Model „napiš – oprav“ (Build and Fix)
Implementace -> Dodání -> Opravy chyb
![Page 20: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/20.jpg)
Stagewise model
• Definován 1957
• Založen na striktní posloupnosti fází– Definice problému– Analýza– Specifikace požadavků– Návrh– Architektura– Implementace (+testování)– Provoz
![Page 21: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/21.jpg)
Stagewise model
• Absence zpětné vazby
• Neprovádí se revize žádné fáze
• Nerevidují se požadavky
• Nehledají se rizika.
![Page 22: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/22.jpg)
Model vodopád (Waterfall)
• 1970 Winston Royce• Každá etapa má stanovený přesný cíl a
dokumenty, které musí v jejím průběhu vzniknout
• Na konci každé etapy dochází k jejímu vyhodnocení a případně přepracování nebo opravení
• Možnost vrátit se zpět do předchozí etapy• Pokračuje se teprve tehdy, je-li etapa zcela
dokončena a schválena (pak již návrat není možný)
![Page 23: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/23.jpg)
Model „vodopád“ Definice
požadavků
Systémovýnávrh
Implementace
Testování
ProvozA údržba
Specifikacepožadavků
![Page 24: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/24.jpg)
Model „Vodopád“
Výhody:- Jednoduchý- Ideální pro řízení- Vnáší disciplínu do vývoje
![Page 25: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/25.jpg)
Model „vodopád“
Nevýhody:
- Dodávka formou „velkého třesku“
- Určitá nepružnost
- V době mezi analýzou a nasazením se mohou změnit požadavky
„Začnu-li padat, nezastavím se dříve, než se rozbiji o kámen zvaný předvedení“
![Page 26: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/26.jpg)
Spirálový (iterakční) model
• 1985, Barry Boehm
• Zavádí iterativní přístup a opakovanou (důslednou) analýzu rizik
Rizika – situace nebo události, které mohou způsobit nesplnění cílů projektu.
Vychází se z předpokladu, že na začátku je obtížné nebo až nemožné přesně specifikovat všechny funkce.
![Page 27: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/27.jpg)
Spirálový model
![Page 28: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/28.jpg)
Spirálový model
Výhody:
• Vytváří prostředí pro vývoj znovupoužitelných komponent
• Je komplexní a vhodný i pro složité projekty (díky důrazu na plánování)
• Včasné vyloučení nevhodných řešení
![Page 29: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/29.jpg)
Spirálový model
Nevýhody:• Celková komplikovanost• Software není uvolněn před dokončením
posledního cyklu• Změna požadavků je možná pouze po
dokončení cyklu• Pro nové druhy aplikací (např. internetové) je
nepružný
Je vhodnější pro rozsáhlé projekty!
![Page 30: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/30.jpg)
Další metodiky
RUP – Rational Unified Process
• Vychází z UML
• Iterace; dělí se na 4 fáze: zahájení, projektování, realizace, předání (zákazníkovi nebo do další fáze vývoje).
• Robustní, propracovaná metodika, vhodná pro větší projekty a rozsáhlejší týmy.
• Komerční produkt
![Page 31: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/31.jpg)
Klíčové principy metodiky RUP
• Iterativní vývoj softwaru (vychází ze spirálového modelu, průběžná detekce rizik)
• Správa a řízení požadavků (požadavky se v čase mění)
• Použití komponentové architektury• Vizuální modelování softwaru (za účelem
porozumění systému; UML)• Průběžné zajišťování a ověřování kvality (po
předání je nalezení problému dražší)• Řízení změn (počítáme s tím, že změny nastanou,
neřízení změn vede k chaosu)
![Page 32: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/32.jpg)
Výhody RUP
• Obecnost a mohutnost
• Iterativní přístup – včasné odhalení rizik
• Snazší správa změn
• Provázanost s notací UML, dokumentace
• Výrobce průběžně pracuje na zlepšování metodiky
• Existence doplňkových nástrojů
![Page 33: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/33.jpg)
Nevýhody RUP
• Komerční, placený produkt
• Rozsáhlost RUP může být na škodu u malých týmů – tým stráví spoustu času implementací metodiky
• Její použití vyžaduje hluboké studium, týká se i projektových manažerů
![Page 34: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/34.jpg)
RUP
• http://objekty.vse.cz/Objekty/RUP
• Existuje i open source varianta
![Page 35: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/35.jpg)
Shrnutí
Tradiční metodiky jsou tedy založeny na striktní definici postupů a projektovém
řízení.
![Page 36: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/36.jpg)
Agilní metodiky
Postupy předchozích metodik, založené na důsledné analýze a propracovaném návrhu jsou obecně nejlepší.
Ale…
„Děláte web půl roku? Konkurence mezitím spustila dva…“
![Page 37: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/37.jpg)
Problém vývoje SW
Zdánlivě to může vypadat tak, že neexistence zákazníkovy představy, co vlastně chce je výhodou – „něco“ mu dodáme a zákazník bude spokojen.
Zákazník sdělí na konci projektu, že výsledek není to, co chtěl. Chce projekt dodělat/předělat – za původně dohodnutou cenu.
![Page 38: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/38.jpg)
Svět se mění – zákazník očekává kvalitu, ale není ochoten na ni dlouho čekat.
Tento rozpor se snaží řešit agilní metody snahou o užší sepětí zákazníka s vývojovým týmem.
![Page 39: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/39.jpg)
Manifest agilního softwaru
• 2004 „Manifest agilního vývoje softwaru“
Jedinou cestou, 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.
![Page 40: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/40.jpg)
Tradiční x agilní metodiky
Tradiční přístup - požadavky jsou stanoveny na začátku vývojového procesu a jsou neměnné. Proměnné jsou zdroje a čas.
Agilní přístup považuje za neměnné zdroje a čas, předmětem změn je funkcionalita. Na počátku projektu se stanoví nejdelší možný čas a náklady. Tým v průběhu zakázky komunikuje se zákazníkem a průběžně přehodnocuje priority.
![Page 41: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/41.jpg)
Teze agilního manifestu
• Přijmout a umožnit změnu je efektivnější než se změně bránit
• Je třeba být připraven na nepředvídané události – „jedinou jistotou na projektu je změna“.
![Page 42: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/42.jpg)
Tradiční x agilní
Tradiční přístup Agilní přístup
Důraz na procesy a nástroje
Komunikace, individualita (kreativita)
Obsáhlá dokumentace Provozuschopný software
Uzavírání smluv s restrikcemi
Spolupráce se zákazníkem
Striktní plnění plánu Reakce na změnu
![Page 43: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/43.jpg)
Tým agilního vývoje
• Do 10 členů:– Kouč– Programátoři– Časoměřič– Stále přítomný pracovník uživatele
• Programátoři pracují ve dvojicích, které se mění• Prvý programátor – vymýšlí a píše• Druhý programátor – oponuje, kontroluje, spoluvymýšlí
• Místnost pro odpočinek a jednání• Důraz na využití kreativity• Dokumentace – jen přehledný zdrojový kód• Přesčasy dlouhodobě nezvyšují produktivitu práce
![Page 44: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/44.jpg)
Agilní vývoj omezuje
• rizika spojená s nepřesným zadáním nebo se složitostí budovaného systému
• rizika spojená s fluktuací členů týmu,
• rizika spojená s tím, že neexistuje dokumentace v obvyklém rozsahu,
• rizika spojená s nedodržováním termínů a překračováním rozpočtů.
![Page 45: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/45.jpg)
Kdy není agilní vývoj vhodný
• Kritické systémy, kde je nutné přesně dodržovat dohodnuté (technologie)
• Rozsáhlé systémy, které se nedají dobře dekomponovat
• Nejsou k dispozici kvalitní řešitelé
• Není ochota se domlouvat o cíli za pochodu (jak uzavřít smlouvu, jak sankce za neplnění)
![Page 46: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/46.jpg)
Agilní metodiky
• Adaptivní vývoj softwaru
• Extrémní programování
• Lean development
• SCRUM
• Crystal metodiky
• Test-Driven Development
![Page 47: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/47.jpg)
SCRUM
• Krátké denní meetingy -> úkoly
• Vývoj po etapách („sprinty“)
• Flexibilní harmonogram a dodání
• Malé týmy, časté revize
• Blacklog – informace o vlastnostech, funkcích a činnostech, které je třeba implementovat
![Page 48: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/48.jpg)
Lean Development
• Toyota:– odstranění všeho zbytečného a minimalizace
zásob
• Šest druhů plýtvání:– nadvýroba– čas tracený čekáním– plýtvání související s– plýtvání související se zpracováním– nefektivní práce– defekty ve výrobcích
![Page 49: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/49.jpg)
Feature Driven Development
• Hlavní roli mají vlastnosti produktu – řídí vývoj
• „Vlastnost“ (feature) – malý výsledek (funkčnost) užitečná z pohledu zákazníka– Měřitelnost– Srozumitelnost– Realizovatelnost
• Vhodné pro menší projekty
![Page 50: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/50.jpg)
Test Driven Development
• Základní myšlenka: testovací kód musí být připraven a dokončen před začátkem psaní kódu
• Výhoda – kvalitní software
• Nevýhoda – problematické řízení
![Page 51: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/51.jpg)
Extrémní programování
• K. Beck, 90.léta
• Čtyři hodnoty: komunikace, jednoduchost, zpětná vazba, odvaha
• Myšlenka: to co se osvědčilo, používáme v maximální možné míře
![Page 52: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/52.jpg)
Crystal metodiky
• Základní myšlenka – metodiku je třeba přizpůsobit projektu
• Prvním krokem projektu je tedy vytvořit metodiku
• Kritéria pro výběr metodiky:– velikost projektu– velikost vývojového týmu– kritičnost projektu
![Page 53: Metodiky vývoje IS](https://reader036.vdocuments.net/reader036/viewer/2022081419/56814e64550346895dbc03a4/html5/thumbnails/53.jpg)
Shrnutí• Po této přednášce byste měli vědět, s jakými
problémy se můžeme setkat při řízení vývoje informačního systému
• Co je to „softwarová krize“ a jaká je dnešní reakce na tuto krizi?
• Jaké existují metodiky pro řízení vývoje SW? (klasické a agilní)– Klasické metodiky jsou založené na principech
projektového řízení, zatímco agilní jsou zaměřeny na využití kreativity a na první místo staví přínos pro zákazníka