Agenda. Föreläsning 6: Processer och vidareutveckling. Kursinformation. Utvecklingsprocesser. Programvara efter release. L5b Extern QA-granskning

Relevanta dokument
Detta har hänt... Agenda. Kursinformation. Föreläsning 5: Processer och vidareutveckling

ETSA01 Ingenjörsprocessen 1 - Metodik VT15 Markus Borg

Diskutera medan vi väntar

Diskutera medan vi väntar. Detta har hänt... Agenda. Föreläsning 5: Processer och vidareutveckling. Kan man utveckla programvara

Föreläsning 5 Processer, vidare utveckling

Föreläsning 5 Processer, vidare utveckling

Föreläsning 5 Processer Vidare utveckling

Linköpings universitet 1

Hemtentamen: ETSA02 Programvaruutveckling Metodik

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

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

Projektmetodik. Översikt. Lektion 1: Metodiker. Metodiker.

Agil programutveckling

SCRUM. Marcus Bendtsen Institutionen för datavetenskap

12 principer of agile practice (rörlig)

AGILA METODER. (för oss som inte kodar) Nina Berlin

Inspel till dagens diskussioner

Agil projektmetodik Varför och vad är det?

Automation Region. Affärsdriven systemutveckling genom agila metoder. Stefan Paulsson Thomas Öberg

Deluppgift 2 Kravhantering a) (2p) När man diskuterar krav brukar man ange två olika typer av krav. Beskriv dessa och ge exempel.

Agenda. Föreläsning 6: Utvärdering och om tentamen. Kursinformation

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

Agenda. Kursinformation. Manual för systemstart... Föreläsning 6: Utvärdering och om tentamen

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

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

Fungerar Agila principer i alla typer av projekt?

SCRUM. Vattenfallsmodellen. Analys. Design. Kod. Test. Rational Unified Process Agile. Kallas också linjär sekventiell modell.

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions

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

Användarcentrerad systemdesign

Agenda. Projektbeskrivning avsnitt 8: Acceptanstest - MS4 i korthet. Kursinformation

INGENJÖRSPROCESSEN METODIK ETSA01 VT13 JONAS WISBRANT

Informationshantering vid systemutveckling styrd av CM

Agenda. Kursinformation. Manual för systemstart. Föreläsning 6: Summering och om tentamen. Målgrupp:

Lean software development och lättrörlig utveckling

Användningscentrering i agila utvecklingsprojekt. johanna.sarna@valtech.com Valtech

BESKRIVNING AV PROCESSMETODEN SCRUM

Agilt arbetssätt i komplexa organisationer. Välkomna! Anna Picetti, IT-HUSET

Regressionstestning teori och praktik

Användarcentrerad systemdesign

Detta har hänt... Föreläsning 2: Projektplanering & granskning. Pratat och provat kravhantering. Bildat projektgrupper :-) Skaffat litteratur?

Programvaruutveckling - Metodik 2016 Jonas Wisbrant

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

Agile-metoder, XP och ACSD

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

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

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

Agil Projektledning. En introduktion

Användbarhet i sitt sammanhang

Föreläsning 4: Konfigurationer, Plattformar & Design I Programvaruutveckling - Metodik 2016 Jonas Wisbrant

Agil mjukvaruutveckling. 1DV404, Jesper Andersson

Agil Projektledning. En introduktion

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

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

Kanban. Marcus Hammarberg. torsdag den 15 september 2011 (v.)

Agenda. Föreläsning 6: Summering och om tentamen Kursinformation

Hemtentamen: ETSA01 Ingenjörsprocessen för programvaruutveckling metodik

Projektarbete. Grunder

AGIL KRAVHANTERING. Hitta behoven bakom kraven!! Thomas Nilsson! Agile Coach & Mentor! CTO, Responsive

Swedbank CI Cross Functional Team

F2 XP Extrem Programmering översikt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH

SYSTEMUTVECKLING METODER & MODELLER. Suzana Ramadani

Agil Projektledning. En introduktion

Föreläsning 6. Utvärdering, om tenta, avrundning

Föreläsning 6. Utvärdering, om tenta, avrundning. Agenda. Kursinformation. Schemalagda kursmoment. Jonas Wisbrant. Kursinformation

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

INGENJÖRSPROCESSEN METODIK ETSA01 VT13 JONAS WISBRANT

Agil utveckling ställer nya krav på upphandling. Roland Bäcklin, Jaybis Konsult AB

F2 XP Extrem Programmering översikt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH

Agil testning i SCRUM

Testbara krav. SAST Syd Ställ gärna frågor under presentationen eller efteråt Åhörarkopior distribueras efteråt

TDP023 Projekt: Agil systemutveckling

Objektorienterad programmering

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

Testning som beslutsstöd

SCRUM. på fem minuter

XP-projekt: En fördjupning

SCRUM och agil utveckling

SCRUM. på fem minuter

Therese Hansson & Magnus Jonsson. Motivationsfaktorer - Test inom Agila utvecklingsprojekt

extreme Programming refactored - recension och analys av Kent Becks senaste definition av XP

SCRUM och mycket mer

Agila arbetsformer. Gemensamma värderingar

Vad är agilt? Agile Islands Andreas Björk

Kurser och seminarier från AddQ Consulting

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

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

Scrum + XP = sant. Kristian Björk D06, Lunds Tekniska Högskola dt05kb1@student.lth.se. Frederik Blauenfeldt Jeppsson. dt06fb8@student.lth.

Specifikationer i kompendiet Övningar på moodle.cs.lth.se Support Onsdag kl i E: (84?) Frågestund: F3

FÖRELÄSNING 8 DSV2PVT

Hur hanterar vi risk? Vad är TKO? Skillnad på agil och trad? Agil/Lean: Defer Commitment, Build knowledge, Fail fast

Extreme Programming En bra metod?

Expertgruppen för digitala investeringar. Framgångsfaktorer för ett agilt arbetssätt

Faster time to action and more accurate pre-studies using Agile tooling

Scaled Agile Framework

Copyright Prolore All Rights Reserved.

Scrum. på fem minuter

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

CREATING VALUE BY SHARING KNOWLEDGE

Transkript:

Föreläsning 6: Processer och vidareutveckling Programvaruutveckling - Metodik 2016 Jonas Wisbrant 1 Agenda Kursinformation L5b Extern QA-granskning Utvecklingsprocesser Linjära Evolutionära Inkrementella Lättrörliga (agila) - fokus XP och SCRUM Programvara efter release Vidareutveckling Legacy-system

Kursinformation V 18: Mån kl 10 Föreläsning: Utvecklingsprocesser, vidareutveckling Ti kl 23:59: L5a (Testplan + Designdokument) V 19 Omtentavecka V 20: Mån kl 10 Föreläsning: Sammanfattning, utvärdering, om tentamen Mån kl 13:00 L5b (Extern QA-granskning) Tis: kl 23:59 Access till Granskninsgprotokoll för testplan V 21: Fr kl 23:59: Slutleverans projekt V 22: Tis-Ons: Hemtentamen Runt midsommar: Återkoppling och betyg L5b Extern QA-granskning QA = Quality Assurance = Kvalitetssäkring QA-ingenjörer är en egen yrkesroll inom software engineering Utformar arbetsprocesser Säkerställer att processer följs Utbildar medarbetare Kontrollerar att leverabler är av acceptabel kvalitet Kan vara verksamma som expertkonsulter Er uppgift Kvalitetssäkra en annan grupps testplan genom granskning

Vad händer med L5: Granska annan grupps testplan/specifikation PHL tilldelar dokument att granska OBS! v 1.1 Granskningsprotokoll Test 1.0 klart Meta QA PHL gör extra koll och ger granskad grupp läsrätt L5b Granska annan grupps Testplan/specifikation Projekthandledare förser granskande grupp med: - Testplan 1.0 (pdf) - Ev. kravspec > 1.0 (pdf) Granska efter förmåga deras Testplan 1.0 Meddela projekthandledare om ni är klara före deadline: måndag v. 20 kl 13,00

Acceptanstest i korthet... uppfyller följande kriterier: Levererad programvara uppfyller projektets kravspecifikation Testas med projektets testfall + utforskande testning Kravspecifikationens och testplanens kvalitet är god Kontrolleras med checklistor och projektets granskningar Det är särskilt viktigt att alla kraven adresseras av minst ett testfall Projektmodellen så som den presenterats följs i tillräcklig utsträckning Kontrolleras genom: analys av levererade dokument: plan, krav, test, design, testrapport, granskningsprotokoll och installationsmanual verifiering av ändringshantering konsistens mellan slutversionerna av krav, design, test och applikation Utvecklingsprocesser En historik Programvaruutveckling - Metodik 2016 Jonas Wisbrant 8

1960-talet: The Software Crisis Återkommande problem med programvaruprojekt Förseningar Många fel i levererade produkter Projekt som fick avbrytas Kostnader som skenade Produkter som bara blev större och större Etc. 1960-talet: The Software Crisis The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem. Edsger Dijkstra, Turing Lecture, 1972

Lösning: Styr upp röran! NATO-konferens i Garmish-Partenkirschen 1968 myntade begreppet Software Engineering Ta efter hur utveckling sker i andra ingenjörsdiscipliner Dags att införa ordning och reda God planering och uppföljning Omfattande processer följde... Under 70- och 80-talet gällde uppstyrda processer och subprocesser

Många problemen kvarstod... Det visade sig svårt att planera bort förändringar i kravbilden Kunder ändrar sig Marknaden förändras Ny teknik införs hela tiden Hårdvaran byts ut Programvaruutveckling är innovation - Nya insikter följer hela tiden 1990-talet: Motreaktion mot processerna De kritiska rösterna: Programvara förändras hela tiden går inte att planera bort denna osäkerhet Stryp inte utvecklingen med processer och dokument Utgå istället från ständiga förändringar - Flexibilitet är programvaras styrka

Lättrörliga processer följde Efterfrågas just nu... Framtiden: Utmaningar återstår Öppna forskningsfrågor Hur arbetar 100/500/1000 ingenjörer lättrörligt ihop? Hur arbetar man lättrörligt i globala projekt? Kan man utveckla säker programvara med lättrörliga processer? Hur underhåller man ett system utan dokumentation? Kritiska röster pekar på misslyckade lättrörliga projekt

Processer - Centrala begrepp Programvaruutveckling - Metodik 2016 Jonas Wisbrant 18

Utvecklingsprocesser - begrepp Process: Det arbete som görs för att utveckla programvara Processmodell: En beskrivning av processen Processförbättring: Arbetet med att förbättra processen Aktiviteter som ingår i alla processmodeller Specifikationsaktiviteter Utvecklingsaktiviteter Verifieringsaktiviteter Vidareutvecklingsaktiviteter... men - kan komma i olika ordning - ha olika fokus (och budget)

Processer är antingen... Aktivitetsorienterade Förstudie Kravinsamling Design Implementation Testning Resultatorienterade Rapport från förstudie Kravspecifikation Design Källkod Testrapport Ingår i en processmodell (Sub)processer en serie steg med gemensamt mål Aktiviteter Leverabler Villkor startvillkor, slutvillkor Roller

Processmodell - exempel Processmodell - annat exempel

Processmodell - tredje exempel Språk för processmodeller - exempel Little-JIL: Grafiskt programmeringsspråk för att definiera processer (University of Massachusetts, Amherst)

Processmodell - Little-JIL- exempel Varför engagera sig i processer? Kvalitet Stark koppling mellan processkvalitet produktkvalitet - Utvärdera processen kan vara enklare än att utvärdera produkten och mer bestående En obefintlig process - kan leda till en utmärkt produkt - kan bli ett fullständigt misslyckande En bra process - synliggör problem och erbjuder åtgärder Spara pengar En tydlig process minskar förvirring Processer kan återanvändas i andra projekt

CMMI En modell för processmognad Capability Maturity Model Integration - CMMI En modell för processmognad En utvecklingsorganisation kan låta sin process utvärderas Genomlysning kan identifiera brister Används i marknadsföring Kan krävas av kund

Processmodeller En översikt Programvaruutveckling - Metodik 2016 Jonas Wisbrant 31 Vattenfallsmodellen + Strukturerat när kraven är stabila + Varje fas resulterar i dokument + Möjliggör god insyn (t.ex. vid mätningar och certifiering) - Dyrt att gå bakåt i modellen - Svårt att hantera föränderliga krav

V-modellen - vattenfall med återkoppling Processmodell för kursen på hög nivå Faser och leverabler

Linjära modeller: Problem Ofta kan kraven inte frysas Big bang-integration sällan framgångsrik Ökar risk för nice-to-have bland kraven för säkerhets skull Kostnaden för att underhålla dokument är hög - kundnytta? Evolutionär utveckling Utvecklingsprocessen Mål Test Rapport Utvärdering Krav Design Test Behov Rapport Beslut Krav Krav Design Slutgiltig version A B C D E Versioner för feedback Kund / användare

Två urtyper av evolutionär utveckling Kasta-bort prototyping Ta fram prototyp, dra lärdomar, kasta bort Därefter utveckla riktigt system Används vid stora risker med tekniken Börja med svåra tekniska krav Evolutionär prototyping Arbeta hela tiden med riktigt system Används vid stora risker med kraven Börja med kundens viktigaste eller osäkraste krav Spiralmodellen Den tydliga skillnaden är explicit riskhantering i varje varv!

Inkrementell utveckling Fokus på systeminkrement Möjliggör parallell utveckling Ger tidiga leverabler Möjlighet att identifiera krav under utvecklingen Tidiga inkrement kan testas många gånger Krav Impl. Test Impl. Test Release Impl. Test Release Release Timeboxing Kravteam Kravställning Utveckling Implementation Testare Test Slöseri med resurser?

Timeboxing Kravteam Krav 1 Krav 2 Krav 3 Utveckling Impl. 1 Impl. 2 Impl. 3 Testare Test 1 Test 2 Test 3 Release 1 Release 2 Release 3 Timeboxing Specificera längd på en timebox, t.ex. 2 veckor Bryt ned projektet i lika stora arbetspaket 2 veckor Krav Krav 1 Krav 2 Krav 3 Impl. Impl. 1 Impl. 2 Impl. 3 Test Test 1 Test 2 Test 3

Jämför med pipeline-arkitektur i CPU (2001)

Lättrörliga utveckling (agile) Kärnan i agila processer viktigare än Individer och interaktion Fungerande programvara Samverkan med kund Anpassning till förändringar > processer och verktyg > fullständig dokumentation > kontraktsförhandlingar > följande av plan Vad innebär det att vara lättrörlig? Direkt kommunikation - Mindre dokumentation Team styr själva sitt arbete - Mindre toppstyrning Team med blandade kompetenser - Krav, kod, test i samma team (face-to-face) (self-organizing) (cross-functional) Adaptiv planering - Mindre förutspå framtid, mer anpassning till verklighet Evolutionär utveckling - Kontinuerlig förbättring Tidiga releaser med snabb feedback från kund

Extreme Programming (XP) Första agila processmodellen som fick stor spridning Tekniskt fokus snarare än övergripande process Består av 12 praktiker (practices) att följa Planning Game Small Releases Metaphor Simple Design Testing Refactoring Pair Programming Collective Ownership Continuous Integration 40-hour week On-site Customer Coding Standard Karaktäristiska praktiker i XP Planning game All utveckling utgår ifrån en user story som kunden vill uppnå Collective ownership Ingen äger någon specik kod, alla arbetar med allt Refactoring Koden uppdateras kontinuerligt för att förbättras Testing Först skriver man testfallet, sedan koden som uppfyller det Parprogrammering All kod skrivs i par av programmerare. Granskas i realtid. Continous integration Kod stoppas kontinuerligt in i huvudsystemet. Ingen big bang. On site customer Kunden ska vara tillgänglig under hela utvecklingen för feedback

XP: Brister och kritik En utvecklingsprocess ska inte detaljstyra hur utvecklarna programmerar - Parprogrammering är en vattendelare! Ofta omöjligt att ha en kund på plats XP är inte lika populärt som för 10 år sedan Tips: XP innehåller bra idéer Se de 12 praktikerna som ett smörgåsbord Ta det ni gillar! Scrum (Wikimedia commons: PierreSelim)

Scrum - huvudprinciper Systemkraven hanteras i en product backlog Utvecklingsarbetet bryts ned i sprintar (1-4 veckor) Varje sprint innebär ett inkrement av systemet Sprintens krav hanteras i sprint backlog Inleds med sprint-planering: vad, vem, hur? Avslutas med sprint-retrospekt: lärdomar, erfarenheter? Daily scrum: Stående morgonmöte på 15 min 1. Vad gjorde du igår? 2. Vad ska du göra idag? 3. Ser du några hinder i ditt arbete? (Wikimedia commons: ftiercel)

Scrum task board Aktivitetsöversikt: Att göra Pågående implementation Pågående testning Färdigt (Wikimedia commons: ftiercel) (Wikimedia commons: PabloStraub)

Scrum: Brister och kommentarer Utveckling är svårt trots att Scrum används 75% of organizations using Scrum will not succeed in getting the benefits that they hope for from it - Ken Schwaber (en av skaparna) Svårt att skapa Scrum-teams Nyckelpersoner kan behöva hoppa mellan team Passar dåligt för distribuerad utveckling Lean software development Filosofin lean produktutveckling utvecklades av Toyota Fokusera på att eliminera slöseri Gör det uppenbart att allt arbete leder till kundnytta genom att ta bort allt annat Vida spridd princip även utanför programvaruutveckling

Lean software development Slöseri (waste): Onödig kod och funktionalitet Otydliga krav Byråkrati Långsam kommunikation Fördröjningar i arbetet (Mary Poppendieck and Tom Poppendieck, 2002) Kanban Betyder ungefär visuellt tecken på japanska Också från Toyota Arbetare på löpande bandet signalerade tydligt resultat och behov Schemaläggning ger stöd åt lean och just-in-time produktion

Kanban för programvaruutveckling Kärnan i Kanban Visualisera arbetsflödet använd Kanban-tavla Begränsa work in progress fokusera på genomströmning (flow) Mät ledtid för aktiviteter sträva efter kontinuerlig förbättring (Crisp.se)

Finns ingen fulländad process! Processmodeller En översikt Programvaruutveckling - Metodik 2016 Jonas Wisbrant 64

Nyutveckling vs. vidareutveckling Det mesta utvecklingsarbetet är vidareutveckling av befintliga system Software evolution innebär att anpassa programvaran efter release Underhåll av programvara handlar inte om slitage, istället: - Hantera nya krav - Porta till nya plattformar - Integrera med andra system - Rätta buggar - Optimera - etc. Legacy system A legacy system is an old method, technology, computer system, or application program that continues to be used, typically because it still functions for the users' needs, even though newer technology or more efficient methods of performing a task are now available." Ofta affärskritiska - Annars hade de inte funnits kvar Kan vara gamla (ibland > 30 år) - Ingen har längre förståelse för system/arkitektur/teknik

Lehmans Lagar om software evolution Totalt åtta naturlagar om vidareutveckling av programvara De två viktigaste: Kontinuerliga krav på förändring Så länge ett program används så kommer det att behöva uppdateras för att förbli uppskattat Ökande komplexitet När man kontinuerligt ändrar i ett program blir det mer komplext och svårare att förstå om man inte aktivt motverkar det

Underhåll efter release Kräver Ändringshantering Konfigurationshantering Påverkansanalys Spårbarhet Regressionstest Man skiljer mellan: Felrättande (Corrective) Anpassande (Adaptive) Förbättrande (Perfective) Förebyggande (Preventive) Bug tracker Machine Learning Vilka är viktigast? Hur påverkar rättningen systemet? Vem ska rätta den?

Sammanfattning föreläsning 6 Utvecklingsprocessen är det som görs för att utveckla programvara Processmodellen är en beskrivning av processen Några exempel på processmodeller: vattenfall prototyputveckling spiralmodellen timeboxing lättrörlig utveckling (agile) Agila buzz words XP, scrum, lean, kanban Legacy system är gamla system som levt kvar länge, i många fall längre än vad man förväntade sig från börja Underhåll av programvara är antingen: felrättande anpassande förbättrande förebyggande Underhåll underlättas av tydlig ändringshanteringsprocess, spårbarhet, konfigurationshantering och regressionstestning

Föreläsning 6: Processer och vidareutveckling Programvaruutveckling - Metodik 2016 Jonas Wisbrant 73 Agenda Kursinformation L5b Extern QA-granskning Utvecklingsprocesser Linjära Evolutionära Inkrementella Lättrörliga (agila) - fokus XP och SCRUM Programvara efter release Vidareutveckling Legacy-system

Kursinformation V 18: Mån kl 10 Föreläsning: Utvecklingsprocesser, vidareutveckling Ti kl 23:59: L5a (Testplan + Designdokument) V 19 Omtentavecka V 20: Mån kl 10 Föreläsning: Sammanfattning, utvärdering, om tentamen Mån kl 13:00 L5b (Extern QA-granskning) Tis: kl 23:59 Access till Granskninsgprotokoll för testplan V 21: Fr kl 23:59: Slutleverans projekt V 22: Tis-Ons: Hemtentamen Runt midsommar: Återkoppling och betyg L5b Extern QA-granskning QA = Quality Assurance = Kvalitetssäkring QA-ingenjörer är en egen yrkesroll inom software engineering Utformar arbetsprocesser Säkerställer att processer följs Utbildar medarbetare Kontrollerar att leverabler är av acceptabel kvalitet Kan vara verksamma som expertkonsulter Er uppgift Kvalitetssäkra en annan grupps testplan genom granskning

Vad händer med L5: Granska annan grupps testplan/specifikation PHL tilldelar dokument att granska OBS! NY processorienterad checklista checklista tillgänglig på gdrive. Granskningsprotokoll Test 1.0 klart Meta QA PHL gör extra koll och ger granskad grupp läsrätt L5b Granska annan grupps Testplan/specifikation Projekthandledare förser granskande grupp med: - Testplan 1.0 (pdf) - Ev. kravspec > 1.0 (pdf) Granska efter förmåga deras Testplan 1.0 Meddela projekthandledare om ni är klara före deadline: måndag v. 20 kl 13,00 OBS! NY processorienterad checklista checklista tillgänglig på gdrive.

Acceptanstest i korthet... uppfyller följande kriterier: Levererad programvara uppfyller projektets kravspecifikation Testas med projektets testfall + utforskande testning Kravspecifikationens och testplanens kvalitet är god Kontrolleras med checklistor och projektets granskningar Det är särskilt viktigt att alla kraven adresseras av minst ett testfall Projektmodellen så som den presenterats följs i tillräcklig utsträckning Kontrolleras genom: analys av levererade dokument: plan, krav, test, design, testrapport, granskningsprotokoll och installationsmanual verifiering av ändringshantering konsistens mellan slutversionerna av krav, design, test och applikation Utvecklingsprocesser En historik Programvaruutveckling - Metodik 2016 Jonas Wisbrant 80

1960-talet: The Software Crisis Återkommande problem med programvaruprojekt Förseningar Många fel i levererade produkter Projekt som fick avbrytas Kostnader som skenade Produkter som bara blev större och större Etc. 1960-talet: The Software Crisis The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem. Edsger Dijkstra, Turing Lecture, 1972

Lösning: Styr upp röran! NATO-konferens i Garmish-Partenkirschen 1968 myntade begreppet Software Engineering Ta efter hur utveckling sker i andra ingenjörsdiscipliner Dags att införa ordning och reda God planering och uppföljning Omfattande processer följde... Under 70- och 80-talet gällde uppstyrda processer och subprocesser

Många problemen kvarstod... Det visade sig svårt att planera bort förändringar i kravbilden Kunder ändrar sig Marknaden förändras Ny teknik införs hela tiden Hårdvaran byts ut Programvaruutveckling är innovation - Nya insikter följer hela tiden 1990-talet: Motreaktion mot processerna De kritiska rösterna: Programvara förändras hela tiden går inte att planera bort denna osäkerhet Stryp inte utvecklingen med processer och dokument Utgå istället från ständiga förändringar - Flexibilitet är programvaras styrka

Lättrörliga processer följde Efterfrågas just nu... Framtiden: Utmaningar återstår Öppna forskningsfrågor Hur arbetar 100/500/1000 ingenjörer lättrörligt ihop? Hur arbetar man lättrörligt i globala projekt? Kan man utveckla säker programvara med lättrörliga processer? Hur underhåller man ett system utan dokumentation? Kritiska röster pekar på misslyckade lättrörliga projekt

Processer - Centrala begrepp Programvaruutveckling - Metodik 2016 Jonas Wisbrant 90

Utvecklingsprocesser - begrepp Process: Det arbete som görs för att utveckla programvara Δ Processmodell: En beskrivning av processen Processförbättring: Arbetet med att förbättra processen Diskutera: Hur skiljer sig den vekliga processen från processmodellen? Aktiviteter som ingår i alla processmodeller Specifikationsaktiviteter Utvecklingsaktiviteter Verifieringsaktiviteter Vidareutvecklingsaktiviteter... men - kan komma i olika ordning - ha olika fokus (och budget)

Processer är antingen... Aktivitetsorienterade Förstudie Kravinsamling Design Implementation Testning Resultatorienterade Rapport från förstudie Kravspecifikation Design Källkod Testrapport Ingår i en processmodell (Sub)processer en serie steg med gemensamt mål Aktiviteter Leverabler Villkor startvillkor, slutvillkor Roller

Processmodell - exempel Processmodell - annat exempel

Processmodell - tredje exempel Språk för processmodeller - exempel Little-JIL: Grafiskt programmeringsspråk för att definiera processer (University of Massachusetts, Amherst)

Processmodell - Little-JIL- exempel Varför engagera sig i processer? Kvalitet Stark koppling mellan processkvalitet produktkvalitet - Utvärdera processen kan vara enklare än att utvärdera produkten och mer bestående En obefintlig process - kan leda till en utmärkt produkt - kan bli ett fullständigt misslyckande En bra process - synliggör problem och erbjuder åtgärder Spara pengar En tydlig process minskar förvirring Processer kan återanvändas i andra projekt

CMMI En modell för processmognad Capability Maturity Model Integration - CMMI En modell för processmognad En utvecklingsorganisation kan låta sin process utvärderas Genomlysning kan identifiera brister Används i marknadsföring Kan krävas av kund

Processmodeller En översikt Programvaruutveckling - Metodik 2016 Jonas Wisbrant 103 Vattenfallsmodellen + Strukturerat när kraven är stabila + Varje fas resulterar i dokument + Möjliggör god insyn (t.ex. vid mätningar och certifiering) - Dyrt att gå bakåt i modellen - Svårt att hantera föränderliga krav

V-modellen - vattenfall med återkoppling Processmodell för kursen på hög nivå Faser och leverabler

Linjära modeller: Problem Ofta kan kraven inte frysas Big bang-integration sällan framgångsrik Ökar risk för nice-to-have bland kraven för säkerhets skull Kostnaden för att underhålla dokument är hög - kundnytta? Evolutionär utveckling Utvecklingsprocessen Mål Test Rapport Utvärdering Krav Design Test Behov Rapport Beslut Krav Krav Design Slutgiltig version A B C D E Versioner för feedback Kund / användare

Två urtyper av evolutionär utveckling Kasta-bort prototyping Ta fram prototyp, dra lärdomar, kasta bort Därefter utveckla riktigt system Används vid stora risker med tekniken Börja med svåra tekniska krav Evolutionär prototyping Arbeta hela tiden med riktigt system Används vid stora risker med kraven Börja med kundens viktigaste eller osäkraste krav Spiralmodellen Den tydliga skillnaden är explicit riskhantering i varje varv!

Inkrementell utveckling Fokus på systeminkrement Möjliggör parallell utveckling Ger tidiga leverabler Möjlighet att identifiera krav under utvecklingen Tidiga inkrement kan testas många gånger Krav Impl. Test Impl. Test Release Impl. Test Release Release Timeboxing Kravteam Kravställning Utveckling Implementation Testare Test Slöseri med resurser?

Timeboxing Kravteam Krav 1 Krav 2 Krav 3 Utveckling Impl. 1 Impl. 2 Impl. 3 Testare Test 1 Test 2 Test 3 Release 1 Release 2 Release 3 Timeboxing Specificera längd på en timebox, t.ex. 2 veckor Bryt ned projektet i lika stora arbetspaket 2 veckor Krav Krav 1 Krav 2 Krav 3 Impl. Impl. 1 Impl. 2 Impl. 3 Test Test 1 Test 2 Test 3

Jämför med pipeline-arkitektur i CPU (2001)

Lättrörliga utvecklingsmodeller (agile) Kärnan i agila processer viktigare än Individer och interaktion Fungerande programvara Samverkan med kund Anpassning till förändringar > processer och verktyg > fullständig dokumentation > kontraktsförhandlingar > följande av plan Vad innebär det att vara lättrörlig? Direkt kommunikation - Mindre dokumentation Team styr själva sitt arbete - Mindre toppstyrning Team med blandade kompetenser - Krav, kod, test i samma team (face-to-face) (self-organizing) (cross-functional) Adaptiv planering - Mindre förutspå framtid, mer anpassning till verklighet Evolutionär utveckling - Kontinuerlig förbättring Tidiga releaser med snabb feedback från kund

Extreme Programming (XP) Första agila processmodellen som fick stor spridning Tekniskt fokus snarare än övergripande process Består av 12 praktiker (practices) att följa Planning Game Small Releases Metaphor Simple Design Testing Refactoring Pair Programming Collective Ownership Continuous Integration 40-hour week On-site Customer Coding Standard Karaktäristiska praktiker i XP Planning game All utveckling utgår ifrån en user story som kunden vill uppnå Collective ownership Ingen äger någon specik kod, alla arbetar med allt Refactoring Koden uppdateras kontinuerligt för att förbättras Testing Först skriver man testfallet, sedan koden som uppfyller det Parprogrammering All kod skrivs i par av programmerare Granskas i realtid. Continous integration Kod stoppas kontinuerligt in i huvudsystemet. Ingen big bang. On site customer Kunden ska vara tillgänglig under hela utvecklingen för feedback

XP: Brister och kritik En utvecklingsprocess ska inte detaljstyra hur utvecklarna programmerar - Parprogrammering är en vattendelare! Ofta omöjligt att ha en kund på plats XP är inte lika populärt som för 10 år sedan Tips: XP innehåller bra idéer Se de 12 praktikerna som ett smörgåsbord Ta det ni gillar! Scrum (Wikimedia commons: PierreSelim)

Scrum - huvudprinciper Systemkraven hanteras i en product backlog Utvecklingsarbetet bryts ned i sprintar (1-4 veckor) Varje sprint innebär ett inkrement av systemet Sprintens krav hanteras i sprint backlog Inleds med sprint-planering: vad, vem, hur? Avslutas med sprint-retrospekt: lärdomar, erfarenheter? Daily scrum: Stående morgonmöte på 15 min 1. Vad gjorde du igår? 2. Vad ska du göra idag? 3. Ser du några hinder i ditt arbete? (Wikimedia commons: ftiercel)

Scrum task board Aktivitetsöversikt: Att göra Pågående implementation Pågående testning Färdigt (Wikimedia commons: ftiercel) (Wikimedia commons: PabloStraub)

Scrum: Brister och kommentarer Utveckling är svårt trots att Scrum används 75% of organizations using Scrum will not succeed in getting the benefits that they hope for from it - Ken Schwaber (en av skaparna) Svårt att skapa Scrum-teams Nyckelpersoner kan behöva hoppa mellan team Passar dåligt för distribuerad utveckling Lean software development Filosofin lean produktutveckling utvecklades av Toyota Fokusera på att eliminera slöseri Gör det uppenbart att allt arbete leder till kundnytta genom att ta bort allt annat Vida spridd princip även utanför programvaruutveckling

Lean software development Slöseri (waste): Onödig kod och funktionalitet Otydliga krav Byråkrati Långsam kommunikation Fördröjningar i arbetet (Mary Poppendieck and Tom Poppendieck, 2002) Kanban Betyder ungefär visuellt tecken på japanska Också från Toyota Arbetare på löpande bandet signalerade tydligt resultat och behov Schemaläggning ger stöd åt lean och just-in-time produktion

Kanban för programvaruutveckling Kärnan i Kanban Visualisera arbetsflödet använd Kanban-tavla Begränsa work in progress fokusera på genomströmning (flow) Mät ledtid för aktiviteter sträva efter kontinuerlig förbättring (Crisp.se)

Finns ingen fulländad process! Legacy och vidare utveckling Programvaruutveckling - Metodik 2016 Jonas Wisbrant 136

Nyutveckling vs. vidareutveckling Det mesta utvecklingsarbetet är vidareutveckling av befintliga system Software evolution innebär att anpassa programvaran efter release Underhåll av programvara handlar inte om slitage, istället: - Hantera nya krav - Porta till nya plattformar - Integrera med andra system - Rätta buggar - Optimera - etc. Legacy system A legacy system is an old method, technology, computer system, or application program that continues to be used, typically because it still functions for the users' needs, even though newer technology or more efficient methods of performing a task are now available." Ofta affärskritiska - Annars hade de inte funnits kvar Kan vara gamla (ibland > 30 år) - Ingen har längre förståelse för system/arkitektur/teknik

Lehmans Lagar om software evolution Totalt åtta naturlagar om vidareutveckling av programvara De två viktigaste: Kontinuerliga krav på förändring Så länge ett program används så kommer det att behöva uppdateras för att förbli uppskattat Ökande komplexitet När man kontinuerligt ändrar i ett program blir det mer komplext och svårare att förstå om man inte aktivt motverkar det

Underhåll efter release Kräver Ändringshantering Konfigurationshantering Påverkansanalys Spårbarhet Regressionstest Man skiljer mellan: Felrättande (Corrective) Anpassande (Adaptive) Förbättrande (Perfective) Förebyggande (Preventive) Bug tracker Machine Learning Vilka är viktigast? Hur påverkar rättningen systemet? Vem ska rätta den?

Sammanfattning föreläsning 6 Utvecklingsprocessen är det som görs för att utveckla programvara Processmodellen är en beskrivning av processen Några exempel på processmodeller: vattenfall prototyputveckling spiralmodellen timeboxing lättrörlig utveckling (agile) Agila buzz words XP, scrum, lean, kanban Legacy system är gamla system som levt kvar länge, i många fall längre än vad man förväntade sig från börja Underhåll av programvara är antingen: felrättande anpassande förbättrande förebyggande Underhåll underlättas av tydlig ändringshanteringsprocess, spårbarhet, konfigurationshantering och regressionstestning