NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Lekce 4 - Lean Software Development a Kanban

V minulé lekci, Metodika SCRUM, jsme se podívali na vývojovou metodiku SCRUM, která dává důraz na týmovou spolupráci a na to, že problém nemůže být pochopen nebo definován předem.

V této lekci si řekneme něco o "štíhlém" vývoji softwaru a taky něco o speciální nástěnce, která slouží jako pomůcka pro různé metodiky.

Lean Software Development

"Štíhlá" výroba je postup, při kterém dochází k odstranění nadbytečných částí výroby a soustředí se pouze na ty nejpodstatnější faktory, které zákazníka opravdu zajímají a které opravdu potřebuje. Lean Software Development je jakási derivace tohoto souboru pravidel. Tyto pravidla jsou lehce aplikovatelná na vývoj softwaru, při kterém dochází ke snížení programovacího úsilí, rozpočtování a míry vad až o jednu třetinu.

Se štíhlou výrobou přišla po konci druhé světové války firma Toyota. Této nové metodice výroby, která vede ke snížení plýtvání, začali říkat Lean Manufacturing.

Principy

Lean Software development uznává 7 základních principů:

1. Eliminace plýtvání – Plýtvání nebo odpad je vše, co zákazníkovi nepřidává hodnotu. K tomu, abychom eliminovali odpad, musíme odpad první rozpoznat. Průmyslový průzkum nám odhalil několik příkladů plýtvání:

  • Vytváření špatného produktu
  • Špatný management nevyřízených položek
  • Přepracování (ve smyslu zahodit již udělanou práci a začít od začátku)
  • Nadbytečně složité řešení
  • Psychické zatížení
  • Čekání / Multitasking
  • Ztrátu nabitých vědomostí
  • Neefektivní komunikaci
  • Zjednodušeně, pokud se dá cíle dosáhnout nebo se dá daná aktivita obejít, je to plýtvání. K eliminaci plýtvání / odpadu se používá technika, při které se mapují hodnoty položky a procesy, které během vývoje vznikají. Dalším krokem při této technice je určit si položky a procesy, které jsou odpadem (tyto věci mají při mapování nejnižší hodnotu). Odstraňování tohoto odpadu by mělo probíhat opakovaně tak dlouho, dokud nejsou i ty zdánlivě nezbytné položky a procesy zlikvidovány.

2. Rozvíjení učení – Kód se staví před dokumentaci a plánování. Vývoj softwaru je proces, při kterém dochází k neustálému učení při jednotlivých iteracích psaní kódu. K tomu většinou patří i psaní dokumentace a plánování toho, co se vlastně bude programovat. Při Lean Development Process dochází k méně dokumentování a k méně plánování. Místo toho se soustředí na krátké iterační cykly. S výsledkem těchto krátkých cyklů se pak jde za zákazníkem, kterému se výsledky předvádí a domlouvá se, co se bude dít dál. Dochází ke zrychlení učení a to díky rychlejšímu zjištění potřeb a nalezení hlavního problému.

3. Rozhodování se co nejpozději – Čekáme na co nejvíce informací, než učiníme rozhodnutí. Čím více komplexní software, tím více musí být uzpůsoben případným změnám. Vytváření takto uzpůsobeného softwaru poté oddaluje vývoj potřebných a důležitých částí tohoto softwaru. S čekáním na více informací a požadavků si tak dokážeme ušetřit čas, který bychom věnovali do stavby robustního systému, který nemusí být to, co zákazník doopravdy chce.

4. Dodání co nejrychleji – Krátké iterace umožní zákazníkovi lepší rozhodování. Jak tomu bylo již u metodiky Rapid Application Development a SCRUM, tak i zde platí to, že čím dříve zákazníkovi dodáme ukázku produktu, tím dříve nám řekne, co vlastně chce. Čím kratší iterace, tím lepší učení (ovšem nesmí se to zase přehnat).

5. Zplnomocnění týmu – Tým by se měl řídit sám, manažer by měl být pouze koordinátor. Důležitá je také motivace. Podobný přístup jako u metodiky SCRUM.

6. Udržování integrity – Integrita vnímání projektu, refaktoring, jak funguje projekt jako celek, testy. Zákazník potřebuje celkový zážitek se systémem, nejen s jeho částmi. Udržování integrity znamená stavět systém tak, aby všechny části systému fungovaly dobře a to i v moment, kdy se spojí dohromady. Toho může být dosaženo pochopením základního problému a jeho řešením ve stejnou chvíli, namísto řešením takovéhoto problému sekvenčně. Informace potřebné k řešení tohoto problému pak přicházejí po malých částech, pokud možno pomocí face-to-face komunikace. Je důležité, aby takové předávání informací bylo konstantní v obou směrech (od zákazníka k vývojářům a naopak). Takové konstantní předávání informací pak eliminuje někdy až stresující množství informací po dlouhé odmlce.

7. Měli bychom vidět celek – „Think big, act small, fail fast, learn rapidly“. Moderní software systémy nejsou jenom slátaniny jejich menších dílků, ale také produkt interakcí těchto dílků mezi sebou. Chyby v softwaru se na sebe během vývoje nabalují. Díky správné dekompozici větších úkolů na malé části můžeme tyto problémy snadněji najít a eliminovat. Čím větší systém, tím více je do procesu zapojených účastníků a tím více vývoje různými týmy. Díky tomu musíme co nejlépe stanovit vztahy mezi jednotlivými zúčastněnými stranami, abychom dosáhli systému, jehož komponenty spolu spolupracují co nejlépe. Během delšího vývoje je proto lepší mít větší řetězec subdodavatelů, kteří s námi spolupracují dlouhodobě, než krátkodobé spolupráce. Je také velice důležité, aby všichni členové dobře chápali zásady a principy tohoto „štíhlého“ vývoje, protože zásady Lean vývoje, implementované společně, tvoří předpoklady pro úspěch.

Kanban

Kanban stejně jako Lean Manufacturing pochází původně z Japonské Toyoty (překlad slova kanban znamená cedule či billboard). Tato metodika je úzce spojená se zásadami Lean (štíhlé) výroby a výrobou Just-in-Time. Je zde velký důraz na vizualizaci. Snadno je tak rozpoznatelné, jak práce postupuje, kolik je hotovo a co je třeba udělat. Stejně jako v metodice SCRUM i zde si pracovníci úkoly vybírají sami tak, jak jim to kapacity umožňují.

Fungování

Kanban nástěnku tvoří sloupce a řádky. Sloupce mohou být fáze vývoje, ve kterých se položka nachází. Jednotlivé položky se na Kanban nástěnce posouvají v rozmezí řádku. Jakmile někdo vyřeší úkol spojený s danou položkou na dané pozici, posune položku zase o políčko ve sloupci dále. Při používání Kanbanu je důraz kladen na omezení současně vykonávané práce, tzv. Work-In-Progress (WIP). Pokud je například v jednom sloupci 5 položek a limit WIP je taktéž 5, nemůžou být do tohoto sloupce přesunuty další položky. Kolegové tak sice nemůžou posunout svou práci z předchozího sloupce, ale díky vizualizované nástěnce vidí, kde je problém a můžou pomoci při jeho řešení:

Metodiky vývoje softwaru

Ukázka Kanban nástěnky

Závěr

Lean Software Development a Kanban se běžně používá se spojení s dalšími metodikami jako například SCRUM, kterou Kanban vylepšuje.

V následujícím kvízu, Kvíz - Metodiky RAD, DSDM, SCRUM, Lean a Kanban, si vyzkoušíme nabyté zkušenosti z předchozích lekcí.


 

Předchozí článek
Metodika SCRUM
Všechny články v sekci
Metodiky vývoje softwaru
Přeskočit článek
(nedoporučujeme)
Kvíz - Metodiky RAD, DSDM, SCRUM, Lean a Kanban
Článek pro vás napsal Lukáš Grossmann
Avatar
Uživatelské hodnocení:
34 hlasů
Aktivity