PV Programvarukonstruktion Föreläsning 7 Software Prototyping Rapid software development to validate requirements
F7: Omfattning Prototyper i utvecklingsprocessen Prototyptekniker Användargränssnitt och prototyper Mindre noggrann läsning:
Syfte med föreläsningen Beskriva användningen av prototyper i olika utvecklingsprojekt Beskriva Evolutionary prototyping Beskriva Throw-away prototyping Beskriva tre snabba tekniker för prototyper Förklara behovet av gränssnittsprototyper
System prototyping Prototyping är snabb utveckling av system Det huvudsakliga syftet med prototyper är att stödja utvecklare och kunder i förståelsen för kraven ∙ Kravinsamling – kan visa att arbetssätt fungerar ∙ Kravvalidering – kan påvisa riktighet och fel Prototyping kan ses som en aktivitet som miskar riskerna i kravhanteringen
Fördelar med prototyper Missförstånd mellan utvecklare och användare påvisas Saknade tjänster identifieras och förvirrande tjänster kan klargöras En fungerande version av systemet är tillgänglig tidigt i projektet Prototypen kan fungera som basis för framställandet av systemspecifikationen Prototypen kan underlätta utbildning och träning av användare
Processen för prototyping
Fördelar med prototyper Förbättrad användbarhet i systemet Det utvecklade systemet är mer i enlighet med det system som behövs Förbättrad designkvalitet (!) Förbättrad underhållsförmåga (!) Minskad total resursåtgång vid utgång
Prototyping i utvecklingsprocessen Evolutionary prototyping ∙ En typ av systemutveckling där den initiala prototypen utvecklas och förbättras genom ett antal faser tills det blir det slutgiltiga systemet Throw-away prototyping ∙ En prototyp som används för att besvara frågeställningar om t.ex. krav. Den utvecklade prototypen kastas efter den fullgjort sitt syfte.
Mål för prototyper Målet för evolutionär prototyping är att leverera ett fungerande system till slutanvändare. Utvecklingen påbörjas med de krav som bäst förstås. Målet för throw-away prototyping är att validera eller härleda systemkrav. Processen påbörjas med krav som är oklara.
Tillvägagångsätt
Evolutionär prototyping Måste användas i sådana system där det inte går att utveckla specifikationen först, såsom AI- system och användargränssnitt Baseras på tekniker som tillåter snabb systemutveckling och snabba iterationer Verifiering är omöjlig eftersom det inte finns någon specifikation. Validering genomförs som en demonstration av lämpligheten i systemet.
Evolutionär prototyping
Fördelar med evolutionär prototyping Uppsnabbad leverans av systemet ∙ Snabb leverans är ibland viktigare än funktionalitet och underhållsmöjligeter i framtiden Användarna är engagerade i systemet ∙ Förutom att systemet troligare passar användarnas krav. Användarna kommer att vara intresserade av utvecklingen och att använda systemet.
Evolutionär prototyping Specifikation, design och implementation är sammankopplade Systemet utvecklas som en serie utökningar som levereras till kunden Tekniker för snabb systemutveckling används, t.ex. CASE-verktyg och fjärde generationens programmeringsspråk (4GLs) Användargränssnitt utvecklas främst med GUI- utvecklingsverktyg
Problem med evolutionär prototyping Ledning ∙ Existerande ledningsmodeller förutsätter en vattenfallsbaserad utvecklingsmodell ∙ Specialistförmågor krävs vilket inte är tillgängligt i alla utvecklingsprojekt Underhållsproblem ∙ Kontinuerlig förändring tenderar att fördärva systemstrukturen så att långtids underhåll blir dyrt ∙ Avtalsproblem
Prototyper som specifikationer Vissa delar av systemkraven (t.ex. säkerhets- kritiska funktioner) kan vara omöjliga att visa i en prototyp och därför så finns de inte i någon specifikation En implementation har inte någon laglig ställning som kontrakt Kvalitativa (Icke-funktionella) kan inte fullt ut testas i någon systemprototyp
Inkrementell utveckling System utvecklas och levereras i delar efter det att man etablerat en generell arkitektur Krav och specifikationer kan för varje utvecklingssteg utvecklas Användare kan experimentera med levererade delar därav kan verkar som prototyp-system Planerad för att kombinera vissa fördelar av prototyping, men med en mera kontrollerad process och systemstruktur
Inkrementell utvecklingsprocess
Throw-away prototyping Används för att minska risker med krav Prototypen utvecklas från en initial specifikation, levereras för utvärdering och test vartefter den kastas Throw-away prototypen skall INTE betraktas som ett slutgiltigt system ∙ Vissa systemegenskaper kan ha utelämnats ∙ Det finns inte någon specifikation för långtidsunderhåll ∙ Systemet kommer att vara dåligt strukturerat och svårt att underhålla
Throw-away prototyping
Leverans av prototyper Utvecklare kan bli pressade att leverera en throw-away prototyp som ett slutgiltigt system Detta rekomenderas inte eftersom: ∙ Det kan vara omöjligt att förändra prototypen så att den klarar av de kvalitativa kraven ∙ Prototypen är odokumenterad ∙ Systemstrukturen försämras efterhand som förändringar görs under utvecklingens gång ∙ Organisationens kvalitetsstandard behöver inte ha använts
Snabba tekniker för prototyper Olika tekniker kan användas för snabb utveckling ∙ Dynamiska högnivåspråk används i utvecklingen ∙ Databasprogrammering ∙ Komponent- och applikationssammansättning Teknikerna kan användas tillsammans och det gör ofta Visuell programmering är en stor del av merparten av utvecklingssystem för prototyper
Dynamiska högnivåspråk Språk som använder kraftfulla datakontroller Behöver ofta mycket systemstöd. Används normalt inte för utveckling av stora system. Vissa språk erbjuder ofta utmärkt stöd för användargränssnitt och utveckling av dessa Vissa språk kan ha en integrerad stödmiljö som går att använda prototypen
Språk för prototyper
Val av programmeringsspråk Vilken är applikationsdomänen och vilka problem finns i den? Vilken användarinteraktion krävs? Vilken stödmiljö medföljer språket? Olika delar av systemet kan programmeras i olika språk. Det kan däremot bli problem vid kommunikation mellan språken.
Databas-programmeringsspråk Domänspecifika språk för affärssystem baserade på databashanteringssystem Innehåller normalt ett databasfrågespråk, en skrämgenerator, en rapportgenerator och ett spreadsheet Kan vara integrerat med ett CASE-verktyg Språket med miljön kallas ibland fjärde generationens programmeringsspråk (4GL) Kostnadseffektiv lösning för små till medelstora affärssystem
Databasprogrammering
Komponent- och applikationssammansättning Prototyper kan snabbt skapas från en mängd återanvändbara komponenter tillsammans med en mekanism som sammanfogar alltihop Den sammanfogande mekanismen måste innehålla kontrollfunktioner och en mekanism för komponent kommunikation Systemspecificeringen måste behandla tillgängligheten och funktionaliteten hos existerande komponenter
Prototyper med återanvändning Applikationsnivå ∙ Hela systemet är integrerat med prototypen så att dess funktionalitet delas ∙ T.ex. om ett textbehandlande funktion krävs kan en standard ordbehandlare användas Komponentnivå ∙ Individuella komponenter integreras inuti ett standardramverk för implementation av systemet ∙ Ramverket kan vara skriptspråk eller ett integrerat ramverk som CORBA
Sammansättning av återanvändbara komponenter
Sammansatta dokument (Compound) För vissa applikationer, kan en prototyp skapas genom utvecklingen av ett dokument Detta dokument har aktiva element (såsom ett kalkylblad) som tillåter användaren att genomföra beräkningar Varje aktivt element har en associerad applikation som anropas när elementet aktiveras Dokumentet själv står för integrationen för de olika applikationerna
Länkning av applikationer i ett dokument
Visuell programmering Skriptspråk såsom Visual Basic stödjer visuell programmering där en prototyp utvecklas genom att ett användarformulär skapas med standardkomponenter och systemkomponenter associeras med dessa Ett omfattande bibliotek av komponenter finns som stöd för denna typ av utveckling Komponenterna kan skräddarsys för att passa specifika systemkrav (till viss del)
Visuell programmering med återanvändning
Problem med visuell utveckling Det är svårt att koordinera flerpersonsutveckling Det finns inte någon specifik systemarkitektur Komplexa beroenden mellan delar av programmet kan skapa problem vid underhåll Systemegenskaper kan vara svåra att påverka Komponenter kan vara stora och svåra att dela upp
Prototyper för användargränssnitt Det är omöjligt att förutbestämma ”look-and-feel” för ett användargränssnitt på ett effektivt sätt – användning av prototyper är en förutsättning UI (user-interface) utveckling förbrukar en ökande mängd av systemutvecklingens kostnader UI generatorer kan användas för att ”rita” gränssnittet och simulerar dess funktionalitet med komponenter associerade med gränssnittet Prototyper för Webbgränssnitt kan utvecklas med Webbside-editorer
Instuderingsfrågor (8.5) – för Datateknik