uporaba agilne metodologije »scrum« pri ...scrum je empirična tehnika vodenja, za katero je...
TRANSCRIPT
-
UNIVERZA V LJUBLJANI
EKONOMSKA FAKULTETA
MAGISTRSKO DELO
UPORABA AGILNE METODOLOGIJE »SCRUM«
PRI RAZVOJU DRŽAVNEGA PORTALA
ZA POSLOVNE SUBJEKTE
Ljubljana, oktober 2011 MANJA ROJKO
-
IZJAVA
Študentka Manja Rojko izjavljam, da sem avtorica tega magistrskega dela, ki sem ga
napisala v soglasju s svetovalcem prof. dr. Mira Gradišarja in da v skladu s 1. odstavkom
21. člena Zakona o avtorskih in sorodnih pravicah dovolim njegovo objavo na fakultetnih
spletnih straneh.
V Ljubljani, dne 27.10.2011 Podpis:
-
i
KAZALO
UVOD ................................................................................................................................... 1
1 IZBIRA IN UPORABA METODOLOGIJE RAZVOJA
INFORMACIJSKEGA SISTEMA .................................................................................. 5
1.1 Metodologija razvoja ................................................................................................. 5
1.2 Kaj vpliva na izbiro metodologije ............................................................................. 6
1.2.1 Delitev glede na tip metodologije ...................................................................... 7
1.2.2 Delitev glede na težo metodologije ................................................................. 10
1.2.3 Delitev glede na utežitev metodologije ........................................................... 11
2 AGILNE METODOLOGIJE ........................................................................................ 13
2.1 Glavna načela agilnih metodologij .......................................................................... 13
2.1.1 Posamezniki in njihova komunikacija so pomembnejši kot procesi in orodja 13
2.1.2 Delujoča programska oprema je pomembnejša kot popolna dokumentacija .. 14
2.1.3 Sodelovanje uporabnika je pomembnejše kot pogajanje na osnovi pogodb ... 14
2.1.4 Upoštevanje sprememb je pomembnejše od sledenja načrtu .......................... 14
2.2 Vrste agilnih metodologij ........................................................................................ 15
2.2.1 Ekstremno programiranje (XP) ....................................................................... 15
2.2.2 Metoda DSDM ................................................................................................ 17
2.2.3 Metoda FDD .................................................................................................... 19
2.2.4 Metoda ASD .................................................................................................... 20
2.2.5 Crystal Clear .................................................................................................... 21
2.2.6 Scrum ............................................................................................................... 21
3 PRIMERJAVA TRADICIONALNE Z AGILNIMI METODOLOGIJAMI ........... 22
3.1 Karakteristike tradicionalnih metodologij ............................................................... 23
3.2 Karakteristike agilnih metodologij .......................................................................... 24
3.3 Omejitve tradicionalnih metodologij ....................................................................... 25
3.4 Omejitve agilnih metodologij .................................................................................. 26
3.5 Primerjava tradicionalne z agilnimi metodologijami .............................................. 28
3.5.1 Velikost projekta ............................................................................................. 29
3.5.2 Ljudje ............................................................................................................... 31
3.5.3 Tveganje .......................................................................................................... 32
4 PREDSTAVITEV METODOLOGIJE SCRUM ......................................................... 33
4.1 Opis metodologije ................................................................................................... 34
4.2 Struktura metodologije Scrum ................................................................................. 37
4.2.1 Načrtovanje in določitev arhitekture sistema .................................................. 37
4.2.2 Iteracija sprinta (iteracija teka) ........................................................................ 38
4.2.3 Zaključek in priprava na naslednji projekt ...................................................... 39
4.3 Dostava končnega izdelka ....................................................................................... 39
4.4 Vloge in odgovornosti ............................................................................................. 39
4.5 Proces razvoja po metodologiji Scrum .................................................................... 40
-
ii
4.5.1 Vizija ............................................................................................................... 41
4.5.2 Seznam zahtev ................................................................................................. 41
4.5.3 Sprint ............................................................................................................... 42
4.5.4 Sestanki ............................................................................................................ 42
4.5.5 Izdelki Scrum ................................................................................................... 43
4.6 Prednosti in slabosti Scrum ..................................................................................... 45
4.6.1 Prednosti Scrum ............................................................................................... 46
4.6.2 Slabosti Scrum ................................................................................................. 47
5 DOSEDANJE VODENJE RAZVOJA DRŽAVNEGA PORTALA ZA
POSLOVNE SUBJEKTE ............................................................................................... 48
5.1 Projektna organiziranost .......................................................................................... 48
5.2 Življenjski cikel vodenja projektov ......................................................................... 50
5.2.1 Vzpostavitev projekta ...................................................................................... 50
5.2.2 Načrtovanje projekta........................................................................................ 50
5.2.3 Izvajanje projekta ............................................................................................ 50
5.2.4 Zaključevanje projekta .................................................................................... 51
5.3 Proces razvoja informacijskih rešitev ...................................................................... 52
5.3.1 Določitev zahtev .............................................................................................. 52
5.3.2 Analiza ............................................................................................................. 53
5.3.3 Zagotovitev pogojev za izvedbo ...................................................................... 53
5.3.4 Načrtovanje ...................................................................................................... 54
5.3.5 Izgradnja .......................................................................................................... 54
5.3.6 Integracija in testiranje .................................................................................... 55
5.3.7 Izvedba............................................................................................................. 56
6 UPORABA AGILNE METODE SCRUM PRI RAZVOJU DRŽAVNEGA
PORTALA ZA POSLOVNE SUBJEKTE .................................................................... 56
6.1 Organizacijske spremembe pri prevzemanju agilne prakse .................................... 56
6.1.1 Spremembe v organizacijski kulturi ................................................................ 56
6.1.2 Spremembe v načinu vodenja .......................................................................... 57
6.1.3 Spremembe glede upravljanja znanja .............................................................. 57
6.1.4 Sprememba razvojnega procesa ...................................................................... 57
6.2 Velikost projekta ..................................................................................................... 58
6.3 Praktični vidiki uporabe nove metodologije ............................................................ 58
6.4 Prenovljen proces metodologije razvoja državnega portala za
poslovne subjekte ..................................................................................................... 59
6.4.1 Začetek projekta .............................................................................................. 60
6.4.2 Analiza ............................................................................................................. 60
6.4.3 Oblikovanje ..................................................................................................... 62
6.4.4 Postopen razvoj programske rešitve ................................................................ 62
6.4.5 Mejniki in zaključek projekta .......................................................................... 67
6.4.6 Vzdrževanje in podpora uporabnikom ............................................................ 67
-
iii
6.5 Dokumentacija ......................................................................................................... 67
6.6 SWOT analiza vpeljave nove metodologije razvoja ............................................... 68
6.6.1 Prednosti vpeljave metodologije Scrum .......................................................... 69
6.6.2 Slabosti vpeljave metodologije Scrum ............................................................ 70
6.6.3 Priložnosti vpeljave metodologije Scrum ........................................................ 71
6.6.4 Nevarnosti vpeljave metodologije Scrum ....................................................... 71
SKLEP ................................................................................................................................ 73
LITERATURA IN VIRI ................................................................................................... 76
-
iv
KAZALO SLIK
Slika 1: Prisotnost dejavnikov, ki vplivajo na razvoj informacijskega sistema .................... 7
Slika 2: Delitev metodologij glede na tip .............................................................................. 8
Slika 3: Določitev teže metodologije................................................................................... 10
Slika 4: Življenjski cikel XP procesa .................................................................................. 17
Slika 5: Življenjski cikel procesa DSDM ............................................................................ 18
Slika 6: Aktivnosti metodologije FDD ................................................................................ 20
Slika 7: Življenjski cikel po metodologiji ASD .................................................................. 20
Slika 8: Problem velikosti projekta in vpliv metodologije na število ljudi ......................... 30
Slika 9: Učinki glede na velikost projekta ........................................................................... 31
Slika 10: Scrum proces ........................................................................................................ 37
Slika 11: Pregled procesa razvoja po metodologiji Scrum .................................................. 41
Slika 12: Sestava seznama zahtev ....................................................................................... 43
Slika 13: Padajoči graf Scrum ............................................................................................. 44
Slika 14: Primer plana sprinta Scrum .................................................................................. 45
Slika 15: Prenovljen razvojni proces programske rešitve ................................................... 59
Slika 16: SWOT analiza vpeljave metodologije Scrum ...................................................... 68
KAZALO TABEL
Tabela 1: Primerjava tradicionalne z agilnimi metodologijami .......................................... 29
Tabela 2: Projektne značilnosti agilnih in tradicionalnih metodologij ................................ 32
Tabela 3: Vloge na projektu in njihove odgovornosti ......................................................... 48
-
1
UVOD
Opredelitev problema. Metodologijo lahko na splošno opredelimo kot: »...skupek
postopkov, tehnik, orodij in pripomočkov za dokumentiranje, ki koristijo razvijalcem
sistema pri njihovem prizadevanju implementirati nov informacijski sistem. Metodologijo
sestavljajo faze, ki so same sestavljene iz podfaz in ki vodijo razvijalce sistema pri izbiri
tehnik, ki so primerne v vsaki fazi projekta, ter jim pomagajo načrtovati, upravljati,
kontrolirati in ocenjevati projekte razvoja informacijskih sistemov.« (Avison & Fitzgerald,
1996, str. 10).
V primeru razvoja informacijskega sistema ali programske opreme metodologija ne
pomeni zgolj postopkov, ki so neposredno povezani z razvojem (na primer. analiza,
načrtovanje itn.), temveč zajema tudi podporne postopke, načine kom
unikacije med sodelujočimi, pravila odločanja itn. Glede na to lahko metodologijo
opredelimo tudi kot množico dogovorov, ki jih sprejme projektna skupina/organizacija.
Obstajajo številne formalne metodologije, ki temeljijo na preizkušenih postopkih, ki so se
v praksi izkazali kot dobri. Vendar si jih organizacije pri prevzemu vedno prilagodijo po
svoji meri, tako da ustrezajo njihovemu načinu dela ter percepciji domene, za katero so
vzpostavljene (Bajec & Krisper, 2003, str. 2).
Skozi čas so se pojavile različne metodologije razvoja informacijskih sistemov in
programske opreme. Njihov namen je bil odpraviti prepad med kupci oziroma naročniki in
dobavitelji/izvajalci. Prve metodologije so temeljile na jasno definiranih postopkih, ki
vodijo delo razvijalcev tako, da poskušajo analizirati čim večji del potreb naročnika in jih
nato implementirati kot funkcionalnosti v informacijsko rešitev. Vendar se pri vseh
podjetjih takšen pristop ni izkazal za uspešnega. Vse bolj je postajalo jasno, da sledenje
okornim postopkom in ustvarjanje velikih količin dokumentov, ki opisujejo delovanje
sistema, ne more zagotoviti dobre rešitve v poslovnem okolju, v katerem se posamezni
parametri nenehno spreminjajo. Kljub kakovosti, ki jo takšne metodologije navadno
dosegajo, je njihova uporaba v praksi omejena, saj jim z željo po čimprejšnjih rezultatih
težko sledimo.
Kot rezultat in odgovor na celovite, večinoma težko obvladljive metodologije, ki proces
razvoja predpišejo do vsake najmanjše podrobnosti, se pojavi nov pojem »agilnost«. Novi
trendi priporočajo zasnovo in uporabo prilagodljivih metodologij, ki so predpisljive v
ravno pravšnji meri ter so hitro in enostavno prilagodljive. Tudi agilni razvoj ni
univerzalna rešitev mnogih težav pri razvoju informacijskih sistemov. Le-ta deluje najbolje
tam, kjer je poslovno okolje turbulentno, kjer se specifikacije in zahteve naročnika
nenehno spreminjajo in tam, kjer so razvojne skupine razmeroma majhne (Bajec &
Krisper, 2003, str. 1).
-
2
Pobudniki in razvijalci agilne metodologije so sestavili seznam skupnih značilnosti, ki
uvrščajo določeno metodologijo med agilne. Te značilnosti so iteracija (vključuje poskus
in napako); kratek cikel razvoja (nekaj dni do nekaj tednov); minimalno delo in
preprostost; preglednost (Emergence) – sinergija, samoorganizacija, podporno okolje;
dojemanje rizika kot priložnosti; osredotočenost na ljudi (uporabnik, tim, dobri ljudje);
sodelovanje in komunikacija ter dovolj velika agilnost za odziv na turbulentno in
spreminjajoče se okolje (Dalcher, 2006, str. 12). Čeprav se agilni pristop najbolje odziva
pri projektih, kjer so težave, ki nastajajo, hitre, spremenljive in nestanovitne (Highsmith &
Cockburn, 2002), agilni manifest podpira tudi dokumentiranje, vendar le v obsegu
uporabnosti. Agilni manifest prav tako bolj poudarja ljudi kot zgolj proces in orodja
razvoja; delujoč program bolj kot popolno dokumentacijo; sodelovanje z naročnikom bolj
kot pogajanja na osnovi pogodb in prožnost pri spremembah bolj kot slepo sledenje
začrtanemu planu (Agile manifesto, 2010).
Med agilne metodologije uvrščamo tudi Scrum, ki se je razvila za uspešnejše upravljanje
projektnega dela razvojnega procesa. Scrum poudarja prožnost, prilagodljivost,
ustvarjalnost in ne določa uporabe specifične tehnike pri razvoju. Omejuje se le na delo
posameznika v skupini za doseg nekega cilja, ki je agilni razvoj v stalno spreminjajočem se
okolju zahtev. Scrum je empirična tehnika vodenja, za katero je realnost pomembnejša od
načrtov in pri kateri je potrebno nenehno sodelovanje, zaupanje v ljudi in napredek.
Metodologija združuje vse skupne lastnosti agilnih metodologij, njena posebnost pa je
organizacija ter izvajanje vodenja in hkrati obvladovanje projektnega tima. Uporaba
metode Scrum temelji na realizaciji realno mogočega, dnevnega preverjanja napredka in
pogostih korektur. Bistvo metode so majhni projektni timi z največ deset ljudi, serija
sprintov, vidne in uporabne nadgradnje ter časovno omejevanje (Schwaber & Beedle,
2002).
Državni portal za poslovne subjekte je projekt, ki ga je razpisala Državna uprava. To
pomeni, da mora razvoj omenjenega informacijskega sistema oziroma informacijske
rešitve potekati po metodologiji, ki je določena s strani Državne uprave Republike
Slovenije. Le-ta je v letu 2000 določila enotno metodologijo za razvojne projekte
informacijskih sistemov, poimenovano EMRIS. EMRIS je nastal iz potrebe po enotnem,
urejenem, sistematičnem in celovitem pristopu k razvoju informacijskih sistemov v okviru
državne uprave. Skupaj z Metodologijo vodenja projektov v državni upravi za področje
informacijske tehnologije (MVPDU/IT) predstavlja podlago za obvladovanje projektov
izdelave strateških planov informacijskih sistemov in projektov razvoja informacijskih
sistemov. EMRIS je referenčna metodologija, ki poleg metodoloških opisov predstavlja
tudi podrobno opisani proces razvoja. Ta preko faz, aktivnosti in opravil podrobno
predstavlja bogat nabor izdelkov, ki morajo nastati v okviru razvoja informacijskega
sistema. S tem pa tudi opozarja na vse elemente, za katere je potrebno poskrbeti v okviru
razvoja informacijskega sistema. Metodologija EMRIS nudi celovito metodološko podporo
-
3
za celoten življenjski cikel informacijskega sistema, ki poteka v smeri: zasnova, razvoj,
vpeljava in vzdrževanje. Seveda pa je od posameznega projekta odvisno kakšen pristop,
kateri postopki, opravila in kako podrobno bodo na konkretnem projektu uporabljeni.
Uporabo agilnih konceptov tako priporoča tudi EMRIS, saj se s tem lahko doseže, da se
bodo v okviru projekta razvoja izvajala le tista opravila in v takšnem obsegu, ki bodo v
trenutnih okoliščinah projekta dejansko prispevala h končnemu rezultatu (Zrnec, Vavpotič,
Rupnik, Bajec & Krisper, 2004, str. 1–2).
Odločitev glede izbire metodologije vodenja projekta pred začetkom njegovega izvajanja
je zelo pomembna, saj je od izbire metodologije odvisen predvsem način vodenja in
poročanja tako naročniku kot tudi upravi podjetja. V našem primeru je izbira metodologije
pogojena z metodologijo naročnika projekta in z ustaljenim načinom dela v organizaciji.
Izbira metodologije vodenja ni odločitev vodje projekta, saj bi bilo za podjetje
neobvladljivo, če bi vsak vodja projekta vodil projekt po svoji izbrani metodologiji. To bi
predvsem povzročilo neenotnost poročanja vodstvu podjetja ter težave v primeru
nadomeščanja odsotnosti. Poleg tega se projekti razlikujejo tudi glede organizacije in
vodenja ter imajo tudi različne cilje.
V podjetju SRC d.o.o. je vodja projekta pri izbiri metodologije projekta pri razvoju sistema
e-VEM omejen tudi z metodologijo vodenja, ki se uporablja v podjetju in je za vse projekte
obvezujoča. Metodologija se imenuje Metodologija vodenja projektov (v nadaljevanju
MVP) in sloni na temeljih institucije Project management Institute (v nadaljevanju PMI) in
Project Management Body of Knowledge (v nadaljevanju PMBOK) kot osnovnem viru. Iz
tega razloga je metodologija MVP tudi najbolj podobna in primerljiva z metodologijo
PMBOK. Na drugi strani pa vodjo omenjenega projekta obvezuje tudi enotna metodologija
razvoja informacijskih sistemov (v nadaljevanju EMRIS), ki jo je določil naročnik.
Izvedba projekta je običajno vezana na kratek rok in jo zaznamuje precejšnje število
neznank. Iz tega razloga je potrebno izbrati metodologijo, ki bo omogočala čim boljše in
hitrejše prilagajanje, ter čim bolj zadovoljila zahteve naročnika.
Namen in cilji dela. Z magistrskim delom želim analizirati stanje in trenutni način vodenja
razvoja informacijskih projektov in predstaviti razloge, ki vodijo k vpeljavi nove, agilne
metodologije razvoja informacijskega sistema. Prav tako pa želim tudi predstaviti način
uporabe nove metodologije na konkretnem projektu.
Namen magistrskega dela je predstaviti teoretične osnove in različne metode razvoja
informacijskih sistemov in programskih rešitev ter ugotoviti, ali se lahko prvine in metode
agilnega razvoja uporabijo na primeru nadaljnjega razvoja Državnega portala za poslovne
subjekte (e-VEM). Z uvedbo oziroma sintezo agilnega razvoja in sedanje standardne
-
4
metodologije želim namreč doseči boljšo zadovoljitev naročnika, večjo prilagodljivost,
hitrejši razvoj in boljšo upravičenost stroškov, povezanih z razvojem informacijskega
sistema oz. programske rešitve.
Končni cilj magistrskega dela je vpeljava metodologije razvoja Državnega portala za
poslovne subjekte (e-VEM), ki temelji na agilnem pristopu SCRUM.
Metode dela. Pri izdelavi magistrske naloge bom uporabila znanje, pridobljeno med
študijem in znanje, ki sem ga pridobila na delovnem mestu. Teoretično znanje bom tako
podprla z lastnimi izkušnjami, ki sem jih glede izbrane tematike pridobila pri izvajanju
vsakodnevnih nalog na delovnem mestu. V pomoč mi bo tudi trenutno dostopna tiskana in
spletna literatura ter interni viri podjetja z obravnavanega področja.
Pri pripravi magistrskega dela se bom v praktičnem delu omejila na konkretni projekt
razvoja portala za poslovne subjekte (e-VEM).
V prvem delu bom uporabila deskriptivno metodo na podlagi domače in tuje literature ter
člankov in na podlagi lastnih izkušenj. V pomoč mi bodo tudi interni viri, ki so nastali v
podjetju, ki je predstavljeno v magistrskem delu.
S komparativno metodo in metodo kritične analize bom primerjala klasične in agilne
metodologije razvoja programske opreme. Primerjala bom tudi obstoječo metodo vodenja
razvoja programske opreme, ki se trenutno uporablja v podjetju, z agilno metodo Scrum.
Uporabila bom tudi metodo sinteze, s katero bom oblikovala način vpeljave nove
metodologije.
Celotna magistrska naloga bo razdeljena na tri dele.
V prvem delu bom podala teoretična izhodišča, temelječa na podlagi prebiranja strokovne
domače in tuje literature ter prispevkih in člankih na temo obstoječih metodologij razvoja
informacijskega sistema in programske opreme.
V drugem delu bom predstavila metodologijo razvoja portala za poslovne subjekte (e-
VEM), ki se v podjetju uporablja sedaj.
V tretjem delu bom obravnavala praktični primer uvedbe nove metodologije razvoja
programske rešitve preko vseh potrebnih faz. Na koncu bom podala še ugotovitve glede
prednosti, slabosti, priložnosti in nevarnosti uporabe nove metodologije vodenja razvoja
programske opreme.
-
5
1 IZBIRA IN UPORABA METODOLOGIJE RAZVOJA
INFORMACIJSKEGA SISTEMA
1.1 Metodologija razvoja
Metodologija je skupek vsega kar počnemo s ciljem doseči želeni rezultat. V primeru
razvoja metodologija predstavlja postopke, ki so neposredno povezani z razvojem (sem
spadajo analiza, načrtovanje,...) kakor tudi podporne postopke, komunikacijo med
sodelujočimi, pravila odločanja, itn. Metodologija vsebuje tudi sociološko komponento, ki
se izkazuje preko filozofije, načel, idej in pogledov organizacije in njenih zaposlenih.
Metodologija je namreč odvisna tudi od ljudi (Bajec, & Krisper, 2003, str. 2).
Cockburn (2002) je izpeljal definicijo metodologije za razvoj programske opreme.
Metodologijo razvoja je tako opredelil kot skupek postopkov znotraj neke discipline, ki se
pri razvoju programske opreme uporabijo večkrat in zajemajo več področij (projektno
vodenje, analiza, specifikacija, razvoj, koordiniranje, testiranje, ipd.).
Avison in Fitzgerald (1995) ugotavljata, da je metodologija več kot le skupek njenih
sestavin in da je osnovana na nekem filozofskem pogledu. Sicer pa se metodologija ne
razlikuje od metode. Metodologije se lahko med seboj razlikujejo v posameznih tehnikah,
ki jih priporočajo, v postopkih, ki jih predpisujejo ali v vsebini posamezne faze. Včasih pa
gre celo za bolj fundamentalne razlike. Nekatere metodologije poudarjajo človeške vidike
razvoja informacijskih sistemov, druge so bolj osredotočene na znanstveni pristop.
Nekatere so pragmatične, spet druge skušajo avtomatizirati čim več dela pri razvoju
projekta. Različne metodologije lahko sledijo različnim ciljem, kot so na primer (Avison &
Fitzgerald, 1995, str. 11):
Natančno zabeležiti zahteve informacijskega sistema. Metodologija pomaga
uporabnikom določiti njihove zahteve in funkcionalne potrebe. Razvijalci sistema
preučujejo in analizirajo uporabniške zahteve.
Določiti sistematično metodo razvoja, kjer se lahko napredek učinkovito meri in
opazuje. Težave pri velikih projektih, ki niso izvedeni v rokih, lahko podjetju
povzročijo finančne stroške ali privedejo do drugih posledic za podjetje. K učinkovitosti
tehnik načrtovanja projekta pripomorejo dobro načrtovane faze razvoja in vmesni cilji v
metodologiji.
Izdelava informacijskega sistema v okviru časovnega roka pri sprejemljivih stroških.
Čas namenjen posameznim tehnikam naj bo omejen, sicer je mogoče iskanju popolnosti
posvetiti ogromno časa (Kovačič, 1998, str. 90).
Izdelava sistema, ki je dobro dokumentiran in ga je preprosto vzdrževati. Spremembe v
organizaciji in njenem okolju lahko posledično pomenijo nadaljnji razvoj in
-
6
modifikacijo informacijskega sistema. Dobra dokumentacija omogoča izvedbo
modifikacij sistema z najmanj vpliva na druge dele sistema.
Ugotoviti spremembe, ki jim bo potrebno slediti čim bolj zgodaj v procesu razvoja
sistema. S tem, ko razvoj sistema napreduje skozi faze analize in načrtovanja do faze
implementacije, se stroški, povezani s spremembami sistema, povečujejo. Prej ko
realiziramo spremembe, manjši so stroški projekta.
Izdelava sistema, ki ustreza ljudem, na katere sistem vpliva. Bolj verjetno je, da bo
sistem bolj uspešen in da se bo bolj uporabljal, če bo ustrezal naročnikom, strankam,
managerjem, uporabnikom.
Naštetih je le nekaj primerov ciljev, katerim lahko metodologija sledi. Metodologija se
lahko osredotoča na več ciljev ali zgolj na enega. Pomembno pa je razumevanje, da se v
ozadju vsake metodologije nahaja neka ideja, ki nas usmerja pri delu, tako da določi
kvalitete informacijskega sistema, ki jih skušamo pri razvoju doseči.
1.2 Kaj vpliva na izbiro metodologije
Pred vsakim začetkom razvoja informacijskega sistema se je potrebno zavedati, da se ni
dovolj le ukvarjati s samim razvojem programske rešitve, temveč je potrebno upoštevati še
mnogo drugih faktorjev, ki vplivajo na končni uspeh informacijskega sistema. Prav tako je
potrebno upoštevati nakup ustrezne strojne opreme in že obstoječo programsko opremo.
Vedeti moramo kako bo potekala uvedba rešitve in kako se bo sistem vzdrževal. Vili
Podgorelec (2008) opozarja na številne druge dejavnike, ki nas ne smejo presenetiti. Na
Sliki 1 je ponazorjena prisotnost dejavnikov, ki vplivajo na razvoj informacijskega sistema.
Iz njega je vidno, da ima komunikacija pri razvoju najpomembnejšo vlogo in da samo
programiranje nima tolikšnega pomena, kot se morda zdi.
-
7
Slika 1: Prisotnost dejavnikov, ki vplivajo na razvoj informacijskega sistema
Vir: V. Podgorelec , Informacijski sistemi, Osnove razvoja IS, 2008, str. 3.
Izbira ustrezne metodologije je lahko ključnega pomena, zato njena izbira ne predstavlja
lahke naloge. Metodologija je odvisna od njenih uporabnikov, zato so se pojavili različni
načini delitev metodologij, ki pomagajo pri izbiri najustreznejše. Krisper, Rupnik, Bajec,
Rožanec, Zrnec in Vavpotič (2003) so metodologije razdelili v tri skupine in sicer glede
na:
tip metodologije,
utežitev metodologije,
težo metodologije.
1.2.1 Delitev glede na tip metodologije
Delitev temelji na podlagi filozofije metodologije, kjer sta upoštevani sociološka
komponenta in cilji metodologije. Tehnične metodologije se na podlagi uporabljenih
tehnik in vrste procesa nato delijo še naprej. Delitev metodologij glede na njihov tip je
prikazana na Sliki 2.
-
8
Slika 2: Delitev metodologij glede na tip
Vir: M. Krisper, R. Rupnik, in M. Bajec, Enotna metodologija razvoja informacijskih sistemov,
2003, 1. zvezek.
V skupino socio-tehničnih metodologij spadajo tiste metodologije, katerih cilj je
organizacijska rešitev. Sem lahko uvrstimo organizacijsko usmerjene metodologije in
metodologije, usmerjene v človeka. Omenjene metodologije se ne ukvarjajo samo s
tehnično platjo razvoja, ampak vključujejo, upoštevajo in dajejo poudarek na ljudi in
njihove lastnosti. Cilj takih metodologij je lahko tudi samo organizacijska rešitev in ne
nujno le programska. Take metodologije se uvrščajo med organizacijsko usmerjene.
Obstajajo pa metodologije, ki dajejo poudarek sociološki komponenti in jih tako uvrščamo
med metodologije, usmerjene v človeka.
Vse ostale metodologije, katerih poglavitni cilj je izgradnja programske rešitve, uvrščamo
med tehnične metodologije. Le-te so na podlagi tehnik in življenjskih ciklov podrobno
razdeljene.
Procesno usmerjene metodologije temeljijo na modeliranju procesov, pri čemer se
uporablja vrsta procesnih (na primer diagrami podatkovnih tokov, odločitvena drevesa,
akcijski diagrami) in strukturnih tehnik (na primer strukturni diagrami) ter slapovni
(zaporedni) življenjski cikel oziroma model. Iz procesno usmerjenih metodologij so se
-
9
nadalje razvile podatkovno-procesne metodologije z razlikovanjem, da je pri teh
metodologijah poudarek na podatkovnih tehnikah in modeliranju podatkov, prav tako pa
vključujejo tudi modeliranje procesov. Tudi te metodologije večinoma uporabljajo
slapovni (zaporedni) življenjski cikel oz. model z modifikacijami.
Objektno usmerjene metodologije se od procesnih in procesno-podatkovnih metodologij
bistveno razlikujejo. Te metodologije uporabljajo objektne tehnike in vključujejo izdelavo
prototipov ter podatkovne tehnike, ki omogočajo uporabo relacijskih podatkovnih baz.
Objektno usmerjene metodologije uporabljajo drugačen pristop k analizi in načrtovanju,
prav tako je potrebna uporaba drugačnih programskih jezikov in orodij. Te metodologije
težijo k poenotenju razvoja in so povezane z inkrementalno-iterativnim razvojem, ki
omogoča izgradnjo sistemov na osnovi obstoječih in že preizkušenih gradnikov. To
pomeni, da se posamezni izdelki izdelujejo v več iteracijah, vsaka naslednja iteracija pa
temelji na predhodni iteraciji, ki se jo dopolni in nadgradi. Objektni proces razvoja je tako
sestavljen iz več faz, znotraj katerih se izvajajo aktivnosti, ki so nadalje razdeljene še na
opravila.
Metodologije za hiter razvoj (angl. Rapid Application Development, v nadaljevanju
RAD) so nastale kot reakcija na hiter prehod na informacijsko tehnologijo, kar je
povzročilo hitro spreminjanje zahtev. Te metodologije uporabljajo posebne tehnike dela z
ljudmi (npr. programiranje v parih) in temeljijo na uporabi iterativno-inkrementalnega
življenjskega cikla in prototipiranja. Večji poudarek se daje implementaciji in testiranju
kakor analizi in načrtovanju. Take metodologije lahko tudi uporabljajo podatkovne,
procesne in objektne tehnike.
Metodologije, usmerjene v človeka, so nastale kot odgovor na metodologije, ki so se
osredotočale le na tehnični vidik razvoja programske opreme in poleg tehnološke
upoštevajo tudi sociološko komponento. To pomeni, da se v načrtovanje in v razvoj
programske rešitve vključi vse vpletene. Namen te metodologije je vključiti tako
neposredne uporabnike sistema kot tudi posredne (vodstvo organizacije, stranke,
dobavitelje, …)v proces odločanja o programski rešitvi. Metodologije, usmerjene v
človeka, navadno modelirajo celotno organizacijo, zato pogosto vključujejo tudi lastnosti
organizacijsko usmerjenih metodologij.
Organizacijsko usmerjene metodologije imajo idejo modeliranja organizacije kot celote
kar pomeni, da je rezultat lahko le organizacijska rešitev, ki lahko vključuje tudi
programsko rešitev. Te metodologije pogosto vsebujejo tudi sociološko komponento
(lastnosti metodologij, usmerjenih v človeka). Organizacije poleg organizacijskih tehnik za
modeliranje organizacije uporabljajo tudi tehnike podatkovno in procesno usmerjenih
metodologij ali celo tehnike objektno usmerjenih tehnologij.
-
10
1.2.2 Delitev glede na težo metodologije
Zaradi obsežnih formalnih metodologij so se začeli uveljavljati novi pristopi k razvoju
programske opreme. S tem se je pojavila tudi delitev metodologij glede na utežitev, ki so
lahko težke ali lahke. Teža metodologije je določena z njenim obsegom (število različnih
elementov, ki jih metodologija opisuje: številom aktivnosti, vlog, izdelkov in standardov,
ki jih metodologija vključuje) in gostoto (zahtevani nivo podrobnosti in formalnosti) in se
jo definira kot zmnožek obsega in gostote. Način določitve teže metodologije prikazuje
Slika 3.
Slika 3: Določitev teže metodologije
Vir: M. Krisper, R. Rupnik, in M. Bajec, Enotna metodologija razvoja
informacijskih sistemov, 2003, 1. zvezek.
Lahke metodologije: med nje spadajo metodologije z manjšim obsegom in manjšo
gostoto. Lahke metodologije dajejo poudarek razvoju programske rešitve in sodelovanju
med udeleženci projekta. Nekoliko manj pa upoštevajo organizacijski, poslovni in
sociološki vidik. Takšne metodologije imajo visoko stopnjo prilagodljivosti, kar pomeni,
da so zelo odzivne na sprotne spremembe zahtev iz okolja. Temeljijo na izkušnjah,
disciplini in razumevanju ter so primerne za manjše projektne skupine, ki imajo nižjo
stopnjo formalnosti. Tem lažja je metodologija, manj je optimizirana in bolj je
prilagodljiva.
-
11
Lahke metodologije uporabimo v primeru, ko (Krisper et al., 2003):
je glavni cilj razvoj programske rešitve,
imamo odgovorne, disciplinirane, izkušene in motivirane razvijalce, ki so seznanjeni s
posebnimi tehnikami dela,
imamo stranko, ki razume bistvo lahkih metodologij in je pripravljena sodelovati,
imamo nepredvidljive in spreminjajoče se zahteve za programsko rešitev,
je cilj razvoja relativno majhen sistem z nižjo stopnjo kritičnosti, ki ga je mogoče razviti
z majhno razvojno ekipo.
Težke metodologije: med nje uvrščamo metodologije z večjim obsegom in gostoto.
Stopnja formalizacije in optimizacije je višja. Izdelava dokumentacije je opisana podrobno,
velikokrat predpisujejo tudi uporabo določenih tehnik in orodij. Nasprotno kot lahke, so te
metodologije primernejše za večje razvojne skupine. Nekatere izmed težkih metodologij se
ukvarjajo tudi z organizacijskimi in sociološkimi vidiki razvoja programske rešitve. Težja
je metodologija, bolj je optimizirana in manj prilagodljiva.
Težke metodologije uporabimo, kadar (Krisper et al., 2003):
cilj ni le razvoj programskega sistema ampak tudi prenova organizacijskega sistema,
imamo manj izkušene razvijalce, pri katerih točno opredeljena formalna pravila
nadomeščajo izkušnje in znanje,
naročnik zahteva visoko stopnjo formalizma (izdelovanje dokumentacije),
imamo relativno dobro definirane in stabilne zahteve,
je cilj razvoja obsežnejši sistem z višjo stopnjo kritičnosti, ki zahteva izdelavo ustreznih
načrtov in dokumentacije.
1.2.3 Delitev glede na utežitev metodologije
Iz zaporedja izvajanja aktivnosti razvoja programske rešitve se je rodila ideja o delitvi
metodologij glede na utežitev. Programsko rešitev je potrebno v prvi vrsti analizirati in
načrtovati, nato se izvaja kodiranje in na koncu testiranje. Iz slednjega izhaja, da so
metodologije, ki dajejo poudarek prvima aktivnostma, spredaj utežene. Tiste, ki pa dajejo
poudarek zadnjima dvema aktivnostima, se po drugi strani opredeljujejo kot zadaj utežene.
Metodologije, ki dajejo poudarek različnim aktivnostim (enkrat prvima, naslednjič
drugima aktivnostma), se označujejo kot uravnotežene metodologije. Praksa izkazuje, da
so metodologije, ki so spredaj utežene, navadno težke metodologije. Zadaj utežene
metodologije pa so navadno lahke metodologije.
-
12
Spredaj utežene metodologije: poudarek dajejo analizi in načrtovanju, ki se ju izvede
najprej. Rezultat teh postopkov so natančno opredeljene zahteve uporabnikov, natančni
načrti ter druge zahteve. Analiza in načrtovanje se deloma lahko izvajajo tudi kasneje,
vendar se načrt bistveno več ne spreminja. Izdelava programske rešitve predstavlja le še
»rutinsko« kodiranje metod, ki so opredeljene v načrtih. Zaradi dobrega načrtovanja pa je
potrebno tudi manj testiranja.
Spredaj utežene metodologije so primerne za razvoj (Krisper et al., 2003):
sistemov s stabilnimi zahtevami: sistemi, katerih zahteve so dobro specificirane in
stabilne in pri katerih kasneje ne prihaja do večjih sprememb;
kritičnih sistemov: sistemi, kjer moramo predvideti čim več alternativnih scenarijev
dogajanja in jih zajeti že v načrtu;
obsežnih in kompleksnih sistemov: ti sistemi so namenjeni velikim razvojnim
skupinam. Pri takšnih sistemih so potrebni podrobnejši načrti, ki omogočajo
usklajevanje in razdeljevanje dela med člani
Večina klasičnih metodologij je uteženih spredaj. Največ kritik takšnih metodologij se
navezuje na preveč porabljen čas, ki se posveti analizi in načrtovanju, saj rezultat
velikokrat zaradi hitrega spreminjanja zahtev ni več uporaben.
Zadaj utežene metodologije: dajejo poudarek postopku izvedbe in testiranju, v postopkih
analize in načrtovanja pa se ne ukvarjajo s podrobnostmi. Slednja postopka potekata
istočasno s samim kodiranjem. Po končani izvedbi pa se izvede obsežno testiranje in
morebitno popravljanje kode, na podlagi česar nastane relativno stabilen izdelek s
pomanjkljivostjo, da je arhitektura takšnega izdelka navadno manj robustna in razširljiva.
Zadaj utežene metodologije so primerne za razvoj (Krisper et al., 2003):
Manjših in bolj enostavnih sistemov, z majhnimi in izkušenimi razvojnimi skupinami.
Pomanjkanje načrta otežuje delitev dela med člane projekte skupine, zato tak pristop ni
primeren za velike razvojne skupine, hkrati pa podrobnosti načrta nadomešča znanje in
izkušenost članov projektne skupine.
Sistemov s slabo določenimi zahtevami, ki se bodo najverjetneje še spreminjale. Kadar
zahtev ni mogoče dobro definirati vnaprej.
Nekritičnih sistemov. Posledica manj podrobne analize in načrtovanja bo tudi manj
stabilna arhitektura, ki ni primerna za kritične sisteme. Hkrati je take sisteme pozneje
težje nadgrajevati in vzdrževati.
Sistemov, ki uporabljajo tehnologijo, s katero nismo seznanjeni. V primeru, da ne
poznamo tehnologije, lahko z uporabo zadaj utežene metodologije tehnologijo
preizkusimo in spoznamo.
-
13
Izpostavljena kritika takšnih metodologij je, da niso primerne za razvoj obsežnih sistemov.
Uravnotežene metodologije: analiza in načrtovanje se izvaja za dele sistema, ki so že
dovolj znani in stabilni, kodiranje in testiranje pa se izvaja za dele sistema, ki še niso
dovolj poznani, kar nam pomaga pri določanju uporabniških zahtev. Nekatere aktivnosti se
tako izvajajo po spredaj uteženih metodologijah, spet druge po zadaj uteženih
metodologijah. Uravnotežene metodologije niso vedno idealna izbira za vse primere.
Uteženi procesi namreč nimajo vseh značilnosti spredaj ali vseh značilnosti zadaj uteženih
procesov.
2 AGILNE METODOLOGIJE
Razvoj programske opreme se nenehno spreminja. Na podlagi tega se je izkazalo, da so
tradicionalne metodologije preveč okorne, kar je povzročilo potrebo po učinkovitejših
metodologijah razvoja. V ospredje so prihajale potrebe po učinkovitejšem in hitrejšem
obravnavanjem sprememb, ki so se pojavile med samim razvojem, vedno večja želja po
rezultatih v dogovorjenih rokih, čim natančnejšem sledenju željam naročnika in
inovativnih rešitvah.
2.1 Glavna načela agilnih metodologij
Leta 2001 se je zbralo sedemnajst strokovnjakov s področja lahkih metodologij z namenom
ugotoviti, kaj imajo »njihove« metodologije skupnega ter na tej podlagi postaviti skupne
metodološke osnove. Vseh sedemnajst strokovnjakov se je tako združilo v zvezo »Agile
Alliance«. Temeljni lastnosti te zveze sta učinkovitost in prilagodljivost, na podlagi katerih
so člani zveze opisali nov trend agilnih metodologij s ciljem »iskanja boljših prototipov
razvoja programske opreme, tako da pri tem sami sodelujejo in pomagajo drugim«. Na
podlagi tega so izpeljali štiri osnovna načela, na katera je potrebno pri agilni metodologiji
biti pozoren (Beck, 1999).
2.1.1 Posamezniki in njihova komunikacija so pomembnejši kot procesi in orodja
Več časa je potrebno posvetiti individualnim članom projekta, porazdelitev vlog med člane
projekta mora biti dinamična. Poudarek je na dobri komunikaciji, ki je ključna za
uspešnost projekta. Bolje je sodelovanje in dobra komunikacija med člani, pa tudi če se
člani ne držijo nobenega predpisanega procesa, kot pa sledenje predpisanim procesom in
slaba komunikacija med člani ekipe.
-
14
2.1.2 Delujoča programska oprema je pomembnejša kot popolna dokumentacija
Naročnik vse do konca projekta čaka na rešitev programske opreme, vendar vse do takrat
lahko dobi le dokumentacijo. Dokumentacija ima za naročnika sekundarni pomen.
Delujoča programska rešitev je tisto, kar naročnik pričakuje in kar mu je potrebno
predstaviti. Dokumentacija naj ima sekundarni pomen in naj bo napisana po sistemu
»ravno dovolj«, saj je kljub temu pomembna za vzdrževanje sistema, za komunikacijo med
naročnikom in izvajalcem, ipd.
2.1.3 Sodelovanje uporabnika je pomembnejše kot pogajanje na osnovi pogodb
Ujemanje naročnika in izvajalca ima velik vpliv na uspešnost projekta. Zato mora biti
vloga naročnika postavljena na visoko mesto. Nerazumevanje in strog pogodbeni odnos
med naročnikom in izvajalcem ima namreč lahko na uspešnost projekta velik negativen
vpliv.
2.1.4 Upoštevanje sprememb je pomembnejše od sledenja načrtu
Obvladovanje sprememb ima velik pomen. V projektnem planu mora biti prostor tudi za
spremembe. Sledenje in planiranje plana je koristno, vendar le do stanja, ko se to preveč ne
razlikuje od dejanskega stanja.
Iz naštetega lahko razberemo, da uporaba agilnih metodologij skrajšuje čas, znižuje stroške
in povečuje fleksibilnost razvoja implementacije programske rešitve.
Krisper in Bajec (2003, str. 68–76 ) navajata tudi priporočila oziroma principe, ki so v
pomoč gradnji in vrednotenju metodologij in jih je za uspešno uporabo agilnih metodologij
potrebno upoštevati. Ti principi so:
Zadovoljstvo naročnika je najvišja prioriteta. To pomeni, da je naročniku potrebno hitro
in neprestano dostavljati uporabno programsko rešitev. S tem se tudi zmanjša tveganje
neustreznosti končne programske rešitve.
Čim bolj pogosta izdaja in dostava delujoče programske rešitve.
Spodbuja naj se spremembe zahtev tudi v kasnejših fazah razvoja. Upoštevanje
morebitnih sprememb in vpeljava le-teh v programsko rešitev lahko naročniku
predstavlja pomembno konkurenčno prednost.
Vključitev motiviranih zaposlenih, katerim naj bodo omogočeni spodbudni in ustrezni
delovni viri in pogoji. Potrebno jim je zaupati, da bodo svoje delo opravili dobro.
Komunikacija med člani projekta naj poteka preko osebnih pogovorov, »iz oči v oči«.
-
15
Potrebno je stalno preverjanje in izboljševanje kakovosti programske rešitve, s katero se
povečuje tudi prilagodljivost.
Pripravljenost na nenehni razvoj. Razvoj projekta mora biti podprt tako s strani
naročnika kot s strani izvajalca.
Ključ do uspeha je enostavnost procesa, ki ga je potrebno opraviti s čim manj stranskih
nalog in izdelkov.
Nenehne prilagoditve in izboljšave naslednje iteracije. Pri vsaki iteraciji je potrebno
preveriti proces, ki se je uporabljal in ugotoviti, kaj je bilo pri tem dobrega in kaj je bilo
odveč. Projektna skupina mora večkrat preveriti, kako bi postala še učinkovitejša in na
podlagi predlogov tudi sprejeti ustrezne ukrepe.
2.2 Vrste agilnih metodologij
2.2.1 Ekstremno programiranje (XP)
Ekstremno programiranje je po mnenju Becka (1999) lahka, učinkovita, prilagodljiva in
napovedljiva metodologija razvoja programske opreme, ki ne prinaša tveganja. V
primerjavi z drugimi metodologijami prinaša hitre rezultate, tok povratnih informacij in
razvojnih ciklov je stalen in stvaren, zaradi inkrementalnega pristopa omogoča hiter razvoj
delujoče programske rešitve, ki je podlaga za nadgraditev. Ima agilno sposobnost razvoja
funkcionalnosti glede na spreminjajoče se zahteve naročnikov. Metodologijo zaznamujejo
tudi zanesljivi avtomatizirani testi razvijalcev in uporabnikov, zaradi česar je omogočeno
hitro odkrivanje napak. Evolucijski razvojni proces traja tako dolgo, kot traja projekt.
Metodologija ekstremnega programiranja se najbolje obnese na projektih z dvema do
največ desetih razvijalcev. Zahtevan je tudi pogoj razvojnega okolja, ki v kratkem času
omogoča zagon avtomatskih testov (Warden & Shore, 2007).
Warden in Shore (2007) navajata štiri glavne vrednote ekstremnega programiranja, katerim
je Kent (1999) dodal še peto (spoštovanje):
komunikacija: je nujno potrebna za razvoj sistema. Ekstremno programiranje vsebuje
zahtevo po stalni prisotnosti naročnika med razvojem, s čimer se pospešuje
komunikacija in sprotno odpravljajo ter rešujejo težave. Prednost se daje preprostosti,
sodelovanju med razvijalci in uporabniki ter verbalni komunikaciji. Za prenos
informacije o poteku razvoja programske rešitve je pomembna tudi komunikacija z
vodstvom;
preprostost: prične se z najpreprostejšo rešitvijo, dodatne funkcionalnosti pa se
dodajajo pozneje. Razvoj je osredotočen na trenutne potrebe, kar omogoča, da se ne
zgublja preveč časa na stvareh, ki še niso bistvene, tako se ne porabi virov na nečem,
-
16
kar mogoče v prihodnosti sploh ne bo potrebno. Zaradi preprostosti se porabi manj
trenutnega dela, sistem je preprostejši in fleksibilnejši ter lažje razumljiv;
povratne informacije: so ključne za uspeh projekta. Gre za povratne informacije od
sistema, naročnika, uporabnikov ali od razvojne skupine.
pogum: zagotavlja spremembo sistema na bolje, pa četudi pomeni zavrženje kode in
sestavljanje nove rešitve;
spoštovanje: gre za medsebojno spoštovanje med člani projekta, spoštovanje dela
drugih članov, ter stremenje k višji kvaliteti in boljšim rešitvam. To prinaša visoko
stopnjo motivacije članov projekta in spodbuja k lojalnosti.
Kent (1999) opisuje še dvanajst osnovnih principov ekstremnega programiranja:
igra planiranja,
majhne in pogoste izdaje,
metafora,
preprost načrt,
testiranje,
preoblikovanje,
programiranje v parih,
skupno lastništvo programske kode,
stalna integracija,
40-urni delovni teden,
stranka ob strani in
standardi kodiranja.
Ti principi so medsebojno povezani. Večina izmed njih samostojno celo ne more nastopati
(Jeffries, 2011).
Življenjski cikel metode razvoja ekstremnega programiranja sestavlja pet faz, kot kaže
Slika 4 (Beck, 1999b, str. 131):
faza raziskovanja,
faza načrtovanja,
faza ponovitev do objave,
faza priprave za produkcijo,
faza vzdrževanja in
faza smrti.
-
17
Slika 4: Življenjski cikel XP procesa
Vir: P. Abrahamsson, O. Salo in J. Ronkainen, Agile software development methods:
Review and analysis, 2002, str. 19.
2.2.2 Metoda DSDM
Metodologija DSDM (angl. Dynamic Systems Development Method) ali metodologija
razvijanja dinamičnih sistemov v iterativni razvoj stalno vključuje uporabnika in vodilne.
Tako je možna hitra odzivnost na spremenljive zahteve. Metodologija DSDM je navadno
usmerjena na razvoj projektov, za katere je značilen kratek razvojni čas in omejena
finančna sredstva (Rietman, 2008, str. 3–8)
Metodologija DSDM je sestavljena iz treh faz, kar je razvidno tudi iz Slike 5:
predprojektna faza,
faza življenjskega cikla projekta, ki se deli na pet stopenj: študija izvedljivosti, študija
poslovanja, iteracija funkcionalnega modela, iteracija izgradnje zasnove sistema in
implementacija ter
poprojektna faza.
-
18
Slika 5: Življenjski cikel procesa DSDM
Vir: Dynamic System Development Method Consortium, DSDM Tour, b.l..
Metodologija je v različnih pogledih podobna ostalim agilnim metodologijam, v drugih
pogledih pa celo nekaterim neagilnim metodologijam razvoja informacijskih rešitev. Za
doseganje zastavljenih ciljev ima točno določene in predpisane principe, vloge in tehnike
(Beynon-Davies, 2003, str. 29–46). Ponuja pa tudi ogrodje, ki ni odvisno od orodij in
tehnik. To pomeni, da lahko vsak uporabnik uporabi svoje. Spremenljivke v razvoju prav
tako niso vezane na vire in čas, temveč se navezujejo na zahteve uporabnikov. To projektu
zagotavlja ostati v obeh okvirih, časovnih in finančnih Za metodologijo je značilen velik
poudarek na komunikaciji med vsemi sodelujočimi, saj obravnava razvojni proces tako s
stališča razvijalcev kot tudi uporabnikov, projektnih vodij, osebja in ostalih vključenih v
projekt (Brinkkemper, 1998, str. 381–400).
DSDM podpira filozofijo, da nič ni prvič zgrajeno popolno in na razvoj programske
opreme gleda kot na raziskovanje že raziskanega (Alexandrou, b.l.).
DSDM se osredotoča na zagotavljanje poslovnih rešitev in ne le na aktivnosti ekipe. To
omogoča ukrepe, ki zagotavljajo izvedljivost in poslovni namen projekta, še preden bo le-
ta narejen (Clifton & Dunlap, 2003).
http://www.mariosalexandrou.com/http://www.codeproject.com/script/Membership/View.aspx?mid=36803http://www.codeproject.com/script/Membership/View.aspx?mid=317642
-
19
Metodologija DSDM temelji na naslednjih ključnih načelih (Alexandrou, b.l.; Clifton &
Dunlap, 2003):
a) aktivno vključevanje in sodelovanje uporabnikov,
b) tim mora biti pooblaščen za sprejemanje odločitev,
c) poudarek na pogosti dobavi rešitve (delne rešitve),
d) kriterij za kakovost je primernost uporabe programa,
a) z iterativnim in inkrementalnim razvojem se zagotovi bližanje natančni poslovni rešitvi,
b) reverzibilne spremembe v razvoju,
c) zahteve na začetku temeljijo na visoki ravni,
d) integrirano testiranje čez cel življenjski cikel,
e) sodelovanje vseh sodelujočih oseb,
f) pravilo 20 %/80 %.
2.2.3 Metoda FDD
Metodologija FDD (angl. Feature Driven Development, v nadaljevanju FDD ) je okreten in
prilagodljiv pristop za razvoj sistemov in programskih rešitev, ki ne zajema celotne
programske opreme in razvojnega procesa temveč se osredotoča na fazo načrtovanja in
izgradnje. Metodologija je bila zasnova za delo z drugimi aktivnostmi razvoja programske
opreme in za uporabo ne zahteva nobenega posebnega procesnega modela (Pekka; Outi;
Jussi & Juhani, 2002, str. 47–55).
FDD se zavzema za razvoj programske opreme, ki je funkcijsko voden. FDD metodologija
je primerna predvsem za modeliranje in razvoj, saj deluje na principu zaporednih procesov.
Najprej se celotni sistem razbije na več funkcionalnosti, ki so za stranko že uporabne. Vse
te posamezne funkcionalnosti pa lahko stranka že uporablja in testira, še preden je
poslovna rešitev v celoti končana. Posamezne funkcije pa pomagajo tudi razvijalcem, saj
lahko tako lažje pridejo do hitrega in kakovostnega razvoja (Jeff De Luca, 2008 ).
Pri FDD metodologiji obstaja pet glavnih aktivnosti, ki se razvijajo iterativno, kar
prikazuje tudi slika 6 (Ambler, 2007). Te aktivnosti so:
razvoj splošnega modela,
sestava seznama značilnosti,
načrtovanje po značilnostih,
snovanje po značilnostih in
izgradnja po značilnostih.
http://www.mariosalexandrou.com/http://www.codeproject.com/script/Membership/View.aspx?mid=36803http://www.codeproject.com/script/Membership/View.aspx?mid=317642
-
20
Slika 6: Aktivnosti metodologije FDD
Vir: S. R. Palmer in J. M Felsing, A Practical Guide to Feature-Driven Development, 2002.
2.2.4 Metoda ASD
Metoda ASD (angl. Adaptive Software Development, v nadaljevanju ASD) se predvsem
osredotoča na težave pri razvoju zapletenih, večjih sistemov. Bistvo ASD metodologije je
prilagajanje novim spoznanjem med samim razvijanjem programske rešitve. Metoda
močno spodbuja inkrementalni, iterativni razvoj, s konstantno izdelavo prototipov. Razvoj
projekta po metodologiji ASD poteka v trifaznem ciklu, prikazanem na sliki 7:
razmišljanje/načrtovanje, sodelovanje in učenje. ASD daje večji poudarek na rezultate in
njihovo kakovost, kot pa na naloge ali procese, ki se uporabljajo za razvoj rezultata (Pekka
et al., 2002, str. 68–71).
Slika 7: Življenjski cikel po metodologiji ASD
Vir: J. Stapleton, Dynamic systems development method – The method in practice, 1997.
-
21
Aktivnosti v vsakem razvojnem ciklu morajo biti utemeljene glede na skupno poslanstvo
projekta. Poslanstvo se lahko prilagodi le, če se razvoj nadaljuje. Razvojne dejavnosti
morajo biti osredotočene na razvoj delujoče programske opreme in ne usmerjene k
nalogam. Programska rešitev se sestavlja in izgrajuje po majhnih koščkih. Pomembneje je,
da se morebitne spremembe v programsko rešitev prilagodi, kot da se jih le nadzira. Za
izgradnjo prilagodljivega sistema pa morajo razvijalci nenehno ocenjevati, ali se lahko
vgrajene komponente kdaj spremenijo. Razvoj visoko tveganih postavk se mora začeti čim
prej (Pekka et al., 2002, str. 68–71).
2.2.5 Crystal Clear
Metodologija Crystal Clear spada v družino Crystal in je primer agilne oziroma lahke
metodologije in je aplicirana v skupine, v katerih deluje šest do osem ljudi, ki delujejo na
nekritičnih sistemih. Metodologija je usmerjena k ljudem in ne k izdelkom. Njene
značilnosti so (Pekka et al., 2002, str. 36–46):
pogostost izdaje kode v uporabo,
pregled in popravljanje napak,
dobra komunikacija v skupini, znotraj istega prostora,
osebna varnost,
fokus,
lahka dostopnost za ekspertne uporabnike,
avtomatizirani testi, pogosta integracija, upravljanje sestave (angl. Configuration
Management).
2.2.6 Scrum
Scrum uporablja iterativni in inkrementalni pristop in dovoljuje interakcijo z okoljem,
čeprav lahko to vpliva na stroške in obseg projekta, tehnologijo in njegovo funkcionalnost.
Metodologija Scrum sprejema dejstvo, da je lahko razvojni proces programske rešitve
nepredvidljiv.
Scrum povzema pravila, ki jih uporabljajo podjetja, ki se ukvarjajo z razvojem programske
opreme (Schwaber, 1996, str. 3):
Razbitje velikih produktov na obvladljive delčke – funkcije, ki jih lahko majhna skupina
ustvari v kratkem času;
Omogoča, da se projekt nadaljuje sistematično, čeprav člani skupine takoj na začetku ne
morejo določiti popolnega in stabilnega dizajna izdelka;
-
22
Velikim skupinam omogoča delo kot majhne skupinice, kar dosega s porazdelitvijo dela
na manjše dele oziroma postopke, z vzporednimi postopki in nenehno sinhronizacijo, s
stabilizacijo v korakih ter nenehnim iskanjem napak in sprotno odpravo le teh.
Ta pravila pospešujejo konkurenčnost, ki temelji na povratnih informacijah strank, na
funkcijah izdelka, na kratkem razvojnem času mehanizma vključevanja zahtev strank, ki
omogoča, da se lahko prioritetne funkcije izdelka implementirajo najprej.
Ključna načela razvojne metodologije Scrum so (Schwaber, 1996, str. 4):
Majhne razvojne skupine, saj to povečuje in izboljšuje komunikacijo, zmanjšuje
režijske stroške in povečuje izmenjavo tihega, neformalnega znanja;
Prilagodljivost na tržne in/ali tehnične spremembe, kar omogoča implementacijo
najboljšega možnega izdelka;
Pogosto kreiranje izdelka, ki ga lahko pregledamo, prilagodimo, testiramo,
dokumentiramo in zgradimo;
Razdelitev dela in nalog skupine v nizko povezane particije ali paketke;
Vedno imej produkt, ki ga lahko posreduješ stranki–sposobnost dostaviti produkt
kadarkoli (ko to zahteva stranka ali konkurenca).
Ključ uspeha metode Scrum je povečevanje prožnosti in tveganj ob hkratnem ohranjanju
nadzora. Podrobnejši opis metodologije Scrum je zajet v nadaljevanju, v točki 4.
3 PRIMERJAVA TRADICIONALNE Z AGILNIMI METODOLOGIJAMI
Veliko podjetij pri razvoju novih izdelkov dandanes deluje v negotovih, dinamičnih in
konkurenčnih okoljih. Obstaja veliko nemirov, ki izhajajo iz dejavnikov, ki se odražajo kot
intenzivna svetovna konkurenca, zmanjšanje prehodnega časa in pričakovane življenjske
dobe proizvodov, raznoliko povpraševanje ter nove tehnologije. Podjetja morajo biti
sposobna kljub temu konkurirati na trajnostni način. V ta namen so se v začetku
devetdesetih letih začeli razvijati koncepti agilnih metodologij. Ključ do uspeha podjetij je
namreč v obvladovanju neenakomernega in nepredvidljivega povpraševanja, česar
tradicionalne metodologije niso bile sposobne. Razvoj programske opreme se je srečeval s
podobnimi ovirami in izzivi, zato se je agilnost začela vpeljevati tudi na tem področju. Kot
odgovor na težave s tradicionalnimi modeli so se začele pojavljati lahke metodologije
razvoja programske opreme (Kettunen, 2009, str. 408).
Programska oprema je del sodobne družbe že več kot 50 let. Dandanes v uporabi obstaja
več metodologij razvoja programske opreme. Nekatera podjetja imajo svoje, prilagojene
-
23
metodologije za razvoj programske opreme, vendar večina govori o dveh vrstah
metodologij: težke in lahke. Težje metodologije razvoja programske opreme, imenovane
tudi tradicionalne, dajejo podporo celovitemu načrtovanju, podrobni dokumentaciji in
širokemu dizajnu. V zadnjih dvajsetih letih pa so s strani razvijalcev programske opreme,
veliko pozornost začele pridobivati predvsem lahke metodologije. Za razliko od
tradicionalnih metod se agilne metodologije poslužujejo kratkih iterativnih ciklov in se
zanašajo na tako imenovano tiho znanje ekipe.
Težke metodologije se štejejo kot tradicionalni način razvoja programske opreme. Te
metodologije temeljijo na zaporedju posameznih korakov kot so definiranje zahtev,
izgradnja rešitve, testiranje in uvedba. Te metodologije zahtevajo določitev in
dokumentiranje fiksnega sklopa zahtev že na začetku projekta. Obstaja veliko različnih
težkih metodologij. Najpomembnejše med njimi so Waterfall, Spiral Model in Unified
Process (Mars, 2002).
3.1 Karakteristike tradicionalnih metodologij
Pristop predvidevanja–nagnjenost k izvedbi večjega dela natančnega prvotnega načrta
programske opreme, ki je bil načrtovan za daljše obdobje. Ta pristop sledi inženirski
disciplini, kjer je razvoj predvidljiv in ponovljiv. Velik poudarek je na risbah s
fokusiranjem na potrebe sistema in na učinkovito reševanje teh potreb. Risbe se nato
prenesejo na drugo skupino, ki je odgovorna za oblikovanje in izgradnjo sistema. Skice
namreč predstavljajo temelj za izgradnjo, iz katerega se razbere, kako mora biti sistem
zgrajen. Prav tako pa načrt predvideva naloge za kreiranje izvedbene ekipe in razumno
predvideva načrt ter proračun za izgradnjo programske opreme/sistema.
Obsežna dokumentacija – ključni del dokumentacije predstavlja dokument zahtev. Glavni
proces težkih metodologij predstavlja velik dizajn vnaprej, znotraj katerega vlada
prepričanje, da je možno zbrati vse zahteve stranke, še preden se začne pisanje kode.
Procesna usmerjenost – cilj je opredeliti postopke, ki bodo delovali dobro, četudi se zgodi
karkoli. Proces mora biti sestavljen iz nalog, ki jih morajo opraviti vodje, oblikovalci,
programerji, testerji, itn. Za vsako od teh nalog obstaja tudi natančno opredeljen postopek.
Usmerjenost na orodja – orodja za upravljanje in vodenje projekta, urejanje kode,
primerjanje in podobno, morajo biti v uporabi za izpolnjevanje in dostavo vsake naloge.
-
24
3.2 Karakteristike agilnih metodologij
Highsmith in Cockburn (2001, str. 133–133) navajata naslednje karakteristike agilnih
metodologij:
Usmerjenost k ljudem – pri agilnih metodologijah v skupino »ljudje« uvrščamo stranke,
razvijalce, zainteresirane in končne uporabnike. Ljudje so najpomembnejši dejavnik pri
razvoju programske opreme. Vodje morajo dajati velik poudarek človeškim dejavnikom
kot so družabnost, talent, spretnost in komunikativnost. Če so ljudje na projektu dovolj
dobri, jih lahko uporabimo pri katerem koli postopku in bodo izpolnili vse naloge
(Highsmith &Cockburn, 2001).
Prilagodljivost – udeleženci se ne bojijo sprememb. Nasprotno, spremembe so dobrodošle
v katerikoli fazi projekta. Le-te predstavljajo dobro stvar, saj razvojna ekipa tako spozna
zahteve trga.
Skladno z dejanskim – agilni projekti niso nadzorovani s skladnostjo z načrtom ampak so
nadzorovani s skladnostjo s poslovno vrednostjo (Highsmith, 2002).
Uravnoteženje prilagodljivosti in načrtovanja – načrti so pomembni, vendar problem je,
da programske opreme ni mogoče napovedati daleč v prihodnost. Ker obstaja veliko
spremenljivk, je najboljša strategija načrtovanja takšna, da se pripravi podrobne načrte za
naslednjih nekaj tednov, zelo grobe načrte za naslednjih nekaj mesecev in zelo surove
načrte še dalje vnaprej (Highsmith, 2000).
Empirični procesi – agilni razvoj programske opreme je empiričen – nelinearen. Empirični
pristop predpostavlja, da je razvoj programske opreme nepredvidljiv in kaotičen. Za
upravljanje nepredvidljivosti in kontrolo tveganja se uporabljajo kontrole, kar zagotavlja
fleksibilnost, odzivnost in zanesljivost.
Decentralizirani ukrepi – vključitev decentraliziranega stila vodenja lahko vpliva na
razvoj projekta, saj se lahko prihrani precej časa kot avtokratsko obvladovanje procesov.
Naloga odločanja se tako razprostira tudi na razvijalce, kar pa ne pomeni, da razvijalci
prevzemajo vloge upravljanja, temveč da o tehničnih odločitvah lahko odločajo razvijalci
brez dovoljenja vodje.
Preprostost – agilne ekipe ubirajo najpreprostejše poti, ki so v skladu z njihovimi cilji.
Agilne ekipe ne pričakujejo jutrišnjih problemov, ampak se pred njimi skušajo obraniti že
danes (Fowler, 2005). Nikoli ne izdelaj več, kot je potrebno in nikoli ne poskušaj pripraviti
dokumente za napovedovanje prihodnosti, saj bodo hitro zastareli (Wendorf, 2004,
str. 218).
-
25
Sodelovanje – redno vključevanje mnenj in povratnih informacij stranke. Stranka naj tesno
sodeluje z razvojno ekipo, saj zagotavlja povratne informacije o svojih prizadevanjih.
Bistvenega pomena je tudi stalno sodelovanje med člani ekipe in vodstvom projekta
(Fowler, 2005).
3.3 Omejitve tradicionalnih metodologij
Glavna razlika med tradicionalnimi in agilnimi metodologijami je sprejetje sprememb. Gre
za sposobnost odzivanja na spremembe, ki pogosto določa uspeh ali neuspeh projektov
programske opreme (Williams & Cockburn, 2003, 39–43). Tradicionalne metode
zamrznejo funkcionalnosti izdelka in ne dopuščajo sprememb. Zato je ključna prednost
agilnih metod dopuščanje sprememb izdelka v kateri koli fazi projekta. V tako
spreminjajočem okolju je namreč zelo težko implementirati in predvidevati nadaljnje
procese ali zagotavljati stabilne zahteve. Martin Fowler in Jim Highsmith, ustanovitelja
»Agil manifesto«, menita, da je omogočanje sprememb učinkovitejše, kot jih poskušati
preprečevati (Fowler, 2005).
Druga omejitev tradicionalnih metodologij je uravnavanje kompleksnosti. Pristop k
prvotnemu načrtovanju vsega in šele potem sledenje načrtu deluje le v stabilnih in manj
zapletenih okoljih. V večjih in kompleksnejših okoljih pa takšen pristop ne zdrži. Rešitev
tega problema leži v preprostosti. Pri agilnih projektih je zlasti pomembna uporaba
preprostih pristopov, ker jih je lažje spremeniti. Lažje je nekaj dodati procesu, ki je
preprost kot nekaj odvzeti procesu, ki je zapleten (The Standish Group International,
2005). Kathleed Eisenhardt predlaga, da se namesto zapletenih procesov uporabijo
preprosta pravila za komuniciranje strategije. To je najboljši način, da ljudje izkoristijo
minljive priložnosti v hitro spreminjajočih se trgih (Eisenhardt & Sull, 2001, str. 107–116).
Zaporedni v primerjavi z iterativnim razvojem je še en dokaz razlikovanja med
tradicionalnimi agilnimi metodologijami. Pri tradicionalnih metodah so povratne
informacije stranke in testiranje postavljene v zadnjo fazo življenjskega cikla projekta.
Agilne metode pa zagovarjajo, da bi to morala biti vsakodnevna praksa. Po Fowlerju
(2005) je ključ do iterativnega razvoja redna proizvodnja delujočih verzij končnega
sistema. Takšno delovanje sistema je sicer kratko po delovanju, vendar mora biti tudi
zvesto zahtevam končne rešitve. Za prikaz zahtev programske opreme uporabnikom
pripravljajo tradicionalne metode dokumentov. Agilisti pa menijo, da ne obstaja trdnejšega
dokaza uspešnega delovanja sistema kot je uspešno stestirana rešitev.
Standish Group International je v svoji študiji 23.000 projektov ugotovila, da zgodnja
dobava manjših komponent programske opreme v krajših časovnih intervalih povečuje
stopnjo uspešnosti projekta (The Standish Group International, 2005). Druga študija, ki jo
-
26
je opravil Alan MacCormack, Harvard Business School, je prav tako pokazala, da
predčasna rešitev oblikovanja razvijajočega se izdelka predstavlja uspešnost projekta.
MacCormack (2001) navaja, da je najbolj presenetljiv rezultat raziskave pomembnost, da
stranka prejme nizko uporabno različico v roke ob prvi priložnosti. Obe študiji tako močno
dokazujeta temelj agilnih procesov: kratek iterativni razvoj; redne in hitre povratne
informacije stranke ter testiranje in inkrementalni razvoj, kar občutno prispeva k
izboljšanju kakovosti končnega izdelka.
Druga pomembna kritika tradicionalnih metod je postopanje glede vključitve ljudi pri
sodelovanju razvojnega procesa. Cockburn in Highsmith (2001, str. 131–133) v prispevku
navajata, da so ljudje najpomembnejši dejavnik pri razvoju programske opreme. Prav tako
tudi Standish Group v svojem poročilu opravljenih raziskav navaja tri najpomembnejše
dejavnike uspešnega projekta: izvrševanje podpore, sodelovanje z uporabniki in izkušeno
projektno vodenje (The Standish Group International, 2005). Agilne metode se
osredotočajo na talente in sposobnosti posameznikov, na podlagi katerih se oblikujejo
procesi ter določijo posamezniki skupine. Pri tradicionalnih metodah je ravno nasprotno.
Vse naloge in vloge so dodeljene posameznikom, od katerih se pričakuje, da bodo vse
naloge opravljene skladno.
Agilne metodologije zagovarjajo dejstvo, da se lahko odzivajo in prenašajo ideje hitreje, če
se soočajo na štiri oči, kot je to možno pri tradicionalnih metodologijah, kjer se vse prebere
in zapisuje v obliki dokumentacije. Ko se razvijalci pogovarjajo s stranko lahko že
istočasno odpravljajo težave, prilagajajo prednostne naloge in preučujejo nadomestne poti
za naprej. Kar pa ni mogoče, če ljudje med seboj ne sodelujejo, kot je značilno za
tradicionalne metode (Cockburn, 1999).
Še en argument razlikovanja tradicionalne in agilne metodologije je merjenje uspešnosti
projekta. Agilisti merijo uspešnost projekta glede na vprašanje ali je stranka prejela rešitev,
ki zanjo predstavlja večjo vrednost kot so znašali vloženi stroški. Martin Fowler (2005)
navaja: »Dobro predviden projekt bo šel po planih, dober agilni projekt pa bo zgradil nekaj
drugačnega in boljšega kot je predvideval prvotni načrt.«
3.4 Omejitve agilnih metodologij
Največja omejitev agilnih metodologij je, kako ravnati z večjimi skupinami. Cockburn in
Highsmith (2001, str 131–133) sta prišla do zaključka, da je agilni razvoj za večje skupine
težji. Tudi Constantin in Fowler (2005) verjameta, da je komunikacija na štiri oči
pokvarljiva in postaja vse težja, če je razvijalcev že več kot 20. V nasprotju s tem je za
večje projekte in projektne skupine lažje in bolje uporabiti tradicionalne metodologije.
-
27
Vsakega problema ne moremo razbiti na manjše delčke in tako pohitriti primarnega
izboljšanja (Boehm, 2002, str. 64–69).
Boehm (2002, str. 64–69) se ne strinja z izjavo agilnosti (angl. agile manifesto), ki pravi,
da je največja prednost zadovoljiti kupca z zgodnjo in konstantno dostavo delčkov delujoče
programske opreme. Po njegovem mnenju pregled zgodnjih rezultatov lahko povzroči
večje predelave v kolikor se ne poviša arhitektura. Boehm tudi meni, da je načrtno
usmerjen proces najbolj potreben visoko zanesljivi programski opremi. Cilji tradicionalnih
metodologij, kot so npr. predvidljivost, ponovljivost in optimizacija so pogosto značilnosti
zanesljivih varnostno pomembnih razvojev programske opreme. Večina agilnih tehnik prav
tako ne podpira pregledov in inspekcijskih nadzorov kode v življenjskem ciklu projekta,
ampak je poudarek na programiranju v parih in neformalnih ocenah njihovih kontrolnih
mehanizmov kakovosti.
Boehm se prav tako ne strinja z agilno značilnostjo talentov, spretnostjo in komunikacijo
med ljudmi. Medtem ko agilne metodologije ne zahtevajo združitve visoko zmogljivih
ljudi, se opirajo na tiho znanje, ki se pooseblja v skupini, namesto da bi znanje zapisovali
kot dokumentacijo. Boehm opozarja, da bi to lahko vodilo do arhitekturnih napak, ki jih
zunanji pregledovalci zaradi pomanjkljive dokumentacije ne morejo zlahka odkriti.
Tradicionalne metode tako zmanjšujejo tveganje za vlaganje v arhitekturo. S tem zunanjim
strokovnim pregledovalcem olajšajo vpogled v planiranje in uporabo programske rešitve,
čeprav lahko ti načrti zastarajo ali se zaradi vpeljave sprememb celo podražijo.
Razprava o tem ali agilna metodologija zahteva ustvarjalne in spretne ljudi, da bi bili
učinkoviti, vodi k dodatnemu argumentu. Če delamo s »premium« ljudmi, ni pomembno, s
katerim tipom metodologije vodimo in razvijamo projekt. To pomeni, da bi bilo potrebno
uspeh agilnih metod pripisati ekipi dobrih ljudi ne pa načelom in praksi. Highsmith in
Cockburn (2001, str 131–133) se s to trditvijo strinjata in pojasnjujeta: »Če so ljudje na
projektu dovolj dobri, lahko uporabimo kateri koli postopek in izpolnili bodo vse naloge.
Če niso dovolj dobri, ne bo noben postopek popravil in prikril njihove neustreznosti«.
Agilne metodologije dajejo velik poudarek sodelovanju s strankami in se jih obravnava kot
del razvojne ekipe skozi celotni razvoj programske opreme. Boehm (2002, str. 64–69)
potrjuje, da je takšen način uporaben in uspešen, v kolikor strankino znanje zadostuje za
celotno razvojno obdobje. Vendar takšen način lahko privede do težav, kadar obstaja več
strank, med njimi pa obstajajo različni pogledi in konflikti. Takšne primere je najlažje in
najhitreje rešiti s pomočjo dokumentacije, planiranjem, ocenjevanjem arhitekture in
podajanjem ocene neodvisnih strokovnih izvedencev.
Še en dejavnik, ki bi lahko povzročil težave, je razlaga prednosti delujočega sistema pred
izčrpno dokumentacijo. Boehm (2002, str. 64–69) se sprašuje o uporabnosti poudarjanja
preprostosti. Prepričan je, da se z odpravljanjem arhitekturnih značilnosti, ki ne podpirajo
-
28
trenutne različice, lahko povzročijo dodatne delovne aktivnosti. To lahko povzroči napačne
predstave razvijalcem. Ta pristop je uporaben, kadar so prihodnje zahteve zelo
nepredvidljive. Vendar, kadar pa so zahteve v naprej zelo predvidljive, lahko takšen
pristop povzroči težave s strankami, saj stranke verjamejo v razvijalce, da so njihove
prednostne naloge in razvojne zahteve vredne ustrežljivosti.
Produktna in projektna dokumentacija je zmeraj tema, ki pritegne veliko pozornost agilnih
metodologij. Ali je potrebna vsa dokumentacija? Če da, koliko je dovolj? Ambler (2002)
poudarja, Organizacije zahtevajo več dokumentacije, kot je potrebno, in ta dokumentacija
je slaba oblika komunikacije. Ambler prav tako pojasnjuje, da dokumentacija zastara in jo
je tako potrebno redno obnavljati. Zagovarja pa, da je dokumentacija ravno tako potrebna,
predvsem za ohranitev ključne informacije v daljšem časovnem obdobju. Boehm na
obširno dokumentacijo odgovarja, da dokumentirani projekti omogočajo zunanjim
strokovnim izvedencem lažje ugotavljanje težav. Predlog »nobene dokumentacije« pa
povečuje tveganje glede vzdrževanja in vidika uporabe. Agilisti pa zagovarjajo
predpostavko, da bodo skupine ostale skupaj do samega konca razvoja programske
opreme, na kar pa zagovorniki tradicionalnih metod odgovarjajo, da se v večini primerov
to ne zgodi.
Agilne metode dajejo manjšo težo uporabniški strani programske opreme kot je npr.
uporabniški vmesnik in uporabnost. Ko pride do uporabniškega vmesnika, agilni procesi
raje poenostavljajo oblike ali uporabijo iterativne papirne prototipe, kot zmodelirajo dizajn.
Agilisti zagovarjajo, da je testiranje uporabniškega vmesnika delovno intenzivno in
dolgotrajno. Vendar Cauwenberghe (2001) navaja, da uporabnikom orientirano
načrtovanje izpolnjuje pogoje za agilni proces, saj lahko tako ponuja uspešen in učinkovit
sistem za oblikovanje zelo uporabnega uporabniškega vmesnika.
3.5 Primerjava tradicionalne z agilnimi metodologijami
Tradicionalni pristopi razvoja so se uporabljali zelo dolgo časa. Najpogosteje se je
uporabljal model »Waterfall«, tako pri velikih kot tudi pri manjših projektih programske
opreme, ki se je izkazal kot zelo uspešen model pri mnogih projektih. Kljub uspehu je imel
veliko pomanjkljivosti, kot so linearnost, nefleksibilnost na spremembe potreb in visoko
formalizirane postopke, ne glede na velikost projekta. Kent Beck je te pomanjkljivosti
upošteval in uvedel »Extreme Programming«, prvo agilno metodologijo. Agilne metode
upoštevajo nestabilne in hitre spremembe z uporabo več tehnik, dajejo poudarek na
sodelovanju med razvijalci in kupci ter podpirajo hitro dobavo izdelkov. Povzetek razlik
med tradicionalnimi in agilnimi metodologijami je prikazan v Tabeli 1 (Awad, 2005,
str. 35):
-
29
Tabela 1: Primerjava tradicionalne z agilnimi metodologijami
Agilne metode Tradicionalne metode
Pristop prilagodljiv predvidljiv
Merjenje uspeha poslovna vrednost skladnost s planom
Velikost projekta majhni veliki
Način vodenja decentralizirani avtokratski
Pogled na spremembe prilagodljivost na spremembe nesprejemljivost sprememb
Kultura vodenje – sodelovanje ukazovanje – nadzor
Dokumentacija nizka stopnja in malo visoka stopnja in veliko
Usmerjenost na ljudi na procese
Cikličnost številna omejena
Domena nepredvidljivo/raziskovalno predvidljivo
Načrtovanje vnaprej minimalno celovito
Donosnost naložb na začetku projekta na koncu projekta
Velikost skupine majhna/kreativna velika
Vir: M. A. Awad, A Comparison between Agile and Traditional Software Development, 2005, str. 35.
Tako tradicionalne kot agilne metode imajo svoje prednosti in slabosti. Ljudje navadno
sledijo eni izmed metodologij ali pa si prilagodijo svojo metodologijo. Na odločitev in
izbiro metodologije, ki je primerna za različne pogoje, vplivajo različni dejavniki. Te
dejavnike lahko razdelimo v tri skupine in sicer velikost projekta, ljudje in tveganje.
3.5.1 Velikost projekta
Eno od omejitev agilnih metod predstavlja velikost projekta. Ključni elementi velikosti
projekta so omejen proračun, trajanje projekta in organizacija projektne skupine. Večja je
skupina, večji je proračun, večji je projekt. Tako sestavljanje zahtev zahteva več ljudi in
več koordinacije. Tradicionalne metodologije to zagotavljajo z načrti, dokumentacijo in
procesi za boljše komuniciranje in usklajevanje med velikimi skupinami. Kot je razvidno
iz Slike 8, Cockburn (1997), eden od ustanoviteljev agilne zveze, glede problema velikosti
trdi, da so ljudje manj potrebni, če se uporablja agilne metodologije in da je potrebnih več
ljudi, če se uporablja tradicionalne metodologije. Cockburn trdi, da je omejitev glede
problema velikosti mogoče rešiti z določenim številom ljudi.
-
30
Slika 8: Problem velikosti projekta in vpliv metodologije na število ljudi
Vir: M. A. Awad, A Comparison between Agile and Traditional Software Development, 2005, str. 36.
Velikost skupine vpliva tudi na komuniciranje znotraj projekta in na osebno učinkovitost.
Slika 9 prikazuje, da se komunikacijska obremenitev povečuje s povečevanjem števila ljudi
kar povzroča povečano upadanje osebne učinkovitosti. Cockburn navaja, da metodologija
usklajuje ljudi in upravlja komunikacijo, zato se mora raven metodologije dvigniti, ko se
povečuje število ljudi. To otežuje uporabo agilnih metodologij, kjer so skupine večje od 40
ljudi. V takih primerih se prednostno uporablja tradicionalne metodologije. Vendar se Ken
Schwaber s tem ne strinja in navaja, da se lahko velike skupine razčleni na manjše
skupinice (Schwaber &Beedle, 2002).
Trajanje projekta je še en dejavnik, ki vpliva na izbiro metodologije. Tradicionalne
metodologije vsebujejo veliko »izgube časa« kot npr. dokumentiranje, oblikovanje
dokumentacije, zapisovanje analiz, itn. Tako zaključimo, da kadar je čas omejen, je
uporaba agilnih metodologij primernejša.
-
31
Slika 9: Učinki glede na velikost projekta
Vir: M. .A Awad, A Comparison between Agile and Traditional Software Development, 2005, str. 36.
3.5.2 Ljudje
Agilne metodologije se veliko ukvarjajo s človeškimi dejavniki, posamezniki, njihovimi
interakcijami ter odnosi in sodelovanjem s strankami (Cockburn & Highsmith, 2001,
str. 131–133). Imeti spretne in izkušene ljudi v skupini predstavlja ključni dejavnik agilnih
metodologij. Spodbujanje strokovnjakov, da bi bili del skupine, daje razvijalcem hitro
povratno informacijo o možnih posledicah za uporabnike, do katerih lahko pride ob izbiri
njihovih odločitev. Prilagodljivost stranke je še en velik dejavnik. Kupec ima namreč
pooblastilo, da lahko v vsaki iteraciji preverja napredek in spremembe smeri razvoja
programske opreme. Pridobitev takšne ravni obveznosti stranke naredi agilne metodologije
veliko bolj privlačnejše kot tradicionalne. Tudi kultura organizacije je pomemben dejavnik
pri izbiri metodologije. Če je podjetje trdno, se ne odziva na spremembe in ima veliko
pravil in postopkov, potem ne more uspešno uporabljati agilne metodologije. In nasprotno,
podjetje, ki se odziva na spremembe in je prilagodljivo, mora v svojo kulturo sprejeti tudi
prilagodljivost za spremembe, če želi uporabljati agilne metode.
-
32
3.5.3 Tveganje
Najpomembnejša dejavnika tveganja pri razvoju programske opreme sta kritičnost projekta
in odzivnost na spremembe. Agilne metode se uporabljajo pri aplikacijah, ki jih je mogoče
hitro zgraditi in ne zahtevajo obsežnega zagotavljanja kakovosti. Kritični, zanesljivi in
varni sistemi so primernejši za tradicionalne metodologije. Če je projekt ključnega pomena
– kritičen, morajo biti vse zahteve dobro opredeljene že pred samim začetkom razvoja
programske opreme. Odgovor na spremembe je mogoče rešiti z uporabo agilnih načinov,
saj omogočajo boljše upravljanje sprememb s pomočjo povratnih informacij strank
(naročnika) in kratkim iterativnim razvojem.
Povzetek zapisanega je predstavljen v Tabeli 2, kjer so prikazani glavni razlogi za izbiro
agilnih ali tradicionalnih metodologij. Tabela vključuje sklop pogojev, pod katerimi je
uspeh verjetnejši.
Tabela 2: Projektne značilnosti agilnih in tradicionalnih metodologij
Projektne značilnosti Agilne metode Tradicionalne metode
Primarni cilj hitra vrednost visoka zanesljivost
Zahteve v veliki meri hitre,
nepričakovane,
neznane spremembe
zgodaj poznane in v veliki meri
stabilne zahteve
Velikost majhne skupine in projekti večje skupine in projekti
Arhitektura zasnovano za trenutne zahteve zasnovano za sedanje in
predvidljive zahteve
Planiranje in nadzor notranji načrti, nadzor
kakovosti
dokumentirani načrti,
količinski nadzor
Stranke posvečanje stranki, izobražene,
sodelujoče
interakcija strank, ko je
potrebno, osredotočenost na
pogodbena določila
Razvijalci agilni, izobraženi, sodelujoči načrtno usmerjeni, ustrezno
usposobljeni za dostopanje do
zunanjega znanja
Obnova poceni draga
Tveganje neznana tveganja, velik vpliv dobro znana tveganja, manjši
vpliv
Vir: M. A. Awad, A Comparison between Agile and Traditional Software Development, 2005, str. 38.
-
33
4 PREDSTAVITEV METODOLOGIJE SCRUM
Metodologija Scrum se je razvila za uspešnejše upravljanje projektnega dela razvojnega
procesa. Scrum se osredotoča na delo posameznika v skupini za doseg zastavljenega cilja,
obenem pa ne določa uporabe specifičnih tehnik in tehnologij pri samem razvoju. Scrum
poudarja prožnost, prilagodljivost in ustvarjalnost. Cilj metode Scrum je agilni razvoj v
spreminjajočem se okolju sprememb.
Zgodovina razvoja Scrum-a sega že v leto 1986, ko se je razvil nov pristop za hiter in
prilagodljiv razvoj novih izdelkov. Leta 1993 pa je bila metodologija dokončno oblikovana
s strani Ken Schwa