Lean software development

ikona
Tento článek nebo jeho část potřebuje přiměřeně doplnit wikiodkazy na ostatní články.
Můžete Wikipedii pomoci tím, že ho vhodně vylepšíte.

Lean software development (LSD) je metodika, jež má původ v řízení průmyslové výroby.

Metoda Lean manufacturing (štíhlá výroba) vznikla v japonské firmě Toyota po druhé světové válce. Jejím cílem bylo levnější, efektivnější a rychlejší řízení výroby aut. Hlavním cílem bylo co nejvíce omezit plýtvání bez ztráty kvality. Metoda se snaží, aby zákazník neplatil za chyby, které způsobí firma svoji neschopností. Zákazník by měl platit jen za to, co požadoval.

Lean manufacturing byla přizpůsobena pro vývoj software v rámci agilních metod a byla nazvána Lean software development. Tato metodika se snaží identifikovat a hlavně eliminovat všechny zdroje plýtvání v průběhu celého vývojového procesu a zákazníkovi dodat produkt,který splňuje jeho požadavky.

Principy a nástroje

  1. Eliminace plýtvání
  2. Včleňování kvality do vývoje
  3. Vytváření znalostí
  4. Odkládání závazků
  5. Dodávky co nejrychleji
  6. Důvěra a respekt k lidem podílejících se na vývoji
  7. Optimalizace celku[1]

1. Eliminace plýtvání

[2]Tento princip si klade za cíl eliminaci plýtvání, které lze považovat za všechny procesní činnosti, které nepřidávají hodnotu konečnému produktu. Aby se zamezilo plýtvání, vývojové týmy se zaměřují na vizualizaci svých pracovních postupů. Cílem je zmapovat celý proces od návrhu až po realizaci a objevit fáze, které nepřidávají žádnou hodnotu. Tím se také urychlí dodání produktu zákazníkovi. Podobně jako u štíhlé výroby, bylo nalezeno 7 druhů plýtvání.[3]

7 druhů plýtvání[3]

  • Funkcionalita – nevyžádaná nebo nevyužívaná funkce
  • Nedokončená práce – nezdokumentovaná či neotestovaná práce
  • Střídání úkolů – přepínaní mezi jednotlivými úkoly
  • Prodlevy – např. čekání na dokumentaci
  • Chyby – čím pozdější nalezení chyby, tím vyšší náklady na její opravení
  • Přesuny mezi rolemi – ztráta informací při přesunu mezi jednotlivými týmy (analytici / programátoři)
  • Nutnost znovu se učit zapomenuté

Nástroje pro identifikace hodnoty

  • Kano model – nástroj pro lepší pochopení zákazníkových požadavků

Nástroje pro identifikace plýtvání

  • Mapa hodnotového toku – vizualizace přehledu o průběhu celého procesu vývoje softwaru

Nástroje pro eliminace plýtvání

  • Sada zásad pro každou oblast plýtvání – viz 7 druhů plýtvání

2. Včleňování kvality do vývoje[4]

Pro větší efektivitu je třeba začleňovat kvalitu do vývoje už na začátku. Zamezuje se tím, že chyby postupují celým vývojem, ačkoliv na konci by byly stejně odstraněny. Pro tento princip se používají celkem tři skupiny nástrojů pro jednotlivé účely.

Nástroje pro zpětnou vazbu

  • Testování – např.: programátorské testy, zákaznické testy, testy použitelnosti
  • Iterativní vývoj – vývoj po malých částech, funkcionalitách

Nástroje pro prevenci vzniku chyb

  • Vývoj řízený testy – způsob vývoje, při kterém jsou jednotkové testy napsané před samotným kódem
  • Refaktorizace – výrazně snižuje celkovou údržbu kódu
  • Automatizace – běžné úkoly je třeba zautomatizovat, tím se výrazně sníží riziko vzniku chyb

Disciplína při vývoji

  • Metoda 5S – Metoda pěti "Proč?"

3. Vytváření znalostí

Při tvorbě softwaru se neustále mění požadavky. Je třeba tyto znalosti zaznamenávat a sdílet.

Nástroje pro podpora tvorby a sdílení znalostí

  • Komunikace – pravidelné schůzky vývojového týmu, schůzky se zákazníkem po každé iteraci
  • Metoda A3 – řešení problémů by se mělo vejít na papír velikosti A3
  • Párové programování – praktika používaná zejména v Extrémním programování. Jeden programátor píše kód a druhý ho pozoruje, případně opravuje

Nástroje pro zachycování znalostí

  • Wiki systémy
  • Dokumentace

4. Odkládání závazků

Odkládání závazků na poslední chvíli umožňuje dělat rozhodnutí, která budou odrážet aktuální realitu. Tím se minimalizuje riziko tvorby neaktuálních požadavků. Nevratná a závazná rozhodnutí by měla být odkládána až na ten nejpozdější moment.

Nástroje

  • Iterativní vývoj – cyklický vývoj po malých částech
  • Minimalizace závislostí – čím méně existuje závislostí, tím lépe se přizpůsobuje možným změnám ve vývoji

5. Dodávky co nejrychleji[5]

Nejlepší možností pro co nejrychlejší dodávky, jsou krátké iterace. Zákazník může vidět nové funkcionality a případně upravit své požadavky.

Nástroje pro co nejrychlejší dodávky

  • Krátké iterace

6. Důvěra a respekt k lidem podílejících se na vývoji[4]

Pokud se bude vývojář cítit ve svém týmu motivovaný a potřebný, tak ho jeho práce bude bavit a bude více produktivní. Také je potřeba, aby se mohl vývojář na své spolupracovníky spolehnout a svěřit jim úkoly s tím, že je splní.

Nástroje pro samořízené týmy

  • Samořízené týmy
  • Motivace – členové týmu by měli vědět, co dělají a proč to dělají
  • Komunikace

Nástroje pro podporu týmové práce

  • Kanban – nástroj pro plánování jednotlivých iterací
  • Andon – jednoduchý signální systém, který poskytuje rychlý přehled o aktuálním stavu vývoje

7. Optimalizace celku[4]

Pro správný vývoj je nutné, aby jednotlivé části softwaru fungovaly jako celek.

Nástroje pro systémové myšlení

  • Metriky
  • Metoda pěti "Proč?"

Nástroje pro neustále zlepšování

  • Kaizen – stanovení určitého cíle a pomalým zlepšováním ho dosáhnout

Reference

  1. HAWKS, David. 7 Lean Principles of Software Development. Agile Velocity [online]. 2010-04-19 [cit. 2022-12-18]. Dostupné online. (anglicky) 
  2. How do 7 Lean wastes apply to software?. Agility in Mind [online]. [cit. 2023-02-09]. Dostupné online. (anglicky) 
  3. a b POPPENDIECK, Mary. Lean software development : an agile toolkit. Boston: Addison-Wesley 1 online resource (xxviii, 203 pages) s. Dostupné online. ISBN 978-0-13-381295-4, ISBN 0-13-381295-2. OCLC 54116462 
  4. a b c POPPENDIECK, Mary. Implementing lean software development : from concept to cash. Upper Saddle River, N.J.: Addison-Wesley 1 online resource s. Dostupné online. ISBN 0-321-43738-1, ISBN 978-0-321-43738-9. OCLC 85789258 
  5. What is Agile Software Development? [online]. 2015-06-29 [cit. 2022-12-18]. Dostupné online. (anglicky) 

Literatura

  • ŠOCHOVÁ, Zuzana a Eduard KUNCE, Agilní metody řízení projektů. 1. vyd. Brno: Computer Press, 2014, 175 s. ISBN 978-80-251-4194-6
  • BUCHALCEVOVÁ, Alena. Metodiky budování informačních systémů. Praha : Oeconomica, 2009. ISBN 978-80-245-1540-3
  • KADLEC, Václav. Agilní programování: Metodiky efektivního vývoje softwaru. Brno: Computer Press, 2004. ISBN 80-251-0342-0
  • POPPENDIECK, Mary, POPPENDIECK, Tom. Lean Software Development : An Agile Toolkit. Boston : Addison-Wesley, 2003. ISBN 0-321-15078-3

Související články

Externí odkazy

  • Lean software development
  • Geeks for geeks - Lean software development
  • Mdevelopers.com - What is lean software development?
Proces vývoje softwaru a softwarové inženýrství
aktivity a kroky: produkt
produkt owner • analýza požadavkůFURPS • funkční specifikace • architektura • design • implementacetestováníakceptace • nasazení • podporaúdržba
metodiky
podporující disciplíny
nástroje
profilerverzovánípřekladačdebugger • GUI designer • editor zdrojového kódu • vývojové prostředí (IDE)