Članki

Kaj je ekstremno programiranje (XP)?, na katerih vrednotah, načelih in praksah temelji

S programiranjem ste seznanjeni, vendar je Extreme Programming (na kratko XP) za vas še vedno skrivnost.

Naj vas ime ne odvrne, tvegate, da boste izgubili koristne informacije.

V tem članku bomo opisali vse, kar morate vedeti o ekstremnem programiranju, da ga boste lahko uporabili sebi v prid.

Kaj je ekstremno programiranje (XP)?

Ekstremno programiranje je metodologija razvoja programske opreme, ki je del tega, kar imenujemo agilne metodologije. XP temelji na vrednotah, načelih in praksah, njegov cilj pa je omogočiti malim in srednje velikim ekipam izdelavo visokokakovostne programske opreme in prilagajanje nenehno spreminjajočim se in razvijajočim se zahtevam.

Kar razlikuje XP od drugih agilnih metodologij, je to, da XP poudarja tehnične vidike razvoja programske opreme. Ekstremno programiranje je natančno o tem, kako inženirji delajo, saj sledenje inženirskim praksam ekipam omogoča zagotavljanje visokokakovostne kode s trajnostnim tempom.

Ekstremno programiranje je, na kratko, dobra praksa, pripeljana do skrajnosti. Ker je programiranje v paru dobro, ga počnimo ves čas. Ker je predhodno testiranje dobro, testiramo še preden je produkcijska koda sploh napisana.

Kako deluje ekstremno programiranje (XP)?

XP, za razliko od drugih metodologij, temelji na vrednotah in načelih, ki so pomembna in relevantna v smislu inženirskih praks.

Vrednote zagotavljajo namen ekipam. Delujejo kot "zvezda severnica", ki vodi vaše odločitve na visoki ravni. Vendar so vrednosti abstraktne in preveč mehke za posebne smernice. Na primer: Če rečete, da cenite komunikacijo, lahko to vodi do številnih različnih rezultatov.

Prakse so v nekem smislu nasprotje vrednot. So konkretni in prizemljeni, defidoločanje posebnosti, kaj storiti. Prakse pomagajo ekipam, da postanejo odgovorne za vrednote. Na primer, praksa informacijskih delovnih prostorov spodbuja pregledno in preprosto komunikacijo.

Načela so smernice, specifične za področje, ki premostijo vrzel med praksami in vrednotami.

Vrednote ekstremnega programiranja XP

Vrednote XP: komunikativnost, preprostost, povratna informacija, pogum in spoštovanje. Oglejmo si vsakega od njih podrobneje.

Vrednote in načela ekstremnega programiranja

priprava BlogInnovazione.to podobe alexsoft.com

komunikacija: Pomanjkanje komunikacije preprečuje pretok znanja znotraj ekipe. Pogosto, ko pride do težave, nekdo že ve, kako jo odpraviti. Toda pomanjkanje komunikacije jim preprečuje, da bi spoznali problem ali prispevali k njegovi rešitvi. Tako se problem na koncu reši dvakrat in nastanejo odpadki.

preprostost: Preprostost pravi, da si vedno prizadevate narediti najpreprostejšo stvar, ki deluje. Pogosto je napačno razumljena in jemljena kot najpreprostejša stvar, pika, pri čemer se ne upošteva dela, "to deluje".

Pomembno je tudi vedeti, da je preprostost zelo kontekstualna. Kar je za eno ekipo preprosto, je za drugo zapleteno in je v celoti odvisno od sposobnosti, izkušenj in znanja posamezne ekipe.

Povratne informacije: Povratne informacije v bolj tradicionalnih, kaskadnih metodologijah razvoja programske opreme so pogosto »premalo, prepozne«.

XP pa sprejema spremembe in ekipe XP si prizadevajo za pravočasne in stalne povratne informacije. Če je potreben popravek tečaja, želijo XPers vedeti čim prej.

Cikel ekstremnega programiranja

priprava BlogInnovazione.to podobe alexsoft.com

Povratne informacije so v različnih oblikah in velikostih. Ko partnersko programirate, so komentarji vaših sodelavcev pomembna povratna informacija. Enako velja za mnenja drugih članov ekipe o ideji, vključno s stranko, ki je v idealnem primeru član ekipe.

Testi so še en vir dragocenih povratnih informacij, ki presegajo rezultate testov. Ne glede na to, ali je pisanje testov enostavno ali težko, takšne so tudi povratne informacije. Če imate težave pri pisanju testov, je vaš projekt verjetno preveč zapleten. Poslušajte povratne informacije in poenostavite svoj dizajn.

Nekaj, kar se sliši kot odlična ideja, v praksi morda ne bo delovalo tako dobro. Zato je končana koda tudi vir povratnih informacij, tako kot distribuirani izdelek.

Na koncu ne pozabite, da je povratnih informacij preveč. Če ekipa ustvari več povratnih informacij, kot jih zmore, bi pomembne povratne informacije lahko padle z radarja. Zato je nujno, da upočasnite in ugotovite, kaj povzroča presežne povratne informacije, in to odpravite.

Pogum: Kent Beck defipogum se pojavi kot »učinkovito delovanje ob strahu«. Kot programski inženir se morate česa bati in zato imate veliko priložnosti, da pokažete pogum.

Za resnico je potreben pogum, še posebej za tisto neprijetno, kot so poštene ocene. Dajanje in prejemanje povratnih informacij zahteva tudi pogum. In potreben je pogum, da se izognemo zmoti o nepovratnih stroških in zavržemo neuspešno rešitev, ki je prejela znatne naložbe.

Spoštovanje: Temeljna predpostavka XP je, da je vsakomur mar za njegovo delo. Nobena tehnična odličnost ne more rešiti projekta, če ni skrbi in spoštovanja.

Vsak človek je vreden dostojanstva in spoštovanja, kar seveda vključuje ljudi, ki sodelujejo pri projektu razvoja programske opreme. Ko se vi in ​​člani vaše ekipe spoštujete in skrbite drug za drugega, stranko, projekt in njegove bodoče uporabnike, imajo vsi koristi

Načela ekstremnega programiranja XP

Načela zagotavljajo bolj specifične smernice kot vrednote. So smernice, ki osvetljujejo vrednote in jih naredijo bolj eksplicitne in manj dvoumne.

priprava BlogInnovazione.to podobe alexsoft.com

Na primer, samo na podlagi vrednosti poguma bi lahko sklepali, da je priporočljivo takoj narediti veliko spremembo v svojem urniku. Vendar pa nam načelo Baby Steps pove, da so velike spremembe tvegane. Zato raje raje majhne.

Človečnost: Ljudje ustvarjajo programsko opremo za ljudi, kar je pogosto spregledano dejstvo. Toda upoštevanje osnovnih človeških potreb, prednosti in slabosti ustvarja izdelke, ki jih ljudje želijo uporabljati. In delovno okolje, ki ti ponuja priložnost za izpolnitev in rast, občutek pripadnosti in osnovne varnosti, je prostor, kjer lažje upoštevaš potrebe drugih.

gospodarstvo: V XP so ekipe vedno pozorne na gospodarsko realnost razvoja programske opreme, nenehno ocenjujejo gospodarska tveganja in potrebe projekta.

Uporabniške zgodbe bi na primer implementirali na podlagi njihove poslovne vrednosti in ne glede na tehnične pomisleke.

Vzajemna korist: Po XP se izogibate rešitvam, ki koristijo eni strani na račun druge. Na primer, razširjene specifikacije lahko pomagajo komu drugemu razumeti, vendar vas odvrnejo od njihove implementacije in zamujajo pri vaših uporabnikih.

Vzajemno koristna rešitev je uporaba avtomatiziranih sprejemnih testov. Pridobite takojšnje povratne informacije o svoji implementaciji, vaši kolegi dobijo natančne specifikacije v kodi, uporabniki pa prvi dobijo svoje funkcije. Poleg tega boste vsi imeli varnostno mrežo pred regresijo.

Korist (vzajemna korist): Če dana rešitev deluje na eni ravni, lahko deluje tudi na višji ali nižji ravni. Na primer, pridobivanje zgodnjih in stalnih povratnih informacij je v XP v različni meri ogroženo.

  • na ravni razvijalca dobijo programerji povratne informacije o svojem delu s pristopom najprej preizkusi;
  • na ravni ekipe cevovod za stalno integracijo integrira, gradi in testira kodo večkrat na dan;
  • Organizacijsko gledano tedenski in četrtletni cikli ekipam omogočajo, da dobijo povratne informacije in po potrebi izboljšajo svoje delo.

Izboljšava: Po načelu izboljšav ekipe ne ciljajo na popolnost v začetni implementaciji, ampak na implementacijo, ki je dovolj dobra, nato pa se nenehno učijo in izboljšujejo s povratnimi informacijami resničnih uporabnikov.

Raznolikost: Vi in vaši sodelavci imate koristi od raznolikosti perspektiv, veščin in odnosov. Takšna raznolikost pogosto vodi v konflikte, a nič hudega.

Konflikti in nesoglasja so priložnosti za nastanek boljših idej, ko se vsi držijo vrednot poguma in spoštovanja. Pogum za izražanje nasprotujočih si stališč, spoštovanje pri izražanju na civiliziran in empatičen način. In vse to je učinkovita komunikacijska vaja.

Odsev: Odlične ekipe razmišljajo o svojem delu in analizirajo, kako biti boljše. XP ponuja veliko možnosti za to. Ne le v svojih tedenskih in četrtletnih ciklih, ampak v vsaki praksi, ki jo spodbuja.

Poleg logične analize je pomembno upoštevati občutke. Črevesje vas lahko obvesti, preden začnete razmišljati o čemer koli. In tako se lahko pogovarja z netehničnimi ljudmi, lahko postavljajo vprašanja, ki odpirajo povsem nove možnosti.

Pretok: Tradicionalne metodologije razvoja programske opreme imajo ločene faze, ki trajajo dolgo in imajo malo možnosti za povratne informacije in popravke poteka. Namesto tega se razvoj programske opreme v XP odvija v dejavnostih, ki potekajo neprekinjeno, v doslednem "toku" vrednosti.

Priložnost: Težave so pri razvoju programske opreme neizogibne. Vendar pa je vsak problem priložnost za izboljšanje. Naučite se nanje gledati tako in veliko bolj verjetno je, da boste prišli do ustvarjalnih in ciljno usmerjenih rešitev, ki bodo tudi preprečile, da bi se ponovile.

Redundanca: Načelo redundance pravi, da če je določena težava kritična, morate uporabiti številne taktike, da se z njo zoperstavite.

Sprejmite pomanjkljivosti. Ni enotne taktike, ki bi preprečila, da bi vse napake ušle iz proizvodnje.

Torej je rešitev XP-ja zlaganje nabora meril kakovosti. Programiranje v parih, testiranje, kontinuirana integracija. Vsaka ena sama obrambna linija, skupaj skoraj neprebojen zid.

Neuspeh: neuspeh ni odpadek, ko se pretvori v znanje. Ukrepati in se hitro naučiti, kaj ne deluje, je veliko bolj produktivno kot nedejavnost, ki je posledica neodločnosti pri izbiri med številnimi možnostmi.

Kakovost: Ljudje pogosto mislijo, da obstaja dilema med kakovostjo in hitrostjo.

Ravno obratno je: prizadevanje za izboljšanje kakovosti je tisto, zaradi česar ste hitrejši.

Glasilo o inovacijah
Ne zamudite najpomembnejših novic o inovacijah. Prijavite se, če jih želite prejemati po e-pošti.

Na primer, preoblikovanje – spreminjanje strukture kode brez spreminjanja njenega vedenja – je praksa, ki olajša razumevanje in spreminjanje kode. Posledično je manj verjetno, da boste povzročili napake v kodi, kar vam omogoča, da najprej zagotovite večjo vrednost, tako da vam ni treba popravljati napak.

Majhni koraki: Velike spremembe so tvegane. XP zmanjša to tveganje s spremembami v majhnih korakih na vseh ravneh.

Programerji pišejo kodo v majhnih korakih z uporabo testno usmerjenega razvoja. Svojo kodo integrirajo v glavno linijo večkrat na dan, namesto vsakih nekaj tednov ali celo mesecev. Sam projekt poteka v kratkih ciklih in ne v dolgotrajnih fazah.

Odgovornost sprejeta: V XP je treba odgovornost sprejeti, nikoli dodeliti.

Odgovornost mora priti s pooblastilom za odločanje o tem, za kaj ste odgovorni. Velja tudi obratno. Nočete, da ljudje sprejemajo odločitve, če jim ni treba živeti z njihovimi posledicami.

Podobnosti in razlike s tradicionalnimi in neagilnimi metodami

Ekstremno programiranje, ki je agilna metodologija, je mogoče sprejeti in ga začeti sprejemati brez sledenja togim načrtom. To je iterativna zasnova in ne velik začetni projekt.

XP se bistveno razlikuje od tradicionalnih metodologij, tj. kaskadno, izogibanje dolgotrajnim fazam.

  • Namesto faze načrtovanja v XP načrtujete na začetku vsakega razvojnega cikla, ki običajno traja le en teden.
  • Namesto preizkušanja epizod preizkusite svojo aplikacijo čim prej: to je, preden je dejanska koda implementirana.
  • Namesto da bi v dolgih fazah izvajanja ločeno uvajali funkcije in se nato trudili združiti svoje prispevke z glavno linijo, delajte v majhnih kosih in jih integrirajte čim pogosteje.

Kako se XP razlikuje od drugih agilnih metodologij?

Ekstremno programiranje ima po svoji naravi veliko skupnega z drugimi agilnimi metodologijami, vendar je med njimi tudi edinstveno.

Večina drugih razvojnih metodologij ne pove veliko, če sploh kaj, o tem, kako opraviti delo. Po drugi strani pa je XP zelo samozavesten, ko gre za to, in daje velik poudarek praksam programskega inženiringa.

Ekstremno programiranje proti Scrumu

Scrum je ogrodje, ki ekipam pomaga razvijati kompleksne projekte na prilagodljiv način. Scrum ne narekuje, kako razvijalci opravljajo svoje delo. XP, kot že omenjeno, daje velik poudarek dobrim praksam programiranja.

Scrum okvir

priprava BlogInnovazione.en Slika mrežne rešitve

Poleg tega gre pri XP očitno za programiranje. Po drugi strani pa je Scrum mogoče uporabiti za kateri koli projekt, ki ima koristi od iterativnega pristopa.

XP sprejema spremembe svojih komponent. Ekipe so opolnomočene in celo spodbujene, da spremenijo prakse glede na njihove specifične potrebe. Scrum Guide je na drugi strani neomajen, da "Čeprav je mogoče implementirati le dele Scruma, rezultat ni Scrum."

Poleg tega je Scrum okvir, ki ga je treba dopolniti z metodologijami in praksami, da lahko opravimo delo.

To pomeni, da je delo v ekstremnem programiranju in Scrum zelo priporočljivo.

Vloge in odgovornosti

Po mnenju Kenta Becka zrela ekipa XP ne bi smela dodeljevati togih vlog, vendar se zavedati, da so vloge lahko koristne za mlade ekipe, dokler ne začnejo upočasnjevati ali oteževati sodelovanja.

Oglejmo si nekaj ključnih vlog:

  • Stranka: V idealnem primeru bi morala biti stranka na mestu, da odgovori na vprašanja, določi prednostne zahteve uporabnikov ali pomaga pri testiranju sprejemljivosti. Če to ni mogoče, lahko to vlogo prevzame predstavnik stranke.
  • Programerji: V skupini XP programerji ocenijo napor, potreben za dokončanje nalog, pisanje avtomatiziranih testov in implementacijo zgodb.
  • Trener: trenerja ni potrebno imeti in na cilj je mogoče priti tudi brez njega. Vendar pa lahko nekdo z izkušnjami XP, ki trenira ekipo, zagotovi, da člani ekipe sledijo praksam, jih spremenijo v navade in se ne vrnejo na stara pota.
  • Tracker- Sledilnik spremlja meritve napredka ekipe in se pogovarja z vsakim članom ekipe, da prepozna težave in poišče rešitve. Sledilnik izračuna meritve, ki kažejo, kako dobro dela ekipa, kot so grafi hitrosti in izgorevanja, ali pa ekipa uporablja digitalni scrum ali kanban tablo, ki jih samodejno izračuna.

Metode in tehnike

To so prakse, sprejete v XP. Razdeljeni so v tri glavne skupine: programsko inženirstvo, delovno mesto in vodenje projektov.

Programsko inženirstvo

Programiranje v paru: V XP pišete kodo v parih, ki sedijo na računalniku. Vi in vaš par se pogovarjata med analizo, implementacijo in preizkušanjem funkcije, na kateri delate. Programiranje v parih je še posebej dobro pri ustvarjanju kode z manj napakami, hkrati pa je še vedno zanimivo, zabavno in utrujajoče.

Desetminutna omejitev: Zahtevano Omogoča 10 minut za izdelavo celotnega projekta, vključno z izvajanjem vseh avtomatiziranih testov, v največ desetih minutah. Ta omejitev je namenjena poenostavljenemu in učinkovitemu testiranju.

Testi pred programiranjem: implementirajte funkcije z uporabo pristopa najprej preizkusi, imenovanega tudi testno usmerjen razvoj (TDD). TDD je sestavljen iz razvoja z uporabo preprostega iterativnega postopka:

  • pisanje kode po neuspelem testu;
  • nato napišite produkcijsko kodo, da opravite test;
  • po potrebi predelajte svojo produkcijsko kodo, da bo čistejša in razumljivejša.

TDD prinaša številne prednosti.

Prvič, povratne informacije. Če je test težko napisati, je zasnova, ki jo iščete ali ste jo podedovali, verjetno preveč zapletena in jo morate poenostaviti.

Drugič, TDD programerjem omogoča, da zaupajo kodi, ki jo pišejo, in ustvarja prijeten ritem zank, kjer je naslednji korak vedno jasen.

Nenazadnje uporaba TDD od začetka zagotavlja 100-odstotno pokritost kode. Testna zbirka nato resnično postane varnostna mreža za prihodnje spremembe, ki spodbuja preoblikovanje kode in ustvarja dober krog kakovosti.

Postopno oblikovanje: Praksa inkrementalnega oblikovanja pomeni, da morate vsak dan vlagati v vašo zasnovo aplikacije, iskati priložnosti za odstranitev podvajanja in majhne izboljšave, da dosežete najboljšo možno zasnovo za to, kar vaš sistem danes potrebuje.

Nenehna integracija: V XP svoje delo večkrat na dan integrirate v glavno skupno repozitorij, kar sproži samodejno gradnjo celotnega sistema. Čim zgodnejše in čim pogostejše povezovanje dramatično zmanjša stroške integracije, saj zmanjša verjetnost pojava spajanj in logičnih konfliktov. Izpostavlja tudi vprašanja okolja in zasvojenosti.

Skupna koda (kolektivno lastništvo): XP spodbuja skupno kodo ali kolektivno lastništvo: vsak razvijalec je odgovoren za vso kodo. Spodbuja izmenjavo informacij, zmanjšuje faktor team busa in povečuje splošno kakovost vsakega modula, če upoštevamo načelo raznolikosti.

Enotna kodna baza: Enotna kodna baza je znana tudi kot »trunk-based development«. To pomeni, da obstaja samo en vir resnice. Torej namesto dolgotrajnega razvoja v izolaciji, združite svoje prispevke v en tok zgodaj in pogosto. Zastavice funkcij pomagajo omejiti vašo uporabo funkcij, dokler niso dokončane.

Dnevna distribucija: uvedba v proizvodnji vsaj enkrat na dan je logična posledica nenehne integracije:. Pravzaprav gredo danes številne ekipe še dlje in izvajajo neprekinjeno implementacijo. To pomeni, da je aplikacija nameščena v produkcijo, kadar koli se nekdo pridruži glavni liniji.

Koda in testi: Ta praksa pomeni, da je izvorna koda, vključno s testi, edini stalni artefakt projekta programske opreme. Ukvarjanje z ustvarjanjem drugih vrst artefaktov, vključno z dokumentacijo, je pogosto potratno, ker ne ustvari prave vrednosti za stranko.

Če potrebujete druge artefakte ali dokumente, se potrudite, da jih ustvarite iz proizvodne kode in testov.

Analiza temeljnega vzroka: Kadar gre napaka v proizvodnjo, je ne popravite le. Poskrbite, da boste ugotovili, kaj je sploh povzročilo, zakaj vam in vašim soigralcem ni uspelo preprečiti zdrsa. Nato poskrbite, da se to ne bo ponovilo.

Delovno okolje

Sedite skupaj: V XP ekipe raje sodelujejo v odprtem prostoru. Ta praksa spodbuja komunikacijo in občutek pripadnosti ekipi.

Celotna ekipa: Vsi, ki so potrebni za uspeh projekta, so del ekipe XP. To je zelo kontekstualno – drugače za vsako ekipo – in dinamično, lahko se spremeni znotraj ekipe.

Informacijski delovni prostori: Informacijski delovni prostor uporablja fizični prostor ekipe za prikaz informacij, ki vsakomur omogočajo, da na prvi pogled pozna napredek projekta. Kako se to naredi, je lahko različno, od fizičnih zapiskov in grafov do posnetkov zaslona, ​​ki prikazujejo table Kanban in nadzorne plošče iz programske opreme za upravljanje projektov.

Napeto delo: V XP-ju delate le, dokler lahko opravljate energijsko delo. Delovni čas mora biti omejen na največ 40 ur na teden.

Vodenje projektov

Analisi- Napišite uporabniške zahteve v obliki, imenovani uporabniška analiza. Uporabniška analiza ima kratko, opisno ime in tudi kratek opis, kaj je treba implementirati.

Slack: Pri načrtovanju cikla dodajte manjše naloge, ki jih ekipa lahko opusti, če se pojavi potreba. Vedno je mogoče dodati več zgodb, če ekipa daje preveč.

Cikli (mesečni in tedenski): Razvoj v XP poteka v dveh glavnih ciklih: tedenskem ciklu in mesečnem ciklu.

Sestanki, cikli, načrtovane objave: Razvoj v XP deluje v dveh glavnih ciklih: tedenskem ciklu in četrtletnem ciklu. Sprva je Kent Beck priporočal dvotedenski cikel, vendar je to spremenil v drugi izdaji svoje knjige.

Tedenski ciklus: tedenski cikel je "utrip" projekta XP. Cikel se začne s sestankom, na katerem naročnik izbere, katere zgodbe želi ustvarjati med tednom. Poleg tega skupina pregleda svoje delo, vključno z napredkom prejšnjega tedna, in razmišlja o načinih za izboljšanje svojega procesa.

Mesečni ciklus: Ekipa vsak mesec razmišlja in identificira priložnosti za izboljšave v svojem procesu. Stranka izbere eno ali več tem za ta mesec, skupaj z analizami v teh temah.

Kako začeti delati z ekstremnim programiranjem?
Tehničnih veščin in XP navad se je težko naučiti. Nekatere prakse se programerjem, ki jih niso vajeni, morda zdijo tuje.

Ercole Palmeri

Glasilo o inovacijah
Ne zamudite najpomembnejših novic o inovacijah. Prijavite se, če jih želite prejemati po e-pošti.

Nedavni članki

Briljantna ideja: Bandalux predstavlja Airpure®, zaveso, ki čisti zrak

Rezultat stalnih tehnoloških inovacij in zavezanosti okolju in blaginji ljudi. Bandalux predstavlja Airpure®, šotor…

April 12 2024

Načela, prednosti in slabosti oblikovalskih vzorcev proti SOLID-u

Načrtovalni vzorci so specifične nizkonivojske rešitve za ponavljajoče se težave pri načrtovanju programske opreme. Oblikovalski vzorci so…

April 11 2024

Magica, iOS aplikacija, ki voznikom poenostavi življenje pri upravljanju vozila

Magica je aplikacija za iPhone, ki omogoča preprosto in učinkovito upravljanje vozil ter voznikom pomaga prihraniti in…

April 11 2024

Excelovi grafikoni, kaj so, kako ustvariti grafikon in kako izbrati optimalen grafikon

Excelov grafikon je vizualni element, ki predstavlja podatke v Excelovem delovnem listu.…

April 9 2024