Zdroj obrázka: pixabay.com

Extrémne programovanie

Predstavte si to: Projekt vývoja softvéru pre nový produkt založený na výhodách prvého uvedenia na trh sa práve objavil na radare vašej spoločnosti. Tradičné metódy extrémneho programovania, pri ktorých klient vie „presne“ to, čo chcú, sú mimo. Váš tím je malý a skladá sa z mladých odborníkov, ktorí pravdepodobne dobre reagujú na radikálny model riadenia projektov. Aké sú vaše možnosti?

Pravdepodobne budete hovoriť: Agilný projektový manažment, samozrejme! Ale ktorú metodiku by ste chceli použiť? Existuje niekoľko možností: pre jednu je tu veľmi populárny Scrum: ktorý zahŕňa vytváranie krátkych „sprintov“ založených na zákazníckych nevybavených úlohách. A potom je tu Kanban, ktorý pracuje na optimalizácii práce. Existuje aj extrémne programovanie, často skrátené na XP, ktoré sa zameriava na zosilňovanie pozitívnych aspektov tradičných programovacích modelov tak, aby pracovali na maximálny potenciál.

Extreme Programming je veľmi populárna (aj keď nie tak populárna ako Scrum) metodika zameraná na splnenie meniacich sa požiadaviek klientov. Prvý projekt extrémneho programovania začal v marci 1996 Kent Beck v Chrysler. Vo svojej knihe z roku 1999, Extreme Programming Explained: Embrace Change, podrobne opísal aspekty vývoja softvéru.

Kent Beck bol tiež priekopníkom vývoja založeného na testoch, ktorý dal radarové testovanie v prípade použitia ako vylepšenie oproti tomu, ako sa veci robili vtedy: písanie riadkov a riadkov kódu a jeho testovanie. Bol tiež jedným z pôvodných signatárov Agilného manifestu, ktorý pomáhal formovať manifest, aby zmenil spôsob písania extrémneho programovacieho softvéru.

Päť hodnôt extrémneho programovania na základe vysvetlenia sú:

komunikácia

Extrémne programovanie nezávisí od rozsiahlej dokumentácie. V skutočnosti sa extrémna programová dokumentácia navrhuje iba v nevyhnutných prípadoch. Metodika sa teda do veľkej miery spolieha na komunikáciu medzi členmi tímu a tiež s používateľmi.

jednoduchosť

Toto je jadro extrémneho programovania. Metodika uprednostňuje jednoduché návrhy, nie príliš ďaleko do budúcnosti, ale zameriava sa na dnešné požiadavky, zatiaľ čo samotný program je dostatočne robustný na to, aby pridal požiadavky, ktoré budúcnosť vyvoláva.

spätná väzba

Táto nevyhnutná slučka dozadu a dopredu odlišuje agilné systémy vo všeobecnosti a zvlášť extrémne programovanie od iných metodológií riadenia softvérových projektov. Nepretržitá spätná väzba môže fungovať rôznymi spôsobmi, ale všetci pracujú na tom, aby bol systém silnejší a spoľahlivejší.

Spätná väzba môže mať rôzne príchute:

  • Od samotného programu: Kód je dôkladne testovaný počas celého vývojového cyklu projektu, aby mohli vývojári implementovať zmeny.
  • Od klienta: Je to nevyhnutná súčasť väčšiny agilných systémov. Klienti píšu akceptačné testy, na ktorých je vývoj založený, a to tvorí chrbticu vývojového procesu. Všetky iterácie sa tiež doručujú klientovi za účelom pravidelnej spätnej väzby.
  • Z tímu: Po vytvorení nového prípadu použitia / príbehu sa tím okamžite vráti kalkuláciou nákladov a odhadom časovej osi, čím sa zvyšujú požiadavky hneď ako vzniknú. V extrémnom programovaní nikto „nevlastní“ žiadny kód, a preto sa v extrémnych programovacích tímoch podporuje spätná väzba o kóde druhého.

odvaha

Môže sa to javiť ako zvláštna hodnota v extrémnom programovaní pre vývoj softvéru, vhodnejšom pre niečo ako armáda alebo námorníčka! Zamyslite sa však nad tým: Softvérové ​​projekty sa už dlho zabíjajú tradičnými metódami extrémneho programovania riadenia; bezpečné v pohodlí rozsiahlej dokumentácie a hierarchie, ktorá neumožňuje inováciu. Táto hodnota je príkladom jadra extrémneho programovania: Buďte pripravení skočiť, bez toho, aby na to padák padol! Pozrime sa na tento odlišný štýl riadenia projektov a buďte pripravení niesť zodpovednosť, vzdať sa hierarchie a byť zodpovední a pracovať bez toho, aby ste vedeli všetko na začiatku.

rešpekt

Úcta, piata hodnota, bola pridaná neskôr a znamená rešpekt voči ostatným a voči sebe. Znamená to tiež rešpektovanie napísaného kódu a očakávania a potreby klienta. Táto hodnota je základom komunikácie medzi rôznymi zúčastnenými stranami.

Činnosti extrémneho programovacieho projektu

Program Extreme Programming rozlišuje štyri jednoduché aktivity projektu. Oni sú:

  • Kódovanie : Extrémne programovanie to považuje za najdôležitejšiu činnosť. „Bez kódu neexistuje nič, “ hovorí Kent Beck, zakladateľ programu Extreme Programming.
  • Testovanie : Kód je taký kód, pokiaľ nebol testovaný. Extrémne programovanie je posadnuté testovaním pomocou testov jednotiek na potvrdenie, či kód funguje, a akceptačných testov generovaných klientom, aby sa potvrdilo, že kód testuje to, čo je potrebné testovať.
  • Počúvanie: Počúvanie, doložené základnou hodnotou komunikácie, je činnosť, ktorá vyžaduje, aby vývojári nielen počuli klientov, ale aby skutočne počúvali, čo chcú. Vývoj a podnikanie sú dve rôzne veci a vývojári často nerozumejú obchodnému prípadu konkrétneho rozhodnutia. Základom aktivity „počúvania“ sú potreby zákazníka, ako aj vývojárov.
  • Projektovanie : Možno vás prekvapí, že v projekte vývoja softvéru je na konci navrhovacia činnosť, často tak dôležitá a primárna. Dôvodom je, že program Extreme Programming chce zámerne dostať ľudí z myslenia „navrhovať a rozvíjať“, ktoré toto odvetvie vychováva už mnoho rokov. Nemá to obmedzovať dôležitosť projektovania. Dobrý a minimálny dizajn je skôr charakteristickým znakom projektu.

Z hodnôt a aktivít vyplýva 12 princípov extrémneho programovania, ako ich navrhol jeho zakladateľ, vo svojej knihe Vysvetlené extrémne programovanie.

  • Plánovacia hra
  • Párové programovanie
  • Testovaný vývoj
  • Celý tím
  • Nepretržitá integrácia
  • Vylepšenie dizajnu
  • Malé vydania
  • Normy kódovania
  • Vlastníctvo kolektívneho kódu
  • Jednoduchý dizajn
  • Systém Metafora
  • Trvalo udržateľné tempo

Niektoré z týchto extrémnych praktík programovania, všetky mapované podľa osvedčených postupov softvérového inžinierstva, sa líšia od všeobecných metodík Agile. Niektoré praktiky extrémneho programovania sú vysvetlené nižšie:

  1. Plánovacia hra

Toto je plánovacia časť projektu, označovaná ako „plánovacia hra“. Zahŕňa plánovanie ďalšej iterácie a uvoľnenia po konzultácii s používateľom / klientom, ako aj interné plánovanie tímov, pokiaľ ide o úlohy, na ktorých budú pracovať.

  1. Párové programovanie

Ide o dvoch ľudí pracujúcich na určitom kóde. Jedna osoba, nazývaná klávesnica, zadáva kód, zatiaľ čo druhá, ktorá sa nazýva monitor, dohliada na tento kód, podľa potreby ho komentuje a vylepšuje. Obaja ľudia si často vymieňajú svoje úlohy. Ukázalo sa, že to výrazne zlepšuje efektívnosť kódu. To nemusí byť vhodné pre všetky vývojové scenáre, a to je niečo, čo treba zvážiť pred registráciou do programu Extreme Programming.

  1. Testom riadený vývoj

Celý napísaný kód sa kontroluje po jednotlivých jednotkách, tj každý kus kódu, ktorý dokáže niečo urobiť, sa najskôr otestuje. Extrémne programovanie kladie veľký dôraz na testovanie. To pomáha potvrdiť, že kód funguje, a teda ho možno považovať za začlenenie do samotného projektu extrémneho programovania. Je to analogické jednotkovým testom v škole: testované sú malé informácie, aby učiteľ / študent mohol vykonať korekcie kurzu a počas ročných skúšok sa nehýbal!

  1. Vylepšenie dizajnu (Refaktoring)

Cieľom projektov XP je na základe funkcie jednoduchosti neustále zlepšovať písaný kód. To znamená, že sa vždy vylepšuje celý kód (a niekedy aj databáza). Refaktoring neprináša žiadne funkcie; iba vylepšuje existujúci kód. Robí to pevnejšie a jasnejšie. Je to podobné ako úprava časti textu, jej vyleštenie a vylepšenie.

  1. Jednoduchý dizajn

V extrémnom programovaní sa funkcie nepridávajú, kým sa to výslovne nevyžaduje. Aj keď je kód, na ktorom sa pracuje, v súčasnosti veľmi podobný tomu, čo by sa mohlo v budúcnosti požadovať, nebude sa využívať, pokiaľ nebude dohodnutý ako užívateľský príbeh.

  1. Systém Metafora

Toto zahŕňa štandardizáciu všetkých názvových konvencií tak, aby sa jeho účel a funkcia ľahko dešifrovali. Napríklad operácie alebo môžu pomôcť každému programátorovi pochopiť jeho funkčnosť. Malo by sa to robiť v rámci celého extrémneho programovacieho projektu, aby bolo ľahké pre každého pozerať sa na tento kód a prípadne ho upravovať alebo vylepšovať.

Úlohy v rámci extrémneho programovacieho projektu:

Podobne ako Scrum aj program Extreme Programming má v rámci každého projektu niekoľko určených úloh. Teraz nemusia roly vždy vykonávať odlišní ľudia a človek môže prevziať viac ako jednu úlohu.

Úlohy extrémneho programovania sú:

  • Zákazník : Vysvetlenie. Dôvod projektu. Rozhoduje, čo musí projekt urobiť. Poskytuje používateľské príbehy.
  • Programátor : Toto je osoba, ktorá:
    • Berie príbehy, s ktorými zákazník príde
    • Vytvára programovacie úlohy z príbehov
    • Implementuje príbehy používateľov
    • Testuje kód podľa jednotky
  • Tréner : Tréner vo všeobecnosti zabezpečuje, že projekt je na správnej ceste, a v prípade potreby tiež skočí na pomoc.
  • Tracker : Tracker robí špecifické dotazy pre programátorov v nastavenom intervale. Zvyčajne chodí kontrolovať priebeh programátorov, ponúka pomoc tam, kde je to potrebné, niekoľkými spôsobmi: vyháňať rukávy a pomáhať priamo s kódom, informovať trénera alebo podľa potreby organizovať stretnutie so zákazníkom.
  • Tester : Vykonáva funkčné testy. Tester nespúšťa testy jednotky, ktoré spúšťajú samotní programátori.
  • Doomsayer: Toto, ako už názov napovedá, je podobné systému Black Hat v systéme skupinového myslenia Edwarda De Bona. Ktokoľvek by mohol byť Doomsayer, ktorý zvyčajne označuje potenciálne problémy a pomáha udržiavať problémy v správnej perspektíve.
  • Manažér : Manažér v projekte extrémneho programovania je skôr ako plánovač, zaisťuje, aby sa stretnutia uskutočňovali podľa plánu, a zabezpečil, aby sa rozhodnutia prijaté počas stretnutí prenášali na vhodnú osobu, častejšie ako ne, na osobu Tracker. Manažér však ľuďom nehovorí, čo majú robiť a kedy to robiť. Robí to zákazník a / alebo samotné užívateľské príbehy.
  • Majiteľ zlata : Majiteľ zlata je osoba, ktorá financuje projekt. To by mohol byť zákazník, ale nie nevyhnutne.

Niektoré z extrémnych programovacích úloh, ako sú opísané vyššie, sa dajú kombinovať, niektoré však jednoznačne nie.

Napríklad zákazník nemôže byť tiež programátorom. Programátor a sledovač podobne nemôžu byť rovnakou osobou.

Extrémne programovacie úlohy sú definované dostatočne jasne, aby nedochádzalo k nejasnostiam, a vytvárajú sa pre maximálnu flexibilitu a efektívnosť.

Nevýhody extrémneho programovania:

Zatiaľ čo zástancovia programu Extreme Programming vykresľujú ružový obraz, skutočnosťou je, že programovanie Extreme, ako už názov napovedá, je veľmi ťažké implementovať. Fakty extrémneho programovania môžu byť začlenené do projektov úspešnejšie než úplné prijatie systému XP.

Niektoré z negatív extrémneho programovania sú:

  • Zistilo sa, že extrémne programovanie je efektívnejšie v menších skupinách . Jeho účinnosť vo väčších skupinách je sporná a lepšou možnosťou je rozdeliť extrémne programovacie tímy tak, aby skupiny boli menšie.
  • Jednou z kľúčových funkcií extrémneho programovania, párové programovanie v mnohých prípadoch nefunguje dobre . Komplexné kódovanie môže vyžadovať dve hlavy, ale nie všetky úlohy si môžu vyžadovať dve osoby, pričom druhá osoba má vlastnú hmotnosť. V skutočnosti je párové programovanie, ak jeden z členov nie je synchronizovaný s druhým, jedným z hlavných dôvodov, prečo v mnohých prípadoch zlyháva extrémne programovanie.
  • Závislosť od zákazníka až po návrh zdroja na mieste zo strany zákazníka môže byť hlboko znepokojujúca. Môže to tiež viesť k interferenciám, skutočným a imaginárnym, počas vývoja.
  • Zameranie programu Extreme Programming na jednoduchosť môže veľmi sťažiť pridanie k súčasnému projektu, čo znamená vyšší rozpočet aj na jednoduché zmeny, ktoré už viac nie sú jednoduché.
  • Plochá hierarchická štruktúra znamená, že tím by sa mal vždy zamerať a ak nie je manažér, ktorý sa venuje odlišným typom ľudí, tím extrémneho programovania je úplne závislý od emocionálnej zrelosti všetkých členov tímu, čo je faktor, ktorý nie je vždy spoľahlivý,

Dokonca aj s týmito faktormi zostáva extrémne programovanie silným nástrojom, ktorý sa má použiť na správny projekt, pričom spoločnosti po prijatí procesu extrémneho programovania vykazujú mnohonásobné zvýšenie efektívnosti. Na rozdiel od Scrum, ktorý je skôr procesom riadeným systémom, Extreme Programming, alebo aspoň jeho časti, môže viesť systém vývojárov k revolúcii v spôsobe vývoja extrémneho programovacieho softvéru.

Kategórie: