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


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

USA se vrací do vesmíru! NASA představila devět statečných pro první lety soukromých lodí

USA se vrací do vesmíru! NASA představila devět statečných pro první lety soukromých lodí

** NASA zveřejnila nové termíny prvních demonstračních letů dvou soukromých kosmických lodí ** Známe už také jména prvních astronautů ** Jako první poletí k ISS Crew Dragon od SpaceX

Petr Kubala | 15

Sonda Dawn prolétá jen 35 km od trpasličí planety Ceres a posílá úchvatné fotografie!

Sonda Dawn prolétá jen 35 km od trpasličí planety Ceres a posílá úchvatné fotografie!

** Sonda Dawn zkoumá trpasličí planetu Ceres od března 2015 ** Sonda nyní přešla na novou dráhu, nejblíže se dostává k povrchu na vzdálenost jen 35 km ** Ceres je největší planetkou hlavního pásu mezi Marsem a Jupiterem

Petr Kubala | 4

Alan Turing: Genius, který matematicky stvořil počítač

Alan Turing: Genius, který matematicky stvořil počítač

Řešením matematického problému se dostal k modelu teoretického stroje, který nese jeho jméno a je základem logiky univerzálních počítačů.

Pavel Tronner | 58

eObčanka: Jak a proč si zřídit elektronický občanský průkaz s čipem

eObčanka: Jak a proč si zřídit elektronický občanský průkaz s čipem

** Občanka s čipem už je standardně vydávaným osobním dokladem v Česku ** Umožní využívat Portál občana a funkce elektronické státní správy ** Pokud ji chcete naplno využívat, musíte si čip aktivovat

David Polesný | 114

Apple: naše mapy budou nejlepší na světě. Tajně jsme na nich pracovali několik let

Apple: naše mapy budou nejlepší na světě. Tajně jsme na nich pracovali několik let

** Apple odhalil své plány na zcela nové mapy ** Několik let pracuje na nových mapách, které by měly předběhnout konkurenci ** Objeví se s příchodem iOS 12 pro vybrané státy

Karel Javůrek | 50

17 tipů, jak se nenechat hacknout

17 tipů, jak se nenechat hacknout

** Přehled nejdůležitějších věcí, které je nutné dodržovat pro digitální bezpečnosti ** Hlavní je používat mozek ** Chraňte soukromé informace

Karel Javůrek | 25

Tesla je stále ve ztrátě, ale elektromobily Model 3 se prodávají neuvěřitelně dobře

Tesla je stále ve ztrátě, ale elektromobily Model 3 se prodávají neuvěřitelně dobře

** Tesla má rekordní příjem, je ale ve ztrátě ** Objem výroby se zvyšuje, dochází ale baterie ** Pomoci mají nové továrny Gigafactory

Karel Javůrek | 91

Intel má 50 let! Připomeňte si 6 klíčových milníků v historii firmy

Intel má 50 let! Připomeňte si 6 klíčových milníků v historii firmy

** Firma Intel byla založena přesně před 50 lety ** Intel začínal jako výrobce pamětí ** Dnes je největším výrobcem procesorů pro osobní počítače

David Polesný, Pavel Tronner | 10


Aktuální číslo časopisu Computer

Jak mobily určují svoji polohu?

Velký test notebooků pro studenty

Nejlepší reproduktory na párty

Služby a aplikace pro výuku angličtiny