Ekstremno programiranje
Ekstremno programiranje (XP) je agilni jezik uzora za razvoj softvera u timu, koji čini sinergija uspostavljenih vrednosti tima i principa koji podržavaju ove vrednosti kroz praktične mehanizme funkcionisanja timskog rada i aktivnosti kojima se tim bavi. Cilj ove sinergije je uspostavljanje visokog nivoa kvaliteta i odziva na promene.
Iako ekstremno programiranje nije bilo prva metoda agilnog razvoja softvera, ono popularizuje i omasovljava upotrebu agilnih metoda. Ekstremno programiranje je kreirao Kent Bek (engl. Kent Beck) 1996. godine kao način prevazilaženja problema i spašavanja projekta C3 (engl. Chrysler Comprehensive Compensation System). Iako je taj projekat, posle skromnog i delimičnog uspeha, na kraju ipak otkazan, Ron Jeffries, Ward Cunningham i Kent Beck su ovu metodu preradili u javnoj diskusiji na Cunningham-ovom Portland Pattern Repository viki sajtu koji je ujedno i prvi viki sajt. Godine 1999. izlazi Bekova knjiga “Ekstremno programiranje objašnjeno (engl. Extreme Programming Explained)”. Elementi ekstremnog programiranja se u početku zasnivaju na metodi Scrum i Cunnigham-ovim jezicima uzora.
Do danas, sve veći broj softverskih kompanija prelazi na ekstremno programiranje. Vid njihovog organizovanja može biti drugačiji u svakom konkretnom slučaju i za svaki pojedinačni zahtev, jer ekstremno programiranje ne predstavlja krutu metodologiju, ili metodu, već je to ipak jezik uzora koji dozvoljava taktičke izmene u proceduri i sekvenci izvođenja pojedinih aktivnosti. Zajedničko za sve je korišćenje obaveznih praktičnih mehanizama. Čak i sprovođenje tih praksi podleže adaptacijama, zavisno od potrebe, što i jeste osnovna odlika uzora kao novog načina naučnog sagledavanja pojava koje se proučavaju.
Vrednosti
уредиVrednosti trebaju biti osnovni motiv i pokretači svakog posla koji tim preduzima. Bez stalnog napora da se dostignu vrednosti, XP tim se suočava sa većom verovatnoćom propasti projekta. Osnovne vrednosti svakog tima koji preduzima XP projekat su sledeće:
- Komunikacija
- Jednostavnost
- Povratna sprega
- Hrabrost
- Poštovanje
Komunikacija
уредиGlavni problemi u timu često potiču od nedostatka komunikacije. Na taj način se sprečava protok informacija i potstiče softverska entropija, koji je glavni neprijatelj uspehu projekta. Razvoj komunikacije među članovima tima, komunikacije sa rukovodstvom, a što je i najbitnije, razvoj komunikacije sa klijentima treba da bude najprioritetniji zadatak svakoga u timu.
Jednostavnost
уредиPosvećenost jednostavnosti je definitivno jedna kontroverzna vrednost od velikog značaja za XP tim. Bez jednostavnosti nema evolutivnog pristupa dizajnu, niti brzog odziva na promene, što se nalazi u jezgru XP-a.
Povratna sprega
уредиPovratna sprega je važna, jer omogućuje povratnu informaciju, kao indikator za evaluaciju. Povratna sprega sa klijentima, drugim programerima, konkretnim kodom i dosadašnjim sistemom čine vrednost koju vredi negovati.
Hrabrost
уредиBez hrabrosti nema uspešnog rada. To je hrabrost za prihvatanje promena, hrabrost za promovisanje ideja, kao i hrabrost za odbacivanjem delova koda i ponovnim početkom, ako se pokaže potrebnim.
Poštovanje
уредиIz svih ovih vrednosti proizilazi poštovanje. Ono se odnosi na poštovanje kolega u timu. Ko vodi računa o prethodnim vrednostima, sigurno dobija poštovanje ostalih. U XP timu niko ne sme biti zapostavljen, ili odbačen, pre svega zato što to vodi lošoj atmosferi u timu i izaziva opadanje zainteresovanosti za realizacijom projekta. Na taj način se projekat ugrožava i u najgorem slučaju, napušta.
Principi
уреди- Brza povratna sprega
- Pretpostavljena jednostavnost
- Postepene promene
- Prihvatanje promena
- Kvalitetan rad
Aktivnosti
уредиDa bi se dostigle vrednosti ekstremnog programiranja kroz principe, moraju se sprovoditi aktivnosti pomoću kojih bi se te vrednosti implementirale u ponašanje i rad tima. U XP se sprovodi četiri vrste takvih aktivnosti:
- Kodiranje
- Slušanje
- Testiranje
- Dizajn (Projektovanje)
Kodiranje
уредиIzvorni kod programa je ujedno komunikaciono sredstvo i mera uspeha pomoću koje se vrši evaluacija dostignutih ciljeva. Samo je kod koji radi relevantan pokazatelj da je XP tim na dobrom putu ka željenoj realizaciji projekta. Jedino kroz kod se na pravi način mogu plasirati i pokazati ideje i objasniti zamisli. Izvorni kod je alat razvojnog dizajna, komunikacije, implementacije i testiranja.
Slušanje
уредиProgrameri su, po pravilu, neznalice za probleme klijenta. Oni treba tako sebe da shvataju i da učestvuju u razgovoru aktivnim slušanjem. Aktivno slušanje podrazumeva slušanje i usmeravanje klijenta ka što jasnijem predstavljanju zahteva. Klijenti nisu dobri u razlikovanju vrednog i bitnog od manje vrednog, ili važnog. Neophodan je sistem rangiranja i ponderisanja priča korisnika kako bi i on sam, vremenom, shvatio način na koji to funkcioniše.
Testiranje
уредиSrce XP je razvoj vođen testovima (engl. Test driven development—TDD) koji podrazumeva stalno i prevashodno testiranje napisanog koda. XP programer ne zna koliko treba da programira do završetka ako nema test. Test se piše pre koda, a nakon toga se piše izvorni kod koji treba da zadovolji taj test. Kada kod zadovolji test, tek se onda ide dalje. Refaktorisanjem se ovaj kod dalje prečišćava i pojednostavljuje, ali osnovno je da test koji je jednom prošao mora stalno da prolazi, pri svim sledećim izmenama. Osim ovakvog modularnog (engl. unit) testiranja postoje i funkcionalni testovi kroz test primere (engl. test case) koje izvodi sam klijent. Testovi korisnosti i korisničkog interfejsa se takođe izvode kod klijenta.
Dizajn (Projektovanje)
уредиZa razliku od dosadašnjeg planskocentričnog pristupa gde se prvo planiralo, projektovalo, pa tek onda implementiralo, XP gaji evolutivni pristup dizajnu. Sva poboljšanja se razbijaju na što manje delove i onda dodaju na jezgro koje tako postaje sve šire i kompleksnije. To se radi u malim iteracijama. Posle svake iteracije se projekat objavljuje i predaje klijentu na dalje testiranje.
Obavezna praksa
уредиPostoji dvanaest praktičnih mehanizama kojih se treba držati do ekstrema pri razvoju softvera pomoću XP. To su:
- Programiranje u paru
- Paniranje igre
- Razvoj vođen testovima (TDD)
- Celokupnost tima
- Stalna integracija
- Poboljšanje dizajna (refaktorisanje)
- Male verzije
- Standardi kodiranja
- Kolektivno vlasništvo koda
- Jednostavan dizajn
- Metafora u sistemu
- Održivi korak
Svi ovi praktični mehanizmi moraju biti motivisani i vođeni vrednostima, bez toga projekat može da propadne.
Vidi još
уредиSpoljašnje veze
уредиBibliografija
уреди- Kent Beck: Extreme Programming Explained: Embrace Change, Addison-Wesley,. ISBN 978-0-201-61641-5
- Kent Beck and Martin Fowler: Planning Extreme Programming, Addison-Wesley,. ISBN 978-0-201-71091-5
- Martin Fowler: Refactoring: Improving the Design of Existing Code, Addison-Wesley,. ISBN 978-0-201-48567-7