Úvod
Troška idealismu nezaškodí…
Metodiky vývoje SW
- vždy: zadání ⇒ analýza ⇒ návrh ⇒ implementace ⇒ testování ⇒ nasazení ⇒ údržba
- délka trvání jednotlivých kroků?
- celá řada přístupů v organizaci kroků
- metodika by se vždy měla přizpůsobovat konkrétním podmínkám
- nejedná se o normu a absolutní pravdu
- soubor vhodných doporučení
Metodiky vývoje SW
- dva základní typy SW (z pohledu vývoje):
- „krabicový“ - poskytovaný as is, bez nároku na změnu (krabice × služba)
- na míru - přizpůsobovaný požadavkům zákazníka (customizace) nebo kompletně na míru
- enterprise vs. startup
„Klasické“ Metodiky
- Kroky:
- sběr požadavků, specifikace zadání
- analýza požadavků
- návrh řešení, architektury, výběr technologie
- vývoj, programování
- testování
- nasazení
- reklamace … ?
- Klasické != Staré
„Agilní“ Metodiky
- Výchozí předpoklad:
- Rezignujeme na fázi specifikace zadání.
- Zákazník není přesně schopen specifikovat co potřebuje, protože:
- jeho potřeby se neustále mění,
- sám neví jakým způsobem řešit svoje problémy.
- Rezignace na zadání = chaos a ☠
- Agilní metodika ≈ Dobře organizovaný chaos
- Přenesení zodpovědnosti × Micromanagement
Hlavní zásady
- Navrhují a implementují se pouze aktuálně požadované funkce.
- Nevytváří se něco, co možná někdy někdo bude potřebovat.
- Místo křížového výslechu zákazníka se preferuje rychlé vytvoření prototypu.
- Refactoring, refactoring, refactoring, refactoring, …
- Vyžaduje automatizované testování
- Všechny požadavky od zákazníka se sbírají a zaznamenávají.
- Vedoucí projektu ve spolupráci se zákazníkem přiděluje požadavkům prioritu.
Hlavní zásady
- Komunikace:
- intenzivní,
- placatá struktura,
- časté schůzky, práce ve skupinách,
- meeting, briefing, brainstorming, já jsem king …
Hlavní zásady
- Flexibilita
- Vývojový tým musí být schopen reagovat na stále měnící se požadavky zákazníka.
- Vývojový tým musí být schopen flexibilně měnit strukturu/architekturu aplikace.
- Zákazník musí být schopen přijmout měnící se termín dodání požadovaných funkcí.
- Vývojový tým musí být schopen dělat to, co chce zákazník a vzdát se toho, co chce vývojový tým.
- Vývojáři nesmí být líto „zahodit“ svou práci.
Flexibilita
- Nejznámější:
- Extrémní programování
- SCRUM
- Kanban
- Další:
- Test driven development
- Crystal
- Adaptive software development
- Z velké části jsou to variace na totéž téma.
Vlastnosti
- AM vedou k rychlejšímu dodání nejnutnějších funkcí.
- Celkový čas realizace projektu bývá spíše delší (vzhledem k mnoha změnám).
- Zákazník je ale spokojenější, protože může nejnutnější funkce používat rychleji.
- AM jsou vhodnější pro menší projekty a menší skupiny lidí.
- AM jsou o něco vhodnější pro SW na míru.
Vlastnosti
- Na velmi velké projekty (stovky vývojářů, roky vývoje) jsou naprosto nevhodné.
- Příliš málo organizované a příliš chaotické.
- Na některé projekty nelze použít vůbec – komplexní systémy, kde nelze vyžadovat zpětnou vazbu od zákazníka (např. jádro OS).
- Vyžadují spolupráci od zákazníka.
- Vyžadují spolupráci zaměstnanců (softskills), aktivní účast na projektu.
Pokračování
Konec idealismu, zpět k realitě
Bastardní Metodiky
- sběr požadavků od zákazníka
- stanovení priorit vedoucím projektu
- analýza požadavků a návrh nejjednoduššího řešení (není čas na refactoring)
- implementace některých požadavků s nejvyšší prioritou skoro podle požadavků zákazníka
- refactoring kvůli realizaci požadavků s nižší prioritou
- pevný termín předání
- předání zákazníkovi buď lehce otestované hodně po termínu, nebo neotestované skoro v termínu
- reklamace – skoro zaplacení – soud – exekuce - ☠
Bastardní Argumenty
- Na to není čas
- Dokumentaci uděláme později, protože zdržuje.
- Testy spustíme až nakonec.
- Dokumentaci uděláme až to bude hotové.
- Testy doděláme až to bude hotové, aby se nemusely pořád přepisovat.
- Začneme to implementovat hned, jak přijde specifikace od zákazníka.
- Zákazník chce X, ale uděláme Y, protože to je lepší/rychlejší/jednodušší.
- To si nemusím psát, to vím/si pamatuji.
Bastardní Argumenty cont.
- Potřebujeme software X, abychom mohli vývoj organizovat.
- To si uděláme sami (líp, levněji, rychleji).
- Uděláme X, to se budou jednou hodit.
- Když už se to mění, tak uděláme XY.
- Uděláme to takhle, dořeší se to potom.
- Když už je to napsaný, tak to tak necháme.
AMP
Jak se nesklouznout k bastardním metodikám.
AMP
- teoreticky jsou agilní metodiky jednoduché
- horší je to s jejich dodržováním
- je snadné minout princip a sklouznout k formě (5 min)
- zkusíme experimentovat a vyvinout kousek nějakého existujícího SW
- každý bude dělat něco a dohromady to bude stát za to
- SCRUM metodika
- cílem je vyzkoušet agilní postupy v praxi
- jsou velmi užitečné i mimo agilní vývoj
AMP Co
- Aplikace Task Manager
- Task Management – plánování úkolů, sledování dokončenosti, plánování projektu
- Další drobné funkce – sledování emailů, grafy
- Brněnská firma IT Park
- PHP + MySQL
- Aktivní účast na projektu.
- Možnost vykonání povinné praxe
- Magisterská – 150 hodin
- Sledování hodin (nahlásit předem)
AMP Jak
- Cvičení, Přednášky
- Daily standup
- Sprint
- Úkoly
- Slack
- TimeTracking
AMP
- do čtvrtka dopoledne (27. 9. 2018) poslat strukturovaný odborný životopis
- vynechte osobní údaje
- čím můžete přispět k řešení projektu
- jakou funkci můžete/chcete zastávat
- teamleader
- vývoj
- testování
- překlad/dokumentace
- ostatní?
- Zašlete na jiri.lysek@mendelu.cz
- Aktivovat účty ve Slacku a BitBucketu