Agilní softwarový vývoj: Principy a přínosy

Ján Masaryk | 24.06.2013 | Software | Žádné komentáře

Způsob vývoje softwaru prochází za posledních několik let poměrně významnými změnami, které se postupně objevují s větším či menším úspěchem i v našem regionu.

Objevilo se několik inovativních myšlenkových směrů, některé vznikly přímo v softwarovém inženýrství (Agile, Test-driven development atd.), další byly inspirovány z jiných odvětví (např. Lean, Kanban, Theory of Constrains z průmyslu).

Největší dopad na způsob tvorby softwaru a tedy i na vztah dodavatele softwaru a zákazníka mají jednoznačně agilní principy a z nich odvozené metodiky na vývoj softwaru (Scrum, Extreme Programming, Feature-Driven development, Agile Unified Process, Dynamic Systems Development Method).

Manifest agility a principy agilního vývoje

Na setkání klíčových osobností vývoje softwaru v roce 2001 vznikl dokument Agile manifesto, deklarující nový přístup k tvorbě softwaru, vyjádřený v základních hodnotách:

  • Individuality a interakce jsou více než procesy a nástroje
    Tvorba produktu je proces tvůrčí činností skupiny lidí z různých doménových oblastí (analytici byznysu, softwaroví architekti, programátoři, designéři, vlastníci softwaru, koncoví uživatelé…), přičemž úspěch projektu je kriticky závislý na schopnostech každého z nich v dané oblasti a je silně vázán na schopnost spolupráce mezi těmito jednotlivci. Procesy a zvolené nástroje jsou primárně pomůckou k dosažení vhodné interakce, nemají být svazujícím prvkem. Proto se mají aplikovat pouze ty procesy a používat takové nástroje, které projektovému týmu reálně pomáhají, jsou snadno použitelné a srozumitelné a hlavně přidávají reálnou hodnotu do vznikajícího softwarového díla.
  • Fungující software je více než rozsáhlá dokumentace
    Nejdůležitějším kritériem úspěchu je fungující software, který splňuje očekávání a potřeby zadavatele a uživatelů. Žádná dokumentace nenahradí intuitivně navržený software, který podporuje přirozeně fungující procesy u zákazníka a definované úlohy jeho pracovníků (ale neznamená to, že dokumentace nevzniká).
  • Spolupráce se zákazníkem je více než zdlouhavé jednání o kontraktu
    V dnešní době není výjimečné, že zákazník na začátku projektu (často z objektivních příčin) neví, co přesně potřebuje. Žádný kontrakt v takovém případě nepřináší očekávaný pocit jistoty, že smlouva zajistí dodání vhodného produktu. Úzká spolupráce zákazníka a dodavatele během trvání celého projektu je v takové situaci jednoznačnou výhodou pro obě strany. Umožňuje operativně reagovat na změny a zároveň ekonomicky výhodně implementovat změny v rozsahu a prioritách projektu.
  • Reakce na změny je více než sledování původního plánu
    Na začátku každého softwarového projektu existuje poměrně velká skupina neznámých faktorů a požadavků zákazníka, které se vyjasňují až v průběhu realizace projektu. Z předem připraveného dlouhodobého plánu se tak stává živý artefakt. Plánování je v agilním vývoji kontinuálně a opakované v krátkých cyklech s velkým důrazem na vizi produktu.

12 principů agilního softwarového vývoje

Uvedené hodnoty vznikly na základě zkušeností a jsou podpořeny těmito principy agilního softwarového vývoje:

1. Největší prioritou je uspokojit zákazníka pomocí rychlého a kontinuálního dodávání hodnotného softwaru.

2. Změny požadavků jsou vítány, a to i později během vývoje softwaru. Agilní procesy využívají změnu k dosažení konkurenční výhody zákazníka.

3. Dodávejte funkční software často, každý týden až měsíc, s preferováním kratšího času iterace.

4. Pracovníci zákazníka a vývojáři softwaru musí spolupracovat dennodenně během celého trvání projektu.

5. Postavte projekty na motivovaných jednotlivcích. Vytvořte jim prostředí a dejte jim podporu, kterou potřebují. Věřte jim, abyste dostali dokončený projekt.

6. Nejefektivnější a nejúčinnější metoda předávání informací do týmu a ve vývojovém týmu je osobní rozhovor.

7. Funkční software je primárním měřítkem úspěchu.

8. Agilní procesy propagují trvalý rozvoj. Sponzoři projektu, vývojáři a uživatelé by měli být schopni trvale udržet tempo rozvoje.

9. Nepřetržitá pozornost kladená na technickou dokonalost a vhodný design zlepšuje agilnost.

10. Jednoduchost – umění maximalizovat množství práce, kterou není třeba udělat, je podstatou.

11. Nejlepší architektura, požadavky a design vznikají pomocí samoorganizovaného týmu.

12. Tým v pravidelných intervalech přehodnocuje, jak být efektivnější, následně upraví své fungování.

Implementace agilních metod a následné výhody

Zavedení agilních technik je výraznou mentální změna fungování a přístupu k tvorbě softwaru pro všechny úrovně řízení projektu, jakož i pro všechny členy týmů na straně dodavatele i zákazníka. Poznání agilních hodnot, principů a výběr referenční agilní metodiky (např. SCRUM) není vůbec zárukou úspěchu.

Je potřeba nejprve dobře poznat prostředí organizace dodavatele i jeho zákazníka. Agile je totiž nástroj, který pomáhá řešit skutečné problémy organizace. Situace, kdy tým zvažuje změnit způsoby práce, často odráží skutečnost, že organizace má i jiné problémy, ať už je to konkurenceschopnost, produktivita, spokojenost klientů, rychlost dodávek, nebo kvalita. Právě proto je nutné začít poznáním skutečného stavu v organizaci a vhodným zvolením pilotního projektu, kde se ověří předpokládané očekávání přínosů zavedení Agile, jakož i omezení v rámci organizací.

Aplikace agilních technik je náročný proces, kde vybraná metodika představuje pouze východisko, ne cílový stav. Je spíše pravidlem, že aplikace stejné agilní metodiky na dva různé projekty vede k různým výsledkům, tj. nastavením fungování projektů.

Po nasazení agilních technik na pilotním projektu přichází na řadu retrospektiva a příprava na nasazení v širším rozsahu do ostatních projektů. Nedílnou součástí aplikace agilních technik je nastavení celé organizace a přizpůsobení používaných nástrojů.

Vzhledem k náročnosti procesu transformace lze doporučit, hlavně u větších projektů, využití služeb externích konzultantů z dané oblasti a výměnu zkušeností v rámci lokálních komunit.

V případě úspěšného zavádění agilních technik do projektu lze brzy sledovat výhody, které přináší agilní přístup pro vztah zákazníka a dodavatele:

  • Zvyšuje se celková efektivita nejen na straně dodavatele softwaru, ale i celého procesu od identifikace požadavků až po jejich nasazení do produkčního prostředí zákazníka. Odstraňují se postupně bariéry na obou stranách, zvyšuje se vzájemná interakce pracovníků obou týmů, čímž narůstá vzájemná důvěra.
  • Dlouhodobě roste hodnota díla zvyšováním externí i interní kvality. Z pohledu vnímání softwaru zákazníkem (externí kvalita) se dodaný software neustále zlepšuje, protože zákazník přímo ovlivňuje jeho funkčnost a řídí priority implementace daných funkčností během celého vývoje díla. Definování požadavků a způsob jejich implementace do funkčnosti díla je společná práce obou týmů již od časných stádií vývoje (například pomocí prototypování, wireframingu), což vede ke spokojenosti a následné motivaci. Z pohledu interní kvality díla je software pod větším dohledem celého projektového týmu dodavatele, hlavně díky týmům vytvořeným ze všech projektových rolí, a také pro denně aplikované praktiky, jako například párové programování (pair programming), kontrola kódu (code inspection), denní testování a pravidelné sestavování produktů.
  • Při opravdu úspěšném zavedení Agile se časem cyklus dodávání a nasazování produktu zcela přizpůsobí potřebám zákazníka. Vzniká z toho jedinečná konkurenční výhoda – neustále aktuální a konkurenceschopný produkt, rychlé odstranění chyb, skoro okamžitá reakce na obchodní požadavky zákazníka v praxi atd.

Zjednodušeně lze říci, že vhodná aplikace agilních metod přináší trvalé odstranění bariér efektivního vývoje na obou stranách, což vede k dlouhodobě funkčnímu softwaru s trvale rostoucí hodnotou.

Autor pracuje jako Director of Coordination & Strategy Support ve společnosti Asseco Central Europe, a. s.

Zdroj: Infoware.sk

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *


devět − = sedm

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Copyright © ICT manažer | ISSN 1805-5486 | SEO optimalizace a přizpůsobení SEO-care.cz