background design element dropbackground design element dropbackground design element drop

Co je agilní vývoj aplikací a kdy ho využívat


Barbora Koďousková
Aktualizováno:15.07.2021· 16 min. čtení
Facebook iconTwitter iconLinkedIn icon

Moderní doba si žádá moderní řešení. Vývoj mobilních či webových aplikací nebo tvorba webu jsou tak dnes často stavěny na úplně jiných základech, než bylo doposud zvykem. Modernizace ovšem nepřichází pouze v kontextu technologií, ale i v organizaci a realizaci samotné tvorby. Zástupcem činitelů této modernizace jsou pak agilní metodiky. Co si pod tímto pojmem představit a jak probíhá agilní vývoj mobilních nebo webových aplikací?

Co jsou agilní metodiky?

Agilní metodiky jsou souhrnné metody vytvořené za účelem zvýšení efektivity a produktivy. Jsou postavené na takzvaném iterativním neboli přírustkovém vývoji. Práce na projektu je rozdělena do menších úseků – iterací, v rámci kterých je nutné digitální produkt rozšířit o další část, vybudovat novou funkcionalitu, vylepšit tu stávající nebo řešit nastalé problémy.

Díky tomu je možné produkt dodat rychleji a pružněji reagovat na zpětnou vazbu, případně na vzniklé komplikace. Agilní metodiky úzce souvisí s programováním, nastíněný přístup je ovšem platný i v managementu a v projektovém řízení.

co je agilní programování

Tradiční přístup k řešení projektů vyžaduje spoustu plánování a přesnou představu o podobě finálního produktu. Zde naráží například startupy, které mnohdy přinášejí inovativní myšlenky, u kterých nelze jasně vymezit jejich rozsah ani úspěšnost. Prostřednictvím agilních metodik však dostávají prostor k postupnému budování projektu v závislosti na proměnách trhu, vzniku nových technologií či úpravách byznys modelu.

Agilní metodiky jsou proto typické jistou dávkou svobody, důrazem na branding a ověřováním myšlenky tvůrce – díky tomu, že uvedete například aplikaci na trh dříve než prostřednictvím konvenčních přístupů můžete lépe prioritizovat vlastnosti produktu. Musíte ovšem počítat s mnohem většími nároky na komunikaci v rámci týmu i mezi dodavatelem a zadavatelem.

Co znamená agilní vývoj aplikací nebo tvorba webu

Agile je označení pro způsoby tvorby softwaru založené na iterativním (přírůstkovém) či inkrementálním vývoji, k čemuž se hojně využívá takzvá MVC architektura. Základním princem agilních metod je úzká spolupráce mezi vývojářem a zákazníkem, který po dokončení každého cyklu zadává připomínky na úpravy a přímo tak ovlivňuje průběh tvorby webové či mobilní aplikace.

Agilní metody se v praxi vyskytují již nějakou dobu, jejich oficiální podobu však definuje až Manifest agilního programování z roku 2001. V tomto manifestu lze najít bližší specifikaci přístupu a zásady, kterými by se měli vývojáři i klienti během spolupráce řídit. Projekt řízený agilním přístupem lze rozdělit do několika fází:

  • nultá iterace – prvotní krátká analýza předložených požadavků a naprogramování základní kostry,
  • analýza změny – stanovení plánu pro jeden cyklus, kdy každý z programátorů dostává úkol, který je potřeba během stanovené doby zpracovat,
  • implementace požadované změny – samotné programování a realizace naplánovaných činností,
  • předvedení klientovi – klient dostane první verzi celkového projektu a dostává prostor pro připomínkování, bližší specifikaci další funkcionality a podobně.

co je agilní vývoj aplikací

Fáze agilního vývoje

Jakmile se klient vyjádří, započíná se druhý cyklus, který musí opět projít všemi uvedenými fázemi vývoje. Takto se celý proces opakuje až do té doby, dokud není klient se svou aplikací spokojen. Když se tak stane, přichází na řadu potřebná údržba a další případný rozvoj.

Projekt se tedy ke klientovi dostává postupně, přičemž mohou tvůrci nástroje okamžitě reagovat na jeho připomínky a řídit se jimi před započetím dalšího kroku. Podmínkou každého cyklu pak zůstává, že musí být vždy hotová alespoň část dalšího kódu, aby měl zákazník co hodnotit.

Tento přístup je alternativou k původnímu rigoróznímu vývoji, který zákazníkovi prezentoval až kompletní aplikaci. Agile může v mnoha případech vést k větší spokojenosti klienta a současně umožnit postupné nasazování aplikace do provozu. Příkladem takto řízeného projektu je streamovací služba Spotify, jež tímto způsobem uzpůsobovala své prostředí posluchačům.

Agilní vývoj aplikací úzce souvisí s tvorbou MVP a budováním startupových projektů. Agile je ve své podstatě odpovědí na otázky, jak přistupovat k organizaci a realizaci projektu efektivněji. Jedná se tedy o určitý standard, který stanovuje, jakým způsobem by měla probíhat komunikace v týmu a s klientem.

Agilní vývoj a Scrum

Agilní programování je možné realizovat prostřednictvím několika přístupů. Jedná se o obecné pojetí, které je vždy nutné přizpůsobit prostředí a možnostem konkrétního vývojářského týmu. Každý člen týmu by se pak měl s jeho praktikami ztotožnit a dodržovat nastolené standardy.

Extrémní programování

Příkladem může být extrémní programování, jeden z nejstarších agile přístupů k vývoji aplikací, který je postaven na častých dodávkách softwaru v krátkých vývojových cyklech.

Je zde aplikované jednotkové testování kódu, což znamená že je v první řadě specifikován způsob a smysl testu a až později psán program (například mobilní aplikace). Programuje se pak pouze ta část, která je nezbytně nutná.

Stejně jako u ostatních agilních metod je i zde dbáno na častou komunikaci se zákazníkem a v rámci programátorského týmu. Vývojáři si typicky stanovují vlastní, interní standardy, kodex, kterého se při programování drží. Může se jednat například o formátování jednotlivých částí kódu.

Scrum

Hojně využívanou agilní metodou je takzvaný Scrum. Scrum je postavený na úzké spolupráci mezi všemi členy týmu, kteří spolu každodenně komunikují (ať už osobně nebo virtuálně, například pomocí Slacku) a vzájemně se informují o vykonané práci i o plánech pro aktuální den.

Práce na projektu se rozděluje do sprintů čili úseků, ve kterých by měla být vyvinuta předem stanovená část aplikace. Délka trvání jednoho sprintu se odvíjí od zvyklostí konkrétního týmu a povahy projektu, může se jednat o rozmezí 1-4 týdnů, přičemž je typicky využíván čtrnáctidenní interval. Výstupem každého sprintu by mělo být demo mobilní nebo webové aplikace, které je předloženo klientovi pro další připomínky a návrhy.

Každému sprintu by měla předcházet krátká schůzka během které se tým domluví, co vše se bude během úseku vykonávat a stanoví si počet hodin, jenž nad prací stráví. Jednotliví programátoři si zvolí, určitou část, na kterou se zaměří a zbytek úkolů se uloží do backlogu. Čili skladiště shrnující všechny potřebné úkony. Během sprintu již komunikace probíhá výše uvedeným způsobem, tedy formou krátkého pravidelného reportu o vykonané a plánované činnosti.

Scrum vývoj aplikací a rozdělení rolí

Scrum definuje tři hierarchické role. Nejvyšší příčkou žebříčku je Product Owner, jenž má na starosti veškerou komunikaci s klientem a definování toho nejlepšího produktu. Do značné míry tedy rozhoduje o tom, která funkce by se měla kdy implementovat.

Pod ním je vedoucí programátorského týmu, nazývaný Scrum Master. Ten má na starosti zajištění řádného chodu vývoje aplikací neboli kontrolu činnosti vývojářů. Vývojáři utvářejí poslední příčku hierarchie, Scrum terminologie je definuje jako Scrum Team Members.

Jak probíhá agile (Scrum) vývoj aplikace

Předchozí odstavce již naznačily popularitu agile vývoje s využitím Scrum, zbývá zodpovědět otázku, jak taková realizace digitálního produktu probíhá v praxi. Celý proces započíná oslovením vývojářského týmu a stanovením základní funkcionality.

Na to Product Owner (projektový manažer) svolá Sprint planning čili setkání pro tým vývojářů, na kterém se projekt rozdělí do menších časových úseků (sprintů) a stanoví se činnosti, kterým se budou jednotlivci během první fáze cyklu věnovat. Zbytek se uloží do backlogu (již zmíněného místa pro budoucí úkoly).

Stanovená činnost není zcela striktně daná, ale neměla by se v průběhu sprintu měnit. Na konci dvoutýdenního cyklu (případně jiného stanoveného termínu) by mělo být vyhotoveno kompletní zadání. Během každého sprintu probíhá technická analýza v podobě testování a revize uživatelského rozhraní z hlediska uživatelské přívětivosti (UI/UX design).

Pokud by programátor během sprintu měl čas navíc, může využít úkolů uložených v backlogu. Po skončení sprintu je dosavadní podoba aplikace zaslána klientovi, který ji ohodnotí a udělí případné další pokyny, aby se mohl celý proces zopakovat.

Jak funguje agilní vývoj scrum

Zákazník se tak sám aktivně podílí na vývoji své aplikace a má možnost zasahovat do její finální podoby již v průběhu procesu. Agilní vývoj apps v tomto podání dává prostor pro vytváření kvalitních produktů za poměrně krátký čas, v závislosti na množství připomínek apod.

Z popisu již ovšem vyplývá důležitost pozice Product Ownera, který má za úkol stanovovat prioritní úkoly tak, aby se vývoj vždy posunul směrem kupředu a nezacyklil se v nekonečném koloběhu sprintů.

Výhody a nevýhody agilního vývoje

Nastíněné výhody agilního vývoje mobilních nebo webových aplikací lze shrnout do následujících bodů:

  • maximální přizpůsobení digitálního produktu potřebám a požadavkům zákazníka,
  • průběžné nasazování produktu na produkci,
  • vždy se pracuje pouze na tom, co má smysl – platí se pouze za produktivní činnost,
  • klient je nezbytnou částí týmu, do značné míry ovlivňuje obsah dané iterace,
  • průběžné nasazování je doplněné průběžným testováním, například kompatibility.

Nevýhody agilního vývoje lze shledávat zejména v požadavcích na zákazníka i vývojářský tým. Ne každý klient má dostatek času a energie k tomu, aby mohl pravidelně konzultovat objednaný produkt. Může být proto pro něj vhodnější přístup, kdy se k němu dostane až finální verze aplikace, přičemž nemusí do průběhu vývoje nikterak zasahovat.

Stejně tak nemusí agile vyhovovat každému vývojářskému týmu. Je tedy na zvážení každého z nich, zda se mu tato forma spolupráce vyplatí, nebo raději zvolí klasický vodopádový model.

Kdy využít agilní vývoj aplikace

Pro agilní vývoj aplikace by se měl rozhodnout pouze ten klient, který má zájem či čas na projektu úzce a pravidelně spolupracovat. Z druhé strany programátorský tým potřebuje mít někoho, kdo se postará o komunikaci s klientem a současně zvládne efektivně koordinovat vývoj tak, aby každý cyklus přinesl nějaký posun ve funkcionalitě či vzhledu aplikace.

Ve většině případů se agile přístup hodí zejména v situaci, kdy klient ještě nemá přesnou představu o finální podobě aplikace a pro větší projekty, které je nutné postupně přizpůsobovat. Současně ovšem není nutné tuto formu aplikovat u menších projektů.

Vodopádový versus agilní vývoj aplikací

Předchozí obsah již několikrát zmiňoval alternativu k agile vývoji, kterou jsou rigorózní metody. Nejčastěji využívanou rigorózní technikou je pak takzvaný vodopádový model (Waterfall), jenž dodnes zastává řada předních vývojářů.

Co je vodopádový model vývoje aplikací

Vodopádový model je tedy předchůdcem agile přístupu k tvorbě aplikací a současně jedním z nejzásadnějších představitelů rigorózní metodiky. Jedná se o sekvenční vývojový proces, jehož jednotlivé části na sebe plynule navazují a vycházejí ze sebe. Nelze tedy žádnou etapu přeskočit ani přerušit. Posun v procesu je tak přímo závislý na zajištění stoprocentní úspěšnosti předchozí fáze.

Vždy je zde proto zajištěna maximální funkcionalita, avšak na úkor horšího provádění změn. Aplikace se typicky ke klientovi dostane až ve fázi testování, kdy již může být provádění určitých změn komplikovanější než v rané fázi vývoje. Největší úskalí zde proto spočívá v tom, že klient nemusí předem znát všechny své požadavky, nebo si nedostatky v zadání uvědomí až po zhlédnutí finální verze.

jak funguje vodopádový model programování

Vývojáři se současně nemohou vracet k předešlé fázi vývoje, takže pokud nedostatky odhalí až později, musí k nápravě dojít až po dokončení cyklu – po vydání finální verze. Programátoři jsou navíc pod neustálým dohledem a tlakem předem definovaného času na vývoj. Je zde tedy vyžadována mnohem větší disciplína.

Na druhou stranu se však jedná o princip zajišťující stabilní a kvalitní produkty, které jsou výsledkem předem připravené, pečlivé analýzy požadavků. Striktní pravidla kolem dokumentace navíc řeší případný odchod některého z programátorů, jenž může v případě agilního vývoje, kde na dokumentaci není kladen takový důraz, znamenat spoustu promrhaného času stráveného luštěním kódu.

Obecně je proto možné souboj agilní vývoj versus vodopádový model shrnout tak, že je agile vhodnější zejména pro větší projekty, zatímco vodopád spíše pro menší, kde není tolik zapotřebí průběžná konzultace. Stejně tak je však vodopád lepší pro klienty, kteří se nechtějí, nebo nemají čas přímo podílet na vývoji.

Lean metodika

S agile přístupem pak úzce souvisí také takzvaná Lean metodika, někdy též Lean Development a tvorba minimálního životaschopného produktu (MVP). Agilní metodiky jsou typicky považovány za jakousi podmnožinu lean přístupu. Na rozdíl od agile se Lean mnohem více zaměřuje na management, řízení vztahů se zákazníky a podobně.

Agilní vývoj tak typicky bývá prostředkem k realizaci takzvaných Lean startupů i stabilních firem. Lean filosofie vychází z myšlenky vytvořit co možná nejméně, za co nejkratší čas, uvedení výsledku na trh a následného poučení se ze zpětné vazby a analýzy úspěšnosti. Cílem je zde zefektivnění a zrychlení celého proces tvorby aplikace. Vývoj je rozdělen do pěti částí a programátorům pevně přidělena konkrétní úloha.

Agilní vývoj aplikací v praxi

Vývoj aplikace na míru je mimo samotné programování a design spojený také se smlouvou mezi dodavatelem a zákazníkem. Smlouvy se obvykle objevují ve dvou podobách, a to jako rámcová smlouva o poskytování služeb, nebo jako dohoda fixní částky a fixního času.

V prvním případě se jedná o definování poskytovaných služeb, nikoli definici produktu. Programátor (vývojářský tým) se tak zavazuje poskytovat zde uvedené služby, jako je design, programování apod.

Samotná podoba aplikace však vychází až z konkrétní domluvy, která je postupně upravována na konci cyklů. Tato forma je tedy ideální pro agilní vývoj. V případě klasického, rigorózního přístupu je ovšem vhodnější druhá zmíněná možnost, která přesně specifikuje podobu díla a pevně stanovuje částku za jeho dodání. Celý proces musí proběhnout v předem stanoveném čase, kdy se zhotovitel zavazuje dodat produkt a objednatel za něj musí zaplatit.

Pokud i vy přemýšlíte o vývoji vlastní aplikace na míru a rozhodujete se, kterou metodiku zvolit, neváhejte využít naší bezplatné konzultace. Můžeme vám pomoci nejen s výběrem, ale i s realizací kompletního projektu. Od prvotního návrhu až po údržbu.
 


Potřebujete poradit?