Agilné techniky – úvod, prínosy a implementácia

Scrum, XP, Kanban, Lean, … o čo tu vlastne ide?

Princípy, postupy a implementácie

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, Kanban, Theory of Constrains 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, Extreme Programming, Feature-Driven development, Agile Unified Process, Dynamic Systems Development Method).

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

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

Prehlásenie Agilného softvérového vývoja: http://agilemanifesto.org/

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. nastavením 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. Na slovensku pôsobí napríklad Agile@Slovakia.

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 kvalita. 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), č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 (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 konkurencie-schopný 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), ale aj mimo nich (napríklad riadenie projektov všeobecne) . Ale o tom možno viac niekedy na budúce.

Tento článok bol pripravený na časopis Infoware, číslo 1-2/2013.

Kindle: How to convert .pdf to Kindle format

I have Amazon Kindle 3. It’s excellent e-book device.

As any device, Kindle has some lacks. For example support of .pdf file format (font size change, annotation, Text-to-Speech, etc.). Isn’t it annoying? What we can do?

Kindle support these file formats:

  • Documents: Kindle (.AZW, .AZW1). Text (.TXT), Unprotected Mobipocket (.MOBI, .PRC)
  • Audible: Audible (.AA, .AAX)
  • Music: MP3 (.MP3)

You can upload your content by USB or email it by Kindle’s Personal Document Service where following file types are allowed: Microsoft Word, structured HTML, RTF, images (jpeg, gif, png, bmp), PDF.

How to convert .pdf to Kindle format

  1. Use Kindle’s Personal Document Service and type “Convert” in the subject of the e-mail when you submit your personal document to your @kindle.com address (paid service).
  2. Use GUI freeware
    Here is basicly 2 alternatives: Calibre and Mobipocket. I have tried both of them, for most of text-based .pdf these SW are pretty good alternatives.
  3. PDF -> PDF2LRF -> PNG2PDF -> MobiPocket Creator -> Kindle
    This is definitelly the most difficult way, I tried it for .pdf with embedded pictures, unfortunatelly with not such a good results. Here is a step-by-step guideline wich I used: 

    1. use pdflrfwin.exe for conversion .pdf file to .zip file
    2. use png2pdf.cmd to convert .zip to pdf file (png2pdf.cmd )
      I used ImageMagic libraries
    3. convert .pdf to Kindle format by Mobipocket

Summary: I use Mobipocket for .pdf conversion and in case that I have .pdf with embedded pictures I read it as a pdf.

Used resources

Software

  • Calibre (summary, sourceforge download)
    Calibre is a free and open source e-book management tool that allows one to organise, save and manage e-books, in and between a variety of formats.
  • Mobipocket Creator 4.2 Publisher Edition
    Windows GUI application allowing publishers to create their ebooks with an easy-to-use content authoring tool, and target customers who read on their PDA, smartphone or PC. This software also includes Adobe PDF, Microsoft Word & Text File Import wizards.
  • PDFRead
    PDFRead is a tool for converting non-DRMed PDF and DJVU documents for reading on eBook devices. It does this by creating an image out of each page, enhancing the image and then collating the images in a device-specific format.

Articles

Related articles

Oficiálne vydané – Visual Studio Scrum 1.0 pre TFS 2010

Microsoft vydal oficiálnu verziu šablóny Visual Studio Scrum 1.0 pre Team Foundation Server 2010. Ide o aplikáciu SW metodiky Scrum do prostredia TFS, pričom rozdiel oproti MSF for Agile Software Development v5.0 je v tom, že daná šablóna sa presne drží pôvodnej metodiky Scrum bez úprav.

V prípade, ak si ich chcete porovnať prikladám linky na ich popis v MSDN:

Pri tejto príležitosti nezabudnime na 3 oficiálnu metodiku z dielne Microsoft pre TFS – MSF for CMMI Process Improvement v5.0.

Ďalšie zdroje k téme:

Nástroje a pomôcky k MS Team Foundation System – 1

Nakoľko sa zavádzame používania TFS pre SW vývoj stalo jednou z mojich náplní, použijem svoj blog na odkomunikovávanie nájdených nástrojov, trikov a zlepšení pre prácu s TFS.

  • Kolega ma dnes upozornil na výborný nástroj pre prácu s Work Items (WI) uložených v Team Foundation Server cez rozhranie MS Outlook 2007. Ide o Team System Outlook 2007 Addin od SRL Group.  Umožňuje zadávať a prezerať si WI priamo z prostredia MS Outlook 2007. Šikovná vecička hlavne pre netechnických používateľov.
  • Chcete si nastaviť posielanie notifikácií o zmenách v TFS? Stačí si nainštalovať TFS PowerTools 2008 a tento návod.
  • Hľadáte nástroj na rozumnejšiu správu prístupových práv v TFS ? Skúste TFS Permission Manager.
  • A na záver zopár ďalších pomôcok pre TFS.

Prieskum stavu trhu procesného riadenia (The State of BPM in 2008)

BPTrends a BEA publikovali prieskum “The State of BPM in 2008″, viď časť prvá a časť druhá.
Výber toho čo ma zaujalo:
  • Dôvody adopcie BPM
    Nakoľko prvá (Od BPTrends) a druhá časť (od BEA) prieskumu sa ohľadom dôvodov výrazne líšia, nebudem ich bližšie rozoberať a to aj pretože sú to klasické dôvody na akékoľvek business zmeny ako: potreba ušetrenia financia redukciou nákladov a zlepšením produktivity, potreba zlepšenia koordinácie riadenia a spokojnosti zákazníkov, atď.
  • Štandardy
    BPMN si vydobil výrazný podiel 41% (oproti 22% v roku 2006), BPEL urobil malý nárast na 26 % (oproti 23% v roku 2006), XPDL (6%) a OMG Process Metamodel (7%) sú v pozadí. Pomerne stabilné je UML (30%).
  • BPM Suite – nástroje
    V oblasti používaných nástrojov vládne silné roztrieštenie pod vedením lídrov ako IBM (FileNet), SAP a Oracle. Správa poukazuje na rozdelenie trhu na dve základné kategórie:

    • BPMS, ktoré sú používané na integráciu rôznych informačných systémov a
    • BPMS, ktoré sú používané na riadenie “human-centric” procesov.

    Druhá časť prieskumu (od BEA), že pri voľbe BPMS zákazníci berú do úvahy:

    • Jednoduchosť používania modelovacieho prostredia
    • Podporu rôznych druhov procesov
    • Silu a škálovateľnosť runtime prostredia
    • Vstavanú podporu integrácie so SOA technológiami
  • Prepojenie BPM a SOA
    Druhá časť prieskumu (BEA)  uvádza, že zákaníci používajúci SOA+BPM (v porovnaní s použitím samotného BPM) výrazne zvýšili svoje schopnoti:
    • rapídneho zlepšenia procesov
    • zdieľania a znovupoužívania procesov naprieč organizačnými jednotkami.
  • Trh BPM
    BEA časť prieskumu indikuje, že BPM trh je jeden z najrýchlejšie rastúcich softvérových trhov a prejavuje silné prvky konsolidácie dodávateľov (150 dodávateľov evidovaných v roku 2006 oproti 25 v roku 2007).
    Zatiaľčo na konci roka 2007 24% respondentov uvádzalo používanie BPM technológií, ďalších 25% očakáva investovanie do týchto technológií v roku 2008.

Modelovanie podľa ADM TOGAF v špecifikácii SPEM

OMG vydala prípadovú štúdiu zaoberajúcu sa posúdením modelovania Enterprise Architektúry (EA) TOGAF (konkrétne časti Architecture Development Method, t.j. ADM) pomocou OMG metamodelov, predovšetkým SPEM.

Z pohľadu implementácie informačných systémov podľa princípov Enterprise Architecture vidím prínos použitia špecifikácie SPEM v2.0 pri definovaní procesného modelu (v prípade TOGAF ide o definovanie výstupu B. fázy, t.j.: tvorbu Business architecture) a následného použitia tohoto modelu pri rozpracovaní do Dátovej a Aplikačnej architektúry.

Poznámka na okraj: jeden z autorov spomínanej štúdie naštartoval nový projekt, kde zachytáva Architecture Development Method časť TOGAF-u používajúc EPFC.

Ďalšie zdroje k téme