Streamade föreläsningar på webben Synligt inom LU Vänligen sprid inte filmerna! Ni bör inte synas Skicka gärna frågor om innehåll via formuläret! Möjligen nacken på 2-3 främre rader Ni kan komma att höras Säg till om jag ska klippa bort ljud 2 ETSA01 Ingenjörsprocessen för programvaruutveckling Metodik Föreläsning 1: Kursen & Projektuppgift Utvecklingsprojekt & Kravhantering Jonas Wisbrant 3
Utmaning Kan man förstå software engineering utan att ha upplevt stora programvaruprojekt? Kan man förstå vad som händer i stora programvaruprojekt utan att ha studerat software engineering? 4 Jonas Wisbrant - kort CV Samhällsvetare vid LU Kommunikation och webbutveckling Programvaruingenjör LTH i Helsingborg Institutionen för Datavetenskap 1 1989 1990 2002 2002 LUCAS - Center for Applied Software Research Diverse undervisning Det Norske Veritas 2008 Institutionen för Datavetenskap 2 2009 EASE / Programvaruportalen / kommunikation Datorer i System Ingenjörsprocessen Datavetenskap + LU webb 2011 5
Agenda F1 Kursen & projektuppgiften Vad är ett utvecklingsprojekt Kravhantering: Vad är ett krav? Hur hittar vi dem? Hur vet vi att de är bra? I pausen: Bilda projektgrupper och köpa kompendier Att göra inför övning 1 On kl 13 & to kl 10 i E:Hacke Wiki-praktik för C och I 6 ETSA01 Ingenjörsprocessen för programvaruutveckling Metodik Kursen 7
Kursen Innehåll Projektplanering Kravhantering Arkitekturdesign Testning Modeller av utvecklingsprocessen för programvara Formalia 5 hp Obligatorisk för C1, D1, alternativobligatorisk för IE3 Moment - Föreläsningar - Övningar Föreläsning - Projekt - Hemtentamen Del 1 av 3 kurser Övningar Hemarbete Projekt Vi genomför ett utvecklingsprojekt under rimligt ordnade former och belyser det med teori och reflektioner. 8 Kurslitteratur Bok Pankaj Jalote, A Concise Introduction to Software Engineering, Springer, 2008. J: 6.2-5, 7.1.1-7.1.3 kursivt Kompendium Examples and Exercises in the Software Engineering Process, 2011. Säljs av institutionen för 50;- 9
ETSA01: Ingenjörsprocessen metodik VT 2012 2012-02-20 kl 10.02 Förklaring J = Jalote, Pankaj K = Kurskompendium Tidplan v 1.0 OBS! Dokumentet kan komma att uppdateras före och under kursen! Dag Aktivitet Må kl 9 V11 (12-16/3) Må kl 15 F1 Ö1 V12 (19-23/3) To kl 10 V13 (26-30/3) Läsa Gör i förväg Händer på plats Kursöversikt, kravhantering, projektplanering, gruppindelning Praktisk introduktion till projektwiki för C&I Tillfälle 1 (E:Hacke) J: 1, 3, 4 Enkla övningsuppgifter för att komma in i wikin. Kravhantering: Kravkriterier, Kvalitetskrav, Översiktligt: J 3-4 Use-Case, relationen mellan USE-case och K: 2 + 4-6 skall-krav. Detaljerat: J: 3.4-5 A: R.1-6 F2 Ti 24.00 I To kl 8 Ö2 Enkla övningsuppgifter för att komma in i wikin. Kravhantering, Granskning, Projektplanering Kravspecifikation 0.x J: 3, 4, 7.5 Projektplanering: Intressentanalys, Affärsmål, projektmål, produktmål Riskanalys, riskkategorier, uppställning Dokumentgranskning (inspection) Testning J: 4.1 J: 4.4-5 J: 7.5 Må kl 15 F3 Må 24.00 I Kravspecifikation 0.99, Projektplan 0.99, granskningsprotokoll från intern granskning av de versioner som föregick 0.99orna. To kl 8 Ö3 Ändringshantering Testplanering, Systemtest Diskussion: A: R.1-6 Göra: A: R.7-10 Praktisk introduktion till projektwiki för C&I Tillfälle 2 (E:Hacke) Må kl 15 Projektåterkoppling Genomgång av den wiki som kommer att användas under projekten Teoretisk introduktion till projektwiki för C&I (E:3308) On kl 13 To kl 8 Innehåll A = Övning på kurswebben P = Projektbeskrivning på kurswebben A: P.1-5 A: I.1 Att wikin är igång och dokument är upprättade och påbörjade. Kort återkoppling på kravspecifikationen Diskussion: A: P.1-6 Göra A: I.2-3 J: 8 A: T.1-8 Lunds universitet / LTH / Datavetenskap / ETSA01 VT 2010 / F1 Att krav, plan och granskningsprotokoll är av tillräcklig kvalitet för att milstolpe 1 ska kunna passeras. Återkoppling Kravspecifikation 0.99 och Projektplan 0.99 Diskussion: A:T.1-8 Göra: A: T.15-1610 V16 (16-20/4) Påskuppehåll Ti kl 15 F4 Arkitektur, design, kodning, versioner On kl 24.00 I MS1 Uppdaterade krav och plan som Kravspecifikation 1.0 och Projektplan 1.0 To kl 8 Ö4 Test forts. Design Må kl 24.00 I MS2 Testplan 1.0, Design 1.0, Granskningsprotokoll från granskningar inför Testplan 1.0 och Design 1.0 J: 5, 6, 7 A: T.9-11 Diskussion: A: T.9-11 V17 (23-27/4) Göra: A: T.9-14 Examination To kl 9 Ö5 V20 (14-18/5) V19 (7-11/5) Projektarbete T De 4 dokumenten används tillsammans med versionshistoriken som bas när projektets slutleverans bedöms. Övergripande återkoppling på Testplan 1.0 och Design 1.0 Må kl 15 F5 Ingen schemalagd verksamhet Utvecklingsprocesser, vidareutveckling, om tentamen J: 2 A: HE.1-3 26 timmar hemtenta 24-25/5: Må kl 15 F6 Inför tentan Utvärdering On 24.00 I Slutinlämning Sista versionen av Kravspecifikation, Projektplan, Testplan, Design, exekverbar kod, testprotokoll samt manual för systemstart U3 Kravgranskning (10 av 60 p) Beskriv hur en kravgranskning går till och förklara denna typ av granskning är viktig, 24/5 kl 08.00målsättning, HemHelavarför kursen - 25/5 kl 10.00 tentamen vem som bör delta, samt vilka typer av fel man bör leta efter. Granskning och bedömning av samtliga dokument Diskutera vilka svårigheter som finns då man vill införa denna typ av granskningar i en organisation samt ange tänkbara lösningar på dessa problem. Ange också om det finns några alternativ till denna typ av granskning och vilka dessa i så fall är. 11
Hälsningar från förra årets studenter Kursboken kan upplevas som svår Projektet innebär att man ofta känner osäkerhet Det är viktigt att alla i projektgruppen har koll på tidplanen (vem, vad, när) Nytt och obeprövat i kursen Modifierad projektuppgift (manualer) Filmer publicerade i förväg Studenter som projekthandledare 5v-påsk&bygg --> 3v-påsk-2v-bygg ---> 12 Bilda projektgrupper och köp kompendium i pausen Skriv upp dig på en av grupperna Alla grupper ska ha sex deltagare. Grupp XX Deltagare (namn) Program Lisa Larsson Kalle Karlsson D1 IE3 E:3308 Notera grupp och övningslokal Köp kompendium 13
ETSA01 Ingenjörsprocessen för programvaruutveckling Metodik Projektuppgiften 14 Projektuppgiften Arbeta i grupper om 6 personer Genomför utvecklingsprojekt från början till slut Kravidentifiering och kravanalys Projektplanering Design och implementation Testning Leverans Leverabler Kravspecifikation Projektplan Testplan & testspecifikation Granskningsrapporter Designdokument Manual Testrapporter Exekverbar applikation Plattformar Moinwiki för dokumenten Java/swing för programvaran 15
Uppgift: Programmera ett cykelgarage Uppdrag Faser och leverabler Målmiljö Kravspecifikation = barcode reader Operator = electronic lock Barcode printer PC = pincode terminal Fas 1 Specifikation Projektplan Testplan Fas 2 Design Extra exit door Bicycle garage Entry door Designdokument Fas 3 Implementation och enhetstest Exit door Exekverbar källkod Fas 4 Systemtest Utvecklingsmiljö Aktörer Dokumenterat genomförda systemtest Dokumentmiljö Projekthandledare Projektgrupp QA från IP3 Kick-start: Etablera projektgrupper senast i pausen 188 personer --> 31,3 Första deadline om 200,5 h 31 grupper Anmäl dig på anslagna lappar i senast i pausen Kursledningen fördelar de som inte anmält sig Grupperna är igång på TORSDAG KL 8. Har konto i projekt-wikin Har förberett Övning 1! Har läst in sig på projektuppgiften Nästa tisdag kl 24 är det första dokumentet inlämnat 17
Projektwikin Självförklarande ;-) Läsrätt: egen grupp kursledning (med automatik) 18 On kl 13 To kl 10 i E:Hacke Wiki-praktik för C och I 19
ETSA01 Ingenjörsprocessen för programvaruutveckling Metodik Om utvecklingsprojekt Om man utvecklar ett system... Vad kan gå fel? Vad brukar gå fel? Varför då? Vad kan man göra åt det? 20
Hur svårt det är att koka pasta beror på om man gjort det förut... och var man börjar 22 Projekt är något mer eller mindre unikt Från beställares synvinkel: en investering som ska gå med vinst avstämningspunkter för att se om det går som man tänkt sig Från utförares synvinkel: en teknisk uppgift som ska bli klar i tid avstämningspunkter för att visa att man klarar att utföra uppgiften UTMANING: Vi bygger inte ytterligare ett hus, gipsar nästa ben eller kokar pasta igen...... vi gör innovation on demand 23
Utvecklingsprojekt vs. en-gång-till-projekt Skillnader Hög komplexitet Kan ändra sent... Likheter Planering och uppföljning Samarbete och kommunikation... Utvecklingsprojekt är något som man gör när man inte vet från början exakt hur det ska gå till 24 Ska vi börja med projektplanen eller kravspecifikationen? Kravspecifikation Fas 1 Specifikation Beroende av varandra Projektplan Testplan Fas 2 Design Designdokument Fas 3 Implementation och enhetstest Exekverbar källkod Fas 4 Systemtest Kraven är en del av produkten. Sista versionen måste sparas. Planen hör till organisationen. Erfarenheterna bör sparas. Dokumenterat genomförda systemtest 25
ETSA01 Ingenjörsprocessen för programvaruutveckling Metodik Om kravhantering 26 Agenda Krav Definition, olika sorter Kravhanteringsprocessen identifiera analysera dokumentera validera 27
Top 10 challenges Standish Group Survey Chaos Report (1994) Top 10 Challenges 1. Lack of User Input 2. Incomplete Requirements 3. Changing Requirements 4. Lack of Executive Support 5. Technology Incompetence 6. Lack of Resources 7. Unrealistic Expectations 8. Unclear Objectives 9. Unrealistic Time Frames 10. New Technology Om man utvecklar ett system... Vad kan gå fel? Vad brukar gå fel? Varför då? Vad kan man göra åt det? [Standish Group, 1995] 28 Vad är ett krav? Önskemål Idé Begränsning Behov Måste Produktegenskap Funktion Lönsam Investering Kontrakt Beslut Underlag för test 29
Olika abstraktionsnivåer 30 Olika sorters krav Funktionella krav Beskriver vilka funktioner systemet ska erbjuda Kvalitetskrav (kallas även icke-funktionella krav) Begränsningar för funktionerna Påverkar ofta hela produkten 31
Kvalitetskrav Tillförlitlighet Mognadsgrad, feltolerans, återhämtningsförmåga Användbarhet Begriplighet, lärbarhet, handhavande, attraktivitet Effektivitet Tidsbeteende, resursutnyttjande Underhållsbarhet Analyserbarhet, ändringsbarhet, stabilitet, testbarhet Portabilitet Uppfyllandegrad (standarder etc) Delar av ISO9126, se också Ingproc 2 32 Funktionella krav, exempel Om kunden erlägger belopp större än en varas pris ska systemet returnera mellanskillnaden. Vid time-out returnerar systemet erlagda mynt. Om en kund trycker på en knapp för en vara som inte finns händer ingenting. 33
Kvalitetskrav, exempel Det får maximalt gå 1.0 sekund från en myntiläggning till att systemet är redo att ta emot nästa mynt. Programvaran får högt använda 6 kb RAM Programvaran får högt använda 65 kb ROM Systemet får vara ur funktion högst 30 minuter om året. 34 Kravhanteringsprocessen Identifiera krav Nu vet vi hur vi formuerar funktions- och kvalitets-krav. Men... Analysera krav Hur hittar vi, analyserar och dokumenterar krav Dokumentera krav Hur säkerställer vi att vi förstått? Hur ska vi prioritera? Validera krav Process enligt wikipedia En samling i förväg uttänkta aktiviteter som ska användas varje gång man skapar ett visst resultat... 35
Identifiera krav Från olika personer med olika behov Ta hänsyn till lagar, regler och standarder Identifiera Analysera Dokumentera Validera Hur? Marknadsanalyser Kundkontakter Analys av gamla system och processer Intervjuer, Kartläggningar (frågeformulär etc), Observationer Prototyper 36 Analysera krav Förstå problemen som systemet ska lösa Identifiera nya krav, stryk krav, omformulera krav, värdera, dvs iterera Identifiera Analysera Dokumentera Validera Viktiga önskemål om kravspecifikation i denna fas: Korrekt, dvs stämmer med bakomliggande behov Komplett, dvs inga viktiga saker saknas etc 37
Dokumentera krav Dvs ta fram kravspecifikation Olika format möjliga Text Grafisk form Formell notation Identifiera Analysera Dokumentera Validera 38 Användningsfall (use case) Identifiera, analysera, dokumentera och validera krav, utgående från typiska exempel på användning. Identifiera Analysera Dokumentera Validera Administrera kurs Anmäla sig Lärare Student Lista kurser 39
Identifiera Användarfall - exempel Analysera UC3: Register for course Primary actor: Student Precondition: the student has logged in Main success scenario: Dokumentera Validera 1. Student lists available courses 2. Student selects one course 3. System accepts the selection Exception scenarios: 3a) The student has not been accepted on earlier required courses --> The system tells the student this situation 3b) The course is full and no more students are admitted --> The system tells the student this situation 40 Identifiera Användarfall - Metod Analysera 1. Identifiera aktörer och deras mål 2. För varje användningsfall: förstå och specificera normalscenario (main success scenario) 3. För varje normalscenario: - identifiera undantagsscenarier 4. För varje undantagsscenario: - definiera vad som ska hända Val av detaljnivå beror på situationen... OBS! Sub-sub-process :-) Mer i ETS170 41 Dokumentera Validera
Att göra Nu Kursdeltagare: Prio 1: Kom på banan nu! Skaffa wiki-konton enligt kurswebb. Hitta INTE på egna namn Läsa in er på projektbeskrivningen Göra R.1-6 C & I ses i Hacke on kl 13, to kl 10 Alla: Övning to kl 8 Nästa måndag här Mer om krav Mer om projekt Granskning Prio 2: Läsa J:3-4 Uppdatera: http://wiki.cs.lth.se/ ETSA01/gruppXX/gruppmedlemmar Kursledning: Prio 1: Kom på banan nu! Rigga kurswikin Förbereda övning 1 42