Software prototyping (fra engelsk prototyping) er et trin i softwareudvikling (software), processen med at skabe en programprototype - et layout (udkast, prøveversion) af et program, normalt for at kontrollere egnetheden af koncepterne, arkitektoniske og / eller teknologiske løsninger foreslået til anvendelse, og også at præsentere programmet for kunden i de tidlige stadier af udviklingsprocessen.
Prototypen giver dig også mulighed for at få feedback fra fremtidige brugere, og desuden præcis, når det er mest nødvendigt: i starten af projektet er der stadig mulighed for at rette designfejl næsten uden tab.
Prototypingsprocessen består normalt af følgende trin:
Prototyping har mange forskellige muligheder. Alle metoder er dog til en vis grad baseret på to hovedtyper.
Ved rapid prototyping ( engelsk rapid prototyping eller throwaway prototyping ) antages det, at der skabes et layout, som på et tidspunkt efterlades ("smidt væk") og ikke bliver en del af det færdige system.
Den største fordel ved denne tilgang er hastighed: som svar på deres krav modtager kunden næsten øjeblikkeligt en prototype af grænsefladen og kan straks afklare kravene, før de skriver systemets arbejdskode. Omkostningerne ved at ændre kravene på dette trin er meget lave, fordi der ikke er nogen kode at omskrive.
Det er meget vigtigt, at en sådan prototyping gennemføres så hurtigt som muligt, da der i dette tilfælde spildes tid og ressourcer på kode, som ikke vil blive brugt yderligere.
Rapid prototyping udføres ikke nødvendigvis på den samme platform og de samme teknologier som det system, der udvikles. Grafisk brugergrænseflade (GUI) prototyper kan bruges som standard HTML - sider , eller prototypen kan udarbejdes i et program, der er specielt designet til at skabe layouts (for eksempel: Axure RP , Microsoft Expression Blend , etc.).
Evolutionær prototyping sigter mod konsekvent at skabe systemlayouts, der vil være tættere og tættere på det virkelige produkt .
Denne tilgang har den fordel, at vi ved hvert trin har et fungerende system, omend ikke med al den nødvendige funktionalitet, men forbedres med hver iteration. Samtidig spildes der ingen ressourcer på den kode, der bliver "smidt væk".
En evolutionær tilgang til prototyping kan vælges ud fra den antagelse, at alle de nødvendige krav er ukendte på det tidspunkt, udviklingen begynder, og vil blive fastlagt efterhånden som programmet oprettes; så implementerer vi på hvert trin kun de krav, der er kendte og klare. Samtidig fokuserer udviklere nogle gange på kun at arbejde på de systemmoduler, hvis krav allerede er fastlagt.
I nogle tilfælde, når det kommer til et produkt til en bestemt ubesat niche, begynder brugerne at bruge systemet, selv før det er fuldt færdigt, og venter på det færdige system, fordi "et ufærdigt system er bedre end dets fuldstændige fravær."
De vigtigste fordele ved prototyping er reduktionen af udviklingstid og omkostninger på grund af det faktum, at evalueringen af prototypen giver dig mulighed for at opdage mangler eller uoverensstemmelser i kravene på et tidligere tidspunkt. Jo senere ændringer i en specifikation foretages, jo dyrere er de, så afklaring af "hvad brugere/kunder egentlig ønsker " tidligt i udviklingen reducerer de samlede omkostninger.
Inddragelsen af kunden i udviklingsprocessen spiller også en psykologisk vigtig rolle. At arbejde med en prototype giver fremtidige brugere mulighed for at se, hvordan det fremtidige program vil se ud og påvirke dets adfærd, hvilket reducerer uoverensstemmelserne i idéen om programmet mellem udviklere og brugere. Effekten af den næsten uundgåelige afvisning af det nye system under implementeringen reduceres også, især når det introduceres i stedet for det tidligere brugte.
Brugen af prototyping skaber dog en række yderligere risici.
Spørgsmålet om, i hvilket omfang brugen af prototyping, i en eller anden form, til et konkret projekt er berettiget, har ikke et entydigt svar. Prototyping giver gode resultater ved design af systemer, hvor en væsentlig del af lønomkostningerne er forbundet med implementering af menneske-computer grænseflader, og vurderingen af systemets overensstemmelse med kundernes krav er i høj grad subjektiv. I sådanne systemer er oprettelsen af en detaljeret specifikation meget vanskelig, da kunden ikke kan tage højde for alle nuancerne, og programmører organiserer uspecificerede dele efter eget skøn; som følge heraf er den typiske reaktion på demonstrationen af det færdige system: "Ja, alt svarer formelt til kommissoriet, men vi havde slet ikke brug for det!". Oprettelse og evaluering af en prototype i sådanne tilfælde gør det muligt i de tidlige udviklingsstadier at adskille de detaljer, der er vigtige for kunden, som ikke faldt ind under specifikationen, fra de uvæsentlige, hvis implementering kan være vilkårlig .
Ved udvikling af systemer, hvis primære opgave er beregning, såsom kommandolinjeprogrammer og hjælpeprogrammer, giver prototyping kun få reelle fordele.