Vybrať región
sk
  • SK
  • CZ
  • EN
Vytlačiť

Infoware, str.32-33 / Agilné techniky a ich využitie v prospech zlepšenia vzťahu firma – zákazník

Spôsob vývoja softvérových riešení prechádza za posledných niekoľko rokov pomerne významnými zmenami, ktoré sa postupne objavujú s väčším a menším úspechom aj na Slovensku. Objavilo sa niekoľko inovatívnych myšlienkových smerov, niektoré vznikli priamo v softvérovom inžinierstve (Agile, Test-driven development, atď.), iné boli inšpirované z iných odvetví (napr.: Lean[1], Kanban[2] , Theory of Constrains[3]  z priemyslu).

 Najväčší dosah na spôsob tvorby softvéru, a teda aj na vzťah dodávateľ softvéru – zákazník, majú jednoznačne Agilné princípy a z nich odvodené metodiky pre vývoj softvéru (Scrum[4] , Extreme Programming[5] , Feature-Driven development[6] , Agile Unified Process[7] , Dynamic Systems Development Method[8] ).

Obr.: Agilné princípy ako základ metodík určených pre vývoj softvéru. 

 

Agilné manifesto[9] a princípy agilného vývoja

 

Prehlásenie Agilného softvérového vývoja

 Na stretnutí kľúčových osobností vývoja softvéru v roku 2001 vznikol dokument Agile manifesto, deklarujúci nový prístup k tvorbe softvéru, vyjadrený v základných hodnotách:

 

  • Individuality a interakcie sú viac ako procesy a nástroje
    Tvorba produktu je proces tvorivej činnosti skupiny ľudí z rôznych doménových oblastí (business analytici, softvéroví architekti, programátori, dizajnéri, vlastníci softvéru, koncoví používatelia, …), pričom úspech projektu je kriticky závislý od schopností každého z nich v danej oblasti a je silne previazaný na schopnosť spolupráce medzi týmito jednotlivcami. Samotné procesy a zvolené nástroje sú primárne pomôckou pre dosiahnutie vhodnej interakcie, nemajú byť zväzujúcim prvkom. Preto sa majú aplikovať len tie procesy a používať také nástroje, ktoré projektovému tímu reálne pomáhajú, sú ľahko použiteľné a zrozumiteľné, a hlavne pridávajú reálnu hodnotu do vznikajúceho softvérového diela.
  • Fungujúci softvér je viac ako rozsiahla dokumentácia
    Najdôležitejším kritériom úspechu je fungujúci softvér, ktorý spĺňa očakávania a potreby zadávateľa a svojich používateľov. Žiadna dokumentácia nenahradí intuitívne navrhnutý softvér, ktorý podporuje prirodzene fungujúce procesy u zákazníka a definované úlohy jeho pracovníkov (neznamená to, že dokumentácia nevzniká).  
  • Spolupráca so zákazníkom je viac ako zdĺhavé rokovania o kontrakte
    V dnešnej dobe nie je výnimkou, že zákazník na začiatku projektu (často z objektívnych príčin) nevie, čo presne potrebuje. Žiaden kontrakt v takomto prípade neprináša očakávaný pocit istoty, že zmluva zabezpečí dodanie vhodného produktu. Úzka spolupráca zákazníka a dodávateľa počas celého trvania projektu je v takejto situácii jednoznačnou výhodou pre obe strany. Umožňuje operatívne reagovať na zmeny a zároveň ekonomicky výhodne implementovať zmeny v rozsahu a prioritách projektu.
  • Reakcia na zmeny je viac ako sledovanie pôvodného plánu
    Na začiatku každého softvérového projektu existuje pomerne veľká skupina neznámych faktorov a požiadaviek zákazníka, ktoré sa vyjasňujú až počas priebehu projektu. Z vopred pripraveného dlhodobého plánu sa tak stáva živý artefakt. Plánovanie je v agilnom vývoji kontinuálne a opakované v krátkych cykloch s veľkým dôrazom na víziu produktu.

12 princípov agilného softvérového vývoja

Vyššie uvedené hodnoty vznikli na základe skúsenosti a sú podporené týmito princípmi pre agilný softvérový vývoj:

 

  1. Najväčšou prioritou je uspokojiť zákazníka pomocou skorého a kontinuálneho dodávania hodnotného softvéru.
  2. Zmeny požiadaviek sú vítané, aj neskôr počas samotného vývoja softvéru. Agilné procesy využívajú zmenu pre dosiahnutie konkurenčnej výhody zákazníka.
  3. Dodávajte funkčný softvér často, každý týždeň až mesiac, s preferovaním kratšieho času iterácie.
  4. Pracovníci zákazníka a vývojári softvéru musia spolupracovať denno-denne, počas celého trvania projektu.
  5. Postavte projekty na motivovaných jednotlivcoch. Vytvorte im prostredie a dajte im podporu, ktorú potrebujú. Verte im, aby ste dostali dokončený projekt.
  6. Najefektívnejšou a najúčinnejšou metódou odovzdávania informácií do tímu a vo vývojovom tíme je osobný rozhovor.
  7. Funkčný softvér je primárny meradlom úspechu.
  8. Agilné procesy propagujú trvalý rozvoj. Sponzori projektu, vývojári a užívatelia by mali byť schopní trvalo udržať tempo rozvoja.
  9. Nepretržitá pozornosť kladená na technickú dokonalosť a vhodný dizajn zlepšuje agilnosť.
  10. Jednoduchosť - umenie maximalizovať množstvo práce, ktorú nie je potrebné urobiť, je podstatou.
  11. Najlepšia architektúra, požiadavky a dizajn vznikajú pomocou samo-organizovaného tímu.
  12. Tím v pravidelných intervaloch prehodnocuje ako byť efektívnejší, následne primerane upraví svoje fungovanie.

 

Implementácia agilných metód a následné výhody

 

Zavedenie agilných techník je výrazná mentálna zmena fungovania a prístupu k tvorbe softvéru pre všetky úrovne riadenia projektu, ako aj pre všetkých členov tímov na strane dodávateľa aj zákazníka. Samotné poznanie agilných hodnôt, princípov a výber referenčnej agilnej metodiky (napr. SCRUM) nie je vôbec zárukou úspechu.

Je nutné najprv dobre poznať prostredie organizácií dodávateľa aj jeho zákazníka. Agile je totiž nástrojom, ktorý pomáha riešiť skutočné problémy organizácie. Situácia, kedy tím zvažuje zmeniť spôsoby práce, často odráža skutočnosť, že organizácia má aj iné problémy, či už je to konkurencieschopnosť, produktivita, spokojnosť klientov, rýchlosť dodávok alebo kvalita. Práve preto je nutné začať spoznaním skutočného stavu organizácií a vhodným zvolením pilotného projektu, kde sa overia predpokladané očakávania prínosov zavedenia agile, ako aj obmedzenia v rámci samotných organizácií.

Aplikácia agilných techník je náročný proces, kde vybraná metodika je len východiskom, nie cieľovým stavom. Je skôr pravidlom, že aplikácia rovnakej agilnej metodiky na dva rôzne projekty vedie k rôznym výsledkom, t.j. nastaveniam fungovania projektov.

Po nasadení agilných techník na pilotnom projekte prichádza na rad retrospektíva a príprava na nasadenie v širšom rozsahu do ostatných projektov. Neoddeliteľnou súčasťou aplikácie agilných techník je nastavenie celej organizácie a prispôsobenie používaných nástrojov.

Vzhľadom na náročnosť procesu transformácie odporúčam, hlavne pri väčších projektoch, využitie služieb externých konzultantov z danej oblasti a výmenu skúsenosti v rámci lokálnych komunít[10].

V prípade úspešného zavádzania agilných techník na projekte je možné čoskoro sledovať výhody, ktoré prináša agilný prístup pre vzťah zákazníka a dodávateľa:

  • Zvyšuje sa celková efektivita nielen na strane dodávateľa softvéru, ale aj celého procesu od identifikácie požiadaviek až po ich nasadenie do produkčného prostredia zákazníka. Odstraňujú sa postupne bariéry na oboch stranách, zvyšuje sa vzájomná interakcia pracovníkov oboch tímov čím narastá vzájomná dôvera.
  • Dlhodobo rastie hodnota diela zvyšovaním externej aj internej kvality. Z pohľadu vnímania softvéru zákazníkom (externá kvalita) sa dodaný softvér neustále zlepšuje, nakoľko zákazník priamo ovplyvňuje jeho funkčnosť a riadi priority implementácie daných funkčností počas celého vývoja diela. Definovanie požiadaviek a spôsob ich implementácie do funkčnosti diela je spoločná práca oboch tímov už od skorých štádií vývoja (napríklad pomocou prototypovania, wireframing[11]), čo vedie k spokojnosti a následnej motivácií. Z pohľadu internej kvality diela je softvér pod väčším dohľadom celého projektového tímu dodávateľa, hlavne vďaka tímom vytvoreným zo všetkých projektových rolí, a aj kvôli denne aplikovaným praktikám ako napríklad párové programovanie[12] (pair programming), kontrola kódu (code inspection), denné testovanie a pravidelné zostavovanie produktov.
  • Pri naozaj úspešnou zavedení agile sa časom cyklus dodávania a nasadzovania produktu plne prispôsobí potrebám zákazníka. Vzniká z toho jedinečná konkurenčná výhoda – neustále aktuálny a konkurencieschopný produkt, rýchle odstránenie chýb, skoro okamžitá reakcia na obchodné požiadavky zákazníka v praxi, atď.

Zjednodušene možno povedať, že vhodná aplikácia agilných metód prináša trvalé odstránenie bariér efektívneho vývoja na oboch stranách, čo vedie k dlhodobo funkčnému softvéru s trvale rastúcou hodnotou.

 

Čerešnička na záver

Agilné hnutie sa presadzuje do všetkých oblastí vývoj a dodávky softvéru (napr.: DevOps[13]), ale aj mimo nich (napríklad riadenie projektov všeobecne). Ale o tom možno viac niekedy nabudúce.

 

Ing. Ján Masaryk

Director of Coordination & Strategy Support

Asseco Central Europe, a. s.

 


1 http://en.wikipedia.org/wiki/Lean_software_development

2 http://en.wikipedia.org/wiki/Kanban_(development)

3 http://en.wikipedia.org/wiki/Theory_of_constraints

4 http://www.scrum.org/ 

5 http://www.extremeprogramming.org/

6 http://www.featuredrivendevelopment.com/

7 http://www.ambysoft.com/unifiedprocess/agileUP.html

8 http://en.wikipedia.org/wiki/Dynamic_systems_development_method

9 http://agilemanifesto.org/

10 Na slovensku pôsobí napríklad Agile@Slovakia (http://agile.sk/ ).

11http://en.wikipedia.org/wiki/Website_wireframe

12 http://www.extremeprogramming.org/rules/pair.html

13http://en.wikipedia.org/wiki/DevOps

Súbory k stiahnutiu


Vytlačiť