Software prototyping (från engelska prototyping) är ett stadium av mjukvaruutveckling (mjukvara), processen att skapa en programprototyp - en layout (utkast, testversion) av ett program, vanligtvis för att kontrollera lämpligheten av koncepten, arkitektoniska och / eller tekniska lösningar som föreslås för tillämpning, och även för att presentera programmet för kunden i de tidiga stadierna av utvecklingsprocessen.
Prototypen låter dig också få feedback från framtida användare, och dessutom exakt när det behövs som mest: i början av projektet finns det fortfarande en möjlighet att rätta till designfel nästan utan förlust.
Prototypprocessen består vanligtvis av följande steg:
Prototyping har många olika alternativ. Alla metoder bygger dock till viss del på två huvudtyper.
Med rapid prototyping ( engelska rapid prototyping eller throwaway prototyping ) antas det att en layout skapas, som i något skede kommer att lämnas (”kastas bort”) och inte blir en del av det färdiga systemet.
Den största fördelen med detta tillvägagångssätt är snabbhet: som svar på deras krav får kunden nästan omedelbart en prototyp av gränssnittet och kan omedelbart klargöra kraven innan han skriver arbetskoden för systemet. Kostnaden för att ändra kraven i detta skede är mycket låg eftersom det inte finns någon kod att skriva om.
Det är mycket viktigt att sådan prototypning slutförs så snart som möjligt, eftersom i detta fall tid och resurser slösas bort på kod som inte kommer att användas vidare.
Rapid prototyping utförs inte nödvändigtvis på samma plattform och samma teknik som det system som utvecklas. Grafiska användargränssnittsprototyper (GUI) kan användas som vanliga HTML- sidor , eller så kan prototypen förberedas i ett program speciellt utformat för att skapa layouter (till exempel: Axure RP , Microsoft Expression Blend , etc.).
Evolutionära prototyper syftar till att konsekvent skapa systemlayouter som kommer att vara närmare och närmare den verkliga produkten .
Detta tillvägagångssätt har fördelen att vi vid varje steg har ett fungerande system, om än inte med all nödvändig funktionalitet, men förbättras med varje iteration. Samtidigt slösas inga resurser på koden som ska ”slängas”.
Ett evolutionärt tillvägagångssätt för prototypframställning kan väljas baserat på antagandet att alla nödvändiga krav är okända när utvecklingen börjar, och kommer att bestämmas när programmet skapas; sedan implementerar vi i varje steg endast de krav som är kända och tydliga. Samtidigt fokuserar utvecklare ibland på att bara arbeta med de systemmoduler, vars krav redan har bestämts.
I vissa fall, när det kommer till en produkt för en viss ledig nisch, börjar användarna använda systemet redan innan det är helt färdigt, och väntar på det färdiga systemet, eftersom "ett oavslutat system är bättre än dess fullständiga frånvaro."
De främsta fördelarna med prototypframställning är minskningen av utvecklingstid och kostnad på grund av att utvärderingen av prototypen gör att du kan upptäcka brister eller inkonsekvenser i kraven i ett tidigare skede. Ju senare ändringar av en specifikation görs, desto dyrare är de, så att tydliggöra "vad användare/kunder verkligen vill ha " tidigt i utvecklingen minskar den totala kostnaden.
Kundens engagemang i utvecklingsprocessen spelar också en psykologiskt viktig roll. Att arbeta med en prototyp tillåter framtida användare att se hur det framtida programmet kommer att se ut och påverka dess beteende, vilket minskar skillnaderna i idén om programmet mellan utvecklare och användare. Effekten av det nästan oundvikliga förkastandet av det nya systemet under implementeringen minskar också, särskilt när det introduceras i stället för det tidigare använda.
Användningen av prototyp skapar dock ett antal ytterligare risker.
Frågan om i vilken utsträckning användningen av prototyper, i en eller annan form, till ett specifikt projekt är motiverad, har inget entydigt svar. Prototypframställning ger goda resultat vid design av system där en betydande del av arbetskostnaderna är förknippade med implementering av människa-dator-gränssnitt och bedömningen av systemets överensstämmelse med kundens krav är till stor del subjektiv. I sådana system är skapandet av en detaljerad specifikation mycket svårt, eftersom kunden inte kan ta hänsyn till alla nyanser, och programmerare organiserar ospecificerade delar efter eget gottfinnande; som ett resultat är den typiska reaktionen på demonstrationen av det färdiga systemet: "Ja, allt motsvarar formellt villkoren, men vi behövde det inte alls!". Skapandet och utvärderingen av en prototyp i sådana fall gör det möjligt att i de tidiga utvecklingsstadierna separera de detaljer som är viktiga för kunden, som inte faller in i specifikationen, från de oviktiga, vars implementering kan vara godtycklig .
Vid utveckling av system vars primära uppgift är beräkning, såsom kommandoradsprogram och verktyg, erbjuder prototypframställning få verkliga fördelar.