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:
-
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.
-
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.
-
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!
-
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.
-
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.
-
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.