Doing gooD, thanks!

Transcription

Doing gooD, thanks!
Ingeniørhøjskolen i Århus
Projekthåndbog
E- og IKT projekter
Ingeniørhøjskolen i Århus
Michael Alrøe
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
Versionshistorie
Ver.
1.0
1.1
1.2
1.3
1.4
Dato
12.01.2009
20.01.2009
29.01.2009
03.02.2009
03.02.2009
Initialer
MA
MA
MA
MA
MA
Beskrivelse
Første version beregnet for IHA semesterprojekter
Revideret efter feedback fra FOH
Beskrivelse af perspektiver for UML
Indsat beskrivelse af Banana SCRUM fra SFK!
Link til Visual Paradigm, og generel beskrivelse af UML værktøjer.
Formidling af SVN repository. Nyt afsnit om Projektstying
Forord
Denne note er skrevet for at komme med nogle generelle betragtninger omkring
udarbejdelse af semesterprojekter og afgangsprojekter på Ingeniørhøjskolen i Århus. De
enkelte kommentarer og råd bør altid vurderes i forhold til det givne projekt. Ved tvivl bør
den respektive vejleder kontaktes.
Mange af punkterne er fremkommet som kommentarer til generelle spørgsmål og
misforståelser jeg har fået som vejleder af både semesterprojekter og afgangsprojekter.
Jeg modtager meget gerne kommentarer omkring forslag til forbedringer og udvidelser.
Michael Alrøe, [email protected]
Grady Booch:
“People are more important than any process. Good people with a good process will
outperform good people with no process any time.”
Martin Fowler:
“You should use iterative development only on projects that you want to succeed”
Version 1.4
side 2
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
Indholdsfortegnelse
1
2
3
4
5
6
7
8
Generelt............................................................................................................................. 4
Projektdokumentation....................................................................................................... 5
2.1
Kravspecifikation .................................................................................................... 5
2.2
Tidsplan ................................................................................................................... 8
2.3
Analyse .................................................................................................................... 8
2.4
Design...................................................................................................................... 8
2.4.1 Arkitekturdesign (strukturering): ........................................................................ 8
2.4.2 Detaljeret design:................................................................................................. 9
2.5
Implementering ....................................................................................................... 9
2.6
Enhedstest/unittest................................................................................................... 9
2.7
Integrationstest ...................................................................................................... 10
2.8
Accepttest .............................................................................................................. 10
2.9
Bilag ...................................................................................................................... 10
2.10 CD ......................................................................................................................... 10
Udviklingsmetoder ......................................................................................................... 11
3.1
Adræt projektledelse.............................................................................................. 11
3.2
Konkrete udviklingsmetoder ................................................................................. 12
3.2.1 Vandfladsmodellen............................................................................................ 12
3.2.2 Struktureret Program Udvikling (SPU) ............................................................. 12
3.2.3 Rational Unified Process ................................................................................... 13
3.2.4 Extreme Programming ...................................................................................... 14
3.2.5 SCRUM ............................................................................................................. 15
3.3
IHA Udviklingsmodel ........................................................................................... 16
3.3.1 S-Model for styring ........................................................................................... 16
3.3.2 V-model for test................................................................................................. 17
3.3.3 W-model for leverancer..................................................................................... 18
3.3.4 U-model for udviklingsaktiviteter ..................................................................... 19
Review ............................................................................................................................ 20
Projektstyring.................................................................................................................. 20
UML ............................................................................................................................... 20
Ordliste/forkortelser........................................................................................................ 22
Referencer....................................................................................................................... 22
Version 1.4
side 3
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
1 Generelt
•
Både semesterprojekter og afgangsprojekter bør følge ”Vejledning for EITprojekter”. Vejledningen kan findes på Campusnet.
https://www.campusnet.iha.dk/cnnet/filesharing/SADownload.aspx?ElementId=459&FolderId=6666
&FileId=30005
•
•
•
•
•
•
•
•
Bemærk at projektrapporten skal skrives som en rapport specielt til censor eller en
anden ekstern person, som kan forventes at have samme generelle tekniske
forståelse som dem der skriver rapporten. Det betyder at vigtige resultater som
censor skal se skal fremgå af projektrapporten. Indledningsvis kan rapporten f.eks.
også indeholde en beskrivelse af problemdomænet. Resultater behøver ikke bare at
være det færdige skærmlayout, eller det færdige printlayout, men i højere grad det
interne design af produktet. Det kunne f. eks. være overordnede diagrammer der
definerer arkitekturen (klasse- sekvens-, elektriske diagrammer) for produktet. Det
er også i denne rapport hvor det er muligt at diskutere fordele/ulemper ved valgte
løsningsmodeller. Husk at denne rapport kan være det første som censor læser
omkring den specifikke problemstilling.
Det kan være en fordel at indgå en gruppekontrakt ved projektopstart. Hvis en
gruppekontrakt først indgås når det er ved at ”gå skævt” er det ofte for sent.
Udnævn en individuel person til at være ansvarlig for specifikke dokumenter –
dermed ikke at vedkommende er ansvarlig for udførelsen af arbejdet, men blot har
ansvaret for vedligeholdelsen af dokumentet.
Det kan ofte være en fordel ved større grupper (3+) at lave en oversigt over de
enkelte gruppedeltageres specifikke arbejdsområder. Oversigten kan indsættes i
projektrapporten, og giver dermed censor og vejleder en oversigt over den enkelte
projektdeltagers specifikke arbejdsområde.
Definer layout for dokumenter/kode ved projektopstart.
Husk løbende at dokumentere de valg/overvejelser/alternativer der blive foretaget i
løbet af projektet. Disse kan indsættes i ”Projekt Rapporten”.
”Projekt Rapporten” er en censorrapport, ud fra hvilken censor skal være i stand til
at vurdere projektet. Det betyder at alle væsentlige resultater skal præsenteres i
rapporten. Det kan være centrale diagrammer der viser den interne opbygning af
projektet – hvilket ofte er mere interessant end f. eks. hvordan den endelige
brugergrænseflade ser ud.
Der skal være figurnumre og figurtekst til alle figurer.
Århus Tekniske Bibliotek har en side omkring projektskrivning. Biblioteket har
anskaffet et referencestyringsværktøj, RefWorks, som stilles til rådighed for
studerende – kontakt biblioteket for at høre nærmere.
http://www.atb.dk/Projektskrivning-5849.aspx
Version 1.4
side 4
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
2 Projektdokumentation
2.1 Kravspecifikation
•
I forbindelse med udarbejdelse af kravspecifikation foregår der typisk et antal
aktiviteter:
Figur 1, Eksempel på specifikationsaktiviteter
•
•
Ved specifikation af de funktionelle krav kan use case teknikken anvendes. En ”use
case” kan oversættes til en brugssituation.
En use case baseret kravspecifikation kan opbygges efter nedenstående model:
Aktør-kontekst diagram
1. Indledning
2. Generel beskrivelse
3. Funktionelle krav
4. Ekstern grænseflade
5. Krav til ydelse
6. Kvalitetsfaktorer
7. Design krav
8. Andre krav
9. Del-levering
System/
Produkt
Use Case diagram
Use
Case 1
Use
Case 2
...
Use
Case n
Figur 2, Eksempel på opdeling af kravspecifikation.
Version 1.4
side 5
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
•
•
•
•
•
•
•
•
•
Udarbejd accepttestspecifikation sideløbende med kravspecifikation, hvilket sikrer
testbarhed af kravspecifikationen.
Alle krav skal være testbare!
Use cases kan beskrives i flere detaljeringsgrader, man definerer typisk:
Brief
– Typisk en sætning der beskriver hovedscenariet.
– Hvornår: Ved tidlig Requirement Analysis
Casual
– Typisk flere sætninger der beskriver hovedscenariet samt væsentlige
alternativer/undtagelser.
– Hvornår: Ved tidlig Requirement Analysis
Fully Dressed
– Komplet og detaljeret beskrivelse af alle scenarier og undtagelser.
– Hvornår: Inden udarbejdelse af testspecifikation og design. Start med at
udvælge de mest betydningsfulde Use Cases.
En kravspecifikation kan godt bestå af use case beskrivelser med forskellige
detaljeringsgrader. Vigtigt er det at den/de use cases der skal anvendes i den aktuelle
iteration er ”Fully Dressed”.
Ved use case beskrivelser er det vigtigt at gøre sig helt klar hvem der gør hvad:
1. Systemet …
2. Aktør1….
3. Systemet…
Den funktionelle beskrivelse skal være set fra aktørens/kundens side, og ikke fra
udviklers!
Brug gerne punktform for use case beskrivelserne.
Brug gerne punktform for beskrivelse af undtagelser, og hvor går systemet hen efter
udførelse af en undtagelse.
Det kan være en fordel at beskrive brugergrænsefladen med nogle skitser/skabeloner
for hvordan det endelige system kommer til at se ud. Brugergrænseflade skal ikke
være en integreret del af UC beskrivelserne, men kan evt. refereres til i et andet
afsnit. Det endelige system må ikke afvige væsentligt fra denne beskrivelse!
Begrebet ”Who has the ball” definerer en interaktion mellem aktører og system,
således at man som læser ikke er i tvivl om hvem der skal udføre den givne aktion.
1. ”Der indtastes en parameter der valideres”
Er det aktør eller system der validerer den konkrete indtastning.
Bedre:
1. Systemet udskriver prompt for parameter X(se fig.xx, afsnit yy).
2. Aktør1 indtaster parameter X.
3. Systemet validerer parameter X.
Undtagelse: Ugyldig parameter X
4. Aktør1 …..
Undtagelser:
Ugyldig parameter X
1. Systemet udskiver ….
2. Aktør1 ….
Version 1.4
side 6
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
3. Use case fortsætter i pkt. 1.
Det er vigtigt at få beskrevet hvad der sker efter en undtagelse. Det kan være at use
casen fortsætter i et punkt i normalforløbet, men det kan også være at use casen
afsluttes.
3. Use case afsluttes.
•
Det kan for nogle scenarier være en fordel at beskrive alternativer som en del af
normalforløbet. Dette kan f.eks. gøres ved at bruge indeksering A. B. C. …. for et
givent punkt i normalforløbet.
1. Systemet udskriver menu X(se fig.xx, afsnit yy).
2.A.
1. Aktør1 vælger a.
2. Systemet ….
3. Aktør1 ….
2.B.
1. Aktør1 vælger b.
2. Systemet ….
3. Aktør1 ….
2.C.
1. Aktør1 vælger c.
2. Systemet ….
3. Systemet ....
Fra pkt. 3 i ovenstående er der fælles forløb for alle alternativer.
•
Udformningen af en use case er ikke standardiseret, men som udgangspunkt bør
hver use case som minimum indeholde følgende:
Mål:
Her gives selve målet med use casen. Beskrivelsen skal supplerer og uddybe
den information der ligger i selve navnet (typisk 1-3 linjer tekst).
Normal scenarie:
Normalforløbet beskriver solskinsscenariet, hvor alt går efter planen og målet
med use casen opfyldes. De øvrige scenarier beskrives som undtagelser til
normalforløbet
Hver ny funktionalitet beskrives som et trin på en ny linje, der nummereres
med et fortløbende nummer. Det angives i hvert trin om det er aktøren eller
om det er systemet der har initiativet. Hver trin (sætning) beskrives i nutid og
skal føre et trin frem mod slutmålet.
Undtagelser:
Her angives hvad der skal ske for de forskellige undtagelser, der er angivet
under normalforløbet.
Version 1.4
side 7
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
Yderligere information omkring use case teknikken kan findes i [UMLLIGHT],
[SPUUML], og endelig har Alistair Cockburn skrevet en bog [Cockburn2000] udelukkende
om at skrive use cases.
2.2 Tidsplan
Der bør for hvert projekt udarbejdes en tidsplan. Det vigtige ved tidsplanen er at den
indeholder nogle målebare aktiviteter (milestones). Det vil f. eks. være meget svært at måle
på en aktivitet som hedder ”Implementering”, idet dette formentlig vil foregå gennem en
stor del af projektet. Det vil her være meget bedre f.eks. at opdele i nogle underpunkter. Det
kunne f.eks. være ”Implemetering af use case XX”.
2.3 Analyse
Det kan for nogle projekter være nødvendigt at udføre en analyse inden der kan udføres et
design. Analysen kan bruges til at undersøge teknologier mm. der kan bruges i designet af
systemet. Analysen dokumenteres i et separat dokument, og kan indeholde konklusioner på
analysen.
2.4 Design
Formålet med design er realisering af kravene fra kravspecifikationen. Der skal derfor ikke
udtænkes ny funktionalitet i denne fase.
Design dokumentationen kan med fordel opdeles i 2 dokumenter. Et dokument der
indeholder de arkitektur mæssige design overvejelser, og et detaljeret design dokument.
2.4.1 Arkitekturdesign (strukturering):
Kan indledes med en kort beskrivelse af den overordnede arkitektur af systemet. Kan
suppleres med en systemtegning.
Hardware:
• Opdeling i blokke.
• Beskrivelse af overføringsfunktion for hver blok.
• Interface mellem blokkene, f.eks.:
o Analoge/digitale niveauer
o Impedanser,
o Protokol (f.eks. mellem PC og mikroprocessor)
Software:
• Overordnet klassediagram uden attributter og metoder. Gerne suppleret
med associationsnavne og multipliciteter.
• Sekvensdiagram
• Detaljeret klassediagram med samme informationer som overordnet
klassediagram, men suppleret med arkitektur signifikante (læs vigtige)
attributter og metoder.
• Suppleret med andre diagrammer, f.eks. tilstands- og package
diagrammer.
Version 1.4
side 8
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
Alle diagrammer bør have en tilhørende kort beskrivelse
Ved komplekse systemer kan ”4+1 view” [Krutchen85] anvendes til
dokumentation af designet.
Der findes mange bøger og artikler om Objekt Orienteret Design (OOD).
Firmaet Object Mentor har en række gode grundlæggende artikler
tilgængelige på deres hjemmeside[RobertCMartin].
2.4.2 Detaljeret design:
Hardware:
• Realisering af den enkelte blok
• Enhedstest af den enkelte blok
Software:
• Detaljeret beskrivelse af de enkelte attributter og metoder for hver
enkelt klasse (kan evt. udelades hvis beskrivelser findes i kode – typisk
C#). Herunder også detaljer der skal bruges til implementering f.eks.
opsætning af registre for mikroprocessorer.
• Enkelte metoder med komplekse strukturer kan beskrives med
aktivitetsdiagrammer.
2.5 Implementering
•
•
•
•
•
•
•
Brug evt. versionsstyring
Campusnettet har en indbygget versionskontrol, som kan bruges som simpel
versionsstyring. Ved mere avanceret styring kan et SVN repository formidles, idet
IHA har en SVN server. Ved henvendelse til Helpdesk kan et SVN repository
formidles.
Definer en kodestandard. Ved C++ programmering har IHA en kodestandard, som
kan findes på Campusnet.
https://www.campusnet.iha.dk/cnnet/filesharing/SADownload.aspx?ElementId=459&FolderId=3974
8&FileId=171717
Brug tabulering/indryk ved hvert scope.
Brug engelske navne for metoder og attributter.
GUI delen kan være på lokalt sprog (Dansk/Engelsk/…).
Fjern ”gammel” kode fra den endelige version der skal afleveres til bedømmelse.
Bibehold formatering af kildetekster ved indsættelse i tekstbehandlingsprogram.
Kode kan blive næsten ulæselig uden korrekt formatering når den indsættes i f.eks
Microsoft Word!
2.6 Enhedstest/unittest
Kan både være for hardware og software. For software vil unittest normalt være test af en
klasse. Ligesom alle andre tests skal enhedstests være reproducerbare. Det betyder at det
klart skal fremgå hvilke parametre der påtrykkes, og hvilke resultater der forventes. Det kan
ofte være en fordel at automatisere enhedstest.
Version 1.4
side 9
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
2.7 Integrationstest
Tester samspillet mellem enhederne. Kræver ofte udvikling af test stubbe og driver
moduler. Kan udføres enten bottom-up eller top-down i et hierarki.
2.8 Accepttest
Er altid et separat dokument!
En test skal altid være reproducerbar, hvilket betyder at testspecifikationen skal definere
hvilke specifikke værdier/parametre der skal bruges for at gennemføre testen. Dette betyder
at også brugerinput fra f. eks tastatur skal fastlægges i testspecifikationen.
Før et testscenarium kan gennemføres kan det nogle gange være nødvendigt at nogle
startbetingelser (preconditions) er opfyldt. Disse betingelser noteres i testspecifikationen
umiddelbart før beskrivelsen af testen. Det kan være at nogle bestemte filer med et bestemt
indhold skal være til stede før end testen kan gennemføres.
2.9 Bilag
Vigtige bilag kan udskrives og indsættes i rapporten. Alle bilag bør være på CD.
2.10 CD
Indeholder selvfølgelig al dokumentation for projektet.
Kildekode bør også indeholde projekt filer således at projekterne direkte kan åbnes og
kompileres.
Komponenter/biblioteker der anvendes, og som ikke er en del af udviklingsværktøjet skal
kopieres på CD, eventuelt sammen med en vejledning for installation af
komponenten/biblioteket.
Version 1.4
side 10
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
3
Udviklingsmetoder
En udviklingsmetode består af en proces, et ordforråd, og et tilhørende sæt af regler og
guidelines. Processen definerer et sæt af aktiviteter som tilsammen fører til målene for
metoden. Den del af metoden som kan standardiseres er ordforrådet, hvilket ofte er
defineret ved en notation. UML standarden er et eksempel på en fælles notation. Regler og
guidelines definerer kvaliteten af processen og tilhørende arbejdsopgaver. En af
udfordringerne ved at beskrive en metode er at det er svært, hvis ikke umuligt, at beskrive
en proces som fungerer for alle typer af projekter. Det vil derfor ofte være nødvendigt at
tilpasse processen til den aktuelle opgave, og det kan endda være nødvendigt at beskrive
hvordan UML anvendes, idet UML stiller så mange muligheder til rådighed.
3.1 Adræt projektledelse
Den adrætte projektledelse tager udgangspunkt i principperne bag begreberne ”Agile” og
”Lean”. Begge tankesæt fokuserer på skabelse af værdi.
Lean fokuserer på kontinuerlige forløb af arbejde og leverancer og bygger på, at man
leverer værdi til næste led i kæden ved at undgå spild.
Agile baseres på det ”Agile Manifest” der blev indgået af en gruppe udviklere, og
foreskriver:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Hele manifestet og tilhørende principper kan læses på: http://agilemanifesto.org/
Det danske ord adræt er synonymt med behændig, hurtig og let. Og sådan bør god
projektledelse være. Derfor bliver komplekse projekter skåret ud i små bidder, så det bliver
nemt at have med at gøre og nemt at fokusere på netop det, der skaber værdi her og nu både for kunden og virksomheden.
Derudover gælder det om at kunne handle hurtigt på baggrund af den nye viden,
projektdeltagerne får gennem projektet, og være kvik til at omstille sig, når kunden ændrer
behov, eller konkurrenten introducerer et nyt produkt.
Adræt projektledelse gør op med ideen om, at et projekt skal følge en tung drejebog, hvor
alt er tilrettelagt ned i detaljen, og hvor målet fra begyndelsen er urokkeligt.
Adræt projektledelse gør op med den traditionelle måde at gennemføre et projekt på, hvor
man aftaler, at et projekt skal levere et specificeret produkt til en fast tid og inden for et på
forhånd aftalt budget.
Der er generelt enighed om at man bør følge en iterativ udviklingsmodel, hvor hver ny
iteration tilfører værdi til projektet. Hver iteration bør være timeboxed, hvilket betyder af
Version 1.4
side 11
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
fast længde. Hvis iterationsperioden ikke kan overholdes skal funktionalitet fravælges frem
for at forlænge iterationsperioden.
Som introduktion til emnet henvises til [SPUUML].
3.2 Konkrete udviklingsmetoder
Der findes mange forskellige konkrete udviklingsmetoder. Nogle eksempler på nogle
konkrete udviklingsmetoder er:
• Vandfaldsmodellen
• Struktureret Program Udvikling (SPU)
• Rational Unified Process
• Extreme Programming
• SCRUM
3.2.1 Vandfladsmodellen
Vandfaldsmodellen er en model for udvikling af software (en proces til at lave software)
hvor softwareudvikling betragtes som konstant flydende nedad (som et vandfald) gennem
faserne: kravspecifikation, design, implementation, afprøvning/fejlfinding, integration og
vedligeholdelse. Ordet blev introduceret i 1970 af W. W. Royce. Det er dog ironisk at
Royce selv var fortaler for en anden model nemlig iterativ softwareudvikling. Royce
fremførte oprindeligt hvad der nu er kendt som vandfaldsmodellen som et eksempel på et
system som han sagde, "var risikabel og inviterer til fiasko".
3.2.2 Struktureret Program Udvikling (SPU)
Denne metode er beskrevet i bogen "Håndbog i Struktureret Programudvikling" [SPU88]
der består af 8 vejledninger, der bygger på erfaringerne fra et kursus i Struktureret
Programudvikling. SPU- vejledningerne kan anvendes som softwarehåndbog, og indeholder
mange evig gyldige sandheder om softwareudvikling.
Bogen er et resultat af et Teknologirådsprojekt, hvor erfarne softwareudviklere og
projektledere fra tidl. Jysk Teknologisk, Elektronik Centralen og Regnecentralen har
udviklet SPU-konceptet over en periode på 2 år.
De otte vejledninger er:
• Vejledning i struktureret programudvikling
• Vejledning i kravspecifikation
• Vejledning i design
• Vejledning i softwaretest
• Vejledning i review
• Vejledning i projektstyring
• Vejledning i programdokumentation
• Vejledning i konfigurationsstyring.
En af forfatterne, Finn Overgaard Hansen, har skrevet en tilføjelse til bogen som frit kan
downloades [SPUUML].
Version 1.4
side 12
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
3.2.3 Rational Unified Process
Rational Unified Process (forkortet RUP) er en objektorienteret softwareudviklingsproces
og et kommercielt produkt fra et firma der siden 2002 har været en del af IBM. IBM står for
videreudviklingen af RUP og tilhørende software. RUP bruger UML som notationsprog.
Når man kun taler om metoden og ikke det tilhørende software bruger man ofte betegnelsen
Unified Process (forkortet UP).
RUP blev oprindeligt udviklet af Ivar Jacobson, Grady Booch og James Rumbaugh mens de
arbejdede sammen i firmaet Rational Software. De tre forenede kræfterne for at beskrive en
ensartet objektorienteret softwareudviklingsmetode, efter at de hver for sig (samt flere
andre) havde arbejdet med flere metoder og teknikker inden for området. Deres fælles
arbejde resulterede også i beskrivelsessproget UML [UML].
UP er en iterativ metode, der overordnet er opdelt i fire faser:
• Forberedelse (Inception): En kort fase, der har til formål at få et overblik over
kravene til systemet.
• Etablering (Elaboration): En lidt længere fase, hvor man dels udvikler centrale
dele af systemet, dels får en dybere forståelse af systemets krav og arkitektur.
• Konstruktion (Construction): Den længste fase, hvor man udvikler de resterende
dele af systemet.
• Overdragelse (Transition): En afslutningsfase, der drejer sig om færdiggørelse og
overgang til drift.
De enkelte faser deler man op i en række iterationer. Hvor mange iterationer man skal lave i
de enkelte faser for at udvikle et konkret stykke software afhænger af hvor komplekst det er.
Figur 3, Eksempel på faser i RUP.
Metoden har følgende overordnede principper:
• Iterativ:
Udviklingen foregår i relativt korte iterationer, i hvilke der i varierende grad
(afhængig af, hvor langt man er i forløbet) indgår elementer af kravspecifikation,
analyse, design, implementering og test mm.
Version 1.4
side 13
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
•
•
•
•
Inkrementel:
Hver iteration giver (i princippet) en udvidelse af det færdige system.
Use case drevet:
Use cases er kernen i udviklingen og bruges under såvel analyse, design,
implementering som test. Hver iteration vil normalt handle om at foretage en
fuldstændig udvikling af en eller flere use cases.
Arkitektur-centreret:
En solid arkitektur opstilles tidligt i forløbet og er central for at opnå et godt
slutresultat.
Risikodrevet:
Risici identificeres tidligt i forløbet, og valget af, hvilke use cases man skal
koncentrere sig om i starten, foretages ud fra, hvor højt de scorer i risikovurdering
(eliminering af de største risici først)
3.2.4 Extreme Programming
Extreme Programming – egentlig eXtreme Programming med deraf følgende forkortelse
XP – er en forholdsvis ny udviklingsmetode til udvikling af software.
I midten af 1980'erne arbejdede de to systemudviklere Kent Beck og Ward Cunningham
sammen i en række projekter, og herfra stammer kernen i XP. Beck arbejdede videre med
tankerne og beskrev en række af de karakteristika, der senere skulle blive centrale i XP. Det
var dog først i midten af 1990'erne, at han for alvor beskrev metoden, og i 2000 udkom hans
bog [Beck2000], der betragtes som den vigtigste bog om XP.
Extreme Programming er en såkaldt agil metode, der er karakteriseret ved at være åben for
tilpasninger løbende i udviklingsprocessen. Brugernes ord er lov, og udviklerne skal altid
have brugernes prioritering af, hvilke del der skal udvikles næste gang, samt godkendelse
af, at det udviklede faktisk var det, de havde brug for.
Metoden har fire hovedprincipper:
• Kommunikation:
Brugere og udviklere skal konstant kommunikere om det kommende system
• Simpelhed:
Udviklerne skal til hver en tid kun skrive kode, der netop løser det aktuelle problem
– ikke prøve at forudse kommende behov
• Feedback:
Test er af afgørende betydning, idet det giver udviklerne svar på, om de har lavet det
rigtige
• Mod:
Der skal mod til at bryde med traditionelle tankemåder i systemudvikling, f.eks. at
der skal laves grundige kravspecifikationer
Extreme Programming opererer med tolv punkter ("core practices"), der beskriver den
ideelle arbejdspraksis i et XP-projekt:
1. Planlægning ("Planning game")
2. Små udgivelser med korte mellemrum
3. Systemmetafor
4. Simpelt design
5. Test
6. Hyppig refaktorering
7. Parprogrammering
Version 1.4
side 14
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
8. Fælles ejerskab til programkoden
9. Kontinuerlig integration
10. Overkommeligt arbejdstempo
11. Et samlet udviklingshold
12. Fælles kodestandard
Det understreges, at det ikke er tilrådeligt at vælge blandt disse tolv punkter, idet der opstår
en slags symbiose, når de anvendes samlet. Den metode der opstår ved anvendelse af denne
arbejdspraksis er nødvendigvis iterativ og inkrementel.
Læs mere på: http://www.extremeprogramming.org/
3.2.5 SCRUM
Scrum er en agil udviklingsmetode skabt i starten af 1990'erne, med meget fokus på
projektledelse.
Scrum tager udgangspunkt i, at udvikling af software kan være en kompliceret og
uforudsigelig proces, og er derfor snarere en form for kontrolleret black box frem for en
teoretisk proces. Scrum fastsætter ikke nogen retningslinjer for i hvilken rækkefølge
aktiviteterne skal implementeres. Et projekt kan derfor starte med en hvilken som helst
aktivitet, og skifte til en anden aktivitet på ethvert tidspunkt. Dette øger projektets
fleksibilitet og produktivitet.
Ordet Scrum er en term fra rugby og en forkortelse for 'scrummage' som betyder
skærmydsler.
Artefakter:
•
Produkt Backlog:
En samlingsplads for alle krav til systemet. Håndteres af systemets ejer (Product
Owner). Der er ingen begrænsning på hvor mange krav der må være. Til gengæld
benyttes prioritering. Jo højere prioritet, jo bedre specificeret skal kravene være.
•
Sprint Backlog
Den del af en Produkt Backlog som Scrum-gruppen påtager sig at implementere
under den kommende Sprint.
•
Sprint
Arbejdet inddeles i Sprints. Hvert sprint, som varer maksimalt 30 dage, indledes
med et møde (Sprint Planning) og afsluttes med en fremvisning af en ny version af
det kørende system, hvor de lovede ændringer indgår (Sprint Review).
Version 1.4
side 15
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
Figur 4, SCRUM model
Som introduktion til SCRUM kan det desuden anbefales at læse artiklen ”SCRUM in five
minutes” fra Softhouse, http://www.softhouse.se/Uploades/Scrum_eng_webb.pdf
Værktøjer:
•
Banana SCRUM, http://www.bananascrum.com/
Mangler tilsyneladende support for "issue/defect tracking" - og så alligevel ikke!
Man kan nemlig meget nemt indsætte fritekst-tags på alle tasks, så man kan i praksis
bare gøre sådan her:
1. Lav et tag til defects/issues - f.eks "Bug"
2. Når der observeres et problem, oprettes et task som bliver tagget med ”Bug”.
3. Det nye task indsættes i project backlog. Herfra kan det så flyttes over i en sprint
backlog når der arbejdes på problemet.
Demo:
http://www.codesprinters.com/uploads/videos/Banana_Good_2008-02-25_1539.swf
Online-demo:
http://demo.bananascrum.com/
•
ScrumWorks Basic(free edition), http://danube.com/scrumworks
Et omfattende værktøj med mange features.
3.3 IHA Udviklingsmodel
3.3.1 S-Model for styring
Iterative udviklingsmodeller anskueliggøres ofte vha. en spiral, hvilket stammer fra Barry
Boehms spiralmodel [Boehm88]. Dette gælder også for udviklingsmodellen ROPES –
Version 1.4
side 16
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
Rapid Object-oriented Process for Embedded Systems [Douglass99], der er en OO udgave
af en spiralmodel, der er specielt beregnet til udvikling af indlejrede systemer.
Figur 5, S-model for styring[SPUUML]
3.3.2 V-model for test
V-modellen giver en god illustration af forholdet mellem tidlig testforberedelse og de senere
testudførelse. Figur 2 viser hvorledes denne model også kan anvendes i forbindelse med
iterativ udvikling – her gentages V’et blot flere gange.
Version 1.4
side 17
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
Figur 6, V – model for test [SPUUML]
3.3.3 W-model for leverancer
W-modellen for leverancer er en model over de interne evalueringer samt de interne og
eksterne leverancer, der kan forekomme i en iterativ udviklingsmodel. Modellen er
beskrevet af Alistair Cockburn [Cockburn-W]. Den mindste iteration består i gennemførelse
af en V-model, der resulterer i en intern evaluering af et kørende delsystem. Efter et antal af
disse kan man have en mere formel og synlig ekstern leverance, der f.eks. kan anvendes til
pilottest og pilotforsøg med de rigtige brugere af systemet. Et antal af disse kan så
kombineres til en officiel ”release” af et produkt.
Figur 7, W-model for leverancer [SPUUML]
Version 1.4
side 18
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
3.3.4 U-model for udviklingsaktiviteter
U-modellen viser hvorledes de traditionelle udviklingsaktiviteter arbejder sammen med en
use case model, der specificerer de use cases systemet er opdelt i. U-modellen viser også
hvorledes man i næste iteration kan vende tilbage til en vilkårlig af de tidligere gennemførte
aktiviteter inklusiv kravspecifikationen.
Figur 8, U-model for udviklingsaktiviteter [SPUUML]
Version 1.4
side 19
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
4 Review
Reviewteknikken er den teknik der mest effektivt forbedrer kvaliteten af et givent produkt.
Et review gennemføres typisk på dokumenter, men kan også gennemføres på andet
materiale, f.eks. kode.
Der findes en vældig god beskrivelse af reviewteknikken i [SPU88].
5 Projektstyring
En projektstyringsmappe kan hjælpe gruppen med at samle information omkring projektet
et centralt sted. Derved kan alle projektdeltagere hele tiden følge projektet (f.eks. i
forbindelse med sygdom mm.). Projektstyringsmappen kan enten være en fysisk mappe,
eller kan oprettes elektronisk (f.eks. vha. Campusnet).
Indhold af Projektstyringsmappe:
- Projektdagbog
- Huskeliste
- Projektmødereferater
- Estimater og planer
- Statusrapporter
- Konfigurationsstyring
- Standarder
- Breve
- Tilbud / ordre / kontrakt
- Projektgrundlag
I forbindelse med projektstyring kan det anbefales at der udpeges:
• En projektleder (kan gå på skift).
Ansvar: Tidsplan følges, alle deltager aktivt, kan afgøre evt. tvistigheder.
• En referent (kan gå på skift)
Ansvar: Føre gruppens projektdagbog, løbende beskriver projektets forløb, og
udgiver status rapport (en gang om ugen!) til vejleder.
• En ansvarlig for kravspecifikation
• En ansvarlig for accepttestspecifikation/accepttest dokumentation
• En ansvarlig for designdokumentation
• En ansvarlig for integrationstestdokumentation
6 UML
Sidst i 1980’erne og første i 1990’erne blev der udviklet mange forskellige metoder inden
for Objekt Orienteret Analyse og Design. Hver guru sin metode og sin notation. De mest
anerkendte guruer/metoder inden for OOA&D i den periode var: Coad&Yourdon, Odell,
Wirfs-Brock, Shlaer/Mellor, Booch, Rumbaugh (OMT) og Jacobson.
I 1995 begynder 2 af de førende guruer, Grady Booch og James Rumbaugh, at arbejde på at
lave en fælles notation for deres metoder. De får senere selskab af Ivar Jacobson, og
sammen skaber de Unified Modelling Language – UML. Disse 3 ophavsmænd til UML
kaldes af nogle for: The Three Amigos
Version 1.4
side 20
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
UML beskriver en standard for diagrammer der kan anvendes indenfor udvikling og
dokumentation af systemer. UML er blevet accepteret af Object Management Group
(OMG) [UML] som en standard. OMG har revideret UML løbende.
For en introduktion til UML anbefales det at læse [UMLLIGHT].
Det er ofte en misforståelse at UML skal indeholde alle kodedetaljer. Faktisk kan UML
anvendes med forskellig detaljeringsgrader (perspektivering) alt efter hvad der ønskes
beskrevet i en given situation.
Der er typisk tale om 3 perspektiver:
• Konceptuel
Beskriver situationer i ”a real world” domæne (typisk domænemodeller).
• Design/Specifikation
Beskriver software abstraktioner og komponenter. Der medtages kun de detaljer der
er nødvendige for at kunne implementere. Det vil ofte være tilstrækkeligt med denne
perspektivering for at kunne kode.
• Implementering
Indeholder alle detaljer, og anvendes typisk i værktøjer der kan udføre
kodegenerering. Udviklere har en tendens til at bruge UML i denne perspektivering
uden at det er nødvendigt med dette detaljeringsniveau for at kunne implementere
systemet.
Der findes en række værktøjer der alle kan bruges til a udarbejde UML diagrammer med.
Eksempler på værktøjer:
• Visual Paradigm (IHA har licens)
Er et fint værktøj der tilbyder de nødvendige UML diagram typer
Kan hentes på: \\apps1.iha.dk\studapps (Kræver VPN forbindelse)
• Microsoft Visio (IHA har licens via Microsoft Office)
Et omfattende værktøj der kan være noget kompleks at anvende.
• Star UML (Open Source!)
• Ideogramic (IHA har licens), www.ideogramic.com
UML værktøj der supporterer whiteboard tegning af UML diagrammer. UML
modellerne tegnes på en whiteboard tavle med PC interface og en PC projektor.
Værktøjet kan også bruges direkte via PC. IHA versionen kan kun bruges på IHA
(testes via IP adresse!). Ideogramic kan bruges i lokale 424 og 512 på IHA (udenfor
undervisningstid). Begge lokaler er udstyret med whiteboard, whiteboard interface
(ToolTtribe), og computer projector.
• Raphsody (IHA har licens).
Et avanceret case værktøj med kodegenerering og model simulerings facilliter.
Rhapsody er dedikeret til modellering af realteids systemer. IHA har en University
license med 30 samtidige brugere.
Der er ofte den misforståelse at der ikke kan bruges klasse- og sekvensdiagrammer til
systemer der skal implementeres i C. Disse systemer kan sagtens modellers med klasse- og
sekvensdiagrammer, men kan selvfølgelig ikke implementeres med class, private og public
begreberne. Der gives i [UMLLIGHT] et glimrende eksempel på et minutur der modelleres
med klasse- og sekvensdiagrammer, og efterfølgende er vist implementeringen i
henholdsvis C og C++.
Version 1.4
side 21
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
7 Ordliste/forkortelser
TBD
Use case
To Be Defined
Kan oversættes til ”brugssituation”
8 Referencer
[Beck2000]
“Extreme Programming Explained: Embrace Change”, Kent Beck
Betragtes som den vigtigste bog om XP
Addison-Wesley Professional, 2000
[Boehm88]
”A Spiral Model of Software Development and Enhancement”, B.W. Boehm,
IEEE Computer, May 1988, pp. 61-72.
Artikel der beskriver spiralmodellen.
[Cockburn2000]:
”Writing Effective Use Cases”, Alistair Cockburn
En meget fin bog vedrørende beskrivelse af use cases samt niveauer for use
cases. Bogen tager dog udelukkende udgangspunkt i
systemudviklingseksempler fra adminstrative systemer.
Pearson Education, 2000.
[Cockburn-W]
“Using VW staging to clarify spiral development”, Alistair Cockburn,
http://alistair.cockburn.us/Using+VW+staging+to+clarify+spiral+development
Artikel der beskriver ideen i W-modellen.
[Douglass99]
”Real-Time UML, Second Edition Developing Efficient Objects for Embedded
Systems”, Bruce Powel Douglass
Beskriver en objektorienteret analyse- og designmetode for indlejrede
systemer, der er baseret på ROPES udviklingsmodellen (en spiralmodel).
Addison-Wesley, 1999.
[Krutchen85]
“Architectural Blueprints—The “4+1” ViewModel of Software Architecture”,
Philippe Kruchten
En fin artikel, der præsenterer en model for beskrivelse af et arkitekturdesign
ud fra et antal view, hvor hvert view har et bestemt formål og en bestemt
målgruppe.
IEEE Software, November 1995
[RobertCMartin]
Generel artikelsamling angående Objekt Orienteret Design, Robert C. Martin.
Der findes andre steder på hjemmesiden også en vældig god artikelsamling!
http://www.objectmentor.com/omSolutions/oops_what.html
[SPU88]
Version 1.4
”Håndbog i Struktureret Programudvikling”,
side 22
Ingeniørhøjskolen i Århus
Afdeling for Computer Technology & Embedded Systems
Stephen-Biering Sørensen, Finn Overgaard Hansen, Susanne Klim, Preben
Thalund Madsen, Teknisk Forlag, 1988.
[SPUUML]
”SPU – UML note, Systematisk Program Udvikling med UML”, Finn
Overgaard Hansen,
Opdateringsnote til "Håndbog i Struktureret ProgramUdvikling (SPU)" med
fokus på anvendelse af UML i forbindelse med objektorienteret
softwareudvikling.
Ingeniørhøjskolen i Århus, 2005
http://staff.iha.dk/foh/Foredrag/SPU-UML.pdf
[UML]
Unified Modeling Language, se www.uml.org. Nyeste version af UML kan
downloades fra ovenstående link.
[UMLLIGHT]
“UML-Light T133”, Finn Overgaard Hansen,
En note skrevet til programmeringsundervisningen og semesterprojekt på
IHA.
Ingeniørhøjskolen i Århus, 2004
Version 1.4
side 23