väle tarkvaraarendus - kodu.ut.eekodu.ut.ee/~kiho/tvtkonspekt/votsasonagile/votsasonagile.pdf ·...
TRANSCRIPT
1
Väle tarkvaraarendusVäledad metoodikad
Veljo Otsason
Loengute kava
1. Sissejuhatus teemasse– Mis on väle arendus ja miks see hea on?
2. Väledad metoodikad– RUP, XP, DSDM, Scrum jne. Nende
sarnasused ja erinevused.3. Ekstreemprogrammeerimine
– Põhimõtted, arendusprotsess, praktikad jne.
2
Tarkvaraarenduse metoodika
• Metoodika on süstemaatiline viis millegi tegemiseks (nt. tarkvara arendamiseks)
• Mõned metoodika omadused:– Detailsus (rangus, täpsus, ...) – kui rangelt
tegevust kirjeldatakse– Skoop – kui suurt ulatust kogu protsessist,
rollidest, tegevustest metoodika katab– Elemendid, mida kirjeldatakse (nt. rollid,
tehnikad, protsess, tehised, ...)
Mis on väle arendus?
• Väle (agile) lähenemine tähendab:– Kergekaalulist arendusprotsessi– Muutustega kohandumist– Inimestele orienteeritust
• Üks võimalik viis, kuidas tarkvara luua. Sobib paremini teatud projektide korral
• Olemas mitmed erinevad väledad metoodikad
• License to hack?
3
Väleda arenduse manifest
• Eelistatakse:– isikuid ja suhtlust
protsessile ja vahenditele– töötavat tarkvara
kõikehaaravale dokumentatsioonile– kliendiga suhtlust
lepinguläbirääkimistele– muutustele vastamist
plaani järgimisele
- agilemanifesto.org
Väle vs. plaan-juhitud
Täielik“häkkerlus” XP
Täielikult etteplaneeritud
tegevus
Väledad metoodikad
CMMI
- Barry Boehm, USC
4
Väle vs. plaan-juhitudVäle arendus• Paindlikud, taibukad, tihedalt
koos töötavad arendajad• Pühendunud, taibukad,
volitatud kliendid, kes töötavad koos arendajatega
• Toetub vaikivale teadmisele
• Kiirelt muutuvad ja arenevad nõuded
• Arvestatakse ainult hetke nõudmisi
• Koodi muutmine (rekodeerimine) odav
• Väikesed tiimid ja projektid• Kiire tulemus prioriteetseim
Plaan-juhitud arendus• Plaan-orienteeritud arendajad
kindlate oskustega• Kliendid, kes tunnevad kindlaid
valdkondi
• Toetub dokumenteeritud ja detailsele teadmisele
• Nõuded täpselt ette teada ning ei muutu
• Arvestatakse hetke ja tuleviku nõudmisi
• Koodi muutmine (rekodeerimine) kallis
• Suured tiimid, projektid• Stabiilsus ja kindlus
prioriteetsemad- Barry Boehm, USC
Planeerimise riskid
Aeg kulutatud planeerimisele
Risk
Kallim muutustetegemine
Plaan-juhitud arenduse optimum
Olukord, kus on parem rakendada plaan-juhitud metoodikaid
- Barry Boehm, USC
5
Planeerimise riskid
Aeg kulutatud planeerimisele
RiskOdavam
muutuste tegemine
Väle optimum
Olukord, kus on parem rakendada väledaid metoodikaid
- Barry Boehm, USC
Tänased teemad
• Erinevad väledad metoodikad luubi all• Nende kasutatavus maailmas• Arendusprotsess ning rakendatavad
tehnikad iga metoodika järgi• Väledate metoodikate sarnasused ja
erinevused
6
Väledad metoodikad
• Rationali unifitseeritud protsess (RUP)• Ekstreemprogrammeerimine (XP)• Erisus-juhitud arendus (FDD)• Adaptiivne tarkvaraarendus (ASD)• Dünaamiline süsteemiarendusmeetod (DSDM)• Crystal Clear• Kulusäästlik arendus (LD)• Scrum
Metoodikate kasutatavus – Cutter
• Cutter Consortium uuris kasutatavust 2001 a.• Uuringus osalejad
– 200 IS/IT juhti– Üle maailma (s.h. 33% Põhja-Ameerikast, 20% Euroopast)– Nii tarkvarafirmadest (39%) kui ka muudest firmadest, kes
tarkvara oma tarbeks arendavad– Erinevate aastakäivetega: nt. 37% alla $5M, 13% üle miljardi
dollari.• Ühe metoodika kasutamine ei välistanud teist• Kahjuks pole selge, mida mõeldi kasutamise all• Lisaks väledatele metoodikale uuriti ka CMM (27%) ja
ISO 9000 (26%) järgimist tarkvara loomisel• Enim oli kasutatud oma metoodikat, mis kooskõlas
väleda arenduse põhimõtetega (54%)
7
Cutter Consortium’i uuring
51%
38%
23% 22%19%
8% 7%3%
0%
10%
20%
30%
40%
50%
60%os
akaa
l vas
tanu
test
RUP XPFDD
ASDDSDM
Crystal
Clea
r LDScru
m
Lisaks:54% oli kasutanud omaleiutatud väledat metoodikat9% oli kasutanud mõnda muud väledat metoodikat
Metoodikate kasutatavus – Evans
• Evans Data Corporation uuris kasutatavust 2003 a.
• Uuringus küsitleti üle 600 Põhja-Ameerika ettevõtte
• Küsiti eelistatuimat metoodikat arenduseks• Enim kasutati oma metoodikat (40%)• 15% ei kasutanudki mingit metoodikat(?)
8
Evans Data Corp. uuring
Lisaks:40% kasutas omaleiutatud metoodikat15% väitis et ei kasutanudki mingit metoodikat
16%
9%
7%6% 5%
2%1% 0% 0%
0%
2%
4%
6%
8%
10%
12%
14%
16%
18%
osak
aal v
asta
nute
st
RAD XPmuu
väle
prog.
RUPJA
DScru
mDSDM
SASD
Kasutatavus Eestis
• Uuringut tehtud pole• Teada on, et on kasutatud:
– RUP– XP– RAD
• Enamusel oma metoodika, mis tihti koskmudeli modifikatsioon
9
Väledad metoodikad
• Rationali unifitseeritud protsess (RUP)• Ekstreemprogrammeerimine (XP)• Erisus-juhitud arendus (FDD)• Adaptiivne tarkvaraarendus (ASD)• Dünaamiline süsteemiarendusmeetod (DSDM)• Crystal Clear• Kulusäästlik arendus (LD)• Scrum
RUP
• Rational Unified Process (RUP) on:– iteratiivne ja inkrementaalne,– katab suurt osa arendusprotsessist,– konfigureeritav eri olukordade ja
organisatsioonide jaoks,– keskendub mudelite loomisele ja haldamisele.
• Spetsiaalsed arendusvahendid (nt. Rational Rose)
• Modelleerimiseks kasutatakse UML-i
10
RUP – protsessifaasid• Algatusfaas
– Defineeritakse projekti ulatus• Detailimisfaas
– Planeeritakse projekt– Spetsifitseeritakse erisused (features)– Luuakse arhitektuur
• Konstrueerimisfaas– Valmistatakse toode
• Siirdefaas– Kantakse toode lõppkasutajani
RUP – protsess
• Igas faasis läbitakse mitu iteratsiooni• Igas iteratsioonis erinev rõhuasetus
erinevatel töövoogudel:– Nõuete tuvastamine– Analüüs– Projekteerimine– Teostus– Testimine– ...
11
RUP – protsess
Algatus Detailimine Konstrueerimine Siire
Faasid Põhivood
Iter. #n
Iter. #n-1
Iter. #2
Iter. #1
... ... ... ... ...
Nõuded
Analüüs
Teostus
Projekteerimine
Testimine
Detailimisfaasi iteratsioon
RUP – praktikad
• Iteratiivne tarkvara arendus• Nõuete haldamine• Komponendipõhise arhitektuuri
kasutamine• Tarkvara visuaalne modelleerimine• Pidev tarkvara kvaliteedi kontroll• Tarkvara muudatuste juhtimine
12
RUP – infoallikad
• Arvutiklassis olemas RUP täisdokumentatsioon
• Raamatud:– I. Jacobson et al., “The Unified Software
Development Process”, 1999– P. Kruchten, “The Rational Unified Process-
An Introduction”, 2000• www.rational.com/rup• www.therationaledge.com
Väledad metoodikad
• Rationali unifitseeritud protsess (RUP)• Ekstreemprogrammeerimine (XP)• Erisus-juhitud arendus (FDD)• Adaptiivne tarkvaraarendus (ASD)• Dünaamiline süsteemiarendusmeetod (DSDM)• Crystal Clear• Kulusäästlik arendus (LD)• Scrum
13
XP
• eXtreme Programming (XP)• Põhiväärtused:
suhtlemine, lihtsus, tagasiside, julgus• Detailsed praktikad• Iteratiivne protsess• Lähemalt järgmises loengus...
Väledad metoodikad
• Rationali unifitseeritud protsess (RUP)• Ekstreemprogrammeerimine (XP)• Erisus-juhitud arendus (FDD)• Adaptiivne tarkvaraarendus (ASD)• Dünaamiline süsteemiarendusmeetod (DSDM)• Crystal Clear• Kulusäästlik arendus (LD)• Scrum
14
Erisus-juhitud arendus
• Feature Driven Development (FDD)• Iteratiivne ja tulemustele orienteeritud• Kirjeldab analüüsi, projekteerimise ja
teostuse faase• Baseerub samuti UML-il• Keskne mõiste – erisus (feature)• Erisusi arendavad erisusmeeskonnad, mis
komplekteeritakse klasside järgi (igal klassil on omanik)
FDD – Mis on erisus?
• Loodava süsteemi üks funktsionaalne nõue e. omadus
• Mingi tegevus, mida süsteem peab tegema
• Kliendile arusaadav ja vajalik• Ühe erisuse arendus kestab tavaliselt
tunnid kuni päevad (max 2 nädalat)• Sellega tagatakse arenduse jälgitavus
kliendile
15
FDD – protsessifaasid
• Üldmudeli loomine• Erisuste nimekirja koostamine• Erisuste planeerimine• Erisuse projekteerimine• Erisuse teostamine (kodeerimine)
Viimased kaks faasi korduvad igas iteratsioonis ning paralleelselt võib käia mitme erisuse arendus
FDD – protsess
Looüldmudel
Koostaerisustenimekiri
Planeerierisused
Disainierisus
Teostaerisus
16
FDD – praktikad
• Valdkonna modelleerimine• Erisushaaval arendamine• Individuaalne omand• Erisusmeeskonnad• Ülevaatused• Regulaarsed translatsioonid• Konfiguratsioonihaldus• Tulemuste jälgitavus ja aruanded
FDD – infoallikad
• Raamatud:– S. Palmer et al., “A Practical Guide to
Feature-Driven Development”, 2002– P. Coad et al., “Java Modeling In Color With
UML: Enterprise Components and Process”, 1999
• www.featuredrivendevelopment.com
17
Väledad metoodikad
• Rationali unifitseeritud protsess (RUP)• Ekstreemprogrammeerimine (XP)• Erisus-juhitud arendus (FDD)• Adaptiivne tarkvaraarendus (ASD)• Dünaamiline süsteemiarendusmeetod (DSDM)• Crystal Clear• Kulusäästlik arendus (LD)• Scrum
Adaptiivne tarkvaraarendus
• Adaptive Software Development (ASD)• Aluseks pidev muutumine• Arendustsükkel: Oleta – Osale – Õpi• Mitte eriti detailne metoodika• Alates 2001 koos Crystal metoodikatega
18
ASD – arendustsükkel
Oleta
Õpi
Osale
ASD – protsess
Tsükliplaneeri-
mine
Projektialgatamine
Paralleelnekomponentide
arendus
Kvaliteediülevaatus
Väljas-tamine
Õppimistsükkel
Oleta Osale Õpi
19
ASD – printsiibid
• Missioon-juhitud• Komponendipõhine• Iteratiivne• Ajalahterdatud• Muutusi salliv• Risk-juhitud
ASD – infoallikad
• Raamat:– J. Highsmith, “Adaptive Software
Development: A Collaborative Approach to Managing Complex Systems”, 2000
• www.adaptivesd.com
20
Väledad metoodikad• Rationali unifitseeritud protsess (RUP)• Ekstreemprogrammeerimine (XP)• Erisus-juhitud arendus (FDD)• Adaptiivne tarkvaraarendus (ASD)• Dünaamiline süsteemiarendusmeetod
(DSDM)• Crystal Clear• Kulusäästlik arendus (LD)• Scrum
DSDM
• Dynamic Systems Development Method(DSDM)
• Põhineb RAD lähenemisel• Metoodikat haldab DSDM konsortsium,
millel üle 400 liikme üle maailma– Populaarsem Euroopas, eriti UK-s– Konsortsiumisse kuuluvad suurimad briti
firmad (13% IT-firmadest, kelle käive >£100M)– Koolituse läbinud üle 20 000 spetsialisti
21
DSDM – tarkvara kolmnurk
Tavaline
Funktsionaalsus
Aeg Ressursid
DSDM
Funktsionaalsus
RessursidAegfikseeritud
muutuv
DSDM – millal ei sobi?
• Rakendamine raske, kui progress pole kasutajale jälgitav (nt. reaalajasüsteemid, protsessijuhtimine vms)
• Ülikriitilise tarkvara korral, kuna puuduvad ülitäpsed kontrollimehhanismid
22
DSDM – tiimid
• Arendustiimis 2..6 inimest, projektis võib olla mitu tiimi (soovitavalt max 6)
• Igas tiimis vähemalt üks kasutaja esindaja• Kandvad rollid projektis:
– Projektijuht– Tehniline koordinaator– Visionäär
DSDM – põhimõtted• Kasutajate aktiivne osalus• Tiim on volitatud otsustama• Sagedased väljalasked• Ärieesmärkide saavutamine on esmatähtis• Iteratiivne ja inkrementaalne arendus• Kõik muutused on tagasivõetavad• Määratakse üldised nõuded• Testimine kogu projekti jooksul• Kõigi osapoolte vaheline koostöö
23
DSDM – protsessifaasid• Projektieelne faas
– Ressursside olemasolu? Planeerimine järgmisteks faasideks. Koolitus vajadusel
• Teostuvusuuring– Kas DSDM rakendamine on mõttekas? Põhiprobleem? Esialgne
hinnang ressursikulule.• Talitlusuuring
– Talitluse nõuded? Äriprotsesside analüüs. Koostatakse prioriteeritudnõuete nimekiri. Kõigi kasutajagruppide kaasamine.
• Funktsionaalse mudeli faas (iter.)– Realiseeritakse põhilised funktsionaalsed nõuded. Luuakse
funktsionaalne mudel• Projekteerimine ja teostuse faas (iter.)
– Valmistatakse kvaliteetne süsteem, mis vastab ka mittefunktsionaalsetele nõuetele. Testitud süsteem kasutajatele.
• Juurutamise faas (iter.)– Arenduskeskkonnast töökeskkonda, võib-olla mitmes etapis.
• Projektijärgne faas– Opereerimine ja hooldus.
DSDM – protsess
Funktsionaalsemudeli faas
Projekteerimiseja teostuse
faas
Juurutamisefaas
iteratsioon iteratsioon
iteratsioon
inkrement
Talitlusuuring
Teostuvus-uuring
24
DSDM – infoallikad
• Raamat:– J. Stapleton, “DSDM – Business Focused
Development”, 2003• www.dsdm.org
– Siit saab ka metoodika käsiraamatu tutvumisversiooni
Väledad metoodikad
• Rationali unifitseeritud protsess (RUP)• Ekstreemprogrammeerimine (XP)• Erisus-juhitud arendus (FDD)• Adaptiivne tarkvaraarendus (ASD)• Dünaamiline süsteemiarendusmeetod (DSDM)• Crystal Clear• Kulusäästlik arendus (LD)• Scrum
25
Crystal metoodikad
• Terve perekond metoodikaid• Praegu kirjeldatud Clear ja Orange• Eriline rõhk inimestel ja nendevahelisel
suhtlemisel. Mida efektiivsem suhtlus, seda vähem vaja vahepealseid tehiseid!
• Oluline on metoodika kohaldamine (baasmetoodikad)
Crystal metoodikad
• Projektid jaotatakse tiimi suuruse ja kriitilisuse järgi
• Kriitilisus = kui suurt ohtu tarkvara vead kujutavad:– Mugavus (loss of Comfort)– Mõningane raha (loss of Discretionary money)– Oluline raha (loss of Essential money)– Elu (loss of Life)
26
Crystal metoodikad
L6 L20 L40 L80
E6
D6
C6
E20 E40 E80
D20 D40 D80
C20 C40 C80
Clear Yellow Orange Red
Süsteemikriitilisus
Tiimisuurus
Crystal Clear
• Väikestele tiimidele (4..6 in.) vähekriitilistes projektides
• Esmatähtis on time-to-market• Tiim töötab koos ühes ruumis• Tehnikaid ei määratleta – neid tuleks võtta
teistest metoodikatest
27
Crystal Clear - praktikad
• Inkrementaalne arendus• Monitoorimine tarkvarast lähtuvalt• Kasutajate otsene seotus• Automaatsed regressioonitestid• Kasutajaülevaatused• Piisava stabiilsuse printsiip• Tagasivaateseminarid
Crystal – infoallikad
• Raamat:– A. Cockburn, “Crystal Clear: A human-
powered software development methodology for small teams”, 2003, draft: members.aol.com/humansandt/crystal/clear/
• www.crystalmethodologies.com
28
Väledad metoodikad
• Rationali unifitseeritud protsess (RUP)• Ekstreemprogrammeerimine (XP)• Erisus-juhitud arendus (FDD)• Adaptiivne tarkvaraarendus (ASD)• Dünaamiline süsteemiarendusmeetod (DSDM)• Crystal Clear• Kulusäästlik arendus (LD)• Scrum
Kulusäästlik arendus
• Lean Development (LD)• Sai alguse 1980’ndate autotööstusest• Pigem üldised juhtnöörid arenduseks• Ei määratleta rolle, tehiseid, tööprotsesse
29
LD – põhimõtted
• Kõige üleliigse eemaldamine• Õppimise kiirendamine ja võimendamine• Otsustamine nii hilja kui võimalik• Evitamine nii kiiresti kui võimalik• Tiim on volitatud otsustama• Terviklikkust silmas pidav arendamine• Asjatu optimeerimise vältimine
LD – infoallikad
• Raamat:– M. Poppendieck, “Lean Software
Development: An Agile Toolkit for Software Development Managers”, 2003
• www.poppendieck.com
30
Väledad metoodikad
• Rationali unifitseeritud protsess (RUP)• Ekstreemprogrammeerimine (XP)• Erisus-juhitud arendus (FDD)• Adaptiivne tarkvaraarendus (ASD)• Dünaamiline süsteemiarendusmeetod (DSDM)• Crystal Clear• Kulusäästlik arendus (LD)• Scrum
Scrum
• Keskendub arendusprotsessi juhtimisele ja kontrollimisele. Ei kirjelda konkreetseid tehnikad arenduseks
• Väikestele tiimidele (5..8 liiget)• Protsess jaguneb sprintideks, mis on 2..6
nädala pikkused iteratsioonid• Nõuded alguses toote nõuete nimekirjas
ning hiljem iga sprindi nimekirjas.• Kiirkoosolekud iga päeva alguses
31
Scrum – protsess
Scrum – infoallikad
• Raamat:– K. Schwaber et al., “Agile Software
Development with SCRUM”, 2001• www.controlchaos.com
32
Väledad metoodikad
• Rationali unifitseeritud protsess (RUP)• Ekstreemprogrammeerimine (XP)• Erisus-juhitud arendus (FDD)• Adaptiivne tarkvaraarendus (ASD)• Dünaamiline süsteemiarendusmeetod (DSDM)• Crystal Clear• Kulusäästlik arendus (LD)• Scrum
Võrdlus• Ulatus
– RUP, DSDM vs. Scrum, FDD• Detailsus
– XP, RUP vs. ASD, CrystalClear
• Rakendatavus– RUP ei piira, Crystal Clear
piirab• Iteratsioonid
– Igal pool olemas, kuid eri pikkustega (FDD, XP vs. RUP, Crystal Clear)
• Kliendi seotus– Eriti oluline XP ja DSDM korral
• Nõuded– kliendile mõistetavad osad
• Tiimi dünaamika– FDD muutuvad meeskonnad,
XP paarisprogrammeerimise partnerite vahetus
• Koodi omand– XP – kollektiivne, FDD -
individuaalne• Visuaalne modelleerimine
– RUP, FDD eeldavad UML-i• Metoodika arendus ja
haldamine– DSDM-i ja RUP-i arendavad
organisatsioonid• Mida on uuritud?
– XP ja RUP eelkõige
33
Kuidas metoodikat rakendada?
• Kasutamisele peab eelnema analüüs• Vajadus kombineerida eri metoodikaid• Rakendamine samm-sammult
olemasolevat metoodikat muutes• Eesmärk pole metoodikat kasutada vaid
edukalt tarkvara arendada
Kokkuvõtteks
• Väledaid metoodikaid on palju, mõned on rohkem kasutatavad, mõned vähem
• Levinuimad on RUP ja XP• Väledad metoodikad on üldiselt sarnased,
kuid esineb ka erinevusi
34
Järgmine kord
• Ekstreemprogrammeerimine detailsemalt• Väärtused. Põhimõtted. Arendusprotsess.• Tosin praktikat (paarisprogrammeerimine
ja muud)