Vir slik: pixabay.com

Ekstremno programiranje

Predstavljajte si: Projekt razvoja programske opreme za nov izdelek, ki temelji na prednosti na trgu, je pravkar opažen na radarju vašega podjetja. Tradicionalne metode ekstremnega programiranja, pri katerih stranka natančno ve, kaj želi, ne obstajajo. Vaša ekipa je majhna in sestavljena iz mladih strokovnjakov, ki se bodo verjetno dobro odzvali na radikalen model upravljanja projektov. Kakšne so vaše možnosti?

Verjetno boste rekli, seveda Agile Project Management! Toda katero metodologijo bi radi uporabili? Obstaja več možnosti: za eno obstaja zelo priljubljen Scrum: ki vključuje ustvarjanje kratkih "šprintov" na podlagi zaostanka opravil s strankami. In potem je tu še Kanban, ki deluje na optimizaciji dela. Obstaja tudi ekstremno programiranje, pogosto skrajšano na XP, ki se osredotoča na izboljšanje pozitivnih vidikov tradicionalnih modelov programiranja, tako da delujejo v največji možni meri.

Extreme Programming je izjemno priljubljena (čeprav ne tako priljubljena kot Scrum) metodologija, osredotočena na izpolnjevanje spreminjajočih se zahtev strank. Prvi projekt Extreme Programming je začel Kent Beck iz Chryslerja marca 1996. V svoji knjigi iz leta 1999, Extreme Programming Explained: Embrace Change, je podrobno predstavil vidike razvoja programske opreme.

Kent Beck je bil tudi pionir testno usmerjenega razvoja, ki je testiranje uporabnih primerov na radarju izboljšal nad tem, kako so bile stvari takrat narejene: pisanje vrstic in vrstic kode ter nato testiranje. Bil je tudi eden od prvotnih podpisnikov Magifesta Agile, ki je pomagal oblikovati manifest, da bi spremenil način pisanja ekstremne programske programske opreme.

Pet vrednosti ekstremnega programiranja, ki temelji na razloženo so:

Komuniciranje

Ekstremno programiranje ni odvisno od obsežne dokumentacije. Pravzaprav je skrajna programska dokumentacija predlagana le, kadar je to potrebno. Tako se metodologija v veliki meri opira na komunikacijo med člani skupine in tudi z uporabniki.

Enostavnost

To je jedro programa Extreme Programming. Metodologija daje prednost preprostim načrtom, ne razmišljajoč preveč v prihodnost, temveč se osredotočajo na današnje zahteve, hkrati pa je sam program dovolj močan, da lahko doda zahteve, ki jih prihodnost postavlja.

Povratne informacije

Ta bistvena zanka vrnitve naprej in nazaj razlikuje Agile sisteme na splošno in še posebej ekstremno programiranje od drugih metodologij za upravljanje projektov programske opreme. Nenehne povratne informacije lahko delujejo na različne načine, vendar si vsi prizadevajo za to, da bo sistem močnejši in zanesljivejši.

Povratne informacije so lahko različnih okusov:

  • Iz samega programa: Koda se močno preizkuša v celotnem razvojnem ciklu projekta, tako da lahko razvijalci izvedejo spremembe.
  • Od naročnika: To je bistveni del večine Agile sistemov. Naročniki napišejo sprejemne teste, na katerih temelji razvoj, in to predstavlja hrbtenico razvojnega procesa. Vse iteracije se tudi dostavijo stranki za občasne povratne informacije.
  • Iz ekipe: Ko je ustvarjen nov primer uporabe / zgodba o uporabi, se ekipa takoj obrne z oceno stroškov in časovnice, s čimer okrepi zahteve, ko se pojavijo. V programu Extreme Programming nihče ne "poseduje" nobene kode, zato se znotraj ekstremnih programskih skupin spodbuja povratne informacije o kodah drugih.

Pogum

To se morda zdi čudno vredno pri ekstremnem programiranju za razvoj programske opreme, bolj primernem za nekaj, kot sta vojska ali marinci! Vendar razmislite: Programske projekte že dolgo zasutijo tradicionalne ekstremne programske metode upravljanja; varno v udobju obsežne dokumentacije in hierarhije, ki ne omogoča inovacij. Ta vrednost predstavlja jedro programa Extreme Programming: Bodite pripravljeni na skok, brez padala, če pride do tega! Oglejte si ta drugačen slog vodenja projektov in bodite pripravljeni biti odgovorni, se odreči hierarhiji in biti odgovorni ter delati, ne da bi že sam v začetku vse vedel.

Spoštovanje

Spoštovanje, peta vrednost, je bilo dodano kasneje in pomeni spoštovanje drugih in sebe. Vključuje tudi spoštovanje napisane kode ter pričakovanja in potrebe stranke. Ta vrednost temelji tudi na komunikaciji med različnimi zainteresiranimi stranmi.

Dejavnosti programa ekstremnega programiranja

Ekstremno programiranje razlikuje štiri preproste dejavnosti projekta. To so:

  • Kodiranje : ekstremno programiranje meni, da je to najpomembnejša dejavnost. "Brez kode ni nič, " pravi Kent Beck, ustanovitelj Extreme Programminga.
  • Testiranje : Koda je samo to, razen če je preizkušena. Ekstremno programiranje je obsesivno glede testiranja, z uporabo enotnih testov za potrditev, da koda deluje, in odjemalsko sprejetih testov, da se potrdi, da koda preskuša, kaj je treba preizkusiti.
  • Poslušanje: Poslušanje, ki je ponazorjeno z osnovno vrednostjo komunikacije, je dejavnost, ki od razvijalcev zahteva, da stranke ne samo slišijo, ampak resnično poslušajo, kar želijo. Razvoj in poslovanje sta dve različni stvari in pogosto razvijalci ne razumejo poslovnega primera določene odločitve. Potrebe kupca, pa tudi razvijalci, so osnova dejavnosti "poslušanja".
  • Oblikovanje : Morda vas bo presenetilo, da se pri projektu razvoja programske opreme na koncu postavlja projektna dejavnost, ki je pogosto tako pomembna in primarna. To je zato, ker Extreme Programming namerno želi ljudi rešiti iz "načrtovanja in razvoja", ki jih industrija neguje več let. Ne gre omejiti pomena oblikovanja. Dober in minimalen dizajn je eden od značilnosti projekta.

Iz vrednot in dejavnosti izhaja 12 načel ekstremnega programiranja, ki jih je zasnoval njegov ustanovitelj v svoji knjigi Razloženo ekstremno programiranje.

  • Načrtovanje igre
  • Parno programiranje
  • Test Driven Development
  • Celotna ekipa
  • Nenehna integracija
  • Izboljšanje oblikovanja
  • Majhne objave
  • Standardi kodiranja
  • Lastništvo kolektivne kode
  • Preprosta zasnova
  • Sistemska metafora
  • Trajnostni tempo

Nekaj ​​teh ekstremnih programov programiranja, ki so vse preslikane na najboljše prakse programskega inženiringa, se razlikuje od splošnih metodologij Agile. V nadaljevanju so opisane nekatere prakse ekstremnega programiranja:

  1. Načrtovanje igre

To je načrtovalni del projekta, imenovan "Igra načrtovanja". Vključuje načrtovanje naslednje ponovitve in izdaje, ob posvetovanju z uporabnikom / stranko, pa tudi notranje načrtovanje skupin glede nalog, ki jih bodo delali.

  1. Parno programiranje

To vključuje dve osebi, ki delata na kodi. Ena oseba, imenovana tipkovnica, vnese kodo, medtem ko druga, imenovana monitor, nadzira kodo, jo komentira in izpopolni, saj se lahko pojavijo potrebe. Obe osebi si pogosto izmenjujeta vloge. Dokazano je, da znatno izboljša učinkovitost kode. To morda ni primerno za vse razvojne scenarije in to je nekaj, kar morate upoštevati, preden se prijavite na ekstremno programiranje.

  1. Testno usmerjen razvoj

Vsa zapisana koda se pregleda na enoto, tj. Najprej se preizkusi vsak del kode, ki lahko naredi nekaj. Ekstremno programiranje daje velik poudarek testiranju. To pomaga potrditi, da koda deluje, in da se potem lahko šteje za vključitev v sam program ekstremnega programiranja. To je podobno enotnim preizkusom v šoli: majhni preizkušeni podatki, tako da lahko učitelj / študent med popravki letno popravlja in ne preletava!

  1. Izboljšanje oblikovanja (Refactoring)

Namen projektov XP, ki temelji na svoji značilnosti enostavnosti, je nenehno izboljševati na podlagi zapisane kode. To pomeni, da se celotna koda (včasih tudi baza podatkov) vedno izboljša. Refactoring ne dodaja nobene funkcionalnosti; le izboljša obstoječo kodo. Naredi tesnejšo in bolj jasno. To je podobno urejanju dela, poliranju in izboljšanju.

  1. Preprosta zasnova

Pri ekstremnem programiranju funkcije niso dodane, dokler to posebej ni potrebno. Tudi če je koda, ki se trenutno dela, zelo podobna tistemu, kar bi se lahko zahtevalo v prihodnosti, se ne sprejme, če ni dogovorjeno kot uporabniška zgodba.

  1. Sistemska metafora

To vključuje standardizacijo vseh konvencij o poimenovanju, tako da je njen namen in delovanje enostavno razvozlati. Na primer, ali operacije lahko pomagajo vsakemu programerju razumeti njegovo funkcijo. To bi moralo biti izvedeno skozi celoten projekt ekstremnega programiranja, tako da si lahko kdo preprosto pogleda kodo in jo spremeni ali izboljša, odvisno od primera.

Vloge v okviru programa ekstremnega programiranja:

Tako kot Scrum, ima tudi Extreme Programming nekaj določenih vlog v vsakem projektu. Zdaj vlog ne potrebujejo vedno različni ljudje in človek lahko prevzame več kot eno vlogo.

Vloge za ekstremno programiranje so:

  • Naročnik : samoumevno. Razlog za projekt. Odloči se, kaj mora projekt storiti. Zagotavlja uporabniške zgodbe.
  • Programer : To je oseba, ki:
    • Vzame zgodbe, s katerimi pride stranka
    • Iz zgodb ustvari programske naloge
    • Izvaja uporabniške zgodbe
    • Preizkusi kodo po enoti
  • Trener : Trener na splošno zagotavlja, da je projekt na dobri poti, in po potrebi priskoči na pomoč.
  • Sledilnik : Sledilnik v določenem intervalu poizveduje programerje. Običajno se loti preverjanja napredka programerjev in po potrebi pomaga na več načinov: zaviha rokave in pomaga direktno pri kodi, obvestiti trenerja ali sestavi sestanek s stranko, če je to potrebno.
  • Tester : Izvaja funkcionalne teste. Tester ne izvaja enotnih preizkusov, ki jih izvajajo programerji sami.
  • Doomsayer: To, kot že ime pove, je podobno Črni klobuk v sistemu skupinskega razmišljanja Edwarda De Bona. Vsakdo bi lahko bil Doomsayer, ki običajno označi morebitne težave in pomaga vzdrževati težave v pravilni perspektivi.
  • Manager : Manager v projektu Extreme Programming je bolj kot načrtovalec, ki zagotavlja, da se sestanki odvijajo po načrtih, in zagotavlja, da se odločitve, sprejete med sestanki, posredujejo ustrezni osebi, pogosteje kot ne. Upravitelj pa ljudem ne pove, kaj naj naredijo in kdaj naj to storijo. To stori stranka in / ali uporabniške zgodbe same.
  • Lastnik zlata : Lastnik zlata je oseba, ki financira projekt. To je lahko stranka, ni pa nujno.

Nekatere skrajne programske vloge, kot je opisano zgoraj, je mogoče kombinirati, nekatere pa očitno ne morejo.

Stranka, na primer, ne more biti tudi programer. Tudi programer in sledilnik ne moreta biti uspešno ista oseba.

Ekstremne programske vloge so opredeljene dovolj jasno, da ne bo zmede in ustvarjene za kar največjo prožnost in učinkovitost.

Slabosti ekstremnega programiranja:

Medtem ko zagovorniki programa Extreme Programming slikajo rožnato sliko, je dejstvo, da je Extreme Programming, kot že ime verjetno kaže, izjemno težko izvajati. Fasete ekstremnega programiranja je mogoče uspešno vključiti v projekte, kot pa popolnoma prevzeti XP.

Nekatere negativne možnosti ekstremnega programiranja so:

  • Ugotovljeno je, da je ekstremno programiranje učinkovitejše v manjših skupinah . Njegova učinkovitost v večjih skupinah je izpodbijana, boljša možnost pa je razdelitev ekstremnih programskih skupin, tako da so skupine manjše.
  • Ena ključnih značilnosti ekstremnega programiranja pa programiranje parov v mnogih primerih ne deluje dobro . Zapleteno kodiranje lahko zahteva dve glavi, vendar ne smejo vse osebe zahtevati dveh ljudi, pri čemer je druga oseba mrtva teža. Pravzaprav je programiranje dvojic, če eden od članov ni v sozvočju z drugim, eden glavnih razlogov, zakaj Extreme Programming v mnogih primerih ne uspe.
  • Odvisnost od kupca, do predpostavke, da bi na strani predlagali vire na kraju samem, je lahko zelo vznemirjajoča. Med razvojem lahko pride tudi do motenj, resničnih in domišljenih.
  • Osredotočenost ekstremnega programiranja na preprostost bi lahko zelo težko dodala k trenutnemu projektu, kar pomeni večji proračun za celo preproste spremembe, ki ne ostajajo več preproste.
  • Ravna hierarhična struktura pomeni, da mora biti ekipa vedno osredotočena, in če ni vodja, ki bi se lotil različnih ljudi, je skupina za ekstremno programiranje v celoti odvisna od čustvene zrelosti vseh članov ekipe, dejavnika, ki ni vedno zanesljiv .

Tudi pri teh dejavnikih ostaja ekstremno programiranje močno orodje, ki ga je mogoče uporabiti za pravi projekt, podjetja pa poročajo o večjem povečanju svoje učinkovitosti po sprejetju ekstremnega postopka programiranja. Razvijalski sistem, za razliko od Scruma, ki je bolj procesno voden sistem, Extreme Programming ali vsaj njegovi deli, lahko pripelje do revolucije v načinu razvoja ekstremne programske opreme.

Kategorija: