Til top 
Hvad er prototyping
Systemudvikling kan foregå på mange forskellige måder. Her ses på forskellen mellem prototyping og traditionel systemudvikling. De følgende afsnit uddyber den teori der er beskrevet i Shark et al (418ff)
Prototyping betyder systemudvikling ved hjælp af prototyper (modeller), og skal ses i modsætning til traditionel systemudvikling fx vandfaldsmodel eller gradvis udvikling .
Generelt kan prototyper opdeles i to kategorier, nemlig prototyper, der skal indgå i det færdige system , og prototyper, der skal smides væk.
Den anden kategori har udelukkende til formål at hjælpe med at komme til klarhed over, hvilke krav der skal stilles til et nyt system.
En " smid-væk-prototype " kan i sin simpleste form blot være papirudgaver af skærmbilleder, eller det kan være et mere avanceret kørende system med mulighed for inddatering, beregninger osv.
Ved systemudvikling med prototyper bør brugerne inddrages i en aktiv rolle, frem for bare passivt at godkende eller afvise det, som systemudviklerne har lavet.
I visse tilfælde er det fx brugeren selv, der designer skærmbilleder, men det kræver naturligvis, at man har et 4.generationsværktøj til rådighed, således at bruger og designer kan sidde sammen og direkte lave en interaktiv prototype.
Hvilke fordele giver udvikling med prototyper?
- den største fordel er, at brugerne inddrages bedre i systemudviklingen, og derved i højere grad tager ejerskab af det færdige system
- at kravene til det nye edb-system defineres bedre og mere præcist
- at mulighederne for at få noget til at fungere hurtigt er bedre (allerede første prototype er delvist funktionel)
Hvilke ulemper giver udvikling med prototyper?
- Tidskrævende proces med stor brugerinddragelse vil alt andet lige medføre store omkostninger
- Organisatoriske forandringer hvor det kan være svært at honorere projektdeltagernes forventninger efterfølgende
- Uklar juridisk situation, idet aftalegrundlaget er uspecificeret (kravsspecifikationen)
Traditionel systemudvikling er ekspertstyret, og kører i en stram tidsplan efter en bestemt fasemodel , hvor hver fase afsluttes med en rapport før næste fase igangsættes, og der kan ikke vendes tilbage til en tidligere fase.
Systemer, der udvikles ved prototyping kan enten ende med at blive smidt væk eller indgå i det færdige system.
Prototyper kan også forfines til færdige systemer, hvilket ikke er tilfældet med traditionel udvikling efter vandfaldsmodellen, hvor udviklingsprocessen er stramt fremadskridende
Ifølge SYSKON bør systemudvikling systematiseres ved opdeling i en række klare velafgrænsede faser. SYSKON angiver otte faser, som hver især defineres som afsluttet, når der er udarbejdet en rapport.
- Idéfasen
- Analysefasen
- Skitsefasen
- Projekteringsfasen
- Specifikationsfasen
- Programmerings- og testfasen
- Konverteringsfasen
- Driftsfasen
I dag betragtes SYSKON som en forældet systemudviklingsmetode, dels fordi den har en meget stram faseopdeling, der ikke levner mulighed for iterativ systemudvikling, og dels at brugerne i praksis nærmest slet ikke inddrages.
Et noget mere moderne udgangspunkt skulle være en (modificeret) socioteknisk fasemodel , hvor der jo som bekendt sker en brugerinddragelse, og hvor oplæring af brugerne allerede starter i initial-fasen før den egentlige udvikling igangsættes. Her er fordelen at der er styr på både økonomi og det juridiske, medens ulempen er, at der grundlæggende set, er tale om en sekventiel proces.
"XP er en proces, der tillader frembringelse af software, som kan leveres til tiden, opfylder kundens behov, fungere, vedligeholdes og udvides." - ja det lyder jo vældig flot, men der er ikke nogle nye teknikker i XP. Alle fremgangsmåderne er gammelkendte og har været forsøgt før. Og alle er de havnet på den metodiske losseplads i tidens løb. Det nye i XP er sammenstillingen af teknikkerne på en måde, der tillader dem at holde hinandens svagheder i skak. Der er ikke tale om ekstreme handlinger, men om at bruge nogle snusfornuftige teknikker, i en ekstremgrad.
XP er baseret på fire værdier:
Det første skridt i XP er, at et softwareprojekt kan ses som et kontrolleret system med fire indbyrdes afhængige variable: Pris[cost], kvalitet, tid og indhold[scope]. At de variable er afhængige betyder, at når de tre af dem holdes fast, vil systemet give den fjerde.
XP er empirisk, hvilket blot betyder at den er opstået igennem praksis. XP går i bund og grund ud på at gøre det vi godt ved, er det rigtige.
XP anvendes kun i projekter af begrænset størrelse. Da XP er kendetegnet af kommunikation, er det antallet af deltagere der gør et XP projekt større eller mindre. Der kan arbejdes med op til 10-12 projektdeltagere. Man kan derefter enten dele op i flere selvstændige projekter, eller bruge nogle af de mekanismer der tilbydes i de andre 'Agile' metodikker, for eksempel i SCRUM.
XP er iterativ og bruger dermed ikke en såkaldt 'Over-the-Wall' kravspecifikation.
XP har to målgrupper, der derfor støttes kraftigt og direkte af de 12 'Practices', men som det vil føre for vidt at redegøre for her, men se evt. nedenfor under referencer.
- Den ene er kunden der oplever at få det maksimale udbytte af sin investering.
- Den anden målgruppe er udviklerne, der får professionelle arbejdsforhold. De gives muligheder for at gøre det de gerne vil: levere software af høj kvalitet. De får et afklaret grundlag at arbejde på, de får mulighed for at teste resultatet af deres arbejde, og de får klar feedback.
Referencer.
Systemudvikling er den proces, som gennemløbes, når et nyt it-system skal udvikles. Systemudvikling indebærer normalt fire typer aktiviteter:
- Systemanalyse, dvs. den proces at studere og beskrive noget eksisterende, fx et eksisterende edb-system samt nogle manuelle arbejdsrutiner. Uddata fra denne aktivitet vil ofte være en kravspecifikation
- Systemdesign, dvs. den proces at beskrive noget nyt. Uddata fra denne aktivitet vil ofte være en detaljeret design-specifikation
- Systemkonstruktion, dvs. den proces at omsætte design-specifikationen til et program, der kan køres på en computer. Endvidere vil denne proces omfatte afprøvning
- Indførelse, dvs. den proces, hvor IT-systemet tages i brug i organisationen. Denne aktivitet omfatter fx uddannelse af fremtidige brugere samt idriftsætning af det afprøvede edb-system
Ovenstående fire typer aktiviteter bliver i forskellige systemudviklingsmetoder opdelt i en række faser, der enten gennemløbes på en bestemt måde, som i vandfaldsmodellen , eller hvor der er mulighed for at vende tilbage til en tidligere aktivitet (iterativ systemudvikling), hvilket er den grundlæggende idé i prototyping.




FAKIR og SYSKON er eksempler på sådanne modeller
Udviklingsmodellen kan her fx være FAKIR
- F Forundersøgelse
- A Analyse
- K Konstruktion
- I Igangsætning
R Revision
Dansk standard for systemudvikling lavet af det nu nedlagte edb-råd i 1972
Gentagelse - ved prototyping kan man gå tilbage og starte udviklingen forfra i et tidligere trin

Hvor stammer begrebet 'Extreme' fra?
Hvis det vi går rundt og fortæller hinanden, er det rigtige at gøre, hvorfor prøver vi så ikke at gøre det fuldt ud. Vi fortæller selv, og hører mange andre gøre det samme, at man 'burde' gøre dit og dat. Lad os prøve at gøre det, og vel at mærke gøre det 100 %. Hvilket på engelsk hedder 'to the Extreme". Der er altså tale om at gøre noget fuldt og helt, og ikke som det klinger på dansk, noget ekstremt. Der er ikke tale om ekstreme handlinger, men om at bruge nogle snusfornuftige teknikker, i en ekstrem grad.
Her er nogle af de oprindelige formuleringer:
- "Hvis kodereview er så godt, så lad os reviewe koden hele tiden" (Pair Programming)
- "Hvis test er så godt, så skal alle teste hele tiden" (Unittest)
- "Hvis design er så godt, så lad det være en del af alles daglige arbejde" (Refactoring m.m.)
- "Hvis enkelhed er godt, så giv systemet det simplest mulige design" (Simple Design)
- "Hvis det er vigtigt at have en dialog med kunden, så lad os have det hele tiden" (On-site Customer)
- "Hvis integrationstest er vigtig, vil vi integrere, og teste, flere gange om dagen" (Continuous Integration)
- "Hvis korte forløb er så godt, vil vi arbejde med rigtig, rigtig korte forløb - uger, og ikke måneder og år" (Small Releases)
- Kommunikation
- Enkelthed
- Feedback
- Mod
Agile betyder behændig eller smidig, og bruges om den type udviklingsmetoder som XP er udtryk for. Der er andre agile metoder end XP. Der er for eksempel:
- SCRUM, der egentlig supplerer XP fordi den i højere grad sigter på ledelsesprocessen. SCRUM er velegnet til projekter med ustabile krav, konfliktende interesser og krav om effektiv levering af fejlfrit software.
- Crystal Clear, er medlem af en familie af processer. Alastair Cockburn, der er kendt fra sit arbejde med 'Use Cases', er den drivende kraft.
- ASD, Adaptive Software Development, sigter på at tilpasse sig til situationen, gerne ved selvorganisering på tværs af den konkrete organisation, og på tværs af virtuelle teams.
- DSDM, Dynamic Systems Development Method, er en gammel kending. Den er ikke udbygget med de teknikker og mekanismer, der gør den rigtig 'Agile'. Dens væsentligste bidrag er 'Prototyping' og 'Timeboxing'.
En 'Over-the-Wall' hentyder til at kunden skriver en kravspecifikation, og kaster den hen over muren til udviklerne. Inde bag muren udvikles systemet, som udviklerne derefter kaster tilbage til kunden. Det forudsætter en kravspecifikation der definerer det fulde indhold af systemet. Det forudsætter igen at kunden har kunnet definere den fulde forretningsværdi.
De to målgrupper udstyres med så specifikke rettigheder i projektet, at de kan udfylde deres job, og nå deres mål. Kunden har ret til at bestemme indholdet og rækkefølgen af releases. Kunden har ret til at ændre på kravene, og ret til at blive informeret om konsekvenserne af ændringerne. Udviklerne har ret til først at estimere når indholdet af releasen er kendt. Hvis indholdet, estimatet og leveringsdatoen ikke går op i en højere enhed, så må kunde og udviklere arbejde sammen om at ændre på faktorerne, indtil regnestykket går op.
www.xprogramming.org
www.extremeprogramming.org/
www.agilealliance.org/
"Extreme Programming Installed"
Ron Jeffries, Ann Anderson og Chet Hendrickson
Den giver praktiske anvisninger og forklaringer
