Vandfaldsmodellen

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 Winston W. Royce; det var 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" (se "Why people still believe in the waterfall model"). I Danmark blev der fra starten af 1990'erne ofte brugt en variation kaldet SPU - Struktureret Program Udvikling, og på mange universiteter og ingeniørhøjskoler blev der undervist i denne model.

Vandfaldsmodellens historie 

I sin artikel fra 1970 foreslog Royce, hvad der nu i almindelighed omtales som vandfaldsmodellen, som en simpel model, som han argumenterede for er fejlbehæftet. Artiklen viser derefter hvordan denne simple model kan ændres til at være en iterativ model, hvor man fra hver fase kan være nødt til at gå tilbage for at revidere ting man har lavet i forrige fase, i lighed med mange modeller der anvendes i dag og som anses for at være gode. Det er ironisk at det kun er den simple udgave af vandfaldsmodellen som bliver husket; hans egen kritik af denne simple model bliver overset af de fleste. "Vandfaldsmodellen" blev hurtigt synonymt med den simple sekventielle model og ikke med Royce's endelige iterative model. Denne wiki-artikel vil bruge den populære betydning af begrebet vandfaldsmodel. En iterativ model der minder om Royce's endelige vision, er Boehms spiralmodel.

Til trods for Royce' intentioner om at vandfaldsmodellen skulle ændres til at være en iterativ model, er brugen af "vandfaldsmodellen" som en rent sekventiel proces stadig meget populær, og for nogle er ordet "vandfaldsmodellen" blevet udtryk for en hvilken som helst tilgang til softwareudvikling som er ufleksibel og ikke iterativ. De der bruger ordet vandfaldsmodel som et nedsættende begreb for ikke iterative modeller som de er imod, ser sædvanligvis vandfaldsmodellen som naiv og uegnet til brug i rigtige softwareudviklingsprojekter.

Brug af vandfaldsmodellen 

I Royce's originale vandfaldsmodel gennemløbes følgende faser:

 Kravspecifikation
 Design
 Konstruktion (aka: implementering eller kodning)
 Integration
 Afprøvning og fejlfinding (aka: verifikation)
 Installation
 Vedligeholdelse

At følge vandfaldsmodellen vil sige at gå fra en fase til den næste strengt sekventielt. For eksempel afslutter man først skrivning af kravspecifikationen helt sådan at det efter kravspecifikationsfasen er "hugget i sten" hvad systemet skal kunne. En kravspecifikation for Wikipedia kunne være "Wikipedia skal tillade at anonyme kan rette i artiklerne; wikipedia skal give folk mulighed for at søge efter information", men realistiske specifikationer vil være meget mere komplekse og detaljerede. Når og kun når kravene er fuldt beskrevet går man videre til design.

I designfasen laves en "arkitekttegning" som implementørerne (programmørerne) skal følge – dette design skal være en plan for hvordan man implementerer kravene fra kravspecifikationsfasen. Når og kun når designet er lavet færdigt, implementeres designet af programmører.

Når alle dele af systemet er lavet sætter man dem sammen i integrationsfasen. For eksempel kan et team have lavet "webside"-komponenten af Wikipedia og et andet team har lavet "server"-komponenten af Wikipedia. Disse komponenter skal så sættes sammen i integrationsfasen for at lave det samlede system.

Efter implementerings- og integrationsfaserne er færdige laves afprøvning og fejlfinding af softwaren; fejl, der stammer fra tidligere faser, fjernes i afprøvningsfasen. Derefter installeres softwaren og senere laves vedligeholdelse hvor ny funktionalitet kan introduceres og fejl kan fjernes.

Således siger vandfaldsmodellen, at man kun skal gå til næste fase når den foregående fase er færdig og perfektioneret. Faserne i vandfaldsmodellen er således diskrete, og man hopper aldrig frem og tilbage mellem faser eller har overlappende faser.

Der er dog forskellige modificerede vandfaldsmodeller (inklusiv Royce's endelige model), der kan indeholde mindre eller større variationer af denne proces.

Referencer 

Systemudvikling