Kursinformation Metodik för programvaruutveckling Föreläsning 3 Latex ok för litteraturstudierapport (prata med mig bara) Nästa föreläsning är av Björn Regnell (jag är med också) Presentationer imorgon Innehåll Processer Processmodeller Iterationer Specifikation och implementation Verifiering och validering Utvecklingsprocessen för programvara Resurser Behov Process Produkter En strukturerad mängd aktiviteter som krävs för att utveckla programvara Specifikation Validering Vidareutveckling Processmodell Exempel En modell av utvecklingsprocessen Uppgiftsorienterad Dokumentorienterad Ofta grafisk Scripts Guide Requirements Planning Code Compile Test Postmortem Defects Time Logs Plan Results Project Plan Summary Finished product
Vad är en bra process? Frågor Lätt att förstå Ger insyn Kan stödjas med CASE-verktyg Accepterad Tillförlitlig Robust Underhållbar Effektiv 1. Vilka fördelar finns med en process som används i många projekt? 2. Vilka svårigheter är förknippade med att införa denna typ av process? 3. Vad kan man göra för att underlätta införandet? Generiska modeller Vattenfallsmodellen Iterativ utveckling Utveckling med formella metoder Utveckling baserat på återanvändning Kravdefinition Vattenfallsmodellen Implementation enhetstest Integration Systemtest Underhåll Vattenfallsmodellen Iterativ utveckling Fördelar Välplanerat då man har välförstådda krav God insyn Problem Svåranvänd om man inte förstår kraven väl från början (t ex om kunderna ändrar sina krav) Uppdelning i faser kan vara omotiverad Utkast Utvecklingsprocessen Versioner för kommentarer Kund / användare Slutgiltig version
Två sorters iterativ utveckling Utforskande utveckling Arbete sker hela tiden med den produkt som ska levereras Börja med de krav som man förstår bäst Slängprototyper Arbete sker med en prototyp som ska slängas Börja med de krav som man förstår sämst Prototyputveckling För att definiera och validera krav Man kan göra avkall på kvalitetskrav Tekniker som 4GL, komponentbaserad utveckling, gränssnittsprototyper Iterativ utveckling Formell systemutveckling Användningsområden Små och medelstora interaktiva system Delar av system För system med kort livstid Problem Dålig insyn Kan ge dålig struktur Ställer höga krav på utvecklarna 1. Kravdefinition 2. Formell specifikation 3. Transformation 4. Integration 5. Testning Formell utveckling Användningsområden Säkerhetskritiska system Svårigheter Specialkunskaper krävs Vissa delar av system är mycket svåra att specificera på detta sättet, t ex gränssnitt Utveckling baserat på återanvändning Kravspecifikation Genomgång av tillgängliga komponenter Kravjustering Utveckling och återanvändning av komponenter Verifiering
Inkrementell utveckling Man måste alltid anpassa och justera kraven vid utveckling av stora system För de de tidigare modellerna och t ex för Spiralmodellen Inkrementell utveckling Inkrementell utveckling 1. Bestäm övergripande krav 2. Definiera inkrement och ange vilka krav som ska implementeras i vilka inkrement 3., utveckling och verifiering av varje inkrement 4. Integrera och validera systemet 5. Gå till 3 till systemet är klart Inkrementell utveckling Spiralmodellen 1 2 3 4 3 4 3 4 Parallell utveckling Man kan leverera till kunden tidigt Man kan identifiera krav Minskad risk De tidiga inkrementen testas många gånger (välj kritiska) Determine objectives alternatives and constraints Plan next phase REVIEW Requirements plan Life-cycle plan Development plan Integration and test plan Evaluate alternatives identify, resolve risks analysis analysis analysis Operational Prototype 3 Prototype 2 protoype analysis Prototype 1 Simulations, models, benchmarks Concept of Operation S/W requirements Product design Detailed Requirement design validation Code Unit test V&V Integration Acceptance test Service test Develop, verify next-level product Exempel ett varv i spiralmodellen Mål Införskaffa komponentkatalog Begränsningar Inom ett år Måste stödja existerande komponenttyper Måste kosta mindre än 1Mkr Alternativ Köp in existerande informationssystem Köp in databas och utveckla komponenter med 4GL Utveckla komponenter som vanligt er Kanske omöjligt att upphandla med begränsningarna Specifikationen av katalogen är oklar resolution Utveckla prototyp för at klargöra kraven Förläng tidplanen Resultat Informationssystem är svåra att anpassa för ändamålet Komponentkatalog utvecklad som vanligt är inte kostnadseffektiv Prototyp kan vidareutvecklas Planer Utveckla 4GL-system baserat på den prototyp son finns Åtagande Ytterligare 12 månaders finansiering
Specifikation Bestämma tjänster, kvalitetskrav och begränsningar på systemet Att få ett implementationsunderlag från kravspecifikationen Det finns många designmetoder och verktyg för att stödja arbetet Exempel på modeller Dataflödesmodeller ER-modeller Objektmodeller Programmering och felrättning Verifiering och validering Från design till exekverbart system Det finns ingen generisk process för detta Enehtestestning Modultest M1 M2 M3 M5 M4 Delsystemtest Ds1 Ds1 Systemtest Acceptanstest S S Mn-1 Dsm Mn Underhåll Alla system som används måste underhållas! Lägga till och förbättra Anpassa till omvärlden (som förändras) Rätta till felaktigheter Metod 1. Uppdatera kraven 2. Utvärdera befintligt system och föreslå förändringar 3. Modifiera systemet CASE (Compute Aided Software Engineering), t ex Grafiska editorer för att utveckla systemmodeller Grafiska hjälpmedel för att utveckla användargränssnitt Debuggers Verktyg som genererar käöllkod från designbeskrivningar
Olika uppdelningar Funktionsperspektiv Funktionsperspektiv Processperspektiv Integrationsperspektiv Tool type Planning tools Editing tools Change management tools Configuration management tools Prototyping tools Method-support tools Language-processing tools Program analysis tools Testing tools Debugging tools Documentation tools Re-engineering tools Examples PERT tools, estimation tools, spreadsheets Text editors, diagram editors, word processors Requirements traceability tools, change control systems Version management systems, sys tem building tools Very h igh-level languages, user interface generators editors, data dictionaries, code generators Compilers, interpreters Cross reference generators, static analysers, dynamic analysers Test data generators, file comparators Interactive debugging systems Page layout programs, ima ge editors Cross-reference systems, program restructuring systems Reengineering tools Testing tools Debugging tools Processperspektiv Integrationsperspektivet: verktyg, arbetsbänkar, miljöer CASE technology Program analysis tools Language-processing tools Method support tools Tools Workbenches Environments Prototyping tools Configuration management tools Editors Compilers File comparators Integrated environments Process-centred environments Change management tools Documentation tools Editing tools Analysis and design Programming Testing Planning tools Specification Implementation Verification and Validation Multi-method Single-method General-purpose Language-specific Sammanfattning Processer: idé, resurser -> produkter Generiska processer: vattenfallsmodellen, iterativ utveckling, formella transformationer, återanvändning Inkrementell utveckling kan bland annat öka effektiviteten Viktiga faser: specifikation, design, implementering, verifiering, underhåll Case: finns för alla faser och de flesta funktioner i utvecklingen