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í, Crystal, AgI, Jediný cíl, Štábní kultura, Automatizovaná funkce, Agile, Jednoznačná odpověď, Zajímavý dokument, Extrémní rychlost, Úspěšný test, Ano, Základní princip, Ušetřené peníze, Extrémní systém, Častá diskuse, Význam


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

Tohle tak jednou zažít: Nová vzducholoď Airlander 10 s prosklenou podlahou

Tohle tak jednou zažít: Nová vzducholoď Airlander 10 s prosklenou podlahou

** Airlander 10 nabídne plavby vzduchem v interiéru s prosklenou podlahou ** Luxusní vzducholoď byla původně vyvíjena pro vojenské účely ** Počítá se s třídenními „kochacími“ výlety za poznáním

Karel Kilián | 7

Apple ukázal novinky: iPad Pro má překonat notebooky a vrací se Mac mini!

Apple ukázal novinky: iPad Pro má překonat notebooky a vrací se Mac mini!

** Apple v New Yorku představoval počítačové novinky ** iPad Pro prý zatočí s notebooky ** Dočkali jsme se také návratu Mac mini

Jakub Čížek | 81

15 míst, kde můžete legálně sledovat filmy na internetu

15 míst, kde můžete legálně sledovat filmy na internetu

** Legálních služeb pro sledování filmů je celá řada, využít můžete předplatné či platbu za film ** Ceny jsou u mnohých velmi rozumné, limitem je pouze nabídka titulů ** České služby mají i dabované filmy, u zahraničních často chybí i české titulky

Vladislav Kluska | 32

Photolemur 3: Prostě do něj přetáhnete fotky a začne se dít magie. Tedy údajně...

Photolemur 3: Prostě do něj přetáhnete fotky a začne se dít magie. Tedy údajně...

** Je lepší nabušený Photoshop, nebo program s jedním tlačítkem? ** Photolemur si myslí to druhé ** Tento fotoeditor neumí skoro nic, a přitom (skoro) všechno

Jakub Čížek | 21

Blíží se HTTP/3: Web bude rychlejší a bude používat úplně jinou technologii

Blíží se HTTP/3: Web bude rychlejší a bude používat úplně jinou technologii

** Příští verze klíčového protokolu HTTP nebude postavená na TCP ** Namísto toho použije „vylepšené UDP“ ** HTTP/3 bude postavené na QUIC

Jakub Čížek | 60



Aktuální číslo časopisu Computer

Jak nastavit a ochránit nový mobil

Velký test bezdrátových klávesnicí a myší

Počítače v roce 2019

Srovnání barevných laserových multifunkcí