19. marts 2010 af Niels Brinch
Enhver softwareudvikler har hørt påstande som lyder noget i
retningen af, at det tager 10 gange længere tid at rette en fejl
end det tager at forhindre den. Der er en række andre variationer
af påstanden, men pointen er overordnet seti, at man skal tænke sig
om først i stedet for senere.
Et af de områder man skal sikre er så korrekt som muligt inden
man går i gang, er kravene der er til den software man skal
udvikle. Kravene stilles typisk af en kunde som er specialiseret
inden for sit eget forretningsområde, som ikke er
softwareudvikling. Det kræver meget stor abstraktionsevne at
opstille krav. Man skal kunne se det endelige produkt for sig og
vurdere om det er det man har brug for, uden at kunne se det.
Måske har den primære opgavestiller en meget høj
abstraktionsevne, men så kan der være andre interessenter som også
har indflydelse, men som ikke har samme egenskaber eller ikke har
brugt så lang tid på at definere kravene. Det scenarie man bevæger
sig hen imod er et hvor software-leverandøren leverer det som er
aftalt i kravene, men det var ikke det som kunden havde håbet at
modtage.
Slutresultater er en utilfreds kunde, uanset hvor nøjagtigt
kravene er opfyldt.
Hurtige prototyper kan hjælpe. Man kan udarbejde en prototype på
en brøkdel af den tid det tager at udvikle det endelige produkt.
Alle er ofte ikke enige om at der skal laves komplette prototyper,
specielt hvis der er et meget begrænset budget, for prototypen har
ingen værdi i sig selv. Når projektet er slut, bliver prototypen
smidt ud. Men når man har prototypen kan den præsenteres for kunden
og ikke bare giver det klarhed overfor den primære opgavestiller og
sikkerhed om forståelse af kravene for leverandøren, men det giver
også de mindre engagerede kunderepræsentanter mulighed for at
deltage aktivt, kommentere på prototypen og være med til at fjerne
misforståelser. Det giver dem også mulighed for at ændre
kravene.
Det er et stort arbejde at ændre krav, for i mange tilfælde skal
aftalen også ændres. Men, med reference til min indledende sætning,
er det bedre at ændre krav baseret på en prototype, end baseret på
det endelige produkt.
---
Jeg anvender værktøjet ForeUI til prototyper. Det er et
tegneprogram specielt velegnet til prototyper. Det har linjer og
rektangler til at lave simple tegninger og dertil en række
standard-elementer, såsom knapper, rullemenuer og
afkrydningsfelter. Formålet er ikke at skabe noget der er
vellignende, men bare noget som viser det essentielle. Her er
f.eks. en prototype af Googles forside.

Men det er meget mere end et tegneprogram. Programmets styrke
ligger i muligheden for at sætte hændelser på alle elementer.
F.eks. kan jeg opsætte en regel der siger, når der tastes i feltet,
skal der komme et rektangel med tekst frem, akkurat som Googles
egen forslagsfunktion. Jeg opsætter den til at dukke frem hvis jeg
skriver 'dot' i feltet.

Endnu vigtigere er det at man ved klik på diverse elementer, kan
få vist en ny side, hvilket betyder man kan opbygge alle produktets
sider og illustrere hvordan man navigerer ved hjælp af
prototypen.
Programmet har nogle svagheder. Betingelserne er ikke altid lige
logiske. F.eks. er der kun en "Key Down"-betingelse til
indtastning, hvilket betyder jeg er nødt til at lave betingelsen på
'do' i stedet for 'dot', fordi den kigger på feltets indhold på Key
Down, men det indtastede bogstav først kommer på Key Up.
Desuden er håndteringen af etiketter ret ringe. Specielt
linjeombrydning fungerer dårligt. Jeg indsætter en etiket og giver
den en specifik størrelse.

Når man indtaster teksten i etiketten, viser den det ikke som
det bliver vist, men med en horizontal scrollbar, umuligt at
overskue. Man kan indsætte sine egne linjeskift, men det er der
lidt for meget skrivemaskine over, synes jeg.

Når jeg er færdig med at skrive, er etikettens størrelse
ændret.

Alt i alt alligevel et anbefalelsesværdigt værktøj, som er
hurtigt at komme i gang med og gør det særdeles hurtigt at lave
prototyper.
Nogen der kan anbefale andre værktøjer?