> grundläggande processmodeller
DESCRIPTION
> Grundläggande processmodeller. Koda och fixa Vattenfall Iterativ och inkrementell Lättrörlig (agile). 1. > Koda och fixa. Hanterar inte problemen vid utveckling Kan ändå användas ibland: Ingen overhead => snabb. - PowerPoint PPT PresentationTRANSCRIPT
1
<< Processmodeller >>
Grundläggande processmodeller
• Koda och fixa• Vattenfall• Iterativ och inkrementell
– Lättrörlig (agile)
2
<< Processmodeller >>
Koda och fixa
• Hanterar inte problemen vid utveckling• Kan ändå användas ibland:
– Ingen overhead => snabb. – Kräver ingen process kunskap =>
oerfaren personal kan användas– Användbar för små subprojekt där koden
strax skall kastas (GUI-prototyp…)
KodaKoda
FixaFixaKravspec(frivilligt)Kravspec(frivilligt)
Leverans(kanske)
Leverans(kanske)
3
<< Processmodeller >>
Vattenfallsmodellen
KRAVKRAV
DESIGNDESIGN
KOD & TESTKOD & TEST
INTEGRATIONINTEGRATION
FÖRVALTNINGFÖRVALTNING
V
V
V
V
V
K
Kod
I
D
T
4
<< Processmodeller >>
Vattenfallsmodellen
• Också känd som:– Den klassiska livscykelmodellen – ”Once-through”– “Big bang integration”.– Sekventiell process
• Processen flödar bara i en riktning, varav namnet vattenfall.– Det *går* att gå tillbaka, men det kostar.
Processen är byggd på att man inte får en chans till att revidera innevarande steg senare varför man lägger ned mycket energi på att få allt rätt från början innan man går till nästa steg…
K
Kod
I
D
T
5
<< Processmodeller >>
Vattenfall - positivt
• Indelning i discipliner (=faser) =>– möjligt att dela upp arbete mellan utvecklare.
• Arbetsuppdelningen =>– utvecklare kan specialisera sig.
• Seniora utvecklare i de tidiga faserna =>– juniora utvecklare kan vara produktiva… i de
senare faserna
[DeGrace 1990]
K
Kod
I
D
T
6
<< Processmodeller >>
Vattenfall - problem
• Förståelse för problemet nås ofta först efter vi börjat med lösningen– Krav är vanligen ofullkomliga;
”I Know It When I See It” (IKIWISI)…
• Osynlig produkt till slutet av projektet.– Fokus på projektet (dokument) ej på produkten (kod).– Slutanvändarens feedback kommer för sent – Det tar lång tid innan problem syns
• Seniora utvecklarna drar vidare efter de tidiga faserna… vem skall då de juniora fråga?
[DeGrace 1990]
K
Kod
I
D
T
7
<< Processmodeller >>
Vattenfall - problem
KRAVKRAV
DESIGNDESIGN
KOD & TESTKOD & TEST
INTEGRATIONINTEGRATION
FÖRVALTNINGFÖRVALTNING
V
V
V
V
V
Pengar eller tid slu
t
Resultat = Inget
K
Kod
I
D
T
8
<< Processmodeller >>
Vattenfall - problem
Hög
Tid
Krav
Design
Impl
Test
DriftsättnLåg
Kunskap om projektet
Beslutens påverkan på projektet
”De viktigaste besluten fattas när kunskapen om projektet är som
sämst”
”De viktigaste besluten fattas när kunskapen om projektet är som
sämst”
[Wenell 2001, s 48, modif]
K
Kod
I
D
T
9
<< Processmodeller >>
När upptäcks och möts risker?Risk
Tid
Risknivå sjunker sent
Krav
Design
Impl
Test
Driftsättn
Vattenfall
K
Kod
I
D
T
10
<< Processmodeller >>
Vattenfall - användningsområde
• Kan användas när:– kraven är väl kända och– arkitekturen är väl känd och– det finns tillräckligt med kalendertid för att arbeta
sekventiellt
• Exempel på rimligt användande:– anpassning av en produkt ur en produktlinje till en
viss kund– utveckling av en kompilator
[DeGrace 1990, Boehm 2000 s 8, (kompilator tillagt)]
K
Kod
I
D
T
11
<< Processmodeller >>
Hur komma åt problemen med vattenfallsmodellen?
Iterativt & inkrementellt
Fritt efter: [Weinberg 1982 s 93]
Vattenfallsmodellen
Dela upp problemet i mindre bitar och lös bit för bit (“Divide and conquer”)
A B
Kom
ple
xit
et
Problemstorlek
Förvirring
ProblemstorlekA B
Kom
ple
xit
et
X
Förståelse Förståelse
K
Kod
I
D
T
12
<< Processmodeller >>
Iterativ och inkrementell utveckling
KRAVKRAV
DESIGNDESIGN
KOD & TESTKOD & TEST
INTEGRATIONINTEGRATION
Iteration 1
Iteration 2
Iteration n
…
FÖRVALTNING
FÖRVALTNING
KRAVKRAV
DESIGNDESIGN
KOD & TESTKOD & TEST
INTEGRATIONINTEGRATION
KRAVKRAV
DESIGNDESIGN
KOD & TESTKOD & TEST
INTEGRATIONINTEGRATION
KRAVKRAV
DESIGNDESIGN
KOD & TESTKOD & TEST
INTEGRATIONINTEGRATION
Iteration 3
(iteration = upprepning)Tid
Litet system Större system
Ännu större systemFärdigt system
KD
KT
I
13
Risk
Tid
Risknivåsjunker tidigt
Iterativ
Krav
Design
Impl
Test
Driftsättning
<< Processmodeller >>
Attackera (möt) riskerna
1) Det är hit jag vill komma snabbt!=> feedback!
2) Därför måste jag vänta med lite av detta
KD
KT
I
14
Risk
Tid
VattenfallIterativ
[Kroll 2003, fig 2.1]
Riskminskning
<< Processmodeller >>
Riskreducering
KD
KT
I
15
Pengar eller tid slut
…
FÖRVALTNING
FÖRVALTNING
KK
DD
K & TK & T
II
KK
DD
K & TK & T
II
KK
DD
K & TK & T
II
KK
DD
K & TK & T
II
System att driftsätta (begränsat
)
Litet system Större system
Färdigt system
<< Processmodeller >>
Iterativ och inkrementell utveckling – fördel
KD
KT
I
16
<< Processmodeller >>
Iterativ och inkrementell utveckling
som svar på problem med vattenfallsmodellen
• Lämpar sig för kravförändringar– Slår bara fast de kraven som ska byggas närmaste
framtiden
• Kontinuerlig integration => – tidigare feedback på arkitektur/designmissar– tidigare användarfeedback: ”Rätt produkt?”– lättare hitta orsak till buggar
• Risker upptäcks/fixas under tidiga integrationer
[Kroll 2003]
KD
KT
I
17
<< Processmodeller >>
Iterativ och inkrementell utveckling kan vara svårstyrd
Processen riskerar bli svårstyrd / osynlig, inga naturliga milstolpar
While (System Not Ready) {
Lite på kraven
Lite design
Lite kod och testning
Integrering
}
Förvaltning
While (System Not Ready) {
Lite på kraven
Lite design
Lite kod och testning
Integrering
}
Förvaltning
Ingen uppföljning – allt flyter
KD
KT
I
18
<< Processmodeller >>
Ta grepp om den iterativa processen
• Styr upp hela processen– Faser med milstolpar/grindar
• i XP = release
– Iterationer inom faserna
• Styr upp varje iteration– I XP = fast längd (”timebox”) + iterationsplanering i
början av varje iteration
KD
KT
I
19
<< Processmodeller >>
Ta grepp om den iterativa processen – exempel RUP
Etablering Konstruktion ÖverlämningFörber.
Faser
Krav
Analys & Design
Implementation
Test
Utvecklingsmiljö
Driftsättning
Kärndiscipliner
Stödjande discipliner
Iterationer
initial iter.#1
iter.#2
iter.#n
iter.#n+1
iter.#n+2
iter.#m
iter.#m+1
Konfig- och ändringshantering
Verksamhetsmodellering
Projektledning
KD
KT
I
20
<< Processmodeller >>
Vad används i industrin?
• Undersökning om 104 projekt från 2001-2002 – indikerar:
• 64% inkrementell & iterativ • 36% vattenfallsmodell
– Deltagande företag inkluderar• Från Indien: Motorola India Electronics, Infosys, Tata
Consulting, and Patni Computing • Från Japan: Hitachi, NEC, IBM Japan, NTT Data, SRA,
Matsushita Electronics, Omron, Fuji Xerox, and Olympus• Från USA: IBM, Hewlett-Packard, Sun Microsystems,
Microsoft, Siebel Systems, AT&T, Fidelity Investments, Merrill Lynch, Lockheed Martin, TRW, and Micron Technology
• Från Europa: Siemens, Business Objects, och Nokia
[Cusumano 2003]
KD
KT
I
KD
KT
IK
Kod
I
D
T
21
<< Processmodeller – Lättrörligt >>
Lättrörlig (agile) utvecklingsprocess
Grundtanken med lättrörlig utveckling är att i en föränderlig värld krävs utvecklingsmetoder som hanterar förändring som en del av verkligheten, inte sådana som blundar för förändringar eller som försöker reglera bort dem. Fler regler kommer inte ge oss fler lyckade mjukvaruprojekt. Vi behöver flexibilitet - inte rigididet.
[www.agilesweden.org]
22
<< Processmodeller >>
Spektrum mellan feedbackdriven (lättrörliga) och förutsägelsedriven (”plandrivna”)
Vattenfall,Rigidakontrakt
Milstolpe-plan-driven model
Milstolpe-risk-driven model
Adaptiv mjukvaru-utveckling
Hackare XPCrystal Clear
Lättrörliga (agile) metoder
Rational Unified Process (RUP)
Förutsägelse-driven
Feedback-driven
[Boehm 2002, modifierad]
Kod ifokus
Dokument
i fokus
För långt hit KAOS! <=
För långt hit => Rigiditet
Lättrörlig ”Plandriven”
23
Principer för lättrörlig utveckling:• Viktigast är att göra kunden nöjd• Välkomna kravförändringar• Verksamhetskunniga och utvecklare arbetar tillsammans• Självgående och ansvarstagande individer • Kommunikation ansikte mot ansikte • Fungerande produkt/system är det främsta måttet på
framsteg. • Agile verkar för uthållig utveckling• Teknisk elegans och bra design• Enkelhet - konsten att göra rätt saker, varken mer eller
mindre.• Självorganiserande team• Gruppen utvärderar och anpassar regelbundet sitt arbetssätt
för att förbättra sin effektivitet.
Förenklat/omarbetat från: [www.agilesweden.org]
Agile
24
Lättrörlig utveckling är ett samlingsbegrepp för ett antal metoder:
• Lean software development
• Extreme programming
• Crystal Clear
• DSDM
• SCRUM
• MSF Agile
• ...
Denna föreläsning
har exempel härifrån
25
Eliminera slöseri
[Liker 2004, Fig 3-1: Waste in a truck chassis assembly line]
Gör bara sånt som ger värde för en kund,
och gör det utan fördröjning. [Brandberg 2004]
Gör bara sånt som ger värde för en kund,
och gör det utan fördröjning. [Brandberg 2004]
Lean
26
Fördröj åtaganden
Lean
• Överge idén att det är en god idé att starta utveckling med en komplett specifikation
• Beroenden– Systemarkitektur bör medge tillägg av valfri
egenskap vid valfritt tillfälle• Behåll valmöjligheter
– Tänk på kod som ett experiment – gör den ändringstolerant.
• Planlägg irreversibla beslut till “the Last Responsible Moment”– Lär så mycket som möjligt innan irreversibla
beslut tas.
[http://www.poppendieck.com/]
27
Leverera snabbt
Lean
Gör det möjligt att komprimera ”the value stream” =>Vi kan fördröja beslut =>
Kunder kan bestämma sig senare, när de vetmer vad de behöver
Vi får återkoppling tidigare => mer pålitlig återkopplingvi lär oss mer
[Poppendieck 2003, page xxvi]
28
Respektera människor
Lean
• Människorna i frontlinjen kombinerar kunskapen om detaljerna med kraften av många tankar
• Eftersom beslut tas sent och exekveringen är snabb, är det inte möjligt för en central ledning att detaljstyra arbetarnas aktiviteter
[Poppendieck 2003, page xxvii]
29
Extreme Programming ärett sätt att utveckla mjukvara och fokuserar på:
– Excellent användning av programmeringstekniker– Tydlig kommunikation
– Lagarbete (teamwork)
• att komma förbi ”Jag vet bättre än alla andra och därför behöver jag bli lämnad ensam för att vara den bästa”
[Beck 2004, kapitel 1]
XP
Extreme Programming (XP)
DESIGNDESIGN
KODNINGKODNING
TESTTEST
Visa - LYSSNAVisa - LYSSNA
[Beck 2000]
XP
Tag vanliga ”sunda förnufts-principer” och använd dem extremt => namnet.
• Kodgranskning är bra… – granska ständigt (parprogrammering)!
• Testning är bra… – testa ständigt (bygg testerna först)
• Integrationstest är viktigt…– integrera och testa flera gånger varje dag!
XP
[Beck 2000 s xv]
Tag vanliga ”sunda förnufts-principer” och använd dem extremt => namnet.
• Design är viktig… – designa dagligen (refactoring)!
• Enkelhet är bra…– var nöjd med det enklaste som fungerar!
• Arkitektur är viktig…– alla jobbar med att förfina arkitekturen
ständigt!
• Små iterationer är bra…– gör iterationerna korta
XP
[Beck 2000 s xv]
Fyra av varandra beroende variabler
Funktionalitet
Kvalité
(Utvecklings)tid
Kostnad
Produkt
[Beck 2000]
XP
Fyra av varandra beroende variabler
• Regel: – kunden bestämmer värdet på 3 variabler
utvecklarna säger sedan vad värdet på den 4:e variabeln blir
• Risk: kunden vill optimera alla 4– Risken undviks genom att göra variablerna
synliga => medvetna val.
[Beck 2000, kapitel 4]
XP
35
XP Primära Sedvanor
[Beck 2004 chapter 7]
– Sit together
– Whole team
– Informative workspace
– Energized work
– Pair programming
– Stories
– Weekly cycle
Quarterly cycle
Slack
Ten-minute build
Continuous integration
Test-first programming
Incremental design
Generally safe to introduce one at a time, or in any order[http://www.xp123.com/xplor/xp0502/index.shtml]
XP
36 Från kurs 2i1074 IT Projekt, del 2 - Tekniker för mjukvaruutveckling vt 2005
Sitt tillsammansXP
37
Fig 10-1Agile Software Development. Evaluating the Methods for Your Organization [Artech House 2005]
Sitt tillsammansXP
38
<< Example of XP Primary Practices >>
Informative workspace
http://www.scissor.com/resources/teamroom/ assessed 2006-02-01
XPInformativ arbetsyta
39 Från kurs 2i1074 IT Projekt, del 2 - Tekniker för mjukvaruutveckling vt 2005
Informativ arbetsytaXP
40
Informativ arbetsyta
[Poppendieck 2003, fig 4.1]
XP
Crystal Clear karakteristik
• Familjen av Crystal-metoder:– fungerar även med fasta pris projekt– utvecklades inom fasta-pris projekt, som ofta offereras till för
lågt pris, så projektgruppen måste vara mycket effektiv och kreativ för att bli klar i tid och inom budget
• Crystal har mer fokus på effektivitet än lättrörlighet• Crystal uttrycker att kreativitet ihop med reflektion krävs för att
nå framgång
• Crystal Clear är en metod inom Crystal-familjen avsedd för små projekt. Crystal Clear: – passa samlokaliserade projektgrupper upp till cirka 8
personer– kan ses som ett avslappnad alternativ till Extreme
Programming
[Cockburn 2005, förord (sid xix) och kap 4]
CC
42
Crystals Clears egenskaper
• Sju säkerhetsegenskaper att styra mot:– Frekventa leveranser– Reflektiv förbättring– Osmotisk kommunikation– Personlig säkerhet– Fokus– Enkel åtkomst till expertanvändare– Teknisk miljö med:
• automatiserad testning, • konfigurationshantering och • frekvent integration
Obligatoriska att använda i Crystal Clear
[Cockburn 2005, kapitel 2]
CC
<
43
Crystals Clears strategier & tekniker
• Exploratory 360°• Early Victory• Walking Skeleton• Incremental Rearchitecture• Information Radiators
[Cockburn 2005, kapitel 3]
CC
• Metodutformning• Reflektionsseminarier • Blitz Planning• Delphi uppskattning • Dagliga stå-upp möten • Lättrörlig interaktionsdesign• Processminiatyr• Sida vid sida programmering • Burn Charts
Använd vilka strategier, sedvänjor och tekniker du behöver från andra ställen som t ex från boken”Extreme Programming Explained”... Strategierna and teknikerna ovan är de som ”är ett bra start, rekommenderas av erfarna utvecklare, få människor verkar känna till, är enkla, och, mest av allt, är användbara”
44
Reflektionsseminarium
Behåll dessa
Pröva dessa
Problem
Behåll dessaTyst tid (kl 9-12)
Dagliga möten
Pröva dessaPartestning
”Böter” för avbrott Programmerarna hjälper testarna
ProblemFör många avbrottLeverans av buggig kod
[Cockburn 2005, fig 3-6 modif]
CC
45 [Cockburn 2005, kapitel 3]
Reflektera 15-60 minuter i hela teamet
för att hitta sätt att förbättra arbetssättet.
Gör det en gång i veckan, varannan vecka
eller en gång i månaden. Behövs
mer/oftare i början av ett projekt.
ReflektionsseminariumCC
46
• För att inte mötet ska bli långvarigt står man upp
• Detta tar var och en upp:– (Vad gjorde jag igår?)– Vad har jag planerat att
arbeta med idag?– Vad (kan) hindra(r) mig?
• Mötet ska inte användas för att lösa problem utan för att identifiera problem
Dagliga stå-upp möten
[Cockburn 2005, kapitel 3, modifierat]
CCCC
47
Rekommendation för projekten• Veckoplanering (iterationsplanering)
• Reflektionsseminarium
• Morgonmöte
• Jobba i par (motsv parprogrammering)
• Hitta lösningar genom att – jobba ”brett” och ”oberonde” (läxor?)– sammanställ sedan – värdera och analysera förslag– besluta
Lathund8 hörnstenar som
bygger ett IT-projekt!?
(”Use Case” = Krav tills vidare)
Lathund8 hörnstenar som
bygger ett IT-projekt!?
(”Use Case” = Krav tills vidare)
50
Slutsatser
• Det finns problem• Processer hjälper till att motverka problemen• Det gäller att välja =>
– kunskap om processmodeller, metoder…; fördelar, nackdelar och till vad de passar är essentiella
• Varje processmetod/ramverk måste anpassas till:– din egen organisation – problemdomänen och – ditt projekt