Članci

Šta je ekstremno programiranje (XP)?, na kojim vrijednostima se zasniva, principi i prakse

Vi ste upoznati sa programiranjem, ali ekstremno programiranje (skraćeno XP) je za vas još uvijek pomalo misterija.

Ne dozvolite da vas ime odvrati, rizikujete da propustite korisne informacije.

U ovom članku ćemo pokriti sve što trebate znati o ekstremnom programiranju kako biste ga mogli koristiti u svoju korist.

Šta je ekstremno programiranje (XP)?

Ekstremno programiranje je metodologija razvoja softvera koja je dio onoga što je zajednički poznato kao agilne metodologije. XP je izgrađen na vrijednostima, principima i praksi, a cilj mu je omogućiti malim i srednjim timovima da proizvode visokokvalitetan softver i prilagode se zahtjevima koji se stalno mijenjaju i koji se razvijaju.

Ono što XP razlikuje od ostalih agilnih metodologija je to što XP naglašava tehničke aspekte razvoja softvera. Ekstremno programiranje precizno govori o tome kako inženjeri rade jer praćenje inženjerskih praksi omogućava timovima da isporuče visokokvalitetni kod održivim tempom.

Ekstremno programiranje je, ukratko, dobra praksa dovedena do krajnosti. Pošto je programiranje u paru dobro, radimo to stalno. Budući da je testiranje unaprijed dobro, testiramo prije nego što proizvodni kod bude napisan.

Kako funkcioniše ekstremno programiranje (XP)?

XP se, za razliku od drugih metodologija, temelji na vrijednostima i principima koji su važni i relevantni, u smislu inženjerske prakse.

Vrijednosti daju svrhu timovima. Oni djeluju kao "sjeverica" ​​koja vodi vaše odluke na visokom nivou. Međutim, vrijednosti su apstraktne i previše nejasne za konkretne smjernice. Na primjer: Reći da cijenite komunikaciju može dovesti do mnogo različitih rezultata.

Praksa je, u izvesnom smislu, suprotna vrednostima. Betonski su i prizemljeni, defidajući pojedinosti o tome šta treba učiniti. Praksa pomaže timovima da budu odgovorni za vrijednosti. Na primjer, praksa informativnih radnih prostora promovira transparentnu i jednostavnu komunikaciju.

Principi su smjernice specifične za područje koje premošćuju jaz između prakse i vrijednosti.

Vrijednosti Extreme Programming XP

XP vrijednosti: komunikacija, jednostavnost, povratna informacija, hrabrost i poštovanje. Pogledajmo svaki od njih detaljnije.

Vrijednosti i principi ekstremnog programiranja

izrada BlogInnovazione.to od slike alexsoft.com

komunikacija: Nedostatak komunikacije sprečava protok znanja unutar tima. Često, kada postoji problem, neko već zna kako da ga reši. Ali nedostatak komunikacije ih sprječava da nauče o problemu ili da doprinesu njegovom rješavanju. Tako se problem dvaput rješava, stvarajući otpad.

jednostavnost: Jednostavnost govori da uvijek težite da uradite najjednostavniju stvar koja funkcionira. Često se pogrešno shvata i uzima kao najjednostavnija stvar, tačka, ignorišući deo „koji radi“.

Takođe je važno zapamtiti da je jednostavnost veoma kontekstualna. Ono što je jednom timu jednostavno, drugom je složeno i u potpunosti ovisi o vještinama, iskustvu i znanju svakog tima.

Povratne informacije: Povratne informacije o tradicionalnijim, kaskadnim metodologijama razvoja softvera često su „premale, prekasno“.

XP, međutim, prihvata promjene i XP timovi teže pravovremenim i stalnim povratnim informacijama. Ako je potrebna korekcija kursa, XPers žele znati što je prije moguće.

Ciklus ekstremnog programiranja

izrada BlogInnovazione.to od slike alexsoft.com

Povratne informacije dolaze u mnogim oblicima i veličinama. Kada imate partnersko programiranje, komentari vaših kolega su vitalna povratna informacija. Kao i mišljenja drugih članova tima o ideji, uključujući kupca koji je, u idealnom slučaju, član tima.

Testovi su još jedan izvor vrijednih povratnih informacija koje nadilaze rezultate testova. Bilo da je pisanje testova lako ili teško, tako je i povratna informacija. Ako imate problema sa pisanjem testova, vaš projekat je verovatno previše složen. Slušajte povratne informacije i pojednostavite svoj dizajn.

Nešto što zvuči kao odlična ideja možda neće dobro funkcionirati u praksi. Stoga je gotov kod također izvor povratnih informacija, kao i distribuirani proizvod.

Konačno, imajte na umu da ima previše povratnih informacija. Ako tim generiše više povratnih informacija nego što može podnijeti, važne povratne informacije mogu pasti s radara. Stoga je bitno usporiti i shvatiti što uzrokuje višak povratnih informacija i to popraviti.

Hrabrost: Kent Beck defiHrabrost se definiše kao „efikasna akcija suočena sa strahom“. Kao softverski inženjer, imate čega da se plašite, a samim tim i mnogo prilika da pokažete hrabrost.

Potrebna je hrabrost da se kaže istina, posebno ona neprijatna, kao što su iskrene procene. Davanje i primanje povratnih informacija također zahtijeva hrabrost. Potrebna je i hrabrost da se izbjegne zabluda o nepovratnim troškovima i odbaci neuspješna rješenja koja su dobila značajna ulaganja.

Poštovanje: Osnovna premisa XP-a je da svako brine o svom poslu. Nikakva tehnička izvrsnost ne može spasiti projekat ako nema pažnje i poštovanja.

Svaka osoba je vrijedna dostojanstva i poštovanja, a to uključuje, naravno, ljude uključene u projekat razvoja softvera. Kada vi i članovi vašeg tima poštujete i brinete jedni o drugima, klijentu, projektu i njegovim budućim korisnicima, svi imaju koristi

Principi ekstremnog programiranja XP

Principi pružaju konkretnije smjernice od vrijednosti. To su smjernice koje osvjetljavaju vrijednosti i čine ih eksplicitnijim i manje dvosmislenim.

izrada BlogInnovazione.to od slike alexsoft.com

Na primjer, samo na osnovu vrijednosti hrabrosti, možete zaključiti da je preporučljivo odmah napraviti veliku promjenu u rasporedu. Međutim, princip Baby Steps nam govori da su velike promjene rizične. Dakle, radije radije male.

Čovječanstvo: Ljudi kreiraju softver za ljude, što se često zanemaruje. Ali uzimanje u obzir osnovnih ljudskih potreba, snaga i slabosti stvara proizvode koje ljudi žele koristiti. A radno okruženje koje vam nudi priliku za ispunjenje i rast, osjećaj pripadnosti i osnovne sigurnosti, mjesto je gdje lakše razmatrate potrebe drugih.

ekonomija: U XP-u timovi uvijek obraćaju pažnju na ekonomsku realnost razvoja softvera, stalno procjenjuju ekonomske rizike i potrebe projekta.

Na primjer, implementirali bi korisničke priče na temelju njihove poslovne vrijednosti, a ne tehničkih briga.

Uzajamna korist: Nakon XP-a izbjegavate rješenja koja koriste jednoj strani na račun druge. Na primjer, proširene specifikacije mogu pomoći nekome drugom da to razumiju, ali vas odvlače od implementacije i odgađaju vašim korisnicima.

Obostrano korisno rješenje je korištenje automatiziranih testova prihvatljivosti. Dobijte trenutne povratne informacije o svojoj implementaciji, vaši kolege dobijaju precizne specifikacije u kodu, a korisnici prvo dobijaju svoje karakteristike. Osim toga, svi ćete imati sigurnosnu mrežu protiv regresije.

korist (uzajamna korist): Ako dato rješenje radi na jednom nivou, moglo bi raditi i na višem ili nižem nivou. Na primjer, dobijanje ranih i stalnih povratnih informacija je u različitoj mjeri u pitanju u XP-u.

  • na nivou programera, programeri dobijaju povratne informacije o svom radu koristeći pristup prvi test;
  • na nivou tima, kontinuirani cevovod integracije integriše, gradi i testira kod više puta dnevno;
  • Organizacijski, sedmični i tromjesečni ciklusi omogućavaju timovima da dobiju povratne informacije i unaprijede svoj rad po potrebi.

Poboljšanje: Po principu poboljšanja, timovi ne ciljaju na savršenstvo u početnoj implementaciji, već na implementaciju koja je dovoljno dobra, a zatim je kontinuirano uče i usavršavaju uz povratne informacije stvarnih korisnika.

Raznolikost: Vi i vaše kolege imate koristi od različitih perspektiva, vještina i stavova. Takva raznolikost često dovodi do sukoba, ali to je u redu.

Sukob i neslaganje su prilike za pojavu boljih ideja kada se svi igraju vrijednostima hrabrosti i poštovanja. Hrabrost izražavanja suprotstavljenih gledišta, poštovanje u izražavanju istih na građanski i empatičan način. A sve ovo je efikasna komunikacijska vježba.

Refleksija: Odlični timovi razmišljaju o svom radu i analiziraju kako da budu bolji. XP nudi mnoge mogućnosti za to. Ne samo u svojim sedmičnim i kvartalnim ciklusima, već u svakoj praksi koju promovira.

Osim logičke analize, važno je uzeti u obzir osjećaje. Vaša crijeva vas mogu obavijestiti prije nego što budete mogli razmišljati o bilo čemu. I kako bi mogao razgovarati s netehničarima, oni mogu postavljati pitanja koja otvaraju potpuno nove mogućnosti.

Protok: Tradicionalne metodologije razvoja softvera imaju različite faze, koje traju dugo i imaju malo mogućnosti za povratne informacije i korekciju kursa. Umjesto toga, razvoj softvera u XP-u odvija se u aktivnostima koje se odvijaju kontinuirano, u konzistentnom "toku" vrijednosti.

Prilika: Problemi su neizbježni u razvoju softvera. Međutim, svaki problem je prilika za poboljšanje. Naučite ih gledati na ovaj način i vjerojatnije je da ćete smisliti kreativna i ciljno orijentirana rješenja koja će također spriječiti da se ponove.

Redundantnost: Princip redundancije kaže da ako je dati problem kritičan, morate koristiti mnoge taktike da mu se suprotstavite.

Uzmite nedostatke. Ne postoji jedinstvena taktika koja može spriječiti da svi nedostaci pobjegnu iz proizvodnje.

Dakle, XP-ovo rješenje je slaganje skupa mjera kvaliteta. Programiranje u paru, testiranje, kontinuirana integracija. Svaka jedna linija odbrane, zajedno gotovo neprobojni zid.

Neuspjeh: neuspjeh nije gubitak kada se pretoči u znanje. Poduzimanje akcije i brzo učenje onoga što ne funkcionira mnogo je produktivnije od neaktivnosti uzrokovane neodlučnošću pri odabiru između mnogih opcija.

Kvalitet: Ljudi često misle da postoji dilema između kvaliteta i brzine.

Obratno je: nastojanje da se poboljša kvalitet je ono što vas čini bržim.

Inovacijski bilten
Ne propustite najvažnije vijesti o inovacijama. Prijavite se da ih primate putem e-pošte.

Na primjer, refaktoring—promjena strukture koda bez promjene njegovog ponašanja—je praksa koja olakšava razumijevanje i promjenu koda. Kao rezultat toga, manja je vjerovatnoća da ćete uvesti defekte koda, što vam omogućava da prvo isporučite veću vrijednost tako što nećete morati da ispravljate greške.

Mali koraci: Velike promjene su rizične. XP ublažava taj rizik unoseći promjene u malim koracima, na svakom nivou.

Programeri pišu kod u malim koracima koristeći razvoj vođen testom. Oni integriraju svoj kod u glavnu liniju više puta dnevno, umjesto samo svakih nekoliko sedmica ili čak mjeseci. Sam projekat se odvija u kratkim ciklusima, a ne u dugotrajnim fazama.

Odgovornost prihvaćena: U XP-u, odgovornost treba prihvatiti, nikada ne dodijeliti.

Odgovornost treba da dolazi sa ovlastima za donošenje odluka o tome za šta ste odgovorni. Vrijedi i suprotno. Ne želite da ljudi donose odluke ako ne moraju da žive sa svojim posledicama.

Sličnosti i razlike sa tradicionalnim i neagilnim metodama

Ekstremno programiranje, kao agilna metodologija, može se prihvatiti i početi usvajati bez praćenja krutih planova. Ovo je iterativni dizajn, a ne veliki početni projekat.

XP se značajno razlikuje od tradicionalnih metodologija, odnosno kaskadno, izbjegavajući dugotrajne faze.

  • Umjesto faze planiranja, u XP-u planirate na početku svakog razvojnog ciklusa koji obično traje samo tjedan dana.
  • Umjesto testiranja epizoda, testirajte svoju aplikaciju što je prije moguće: to jest prije implementacije stvarnog koda.
  • Umjesto da uvodite funkcije u izolaciju tokom dugih faza implementacije, a zatim se borite da spojite svoje doprinose glavnoj liniji, radite u malim dijelovima i integrirate ih što je češće moguće

Po čemu se XP razlikuje od ostalih agilnih metodologija?

Ekstremno programiranje, po svojoj prirodi, ima mnogo toga zajedničkog s drugim agilnim metodologijama, ali je i jedinstveno među njima.

Većina drugih razvojnih metodologija ne govori mnogo, ako ništa drugo, o tome kako obaviti posao. XP je, s druge strane, vrlo tvrdoglav kada je u pitanju ovo i stavlja veliki naglasak na prakse softverskog inženjeringa.

Ekstremno programiranje protiv Scrum-a

Scrum je okvir koji pomaže timovima da razviju složene projekte na prilagodljiv način. Scrum ne diktira kako programeri rade svoj posao. XP, kao što je spomenuto, stavlja veliki naglasak na dobre prakse programiranja.

Scrum okvir

izrada BlogInnovazione.en Slika net rješenja

Takođe, XP se očigledno odnosi na programiranje. Scrum se, s druge strane, može primijeniti na bilo koji projekat koji ima koristi od iterativnog pristupa.

XP prihvata promene svojih komponenti. Timovi su osnaženi, pa čak i ohrabreni da modifikuju praksu na osnovu svojih specifičnih potreba. Scrum vodič je, s druge strane, uporan da "Iako se samo dijelovi Scrum-a mogu implementirati, rezultat nije Scrum."

Također, Scrum je okvir koji treba dopuniti metodologijama i praksama da bi se posao obavio.

To znači da se rad u ekstremnom programiranju i Scrum-u toplo preporučuje.

Uloge i odgovornosti

Prema Kentu Becku, zreli XP tim ne bi trebao dodjeljivati ​​krute uloge, ali prepoznati da uloge mogu biti korisne za mlade timove sve dok ne počnu usporavati ili otežati saradnju.

Pogledajmo neke ključne uloge:

  • Kupac: U idealnom slučaju, korisnik bi trebao biti na licu mjesta kako bi odgovorio na pitanja, odredio prioritete korisničkih zahtjeva ili pomogao u testiranju prihvatljivosti. Kada to nije moguće, ovu ulogu može popuniti predstavnik kupca.
  • Programeri: U XP timu, programeri procjenjuju napor potreban za dovršavanje zadataka, pisanje automatiziranih testova i implementaciju priča.
  • trener: nije potrebno imati trenera i moguće je doći do cilja i bez njega. Međutim, ako imate nekoga sa iskustvom u XP-u, za treniranje tima možete osigurati da članovi tima slijede prakse, da ih pretvore u navike i da se ne vraćaju na stare načine.
  • tragač- Traker prati metriku napretka tima i razgovara sa svakim članom tima kako bi identificirao probleme i pronašao rješenja. Traker izračunava metriku koja pokazuje koliko dobro tim radi, kao što su grafikoni brzine i sagorevanja, ili tim koristi digitalni scrum ili kanban tablu koji ih automatski izračunava.

Metode i tehnike

Ovo su prakse usvojene u XP-u. Podijeljeni su u tri glavne grupe: softverski inženjering, radno mjesto i upravljanje projektima.

Softverski inženjering

Programiranje u paru: U XP-u pišete kod u parovima sedeći na mašini. Vi i vaš par razgovarate jedno s drugim dok analizirate, implementirate i testirate funkciju na kojoj radite. Programiranje u paru je posebno dobro u proizvodnji koda s manje grešaka, a da je i dalje zanimljivo, zabavno i zamorno.

Ograničenje od deset minuta: Obavezno Omogućava 10 minuta za izgradnju cijelog projekta, uključujući pokretanje svih automatiziranih testova, u maksimalno deset minuta. Ovo ograničenje je da bi testiranje bilo pojednostavljeno i efikasno.

Testovi prije programiranja: implementirati karakteristike koristeći pristup test-prvi, koji se također naziva test-driven razvoj (TDD). TDD se sastoji od razvoja pomoću jednostavne iterativne procedure:

  • pisati kod nakon što test ne uspije;
  • zatim napišite proizvodni kod da biste prošli test;
  • ako je potrebno, refaktorirajte svoj proizvodni kod kako biste ga učinili čišćim i lakšim za razumijevanje.

TDD donosi nekoliko prednosti.

Prvo, povratne informacije. Ako je teško napisati test, dizajn koji tražite ili koji ste naslijedili je vjerovatno previše složen i morate ga pojednostaviti.

Drugo, TDD omogućava programerima da vjeruju kodu koji pišu i stvara lijep ritam petlje gdje je sljedeći korak uvijek jasan.

Na kraju, ali ne i najmanje važno, korištenje TDD-a od samog početka osigurava 100% pokrivenost koda. Testni paket tada zaista postaje sigurnosna mreža za buduće promjene, podstičući refaktoriranje koda i stvarajući vrli krug kvalitete.

Inkrementalni dizajn: Praksa inkrementalnog dizajna znači da morate svakodnevno ulagati u dizajn vaše aplikacije, tražeći mogućnosti za uklanjanje dupliciranja i mala poboljšanja kako biste postigli najbolji mogući dizajn za ono što je vašem sistemu danas potrebno.

Kontinuirana integracija: U XP-u integrišete svoj rad u glavno zajedničko spremište nekoliko puta dnevno, pokrećući automatsku gradnju cijelog sistema. Integracija što ranije i što je češće moguće dramatično smanjuje troškove integracije jer smanjuje vjerovatnoću da će doći do spajanja i logičkih sukoba. Također razotkriva probleme okoliša i ovisnosti.

Zajednički kod (kolektivno vlasništvo): XP promovira zajednički kod, ili kolektivno vlasništvo: svaki programer je odgovoran za sav kod. Podstiče razmjenu informacija, smanjuje faktor timske magistrale i povećava ukupni kvalitet svakog modula ako uzmemo u obzir princip raznolikosti.

Single CodeBase: Pojedinačna kodna baza je također poznata kao “razvoj baziran na stablu”. To znači da postoji samo jedan izvor istine. Dakle, umjesto da se razvijate u izolaciji tokom dugog vremenskog perioda, spojite svoje doprinose u jedan stream rano i često. Oznake funkcija pomažu da ograničite korištenje funkcija dok se ne završe.

Dnevna distribucija: uvođenje u proizvodnju barem jednom dnevno je logična posljedica kontinuirane integracije:. Zapravo, danas mnogi timovi idu još dalje i praktikuju kontinuiranu implementaciju. To jest, kad god se neko pridruži glavnoj liniji, aplikacija se postavlja u proizvodnju.

Kod i testovi: Ova praksa znači da je izvorni kod, uključujući testove, jedini stalni artefakt softverskog projekta. Uključivanje u stvaranje drugih vrsta artefakata, uključujući dokumentaciju, često je rasipno jer ne stvara stvarnu vrijednost za kupca.

Ako su vam potrebni drugi artefakti ili dokumenti, potrudite se da ih generirate iz proizvodnog koda i testova.

Analiza uzroka: Kad god greška krene u proizvodnju, nemojte samo ispravljati kvar. Obavezno shvatite šta je uzrokovalo to, zašto vi i vaši saigrači niste uspjeli spriječiti proklizavanje. Zatim poduzmite korake da se to više ne ponovi.

Radno okruženje

Sedite zajedno: U XP-u timovi radije rade zajedno na otvorenom prostoru. Ova praksa promoviše komunikaciju i osjećaj pripadnosti timu.

Cijeli tim: Svi koji su potrebni za uspjeh projekta su dio XP tima. Ovo je vrlo kontekstualno – različito za svaki tim – i dinamično, može se promijeniti unutar tima.

Informativni radni prostori: Informativni radni prostor koristi fizički prostor tima za prikaz informacija koje omogućavaju svakome da na prvi pogled zna napredak projekta. Način na koji se to radi može varirati, od fizičkih bilješki i grafikona do snimaka ekrana koji prikazuju Kanban ploče i nadzorne ploče iz softvera za upravljanje projektima.

Energiziran rad: U XP-u radite samo onoliko dugo koliko možete raditi energično. Radno vrijeme mora biti ograničeno na 40 sedmično, maksimalno.

Upravljanje projektima

Analisi- Napišite zahtjeve korisnika u formatu poznatom kao korisnička analiza. Korisnička analiza ima kratak, opisni naziv i kratak opis onoga što treba implementirati.

zatišje: Kada planirate ciklus, dodajte manje zadatke koje tim može napustiti ako se ukaže potreba. Uvijek se može dodati više priča ako tim pruži previše.

Ciklusi (mjesečni i sedmični): Razvoj u XP-u se odvija u dva glavna ciklusa: sedmični ciklus i mjesečni ciklus.

Sastanci, ciklusi, zakazana izdanja: Razvoj u XP-u radi u dva glavna ciklusa: sedmični ciklus i kvartalni ciklus. Kent Bek je u početku preporučio dvonedeljni ciklus, ali je to promenio u drugom izdanju svoje knjige.

Sedmični ciklus: sedmični ciklus je "puls" XP projekta. Ciklus počinje sastankom na kojem klijent bira koje priče želi stvarati tokom sedmice. Pored toga, tim pregleda svoj rad, uključujući prošlonedeljni napredak, i razmišlja o načinima da poboljšaju svoj proces.

Mjesečni ciklus: Tim svakog mjeseca razmatra i identificira mogućnosti poboljšanja u svom procesu. Klijent bira jednu ili više tema za taj mjesec, zajedno sa analizama u tim temama.

Kako početi raditi s ekstremnim programiranjem?
Tehničke vještine i XP navike može biti teško naučiti. Neke od praksi mogu se činiti stranim programerima koji na njih nisu navikli.

Ercole Palmeri

Inovacijski bilten
Ne propustite najvažnije vijesti o inovacijama. Prijavite se da ih primate putem e-pošte.

Nedavni članak

Veeam nudi najsveobuhvatniju podršku za ransomware, od zaštite do odgovora i oporavka

Coveware od strane Veeam-a će nastaviti da pruža usluge odgovora na incidente u slučaju sajber iznude. Coveware će ponuditi mogućnosti forenzike i sanacije…

23 april 2024

Zelena i digitalna revolucija: Kako prediktivno održavanje transformira industriju nafte i plina

Prediktivno održavanje revolucionira sektor nafte i plina, s inovativnim i proaktivnim pristupom upravljanju postrojenjima.…

22 april 2024

Britanski antimonopolski regulator podigao je BigTech uzbunu zbog GenAI

UK CMA izdao je upozorenje o ponašanju Big Tech-a na tržištu umjetne inteligencije. Tamo…

18 april 2024

Casa Green: energetska revolucija za održivu budućnost u Italiji

Uredba o „zelenim kućama“, koju je formulisala Evropska unija za poboljšanje energetske efikasnosti zgrada, završila je svoj zakonodavni proces sa…

18 april 2024