Izvor slike: pixabay.com

Ekstremno programiranje

Zamislite ovo: Projekt razvoja softvera za novi proizvod, temeljen na prednosti na tržištu, upravo je uočen na radaru vaše tvrtke. Tradicionalne metode ekstremnog programiranja u kojima klijent točno zna što želi. Vaš tim je malen i sastavljen od mladih profesionalaca koji će vjerojatno dobro reagirati na radikalni model upravljanja projektima. Koje su vaše mogućnosti?

Vjerojatno ćete reći, Agile Project Management, naravno! Ali koju biste metodologiju željeli koristiti? Postoji nekoliko mogućnosti: za jednu, tu je izuzetno popularan Scrum: koji uključuje stvaranje kratkih "sprintova" na temelju broja korisnika zadataka. A onda, tu je Kanban, koji radi na optimizaciji cjevovoda. Postoji i Ekstremno programiranje, često skraćeno do XP, koje je usredotočeno na pojačavanje pozitivnih aspekata tradicionalnih programskih modela tako da rade na maksimalnom potencijalu.

Ekstremno programiranje vrlo je popularna (iako ne tako popularna kao Scrum) metodologija usredotočena na ispunjavanje promjenjivih zahtjeva klijenta. Prvi projekt ekstremnog programiranja pokrenuo je u ožujku 1996. godine Kent Beck iz Chryslera. U svojoj knjizi iz 1999. godine, Extreme Programming Explained: Embrace Change, detaljno je opisao aspekte razvoja softvera.

Kent Beck bio je i pionir razvoja vođenog testom, koji je testiranje upotrebe slučaja na radaru poboljšao način na koji su tada postupili: pisanje linija i redaka koda, a zatim testiranje. Bio je i jedan od izvornih potpisnika Magifesta Agile, pomažući oblikovati manifest da promijeni način na koji je napisan ekstremni programski program.

Pet vrijednosti ekstremnog programiranja koje se temelje na Objašnjeno su:

Komunikacija

Ekstremno programiranje ne ovisi o opsežnoj dokumentaciji. Zapravo, ekstremna programska dokumentacija se predlaže samo kad je to potrebno. Dakle, metodologija se u velikoj mjeri oslanja na komunikaciju između članova tima, ali i s korisnicima.

Jednostavnost

To je u srži ekstremnog programiranja. Metodologija favorizira jednostavne dizajne, ne razmišljajući predaleko u budućnost, već se usredotočujući na današnje potrebe, a sam program čini dovoljno robusnim da doda zahtjeve koje budućnost postavlja.

Povratne informacije

Ova suštinska petlja kretanja naprijed i nazad razlikuje Agile sustave općenito i posebno Extreme Programming od ostalih metodologija upravljanja softverskim projektima. Kontinuirana povratna informacija može raditi na različite načine, ali svi rade na tome da sustav postane jači i pouzdaniji.

Povratne informacije mogu biti u različitim okusima:

  • Iz samog programa: Kôd se intenzivno testira tijekom cijelog ciklusa razvoja projekta, tako da programeri mogu primijeniti promjene.
  • Od klijenta: Ovo je bitan dio većine Agile sustava. Klijenti pišu testove prihvaćanja na kojima se temelji razvoj, a to čini okosnicu razvojnog procesa. Sve se iteracije također isporučuju klijentu, radi povremenih povratnih informacija.
  • Iz tima: Jednom kada je stvoren novi slučaj uporabe / priča, tim se odmah vraća procjenom troškova i vremenske trake, pojačavajući zahtjeve dok se pojave. U ekstremnom programiranju nitko ne "posjeduje" bilo koji kôd, i stoga se u ekstremnim programskim timovima potiču povratne informacije o kodovima drugih.

Hrabrost

To bi moglo izgledati čudno u ekstremnom programiranju za razvoj softvera, prikladnijem za nešto poput vojske ili marinaca! Međutim, razmislite: Softverski projekti već su dugo zamkani tradicionalnim ekstremnim programskim metodama upravljanja; osigurati u udobnosti opsežne dokumentacije i hijerarhije koja ne dopušta inovaciju. Ova vrijednost primjer je jezgre ekstremnog programiranja: budite spremni na skok, bez padobrana ako dođe do toga! Pogledajte ovaj različit stil upravljanja projektima i budite spremni biti odgovorni, odreći se hijerarhije i biti odgovorni i raditi bez da sami u početku znate sve.

Poštovanje

Poštovanje, peta vrijednost, dodana je kasnije i znači poštovanje drugih i sebe. Također podrazumijeva poštovanje pisanog koda te klijentovih očekivanja i potreba. Ova vrijednost također je osnova komunikacije između različitih dionika.

Aktivnosti ekstremnog programskog projekta

Ekstremno programiranje razlikuje četiri jednostavne aktivnosti projekta. Oni su:

  • Kodiranje : Ekstremno programiranje smatra ovo najvažnijom aktivnošću. "Bez koda nema ništa", kaže Kent Beck, osnivač Extreme Programminga.
  • Testiranje : Kod je samo to ako nije testiran. Ekstremno programiranje opsesivno je glede testiranja, koristeći jedinice ispitivanja za potvrdu da kôd radi i testovi prihvaćanja koje generira klijent da potvrde da kôd testira ono što treba testirati.
  • Slušanje: Slušanje, primjerice osnovnom vrijednošću komunikacije, aktivnost je koja zahtijeva od programera da ne samo čuju klijente, već stvarno slušaju što žele. Razvoj i posao dvije su različite stvari i često programeri ne razumiju poslovni slučaj određene odluke. Kupčeve potrebe, kao i programeri, predstavljaju osnovu aktivnosti „slušanja“.
  • Dizajniranje : Može vas iznenaditi da se u projektu razvoja softvera, projektna aktivnost, često toliko važna i primarna, nalazi na kraju. To je zato što Ekstremno programiranje namjerno želi izbaciti ljude iz "dizajniranja i razvoja" razmišljanja koje industrija njeguje dugi niz godina. To nije ograničenje važnosti dizajna. Umjesto toga, dobar i minimalni dizajn jedno je od obilježja projekta.

Iz vrijednosti i aktivnosti proizlazi 12 principa ekstremnog programiranja, koje je osmislio njegov osnivač, u svojoj knjizi Objašnjeno ekstremno programiranje.

  • Igra planiranja
  • Parno programiranje
  • Test vođen razvoj
  • Cijeli tim
  • Kontinuirana integracija
  • Poboljšanje dizajna
  • Mala izdanja
  • Standardi kodiranja
  • Vlasništvo nad kolektivnim kodom
  • Jednostavan dizajn
  • Metafora sustava
  • Održivi tempo

Neke od ovih ekstremnih programskih praksi, sve mapirane na najbolje prakse softverskog inženjerstva, razlikuju se od općih Agile metodologija. Neke od praksi ekstremnog programiranja objašnjene su u nastavku:

  1. Igra planiranja

Ovo je dio planiranja, nazvan „Igra planiranja“. To uključuje planiranje sljedeće iteracije i izdanja, uz savjetovanje s korisnikom / klijentom, kao i interno planiranje timova, u vezi sa zadacima na kojima će raditi.

  1. Parno programiranje

To uključuje dvoje ljudi koji rade na komadu koda. Jedna osoba, koja se zove tipkovnica, upisuje kôd, dok druga, koja se zove monitor, nadgleda je, komentira i pročišćava, budući da postoji potreba. Dvoje ljudi često zamjenjuju svoje uloge. Dokazano je da značajno poboljšava učinkovitost koda. To možda nije prikladno za sve razvojne scenarije, pa bi to trebalo uzeti u obzir prije prijave na ekstremno programiranje.

  1. Test vođen razvoj

Sav kod koji je napisan pregledava se jedinstveno, tj. Prvo se ispituje svaki dio koda koji može nešto učiniti. Ekstremno programiranje daje veliki naglasak na testiranju. Ovo pomaže da se potvrdi da kôd djeluje i da se nakon toga može smatrati uključivanjem u sam program ekstremnog programiranja. To je analogno jedinstvenim testovima u školi: mali dijelovi provjerenih informacija, tako da nastavnik / student može izvršiti ispravke predmeta i ne leti tijekom godišnjih ispita!

  1. Poboljšanje dizajna (refaktoring)

XP projekti, temeljeni na njihovoj značajci jednostavnosti, imaju za cilj stalno poboljšavati kôd koji je napisan. To znači da se cijeli napredni kod (a ponekad i baza podataka) uvijek poboljšava. Refactoring ne dodaje nikakve funkcije; samo poboljšava postojeći kod. Čini ga čvršćim i jasnijim. To je srodno uređivanju pisma, poliranju i poboljšavanju.

  1. Jednostavan dizajn

U ekstremnom programiranju značajke se ne dodaju dok se to posebno ne zatraži. Iako je kod na kojem se trenutno radi vrlo je sličan onome što će se možda trebati u budućnosti, neće se uzimati osim ako nije ugovoreno kao korisnička priča.

  1. Metafora sustava

To uključuje standardizaciju svih konvencija o imenovanju tako da se njihova svrha i funkcija lako dešifriraju. Na primjer, ili operacije mogu pomoći bilo kojem programeru da razumije njihovu funkciju. To bi trebalo biti učinjeno na cjelokupnom projektu ekstremnog programiranja, tako da svakome bude lako pogledati kôd, modificirati ili poboljšati, ovisno o slučaju.

Uloge u okviru programa ekstremnog programiranja:

Kao i Scrum, Extreme Programming ima nekoliko određenih uloga u svakom projektu. Sada uloge ne moraju uvijek obavljati različite osobe, a osoba može preuzeti više uloga.

Ekstremne programske uloge su:

  • Kupac : samorazumljivo. Razlog projekta. Ona odlučuje što projekt treba učiniti. Ona pruža korisničke priče.
  • Programer : Ovo je osoba koja:
    • Vodi priče koje kupac smisli
    • Stvara zadatke programiranja iz priča
    • Provodi korisničke priče
    • Ispituje kôd po jedinici
  • Trener : Trener općenito osigurava da je projekt u tijeku, a također dolazi u pomoć kad je to potrebno.
  • Tragač : Tragač vrši određene upite programerima u zadanom intervalu. Obično pregledava napredak programera, nudeći pomoć tamo gdje je to potrebno na nekoliko načina: zasukati rukave i izravno pomoći kodu, obavijestiti trenera ili organizirati sastanak s kupcem, ovisno o potrebi.
  • Tester : Izvodi funkcionalne testove. Ispitivač ne pokreće jedinice jedinice ispitivanja koje pokreću sami programeri.
  • Doomsayer: To je, kao što ime sugerira, srodno Crnom šeširu u sustavu grupnog razmišljanja Edwarda De Bona. Bilo tko bi mogao biti Doomsayer, koji obično označava potencijalne probleme i pomaže održavati probleme u ispravnoj perspektivi.
  • Menadžer : Menadžer u projektu programa ekstremnog programiranja više sliči planeru, osiguravajući da se sastanci odvijaju kako su planirali i osiguravajući da se odluke donesene tijekom sastanaka prenose odgovarajućoj osobi, češće nego ne, Tragaču. Menadžer, međutim, ne govori ljudima što treba raditi i kada to učiniti. To radi Kupac i / ili Korisničke priče.
  • Vlasnik zlata : Vlasnik zlata je osoba koja financira projekt. To može biti kupac, ali ne nužno i tako.

Neke od ekstremnih programskih uloga, kako je opisano gore, mogu se kombinirati, ali neke očito ne mogu.

Na primjer, kupac također ne može biti programer. Programer i Tragač, slično, ne mogu uspješno biti ista osoba.

Ekstremne programske uloge definirane su dovoljno jasno da ne dolazi do zabune i stvorene za maksimalnu fleksibilnost i učinkovitost.

Nedostaci ekstremnog programiranja:

Dok zagovornici Ekstremnog programiranja slikaju ružičastu sliku, činjenica je da je Ekstremno programiranje, kao što naziv vjerojatno sugerira, izuzetno teško provesti. Faze ekstremnog programiranja mogu se ugraditi u projekte uspješnije od potpunog usvajanja XP-a.

Neki od negativnih efekata ekstremnog programiranja su:

  • Ekstremno programiranje smatra se učinkovitijim u manjim skupinama . Njegova je učinkovitost u većim skupinama osporavana, a bolja opcija je podijeliti ekstremne programske timove tako da grupe budu manje.
  • Jedna od ključnih značajki Ekstremnog programiranja, programiranje u parovima ne funkcionira dobro u mnogim slučajevima . Za složeno kodiranje mogu biti potrebne dvije glave, ali ne moraju svi ljudi zahtijevati dvije osobe, pri čemu je druga osoba mrtva težina. Zapravo je programiranje u parovima, ako jedan od članova nije u sinkronizaciji s drugim, jedan od glavnih razloga zašto Ekstremno programiranje u mnogim slučajevima ne uspije.
  • Ovisnost o kupcu, do točke sugeriranja resursa na licu mjesta s kupčeve strane, može biti duboko nervirajuća. Također može dovesti do smetnji, stvarnih i zamišljenih tijekom razvoja.
  • Usmjerenost ekstremnog programiranja na jednostavnost može biti vrlo teško dodati trenutnom projektu, što znači veći proračun za čak i jednostavne promjene, koje više ne ostaju jednostavne.
  • Ravna hijerarhijska struktura znači da tim uvijek treba biti fokusiran, a u nedostatku menadžera koji bi pokrenuo različite diverzantske tipove ljudi, tim za ekstremno programiranje u potpunosti ovisi o emocionalnoj zrelosti svih članova tima, čimbeniku koji nije uvijek pouzdan.,

Čak i uz ove faktore, Ekstremno programiranje ostaje moćno sredstvo za korištenje pravog projekta, pri čemu tvrtke prijavljuju o povećanoj učinkovitosti nakon usvajanja ekstremnog procesa programiranja. Sustav vođen programerima, za razliku od Scrum-a, koji je više procesni sustav, ekstremno programiranje ili barem njegovi dijelovi, mogu dovesti do revolucije u načinu na koji razvijamo ekstremni programski softver.

Kategorija: