F8 Programvaruutveckling metoder. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson Datavetenskap, LTH

Relevanta dokument
Agil projektmetodik Varför och vad är det?

Kursinformation. Metodik för programvaruutveckling. Utvecklingsprocessen för programvara. Innehåll. Processmodell. Exempel

SYSTEMUTVECKLING METODER & MODELLER. Suzana Ramadani

RUP - Rational Unified Process

it stöd för Avancerad Cancervård i Hemmet itacih

Projektkaos. Chaos-rapporten. 34% av projekten avslutades i tid och enligt budget % misslyckades!

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Linköpings universitet 1 TDP029. Systemutveckling. Systemutveckling. Vanliga faser. Fler faser. Systemutvecklingsmetod

TDDI02. Programmeringsprojekt. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Chaos om datorprojekt..

Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar

Användarcentrerad systemdesign

Användarcentrerad Systemutveckling

För varje par av påstående/anledning svara med ett av följande alternativ (½ p per rätt svar):

Användarcentrerad systemdesign

Linköpings universitet 1

Chaos om IT-projekt..

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

SCRUM. Marcus Bendtsen Institutionen för datavetenskap

Programvara i säkerhetskritiska tillämpningar

Programvaruutveckling i grupp Projekt EDAF45 (D2, C4, E4, F4, I4, Pi4) - 7,5HP F1Introduktion. Boris Magnusson, Ulf Asklund Datavetenskap, LTH

Symptom på problemen vid programvaruutveckling

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

Software Engineering. Agneta Nilsson, PhD MPA Software Engineering Master s Programme

Teststrategier och Testcertifiering. Per Strandberg, Maj 2013

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

Vad händer med L3: ΔL3-L4 för Krav följs upp av annan projektgrupp. Föreläsning 5: V&V II + Design II Efterläsning Kodning

RUP Rational Unified Process. 17 november 2004

Agile-metoder, XP och ACSD

Objektorienterad programmering

Objektorientering. Grunderna i OO

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Programmeringsstil 11/3-2002

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Agil programutveckling

Objektorienterad analys och design

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Programvaruutveckling i grupp Projekt EDA260 (D2, C4, E4, F4, I4, Pi4): F1Introduktion. Boris Magnusson, Ulf Asklund Datavetenskap, LTH

F7 Agila metoder. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH

men borde vi inte också testa kraven?

Programmeringsstil 18/3-2002

Detta har hänt... Kursinformation. Agenda. Kursinformation

Arbeta i projekt. Anders Hessel ITP-projekt Uppsala Universitet

Föreläsning om OO, OOA och UML

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Metoder och verktyg för funktionssäkerhet

Att fatta rätt beslut vid komplexa tekniska upphandlingar

Föreläsning 4 Identifiera krav och behov. Att läsa: Kapitel 10 i Rogers et al.: Interaction design

Presentation. Fredrik Runnsjö 1996 Utvecklare 2004 Testare ~2006 Scrum/Canban

Inlämning 2 - Förslag till tentamensfrågor i Kravhantering, Grupp A. Kompletterar de kursavsnitt som inte täcktes av förra inlämningen.

Datavetenskapligt program, 180 högskolepoäng

men borde vi inte också testa kraven? Robert Bornelind

OOA Objektorienterad Analys. Exempel på informell kravspecifikation. DD2385 Programutvecklingsteknik Några bilder till föreläsning 11 13/5 2013

Föreläsning 1. Kursinformation. Utvecklingsprocessen. Kravspecifikation. Gruppindelning.

Några grundläggande begrepp

Testplanering, test-first, testverktyg

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

Alla rättigheter till materialet reserverade Easec

Användbarhet i sitt sammanhang

TDDI02. Programmeringsprojekt. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Software Design Introduction

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Systemutvecklingsforskning inom e-government. Gidlund et al: Kap 6

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Utvecklingsm odell och utvecklingsm etod för att skapa god kom m unikation

F7 Agila metoder. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH

Utforskande testning

Regressionstestning teori och praktik

Testning på 3 föreläsningar. PV7180 Verifiering och Validering. Litteratur. Vad är testning? Varför testa och olika syn? Målet med testning

Opponentrapport på examensarbete Utveckling av ett affärssystem med Unified Process av Therese Sundström.

Objektorienterad konstruktion

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning

F9 del B Organisatoriskt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson Datavetenskap, LTH

Vad är RTCA DO-178C? och: Hur arbetar Saab med dessa krav? Lars Ljungberg, Saab AB, Avionics Systems

När? Varför? För vem? Resultat? (Artefakter?)

Föreläsning 2: Projekt, Kravhantering, Dokumentgranskning

Agil testning i SCRUM

TDDI02. På denna föreläsning: Programmeringsprojekt, Föreläsning 1. Kursinformation Vad är Software Engineering? Hur går ett projekt till?

Programmering = modellering

FÖRELÄSNING 8 DSV2PVT

Kurser inom Datavetenskapligt kandidatprogram och Computer Science Master s programme våren 2010

TDDI02. Programmeringsprojekt, Föreläsning 1. Filip Strömbäck. Med utgångspunkt i tidigare slides av Jonas Lindgren

Prototypningsverktyg. A Human-Centered Design Process (ISO , 2010) Mattias Institutionen för datavetenskap

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Datavetenskap. Therese Sundström. Utveckling av ett affärssystem med. Unified Process. Examensarbete, D-nivå 30 ECTS 2005:05

Datavetenskapligt program, N1COS

12 principer of agile practice (rörlig)

Föreläsning 3 Användare, uppgift och omgivning. Kapitel 3-4 i Stone et al.

Kursen handlar om. Var används datorer och andra IT-stöd? T ex: Människa-datorinteraktion (MDI) Inst. för informationsteknologi

Preliminär specifikation av projekt

Platina och kvalité. Rasmus Staberg, Teknisk direktör,

Problemlösning. Planering av program. Konstruktion. Programmeringsmetaforer. Problemlösning. Programmering = Problemlösning

Att läsa: Sharp, Helen, Rogers, Yvonne & Preece, Jenny E. (2007) Interaction design. Wiley. Kapitel 11.

Med den här boken får du: Författaren:

Testdriven utveckling av Web Services. Ole Matzura

Berättelser Scenarios Presentationer Skisser Formella modeller Mjukvaruprototyper Kartong modeller etc.

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

Final Course Marks will be combined from the examination and the project:

CREATING VALUE BY SHARING KNOWLEDGE

Transkript:

F8 Programvaruutveckling metoder EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson Datavetenskap, LTH 1

Innehåll Hur började det? Inspiration från tillverkning Vattenfallsmetoden Delarna i alla metoder: Analys/,, Programmering,Testning, Dokumentation Varianter på dokumentbaserade metoder Andra ansatser, hitta kraven, prototyper Några spektakulära misslyckanden 2

Inspiration från tillverkning De första kommersiellt tillgängliga datorerna kom på 60-talet, transistorer gjorde skillnad! Att programmera blev lite vanligare. Hur gör man detta nya? är det programmering det heter? Transistorer gjorde också skillnad för radio. Hur gör man en ny transistorradio? 3

1. Analys Förstå problemet, vad är det man vill ha: - Kunna spela modern skränig popmusik - Tillräckligt hög volym för ett tonårsrum. - Bärbar, inte för tung (ny viktig feature ) - Batteridriven, driftstid minst - Snabbväljare för 3 kanaler (P1, P2, P3) - Färgglad modernt yttre, tilltalande för ungdomar. - Kostnad motsvarande 4 veckopengar. 4

Steg 1, specifikation Analys Beskrivning Specifikation 5

2. Hur det skall byggas. Naturligt att delas upp i 3 aktiviteter - Lådan: storlek, bärhandtag, material (trä eller det nya moderna plast?) - Strömförsörjning: Batterihållare (ficklampor?), högtalare, (skydd?) - Elektronik: hur många transistorer? (dyra), förstärkare - konstruktion, programväljare 6

Steg 2, Ritning Ritning Analys Beskrivning Specifikation Ritning Ritning 7

Steg 3: Produktion Analys Beskrivning Specifikation Ritning Produktion Provserie Utvärdering Komponenter Fabrik Personal Underhåll, service Varje steg avslutat innan nästa börjar. - Signering och godkännande Varje dokument: - Tydligt nog för driva nästa steg 8

Planering - GANTT-diagram Nedbrutet i deluppgifter, tidssatta Parallellt eller Sekvens, kritisk linje Beslutspunkter Henry Gantt, uppfann dessa diagram 1917, för att strömlinjeforma produktion av örlogsfartyg under första världskriget. 9

Applicerat på programvara Analys Beskrivning Specifikation dokument Implementation Program Testning Utvärdering Leverans Underhåll, service All steg avslutade och godkända innan nästa steg startas. Dokumenten tillräckliga för att driva nästa steg. Har kommit att kallas vattenfallsmodellen. 10

Vattenfall? Kommer från? Dr. Winston W. Royce: Managing the Development of Large Software Systems, Proceedings of IEEE WESCON 26 (August): 1 9. 1970. Pappret förklarar varför denna modell inte fungerar - men alla läste inte så långt. 11

Hur tänker man att detta skall fungera? Programvaruprojekt ofta problematiska: - Försenade - Fungerar inte - Gör inte vad man förväntat Om man utnyttjar beprövad metodik från andra ingenjörsområden borde det väl lösa problemet?! Mer process (ordning och reda helt enkelt)! 12

Software Process Activities: - Software Specification - functionality, constraints - Software Development - produce sw which meets spec. - Software Validation - ensure sw meets customer/users expectations Ian Sommerville: Software Engineering, Addison Wesley 13

The Waterfall approach Softare development process in steps: 1. Analysis, Requirements, and Specification. 2. System and software 3. Implementation and unit testing 4. Integration and systems testing 5. Operation and maintenance. Each stage result in a document. After each stage is defined - it is signed off, and development goes on to the next stage. Låt oss, för ett ögonblick, ta det på allvar 14

1. Analys: Förstudie Feasibility Studies / Förstudie - Kan man alls bygga ett sådant system? - Alternativ - andra system, inte alls kanske? Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Leverans 15

Analys: Funktion? Förstå domänen - t ex en situation i vården. Vilka funktionskrav finns: - Insamling, intervju, studiebesök, tidigare lösning - Format: text, diagram, tillståndsmaskiner, kommunikation, formella notationer. Klassificera, sortera, prioritera, lösa konflikter. Validering: fullständigt, konsistens, stämmer med förväntningarna. - Granskning, genomgång med kund, Systemkrav (plattform, tid, minne, kostnad etc). Dokument som fullständigt specificerar hela systemet Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Leverans 16

Formella specifikationer Strict validering förutsätter en formell notation Blir i praktiken en sorts programmering på hög nivå: Z, VDM, CSP, Petri-nät - eller algebra, en sorts matematik: Larch, OBJ, Lotos Kommunikationsprotokoll, kryptering, kompression - eller en referensimplementation, BT, webrtc men inte för användarinteraktion 17 Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Leverans

2 Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Leverans Ritning över hela systemet! Tillräckligt detaljerad för att skriva all kod. Systemstruktur (High-level design): - delsystem, kommunikation, lagring, kontroll Nedbrytning i komponenter (Detailed design): - delsystem, paket, klasser, metoder - API, databas schema, protokoll, interface Strukturera: High-level, Detailed, (Formal spec) Jfr Krutchen 4+1 views of Documentation 18

formalism Driva nästa steg - Validering? - konsisitent, fullständigt, stämmer med specifikationerna. Architectural Description Languages - försök finns men inga generella praktiskt användbara. Delproblem: - Tillståndsmaskiner - dödlägesanalys etc. UML - halvformellt. OO-modellering passar med OO språk Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Leverans 19

Kodning - testning Software processes säger oftast inte så mycket om själva programmeringen. 20 dokument Coding Analys Program Beskrivning Specifikation Testning Utvärdering Leverans

Testningstekniker Verifiering - uppfyller systemet specifikationen Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Leverans - Black-box - test mot specen - White-box - tillgång till koden - täcka all kod Validation - Funktionalitet - utvärdering av kund - Systemkrav, prestanda, minnesåtgång, robusthet, mot t ex felaktig input, överbelastning 21

dokument Coding Analys V-modellen Program Beskrivning Specifikation Testning Utvärdering Leverans Från SEI.s hemsida V-modellen kommer ursprungligen från Systems Engineering Syftet är att bygga modeller (t ex matematiska modeller av ett dynamiskt system )uppifrån-och-ner som successivt verifieras. I SE har den kommit att användas för beskriva nerbrytning i komponenter. 22

Kritik av vattenfallsmodellen Redan Royce artikel (1970) menar att man inte kan arbeta sekventiellt, problem slår ofta flera nivåer bakåt i kedjan. Han föreslår en rad tillägg. 23

Varianter av vattenfall Grundproblem - man kan inte göra hela designen av ett stort system utan återkoppling. Inkrementell utveckling. - Utveckling i delar där varje del följer modellen 24

Spiralmodellen Berry Boehm Spiral modell, från I Sommerville 25

Extremvarianten: Cleanroom Incremental - specification and validation in parts, defined early in the process. Formal specification - State-transition model, system response to stimuli. Structured, restricted programming - only parts of a language is used. Transformation - Program is developed as transformations of the specification. Validated in each step. Static verification - no testing during development. Statistical testing of system based on expected use. The system is not executed during development. Milles et. al. 1987 26

Förstå Ritning Ritning Ritning Produktion Analys Beskrivning Specifikation Programvara - ritningar? Provserie Utvärdering Komponenter Fabrik Personal Upprepa Skapa Är programmering bara en (automatiserbar) process som översätter från (högnivå-)? Eller Är programmering en del av med mer detaljer? 27

Vattenfallsmodellen Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Leverans Underhåll, service Dokumenten tillräckliga för att driva nästa steg. Tolkning: Programmering = - en process som översätter från 28

En Agil tolkning Ritningar Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Produktion? Kopiera CD-skivor Underhåll, service Förstå Skapa Program motsvarar en elektronik-ritning - först nu är produkten fullständigt beskriven. (i XP blir Testerna också ritningar ) Produktion blir trivial. 29 Upprepa

Vem bidrar till kraven? Chef eller annan (IT-) organisation: - Fel vinkel - vet oftast inte i detalj. Intervjua användarna: - Svårt att föreställa sig, ofta förenklad bild Etnografiska studier - Observera hur användare gör, studiebesök, video för senare analys Problem: - Lång tid mellan kravinsamling och leverans - behovet ändras. - Systemet i sig påverkar - nya/andra krav nu när det används. Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering 30

Prototyping Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Det är en del av problemet att förstå problemet Förenklad implementation för att få användarnas synpunkter, det var inte så jag menade. - Rita, Bildspel, fake-program med bara GUI - Tänkt att kastas ersättas när man fått erfarenhet. Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Evolutionary prototype - så som man tänker i XP 31

Participatory Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Evolutionary prototyping med ständig medverkan av användare. Användare bidrar med både problem och lösningar. Kombinerat med snabb återkoppling kan det fungera väldigt bra. Går utmärkt att kombinera med XP 32

Erfarenheter Att bygga stora IT-system är fortfarande svårt Många större IT-projekt havererar med stora kostnader. - Nordea - 5 Miljarder - SEB - 2 Miljarder - Försäkringskassan - 400Miljoner - Försvaret Prio - 2,4 Miljarder - GB: EHR (Journalsystem) - 12 Miljarder Pund (!) Gemensam Vård Data (GVD) - 1,6Miljarder -> NPÖ 33

Ett annorlunda exempel Polisens Utrednings Stöd System 1 - PUST-Java Agila metoder: - Avgränsad del (cykelstöld) - Begränsad lansering - prov i mindre grupp Iterativt, fler brott, senare bredare utrullning. Alla nöjda: - Utredningstider gick ner, effektivitet ökade med 85% - Jusititeminstern i TV: Nu blir det fler poliser på gatorna 34

Polisens it-avdelning: Inte standardsystem måste byggas om. För dyrt med fortsatt underhåll av egenutvecklat system System 2 PUST Sibel - Baseras på standardsystem Siebel ett ärendehanteringssystem från Oracle. - Total ny implementation med bibehållen funktionalitet (användarna märker inget) 35

PUST/Siebel resultat Konventionell utveckling, ideala förutsättningar: - PUST/Java som spec, eller proto Svårt att hitta kompetenta utvecklare, förseningar. Resultat: - extremt långsamt i drift - kompromisser i utformningen - förändringar i Siebel - ej längre standard! PUST/Siebel stängdes ner av arbetsmiljöskäl - Stressen på Poliserna blev för stor! Kostnad 300Mkr direkt, 20Gkr för samhället, Polisfacket 36

Exempel: Tunnel genom Hallandsåsen Tågtunnel - inte första gången i världshistorien Vad behövs: - Borras två hål, läggas räls, elinstallationer, anslutningar, en ny station. Stort men välkänt. Upphandling: så noggrann spec: - Detaljer, krav, tider för leverans, 1997. Kraftbyggarna vann upphandlingen (billigaste budet) - Byggt mycket tunnlar till vattenkraft i Norrland. - Borrat i urberg - nu en grusås skall också gå. Boris Magnusson CS, LTH 2016-02-08

Så mycket för den planeringen! (Tunneln blev 18 år försenad) Boris Magnusson CS, LTH 2016-02-08

Varför gör man då så här? Tradition - svårt att ändra. Ekonomiska, juridiska ramar: - Avtal mellan kund och leverantör - Baseras på beskrivning av vad systemet skall göra, specifikation. Sen är man fast: - Kunden vill inte ändra kostnaden - Leverantören vill inte ändra innehållet. LOU (Lagen om Offentlig Upphandling) gör det ännu värre. 39

Varför går det fel? Stora projekt är svårt, inte bara programvara - Svårare ju större, ju längre tid, flera parter Speciellt för programvara: - Behovet svårt att fånga - Behovet ändrar sig - Påverkar människors arbetsvillkor Specifikationer/ läggs fast för tidigt. Som kontrast - Agila metoder (XP) - Återkoppling, prova - ändra, förbättra. 40

Utvecklingsmodeller Vattenfallsmodellen, dokumentbaserade Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Leverans Underhåll, service Agila - XP modellen Analys Beskrivning Specifikation dokument Coding Program Testning Utvärdering Produktion? Kopiera CD-skivor Underhåll, service Förstå Skapa Upprepa 41

Faser i traditionella Utvecklingsmodeller Leverans Impl Test Vattenfall Allt Iterativt Delar Impl Test Impl Test Impl Test Impl Test Underhåll Lev 2 Lev 1 Lev 3 Lev 4 Underhåll Tid

Faser i Agil utveckling Funktion Stories Impl Test XP Nollte iteration Impl Test Impl Test Impl Test Impl Test Impl Impl Test Impl Test Impl Test Lev 4 Impl Test Lev 3 Lev 2 Test Lev 1 Impl Test Tid

Läsanvisningar Software Engineering - Winston W. Royce: Managing the development of Large Software Systems, IEEE WESCON, August 1970 http://www-scf.usc.edu/~csci201/lectures/lecture11/royce1970.pdf - Pankaj Jalote: A Concise Introduction to Software Engineering, Springer - Ian Sommerville: Software Engineering, Addison Wesley ( uppslagsbok ) Debatt om fallerade projekt - PUST - PUST: http://computersweden.idg.se/2.2683/1.547944/haveriet-inifran-sa-gickpust-fran-succe-till-fiasko - http://www.dn.se/debatt/sa-avslojar-du-it-projekten-som-riskerar-att-haverera/ - http://computersweden.idg.se/2.2683/1.546751/annu-ett-fiasko-for-accenture 44