Programujte agilně, nic jiného vám nezbývá! A nebo ano?

Softwarové inženýrství se snaží poskytovat odpovědi na všechny otázky spojené s vývojem aplikací. Jedním z nejdůležitějších hmatatelných produktů SWI jsou metodologie vývoje softwaru. Okolní svět se mění a stejně tak se mění nejen SWI jako celek, ale i jeho konkrétní produkty a techniky, včetně metodologií. Nejmodernější softwarově-inženýrský směr spočívá v používání tzv. agilních metodologií. V čem spočívají? Na čem jsou postaveny? Co hlásají?

Zákazníci chtějí co nejvíce kvalitních funkcí za co nejméně peněz

Před nedávnem jsme se na Živě zabývali problémy, které jsou důsledkem současného stavu na trhu se softwarem. Vyslovili jsme hypotézu, že klasické softwarově-inženýrské postupy, kladoucí důraz na podrobné specifikace, rozsáhlé dokumenty, robustní návrh a propracovanou architekturu, přestávají stačit požadavkům na rychlost vývoje. V diskusi pod článkem zazněla řada cenných názorů vycházejících přímo od nejzasvěcenějších – od vývojářů, programátorů, členů týmů. Z příspěvků je patrné, že současná situace rozhodně není ideální – zákazníci požadují především extrémní rychlost; nehodlají se však vzdát vysoké kvality ani šíře zadání (co nejvíce funkcí).

Diskutující se však shodují, že zanedbání analýzy a „odfláknutí“ návrhu není řešením. Den ušetřený dnes se vrátí ztraceným týdnem za rok.

Je vůbec možné skloubit šílenou rychlost vývoje s kvalitním návrhem? Potřebujeme opravdu při vývoji stohy dokumentů? Jak se vyrovnat s rostoucími požadavky zákazníků, máme-li neměnné zdroje a možnosti?

Zná softwarové inženýrství odpověď?

Začátkem 3. tisíciletí se nutně začínají prosazovat metodologie umožňující co nejrychlejší vývoj softwaru, jeho průběžnou údržbu a reakci na měnící se podmínky a zadání. Tyto metodologie jsou nazývány jako agilní.

Historie agilních metodologií sahá teprve do roku 2001, kdy byla založena Aliance pro agilní vývoj softwaru (The AgileAlliance) a definován tzv. Manifest agilního vývoje softwaru (Manifesto for Agile Software Development). V současnosti se k tomuto manifestu svým podpisem připojilo hodně přes 1000 odborníků a vývojářů z celého světa.

Pojem agilní metodologie označuje skupinu metodik, které vycházejí z poznání, že 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.

Skupina agilních metodologií představuje nový směr v ubírání softwarového inženýrství. Konkrétní agilní myšlenky, postupy a principy jsou ve zdánlivém rozporu s klasickými softwarově-inženýrskými poučkami. Jako příklad uveďme známé pravidlo používané dlouhou řadu let, které zdůrazňuje význam návrhu:„Implementujeme pro dnešek, navrhujeme pro zítřek.“ Přístup agilních metodologií je poněkud jiný a vyjádřit jej lze zdánlivě mírnou, v důsledku však nesmírně zásadní úpravou tohoto pravidla: Implementujeme pro dnešek, navrhujeme pro úspěšnou implementaci. Co to znamená? Hlavním (a v podstatě jediným) cílem návrhu je umožnit úspěšnou implementaci nejbližší části systému. Nezajímáme se o to, jak bude systém možná vypadat za rok: návrh provedeme tak, abychom mohli tento a příští týden úspěšně implementovat moduly, které jsou v plánu aktuální iterace. Nic víc, nic míň.

Proměnné při vývoji softwaru

Rozdíl mezi tradičními přístupy a agilními metodologiemi je znázorněn na následujícím obrázku, který srovnává význam základních proměnných při vývoji softwaru:

Klepněte pro větší obrázek

Klasické vývojové metodologie požadují především naplnit za každou cenu dokument Specifikace požadavků. Požadavky jsou tedy fixní, zatímco v roli proměnných vystupovat čas a zdroje.

Agilní přístupy naopak prohlašují čas a zdroje za fixní (stanovené na začátku projektu zadavatelem) a mění se funkcionalita. Průběžně se přizpůsobuje a mění se ve své šíři i hloubce.

Poznámka: některé konkrétní agilní metodologie zavádějí k těmto třem proměnným ještě další. Poznáme to v příštích článcích, které se budou jednotlivým exemplářům podrobně věnovat.

Základní principy agilních metodologií

Agilní metodologie mají hodně propracovaný „filozofický základ“ a vycházejí z určitých (hezky znějících) základních principů. Jedná se především o následující body:

  • Iterativní a inkrementální vývoj s velmi krátkými iteracemi: plán vývoje (plán projektu) je sestaven tak, že nové funkce se dodávají často (třeba i denně). Zákazník je průběžně konfrontován s novými konfiguracemi; má pocit, že se „něco děje“ a zároveň jasně vidí, jakou rychlostí vývoj postupuje. Není-li spokojen, má možnost např. upravit požadovanou funkcionalitu.
  • Důraz na přímou, osobní komunikaci v rámci týmu: ve všech sociálních skupinách obecně platí, že za nejzávažnějšími problémy stojí špatně fungující komunikace. Agilní metodologie se pokouší předejít těmto problémů tím, že komunikaci prohlašují za jednu z forem vývoje a integrují ji přímo do vývojového procesu. Praktickými důsledky jsou nejrůznější techniky, např. časté schůzky týmu se zákazníkem, párové programování, refaktorizace apod.
  • Permanentní sepětí a komunikace se zadavatelem, resp. uživatelem: zákazník by měl být členem vývojového týmu, měl by komunikovat s vývojovým týmem, spolupodílet se na návrhu a spolurozhodovat o testech.
  • Rigorózní, opakované, průběžné automatizované testování: dochází k častým změnám systému, proto je nutné často (průběžně) ověřovat jeho správnost. Testy by měly být automatizované (ručně prováděné testy jsou obvykle závislé na subjektivních vlastnostech rukou, které je provádí) a měly by být napsány dokonce před implementací testované části.

Agilní metodologie naopak srážejí význam formálních artefaktů a dokumentů. Vycházejí z neochvějného přesvědčení, že základním, jednoznačným, exaktním, nezpochybnitelným a v podstatě jediným spolehlivým nositelem informace je zdrojový kód. Na jeho tvorbu proto kladou největší důraz; s jeho vytvářením začínají skoro bezprostředně po stanovení cílů projektu (lépe řečeno po napsání testů příslušného modulu); při jeho psaní doporučují dodržovat striktní pravidla (štábní kultura) apod.

Co přesně bychom měli dělat v rámci agilních metodologií?

Hlavní teze agilních metodologií (vlastně hlavní myšlenky Aliance pro agilní vývoj softwaru) jsou uvedeny v Manifestu agilního vývoje. Tento zajímavý dokument společně prozkoumáme v příštím článku na toto téma. V manifestu již jsou uvedeny konkrétní postupy, které by měly být realizovány každým softwarovým týmem hodlajícím vyvíjet software „agilně“. Pokud se seznámíte s libovolným konkrétním příkladem agilní metodologie (např. s extrémním programováním, s metodologiemi Crystal, s metodologií SCRUM evelopment Process apod.), zjistíte, že se více či méně řídí drtivou většinou z bodů uvedených v manifestu.

Na závěr

Věřím, že jste dnešní popis agilních metodologií shledali zajímavým. Přestože jsme zatím neuvedli konkrétně a podrobně jednotlivé body Manifestu, již nyní nad praktickým využitím agilních metodologií vznikají některé otazníky. Závěr, zda agilní metodologie „ano či ne“, proto zatím necháme nevysloven.

Diskuze (34) Další článek: Vltava.cz otevírá nové obchody se spotřební elektroniku

Témata článku: Software, Programování, Jediný cíl, Úspěšný test, Častá diskuse, Extrémní systém, Crystal, Jednoznačná odpověď, Ušetřené peníze, Štábní kultura, AgI, Agile, Extrémní rychlost, Základní princip, Automatizovaná funkce, Význam, Zajímavý dokument


Určitě si přečtěte

Solární panely v silnici vypadaly jako dobrý nápad. V praxi se ale neosvědčily

Solární panely v silnici vypadaly jako dobrý nápad. V praxi se ale neosvědčily

** Nápad použít na silnice místo asfaltu solární panely vypadal slibně ** Praktické testy však odhalily celou řadu nevýhod ** Nejhorší je směšná účinnost ve srovnání s fotovoltaickou elektrárnou

Karel Kilián | 65

Porno insider: Jak Greg Lansky mění internet pro dospělé

Porno insider: Jak Greg Lansky mění internet pro dospělé

** Erotický obsah generoval ohromné peníze, pak ale přišel internet... ** Pornografie dostupná všude a zdarma uvedla tvůrce do krize ** Někteří ale dokázali potenciál internetu využít i v tomto oboru

Jan Dudek | 12

Loopwheels znovu vymyslelo kolo. Místo drátů má v ráfcích kompozitové pružiny, které vylepší komfort jízdy

Loopwheels znovu vymyslelo kolo. Místo drátů má v ráfcích kompozitové pružiny, které vylepší komfort jízdy

** Proč vymýšlet kolo? Protože ho lze vymyslet lépe! ** Kola Loopwheels nabízejí integrované odpružení ** Cílem je poskytnout pohodlnější a klidnější jízdu

Karel Kilián | 14

PortraitPro: Vyzkoušeli jsme program, který prý udělá z každé „žáby“ krasavici

PortraitPro: Vyzkoušeli jsme program, který prý udělá z každé „žáby“ krasavici

** V digitálním světě nemůžete věřit všemu ** Nová generace 3D fotoeditorů zvládne divy ** Vyzkoušeli jsme PortraitPro, který vám změní i kontaktní čočky

Jakub Čížek | 10

Podívejte se, co se stane, když dron DJI Phantom narazí do křídla letadla

Podívejte se, co se stane, když dron DJI Phantom narazí do křídla letadla

** Co se může stát, když relativně maličký dron narazí do křídla letadla? ** Tuto otázku zodpověděli odborníci laboratorním pokusem ** Kvadrokoptéra způsobila významné poškození křídla

Karel Kilián | 19


Aktuální číslo časopisu Computer

Jak vytvořit a spravovat vlastní web

Velký test herních klávesnic a DVB-T2 tunerů

Vše o formátu RAW

Vybíráme nejlepší základní desku