Képforrás: pixabay.com

Extrém programozás

Képzelje el ezt: Az új termék szoftverfejlesztési projektjét, amely a piacra jutás elõnyein alapszik, éppen felfedezte a vállalat radarján. Kiemelkednek a szélsőséges programozás hagyományos módszerei, amelyekben az ügyfél pontosan tudja, mit akar. A csapata kicsi, és fiatal szakemberekből áll, akik valószínűleg jól reagálnak egy radikális projektmenedzsment modellre. Milyen lehetőségei vannak?

Valószínűleg azt fogod mondani: Agilis Projektmenedzsment, természetesen! De melyik módszert szeretné használni? Számos lehetőség létezik: az egyikhez tartozik a rendkívül népszerű Scrum: ehhez tartozik rövid „sprint” létrehozása az ügyfelek feladatmaradása alapján. Aztán ott van a Kanban, amely a munka folyamatának optimalizálásán dolgozik. Van még Extreme Programming, gyakran rövidítve XP-re, amely a hagyományos programozási modellek pozitív aspektusainak erősítésére összpontosít, hogy a lehető legnagyobb mértékben működjenek.

Az Extreme Programming rendkívül népszerű (bár nem olyan népszerű, mint a Scrum) módszertan, amely a változó ügyféligények kielégítésére koncentrál. Az első extrém programozási projektet 1996 márciusában kezdte Kent Beck a Chryslernél. 1999-ben, az Extreme Programming Explained: Embrace Change című könyvében részletezte a szoftverfejlesztés szempontjait.

Kent Beck egyúttal a tesztvezérelt fejlesztés úttörője is volt, amely az esettanulmányok tesztelését a radaron javította a dolgok akkori dolgának javításában: sorok és kódsorok írása, majd tesztelése. Emellett az Agile Manifeszt egyik eredeti aláírója volt, segített a manifeszt alakításában megváltoztatni a szélsőséges programozó szoftver írási módját.

Az Extrém programozás öt értéke az Explained alapján vannak:

közlés

Az extrém programozás nem függ a kiterjedt dokumentációtól. Valójában a szélsőséges programozási dokumentációt csak szükség esetén javasolják. Tehát a módszertan nagymértékben támaszkodik a csapattagok és a felhasználók közötti kommunikációra.

Egyszerűség

Ez a szélsőséges programozás központi eleme. A módszertan az egyszerű tervezést támogatja, nem gondolkodva túl messzire a jövőbe, hanem a mai követelményekre összpontosítva, miközben maga a program elég robusztus ahhoz, hogy hozzá tudja adni a jövőben támasztott követelményeket.

Visszacsatolás

Ez az elengedhetetlen oda-vissza lépés megkülönbözteti az agilis rendszereket és különösen az Extreme Programming programokat a többi szoftverprojekt menedzsment módszertantól. A folyamatos visszacsatolás különféle módon működhet, de mindannyian arra törekszenek, hogy a rendszert erősebbé és megbízhatóbbá tegyék.

A visszajelzés különböző ízekkel járhat:

  • Maga a program: A kódot erőteljesen tesztelik a projekt fejlesztési ciklusa alatt, hogy a fejlesztők végrehajthassák a változtatásokat.
  • Az ügyféltől: Ez a legtöbb agilis rendszer nélkülözhetetlen része. Az ügyfelek írják az elfogadási teszteket, amelyeken a fejlesztés alapul, és ez képezi a fejlesztési folyamat gerincét. Minden iterációt megkapunk az ügyféllel is, rendszeres visszacsatolás céljából.
  • A csapat részéről: Miután új felhasználási esetet / történetet készítettek, a csapat azonnal visszatér a költség- és idővonal-becslésekhez, megerősítve a követelményeket, amikor felmerülnek. Az extrém programozás során senki sem „birtokolja” semmilyen kódot, ezért az extrém programozási csoportokban ösztönözni kell a visszajelzést egymás kódjáról.

Bátorság

Ez furcsának tűnhet a szoftverfejlesztés szélsőséges programozásában, jobban megfelelve a Hadseregnek vagy a Tengerészeknek! Gondolj bele azonban: a szoftverprojekteket már régóta elbocsátják a menedzsment hagyományos extrém programozási módszerei; biztonságos az átfogó dokumentáció és a hierarchiában, amely nem teszi lehetővé az innovációt. Ez az érték példázza az extrém programozás lényegét: Légy kész ugrásra ejtőernyő nélkül, ha erről van szó! Nézze meg ezt a különféle típusú projektmenedzsment stílust, és készen áll a felelősségvállalásra, a hierarchiáról való lemondásra, a felelősségvállalásra és a munkára anélkül, hogy mindent tudna volna az elején.

Tisztelet

A tiszteletet, az ötödik értéket később adták hozzá, és mások és az én tiszteletét jelentik. Ez azt is magában foglalja, hogy tiszteletben kell tartani a kódot, és meg kell őrizni az ügyfél elvárásait és igényeit. Ez az érték a különféle érdekelt felek közötti kommunikáció alapját képezi.

Extrém programozási projekt tevékenységei

Az Extreme Programming a projekt négy egyszerű tevékenységét különbözteti meg. Ők:

  • Kódolás : Az Extreme Programming ezt a legfontosabb tevékenységet tartja. "Kód nélkül nincs semmi" - mondja Kent Beck, az Extreme Programming alapítója.
  • Tesztelés : A kód csak erre van szükség, ha nem teszteljük. Az Extreme Programming a tesztelés megszállottja: egységteszteket használ annak megerősítésére, hogy a kód működik, és kliens által generált elfogadási teszteket annak megerősítésére, hogy a kód teszteli azt, amit tesztelni kell.
  • Meghallgatás: A meghallgatás, amelyet a kommunikáció alapvető értéke szemléltet, olyan tevékenység, amely megköveteli a fejlesztõktõl, hogy ne csak meghallgassák az ügyfeleket, hanem tényleg hallgassák meg, amit akarnak. A fejlesztés és az üzleti tevékenység két különféle dolog, és a fejlesztők gyakran nem értik meg egy adott döntés üzleti esetét. A meghallgatás alapját a vásárló és a fejlesztők igényei képezik.
  • Tervezés : Lehet, hogy meglepő, hogy egy szoftverfejlesztési projektben a tervezési tevékenység, amely gyakran annyira fontos és elsődleges, a végére kerül. Ennek oka az, hogy az Extreme Programming szándékosan ki akarja vonni az embereket a „tervezés és fejlesztés” gondolkodásmódból, amelyet az ipar évek óta táplált. Nem korlátozza a tervezés fontosságát. Inkább a jó és minimális dizájn a projekt egyik legfontosabb jellemzője.

Az értékek és a tevékenységek feltárják az extrém programozás 12 alapelvét, amelyet az alapító kidolgozott, az Extreme Programming Explined című könyvében.

  • Tervezési játék
  • Pár programozás
  • Tesztvezérelt fejlesztés
  • Egész csapat
  • Folyamatos integráció
  • Tervezés fejlesztése
  • Kis kiadások
  • Kódolási szabványok
  • Kollektív kódtulajdon
  • Egyszerű kialakítás
  • Rendszer metaforája
  • Fenntartható tempó

A szélsőséges programozási gyakorlatok közül néhány, amelyek mind a szoftverfejlesztés legjobb gyakorlataira vonatkoznak, különböznek az általános Agile módszertantól. Az extrém programozás néhány gyakorlatát az alábbiakban ismertetjük:

  1. Tervezési játék

Ez a projekt tervezési része, amelyet „Tervező játéknak” hívnak. Ez magában foglalja a következő iteráció és kiadás tervezését, a felhasználóval / ügyféllel konzultálva, valamint a csapatok belső tervezését azokkal a feladatokkal kapcsolatban, amelyeken dolgozni fognak.

  1. Pár programozás

Ehhez két ember dolgozik egy kóddarab kidolgozásán. Az egyik, úgynevezett billentyűzet, beírja a kódot, míg a másik, az úgynevezett monitor, felügyeli a kódot, kommentálva és finomítva azt, mivel szükség lehet rá. A két ember gyakran megosztja szerepeit. Bebizonyosodott, hogy ez jelentősen javítja a kód hatékonyságát. Lehet, hogy ez nem felel meg az összes fejlesztési forgatókönyvnek, és ezt figyelembe kell venni, mielőtt regisztrálna az extrém programozásra.

  1. Tesztvezérelt fejlesztés

Az összes megírt kódot egységenként felülvizsgálják, azaz először minden olyan kódot megvizsgálnak, amely képes valamit megtenni. Az extrém programozás nagy hangsúlyt fektet a tesztelésre. Ez segít megerősíteni, hogy a kód működik, és így aztán megfontolhatjuk, hogy magába foglalja-e magát az extrém programozási projektet. Ez hasonló az iskolai egységvizsgákhoz: kicsi információ tesztelve, hogy a tanár / hallgató javítson a kurzuson, és ne essen ki az éves vizsga során!

  1. Tervezésjavítás (Refaktorálás)

Az XP projektek - az egyszerűség jellemzőjük alapján - célja, hogy folyamatosan javítsák az írott kódot. Ez azt jelenti, hogy a teljes kódot (és néha az adatbázist is) mindig javítják. A refaktorálás semmilyen funkciót nem ad hozzá; pusztán javítja a meglévő kódot. Szorosabbá és tisztábbá teszi. Ez hasonlít egy írás szerkesztésére, csiszolására és jobbá tételére.

  1. Egyszerű kialakítás

Az extrém programozás során a funkciók csak addig kerülnek hozzáadásra, amíg azt kifejezetten nem igénylik. Még ha a jelenleg dolgozó kód nagyon hasonló ahhoz is, amelyre a jövőben szükség lehet, akkor csak akkor veszik fel, ha felhasználói történetként állapodnak meg.

  1. Rendszer metaforája

Ez magában foglalja az összes elnevezési konvenció szabványosítását oly módon, hogy célja és funkciója könnyen megfejtendő. Például az vagy a műveletek segítséget nyújthatnak minden programozónak a funkcionalitás megértésében. Ezt a teljes szélsőséges programozási projekt során kell elvégezni, hogy bárki könnyen megnézhesse a kódot, és adott esetben módosítsa vagy javítsa azt.

Szerepek egy extrém programozási projektben:

A Scrumhoz hasonlóan az Extreme Programming-nak is van néhány kijelölt szerepe az egyes projektekben. Most a szerepeket nem mindig kell különálló emberek elvégezni, és egy személy egynél több szerepet is vállalhat.

Az extrém programozói szerepek:

  • Ügyfél : Magától értetődő. A projekt oka. Dönti el, hogy mit kell tennie a projektnek. Ő biztosítja a felhasználói történeteket.
  • Programozó : Ez az a személy, aki:
    • Beszéli azokat a történeteket, amelyekkel az ügyfél áll elő
    • Programozási feladatokat hoz létre történetekből
    • Végrehozza a felhasználói történeteket
    • A kódot egység szerint teszteli
  • Edző : Az edző általában biztosítja, hogy a projekt megfelelő legyen, és szükség esetén beugrik a segítségre.
  • Tracker : A Tracker egy meghatározott időközönként konkrét kérdéseket tesz fel a programozók számára. Általában a programozók előrehaladásának ellenőrzésével jár, ahol többféle módon segítséget nyújt: hüvelyeket felcsavar, és közvetlenül segít a kód megadásában, tudatja az edzőt, vagy szükség szerint megbeszélést létesít az ügyféllel.
  • Teszter : Funkcionális tesztek futtatása. A tesztelő nem végez olyan teszteket, amelyeket a programozók maguk végeznek.
  • Doomsayer: Ez, ahogy a neve is sugallja, hasonlít a fekete kalapra Edward De Bono csoportos gondolkodás rendszerében. Bárki lehet Doomsayer, aki tipikusan megjelöli a lehetséges problémákat, és segít a bajnak a helyes perspektíva tartásában.
  • Menedzser : Az extrém programozási projekt menedzsere inkább egy ütemező, mivel biztosítja, hogy a találkozók a tervek szerint zajlanak, és biztosítja, hogy az ülések során meghozott döntéseket a megfelelő személynek továbbadják, többnyire a Trackernek. A menedzser azonban nem mondja el az embereknek, hogy mit és mikor kell csinálni. Ezt az Ügyfél és / vagy a Felhasználói történetek végzik.
  • Aranytulajdonos : Az aranytulajdonos az a személy, aki finanszírozza a projektet. Lehet, hogy ez az ügyfél, de nem feltétlenül így.

A fent leírt szélsőséges programozói szerepek egy része kombinálható, de mások nyilvánvalóan nem.

Az ügyfél például nem lehet a programozó sem. A programozó és a nyomkövető hasonlóképpen nem lehet sikeresen ugyanaz a személy.

A szélsőséges programozási szerepeket egyértelműen definiálják, hogy ne legyen zavar, és a maximális rugalmasság és hatékonyság érdekében hozzák létre.

Az extrém programozás hátrányai:

Míg az extrém programozás támogatói rózsás képet festenek, az a tény, hogy az extrém programozás, amint a neve valószínűleg sugallja, rendkívül nehéz végrehajtani. Az Extreme Programming szempontjai sokkal sikeresebben beépíthetők a projektekbe, mint az XP teljes telepítése.

Az Extreme Programming néhány negatívja a következő:

  • Az extrém programozás hatékonyabbnak bizonyult kisebb csoportokban . Hatékonysága nagyobb csoportokban megkérdőjelezhető, és jobb megoldás az extrém programozási csoportok felosztása, hogy a csoportok kisebbek legyenek.
  • Az extrém programozás egyik legfontosabb jellemzője, hogy a páros programozás sok esetben nem működik jól . A komplex kódoláshoz két feje szükséges, de nem minden feladathoz szükséges két ember, a második személy holtteste. Valójában a páros programozás, ha az egyik tag nincs szinkronban a másikkal, az egyik fő oka annak, hogy az extrém programozás sok esetben kudarcot vall.
  • Az ügyféltől való függőség, egészen arra a pontig, hogy a helyszíni erőforrást az ügyfél oldaláról javasolja, mélyen idegesítő lehet. Ez a fejlesztés során valódi és képzeletbeli interferenciához is vezethet.
  • Az extrém programozásnak az egyszerűségre való összpontosítása nagyon megnehezítheti a jelenlegi projekthez való hozzáadását, ami magasabb költségvetést jelent még az egyszerű változtatásokhoz is, amelyek már nem maradnak egyszerűek.
  • A lapos hierarchikus felépítés azt jelenti, hogy a csapatnak mindig összpontosítania kell, és ha egy menedzser hiányzik az eltérő típusú emberektől, egy extrém programozó csapat teljes mértékben minden csapattag érzelmi érettségétől függ, ez a tényező nem mindig megbízható .

Ezekkel a tényezőkkel együtt az Extreme Programming továbbra is hatékony eszköz a megfelelő projekthez, miközben a vállalatok hatékonyságának sokrétű növekedését mutatják be a szélsőséges programozási folyamat elfogadása után. A fejlesztők által vezérelt rendszer, szemben a Scrummal, amely inkább egy folyamatvezérelt rendszer, az Extreme Programming, vagy legalábbis annak egy része, forradalomhoz vezethet az extrém programozási szoftver fejlesztésében.