Zdroj obrázku: pixabay.com

Extrémní programování

Představte si toto: Projekt vývoje softwaru pro nový produkt založený na výhodě první uvedení na trh byl právě objeven na radaru vaší společnosti. Tradiční metody extrémního programování, kde klient ví „přesně“, co chtějí, jsou mimo. Váš tým je malý a skládá se z mladých profesionálů, kteří pravděpodobně dobře reagují na radikální model řízení projektů. Jaké jsou vaše možnosti?

Pravděpodobně řeknete, Agilní projektový management, samozřejmě! Ale kterou metodiku byste chtěli použít? Existuje několik možností: pro jednu je zde nesmírně populární Scrum: to zahrnuje vytvoření krátkých „sprintu“ založených na zákaznických nevyřízených úlohách. A pak je tu Kanban, který pracuje na optimalizaci práce. K dispozici je také extrémní programování, často zkrácené na XP, které se zaměřuje na zesílení pozitivních aspektů tradičních programovacích modelů, takže pracují na svůj maximální potenciál.

Extreme Programming je velmi populární (i když ne tak populární jako Scrum) metodologie zaměřená na splnění měnících se požadavků klienta. První projekt Extreme Programming zahájil v březnu 1996 Kent Beck v Chrysleru. Ve své knize z roku 1999, Extreme Programming Explained: Embrace Change, popsal aspekty vývoje softwaru.

Kent Beck byl také průkopníkem vývoje založeného na testech, který dal radarové testování v případových studiích jako zlepšení oproti tomu, jak se věci dělaly: psaní řádků a řádků kódu a následné testování. Byl také jedním z původních signatářů Agilního manifestu, který pomáhal utvářet manifest, aby změnil způsob psaní extrémního programovacího softwaru.

Pět hodnot extrémního programování založené na vysvětleném jsou:

Sdělení

Extrémní programování nezávisí na rozsáhlé dokumentaci. Extrémní programovací dokumentace se ve skutečnosti navrhuje pouze v případě potřeby. Metodika se tedy silně opírá o komunikaci mezi členy týmu a také s uživateli.

Jednoduchost

Toto je jádro Extreme Programming. Metodika upřednostňuje jednoduché návrhy, nemyslet příliš dopředu do budoucnosti, ale zaměřit se na požadavky dneška, zatímco program sám o sobě dostatečně robustní, aby přidal požadavky, které budoucnost vyvolá.

Zpětná vazba

Tato nezbytná smyčka pohybu tam a zpět rozlišuje agilní systémy obecně a zejména extrémní programování od jiných metodik řízení softwarového projektu. Neustálá zpětná vazba může fungovat různými způsoby, ale všichni pracují na tom, aby byl systém silnější a spolehlivější.

Zpětná vazba může mít různé příchutě:

  • Od samotného programu: Kód je důkladně testován v průběhu celého vývojového cyklu projektu, takže vývojáři mohou provádět změny.
  • Od klienta: Jedná se o nezbytnou součást většiny agilních systémů. Klienti píšou akceptační testy, na nichž je vývoj založen, a to tvoří páteř vývojového procesu. Všechny iterace jsou také doručovány klientovi za účelem pravidelné zpětné vazby.
  • Z týmu: Jakmile bude vytvořen nový případ / příběh o použití, tým se okamžitě vrátí s odhadem nákladů a odhadem časové osy, čímž se zpevní požadavky, jakmile vzniknou. V extrémním programování nikdo „nevlastní“ žádný kód, a proto je v extrémních programovacích týmech podporována zpětná vazba na kód druhého.

Odvaha

To se může zdát jako zvláštní hodnota v extrémním programování pro vývoj softwaru, vhodnější pro něco jako armáda nebo mariňáci! Přemýšlejte však o tom: Softwarové projekty se již dlouho zabývaly tradičními extrémními metodami programování řízení; bezpečné v pohodlí rozsáhlé dokumentace a hierarchie, která neumožňuje inovace. Tato hodnota je příkladem jádra extrémního programování: buďte připraveni skočit, bez padáku, pokud k tomu dojde! Podívejte se na tento odlišný styl řízení projektů a buďte připraveni být zodpovědní, vzdát se hierarchie a být zodpovědní a pracovat, aniž byste věděli všechno na začátku.

Úcta

Úcta, pátá hodnota, byla přidána později a znamená úctu k ostatním a já. Znamená to také respektování psaného kódu a očekávání a potřeby klienta. Tato hodnota je také základem komunikace mezi různými zúčastněnými stranami.

Činnosti extrémního programovacího projektu

Extrémní programování rozlišuje čtyři jednoduché činnosti projektu. Oni jsou:

  • Kódování : Extrémní programování to považuje za nejdůležitější aktivitu. "Bez kódu neexistuje nic, " říká Kent Beck, zakladatel Extreme Programming.
  • Testování : Kód je jen to, pokud není testováno. Extrémní programování je posedlé testováním, používá testy jednotek k potvrzení, že kód funguje, a akceptační testy generované klienty k potvrzení, že kód testuje to, co je třeba testovat.
  • Poslech: Poslech, jehož příkladem je základní hodnota komunikace, je činnost, která vyžaduje, aby vývojáři nejen slyšeli klienty, ale aby skutečně poslouchali, co chtějí. Vývoj a podnikání jsou dvě různé věci a vývojáři často nechápou obchodní případ konkrétního rozhodnutí. Základem „naslouchací“ činnosti jsou potřeby zákazníka a vývojářské potřeby.
  • Projektování : Možná vás překvapí, že v projektu vývoje softwaru je na konci projektová činnost, často tak důležitá a primární. Důvodem je, že program Extreme Programming záměrně chce dostat lidi z myšlenky „navrhovat a rozvíjet“, kterou tento průmysl živil po mnoho let. To neomezuje důležitost projektování. Spíše dobrý a minimální design je jedním z charakteristických znaků projektu.

Z hodnot a aktivit vyplynulo 12 principů extrémního programování, jak bylo navrženo jeho zakladatelem, ve své knize Vysvětlené extrémní programování.

  • Plánovací hra
  • Párové programování
  • Test řízený vývoj
  • Celý tým
  • Nepřetržitá integrace
  • Vylepšení designu
  • Malá vydání
  • Normy kódování
  • Vlastnictví kolektivního kódu
  • Jednoduchý design
  • Systémová metafora
  • Udržitelné tempo

Některé z těchto extrémních programovacích postupů, všechny mapované podle osvědčených postupů softwarového inženýrství, se liší od obecných metodik Agile. Některé postupy extrémního programování jsou vysvětleny níže:

  1. Plánovací hra

Toto je plánovací část projektu, označovaná jako „plánovací hra“. Zahrnuje plánování další iterace a uvolnění po konzultaci s uživatelem / klientem, jakož i interní plánování týmů, pokud jde o úkoly, na nichž budou pracovat.

  1. Párové programování

To zahrnuje dva lidi, kteří pracují na kusu kódu. Jedna osoba, nazývaná klávesnice, zadává kód, zatímco druhá, nazývá monitor, dohlíží na kód, komentuje jej a vylepšuje, jak může vzniknout potřeba. Oba lidé si často vyměňují své role. Ukázalo se, že to výrazně zlepšuje účinnost kódu. To nemusí být vhodné pro všechny scénáře vývoje, a to je něco, co je třeba zvážit před registrací do Extreme Programming.

  1. Testem řízený vývoj

Veškerý psaný kód je přezkoumáván po jednotkách, tj. Každý kus kódu, který může něco udělat, je nejprve testován. Extrémní programování klade velký důraz na testování. To pomáhá potvrdit, že kód funguje, a tak jej lze poté zvážit pro zahrnutí do samotného projektu extrémního programování. Je to analogické jednotkovým testům ve škole: malé testované informace, aby učitel / student mohl provést korekci kurzu a během ročních zkoušek se nehýbal!

  1. Vylepšení designu (Refactoring)

Projekty XP, na základě své funkce jednoduchosti, si kladou za cíl neustále zlepšovat psaný kód. To znamená, že celý kód (a někdy i databáze) je vždy vylepšen. Refaktoring nepřidává žádné funkce; pouze vylepšuje existující kód. Zpřísní a zřetelnější. Je to podobné úpravě textu, jeho leštění a vylepšování.

  1. Jednoduchý design

V extrémním programování nejsou funkce přidávány, dokud nejsou výslovně vyžadovány. I když je kód, na kterém se pracuje, v současné době velmi podobný tomu, co by se mohlo v budoucnu vyžadovat, nebude převzat, pokud nebude dohodnut jako uživatelský příběh.

  1. Systémová metafora

To zahrnuje standardizaci všech pojmenovacích konvencí, aby bylo možné snadno dešifrovat její účel a funkci. Například operace nebo mohou pomoci programátorům porozumět jejich funkčnosti. To by mělo být provedeno v celém projektu extrémního programování, aby bylo pro každého snadné podívat se na kód a případně jej upravit nebo vylepšit.

Role v rámci extrémního programovacího projektu:

Podobně jako Scrum, Extreme Programming má v každém projektu několik určených rolí. Nyní nemusí být role vždy vykonávány odlišnými lidmi a člověk může převzít více než jednu roli.

Role extrémního programování jsou:

  • Zákazník : Samovysvětlující. Důvod projektu. Rozhoduje, co projekt musí udělat. Poskytuje uživatelské příběhy.
  • Programátor : Toto je osoba, která:
    • Vezme příběhy, které zákazník přijde
    • Vytváří programovací úkoly z příběhů
    • Implementuje uživatelské příběhy
    • Testuje kód podle jednotky
  • Trenér : Trenér obecně zajišťuje, že projekt je na trati, a v případě potřeby také skočí na pomoc.
  • Tracker : Tracker provádí specifické dotazy programátorům v nastaveném intervalu. Typicky chodí kontrolovat pokrok programátorů a poskytuje pomoc tam, kde je to třeba, několika způsoby: vyhýbat rukávy a pomáhat přímo s kódem, informovat trenéra nebo podle potřeby uspořádat schůzku se zákazníkem.
  • Tester : Spouští funkční testy. Tester nespouští testy jednotek, které jsou spouštěny samotnými programátory.
  • Doomsayer: Toto, jak název napovídá, se podobá Black Hat v systému skupinového myšlení Edwarda De Bono. Kdokoli by mohl být Doomsayer, který obvykle označuje potenciální problémy a pomáhá udržovat potíže ve správné perspektivě.
  • Manažer : Manažer v projektu Extreme Programming je spíš jako plánovač, zajišťuje, aby se schůzky konaly podle plánu a aby rozhodnutí přijatá během schůzek byla předávána příslušné osobě, častěji než ne, Trackeru. Manažer však lidem neříká, co dělat a kdy to dělat. Provádí to zákazník a / nebo samotné uživatelské příběhy.
  • Majitel zlata : Majitel zlata je osoba, která financuje projekt. To by mohl být zákazník, ale ne nutně.

Některé z extrémních programovacích rolí, jak je popsáno výše, lze kombinovat, ale některé zjevně nemohou.

Například zákazník nemůže být také programátorem. Programátor a sledovač podobně nemohou být stejnou osobou.

Extrémní programové role jsou definovány dostatečně jasně, aby nedocházelo k nejasnostem, a vytvářeny pro maximální flexibilitu a efektivitu.

Nevýhody extrémního programování:

Zatímco zastánci Extreme Programming namalovají růžový obrázek, skutečností je, že Extreme Programming, jak název napovídá pravděpodobně, je extrémně obtížné implementovat. Fazety extrémního programování mohou být do projektů začleněny mnohem úspěšně, než zcela osvojení XP.

Některé z negativ extrémního programování jsou:

  • Bylo zjištěno, že extrémní programování je účinnější v menších skupinách . Její účinnost ve větších skupinách je sporná a lepší možností je rozdělení extrémních programovacích týmů tak, aby skupiny byly menší.
  • Jednou z klíčových funkcí extrémního programování, párové programování v mnoha případech nefunguje dobře . Složité kódování může vyžadovat dvě hlavy, ale ne všechny úkoly mohou vyžadovat dvě osoby, přičemž druhá osoba je mrtvá váha. Ve skutečnosti je párové programování, pokud jeden z členů není synchronizován s druhým, jedním z hlavních důvodů, proč v mnoha případech selhává Extreme Programming.
  • Závislost na zákazníkovi až do okamžiku, kdy je ze strany zákazníka navržen zdroj na místě, může být hluboce nervózní. Během vývoje může také vést k rušení, jak skutečnému, tak i imaginárnímu.
  • Soustředění programu Extreme Programming na jednoduchost může velmi obtížně přispět k současnému projektu, což znamená vyšší rozpočet i pro jednoduché změny, které již nezůstávají jednoduché.
  • Plochá hierarchická struktura znamená, že tým by měl být vždy zaměřen a v případě, že manažer nemá na ohradě divergentní typy lidí, tým Extreme Programming je zcela závislý na emoční zralosti všech členů týmu, což je faktor, který není vždy spolehlivý .

I s těmito faktory zůstává program Extreme Programming výkonným nástrojem, který je třeba použít pro správný projekt, přičemž společnosti po přijetí procesu extrémního programování vykazují mnohonásobný nárůst své účinnosti. Vývojový systém na rozdíl od Scrumu, který je spíš systémově řízeným systémem, Extreme Programming, nebo alespoň jeho části, může vést k revoluci ve způsobu, jakým vyvíjíme extrémní programovací software.

Kategorie: