Agilne metode razvoja programske opreme

Agilni razvoj je skupek metod za razvoj programske opreme, po katerih se zahteve in rešitve prilagajajo med sodelovanjem samoorganiziranih in multi-funkcijskih timov. Promovira prilagodljivo planiranje, niz dobrih inženirskih praks, hitro dostavo rešitev, nenehne izboljšave in spodbuja hitro prilagodljivost na spremembe.

Zgodovina uredi

Najprej so se metode agilnega programiranja imenovali lahke metode (“Lightweight”). Leta 2001 pa so se v mestu Snowbird (Utah, USA) zbrali izkušeni inženirji programske opreme in prvič uporabili ime “agilne metode”. Nekateri od njih so kasneje ustanovili neprofitno organizacijo “The Agile Alliance”, katere cilj je promoviranje agilnega razvoja. Avtorji agilne metodologije so ustvarili manifest agilnih metodologij, ki predpisuje principe in postopke, katere bi morale upoštevati vse agilne metode.

Zgodovinsko pomembne metode uredi

Prve agilne metode, ki so nastale že pred letom 2000:

Najbolj poznane metode uredi

Primerjava z drugimi metodami uredi

Agilne metode se značajsko razlikujejo od zgodnjih načrtno-usmerjenih inženirskih metod. Najočitnejša razlika je vztrajanje pri manj popolnejši dokumentaciji za dani problem. Namesto dokumentaciji, se agilne metode bolj posvečajo sami kodi kot ključnemu delu dokumentacije.

A vseeno je takšno videnje agilnih metod površno. Je le posledica mnogo globljih razlik, ki so po Martinu Fowler-ju naslednje:

  • agilne metode so prilagodljive
  • agilne metode so orientirane k ljudem in ne k procesom

Prilagodljivo programiranje je nasprotno od prediktivnega, nekje med njima pa se nahaja iterativno programiranje. Kljub temu tudi prilagodljivo ni popolnoma nepredvidljivo, temveč se trudi ohraniti pametno razmerje med stroški in pretirano predvidljivostjo. Kot protiutež predvidljivosti služi velika mera fleksibilnosti, tj. prilagodljivost spremembam v okolju.

Ko se menja projekt, se hkrati z njim menja tudi prilagodljiva ekipa. Prilagodljiva ekipa razvijalcev ima problem natančno predvideti razvijanje problema v prihodnosti. Prilagodljiva ekipa zna predvideti, kaj se bo s projektom dogajalo v bližnji prihodnosti, večji problem pa ima z napovedovanjem, kaj se bo z njim dogajalo v roku enega meseca oz. imajo le bled obris aktivnosti. Pričakovanja o tem, kaj se bo dogajalo v prihodnje pol leta pa vključujejo zgolj pričakovane rezultate v odvisnosti od zahtev strank ter funkcionalnosti, ki naj jih vključuje naslednja različica programske opreme.

V nasprotju z agilnimi metodami programiranja, se prediktivne metode koncentrirajo na striktno načrtovanje prihodnosti. Takšne ekipe točno vedo, katere vsebine in aktivnosti so planirane v posameznem obdobju realizacije programske opreme, a se obenem težko prilagodijo spremenjenim karakteristikam projekta. Načrt, ki ga postavijo v začetku in kateremu sledijo do konca razvoja namreč ne predvideva radikalnejših sprememb, a če do njih vseeno pride, lahko to vzrokuje zavrnitvi dotedanjega dela in ponovnemu začetku razvoja. Ekipe, ki delajo po prediktivnih metodah razvoja pogosto nadzoruje posebna komisija za kontrolo sprememb, ki jim omogoča ugotavljanje najbolj pomembnih sprememb.

Inženirske (predvidljive) metode definirajo procese, ki naj bi delovali ne glede na razvojni tim, medtem ko agilne metode predpostavljajo, da sam proces sme biti pomembnejši od izkušenj razvojnega moštva. Zato je posledično cilj procesa tisti, ki naj le podpira delo posameznega razvojnega moštva. Agilen razvoj programske opreme do daneš še ni najbolj preizkušen, a za nekatere specifične razvojne situacije je njihova uporabnost že zdaj močno vprašljiva.

Primeri situacij v katerih agilne metodologije preverjeno niso učinkovite:

  • velike razvojne ekipe s preko 20 sodelavci
  • virtualne in distribuirano organizirane ekipe (beri: brez direktnega, fizičnega osebnega stika)
  • tvegani, ključni problemi od katerih je odvisen širši razvoj ali celo življenja

Agilne metode in razvoj drugih produktov uredi

Agilne metode razvoja programske opreme so odvisne od nekaterih posebnih lastnosti značilnih le za programsko oprema, kot npr. objektne tehnologije in zmožnost avtomatičnega testiranja. Kakorkoli, podobne tehnike ali metode so bile razvite tudi za razvoj drugih produktov, ki niso povezani z razvojem programske opreme, kot so razvoj polprevodnikov, motornih koles ali kemikalij.

Funkcionalni principi agilnega razvoja izvirajo iz t. i. »lean manufacturing-a« in »six sigma«. Ti koncepti vključujejo pregledovanje napak, odstranitev nepotrebnih reči, ustvarjanje toka, dodajanje strankine vrednosti in dodelitve moči zaposlenim. Koncepti večinoma izvirajo iz avtomobilske industrije, natančneje iz podjetja Toyota.

Viri uredi

Zunanje povezave uredi