Ud af krisen Software på tværs, 15. juni 2009
Om Ative Agile udvikling og rådgivning
Klassisk udviklingsmodel Krav Design Ændrer sig Implementering Tager for lang tid Springes over Mareridt Test Deployment Vedligeholdelse
Almindelige løsningsforsøg Prøv med Prince2, Project Server, Gør foranalysen større Planen holder ikke Kravene ændrer sig Udviklingen tager for lang tid Mere overhead Længere lead time Der er for mange fejl Change Control Board! Test og deployment er dyrt Gør det sjældnere Brug SOA (den nye XXX) Ansæt flere testere
Krisen Software er for dyrt Tager for lang tid Men det har forretningsværdi... Hurtigere, billigere gevinster hvordan?
Kvalitet Spec Dev Test Deploy Prod Kvalitet Ukendt
Software på tværs Ønskede resultater Spec Dev Test Deploy Prod Ubenyttede features Dårlige ideer Kompleksitet. Ukorrekte specs Misforståelser Fejl/defects Teknisk gæld Kompleksitet Ekstra processer Uønskede resultater Spild Ufærdigt arbejde Ekstra processer Overflødige features Task switching Ventetid Bevægelse Fejl Tabt/ubrugt viden
Demings 14 punkter Bæredygtig udbud af spændende jobs gennem høj konkurrenceevne. Baseret på respekt for mennesker, drevet af deres indre motivation og lysten til at gøre et godt stykke arbejde Bruger dette til konstant at øge kvaliteten ved at erne forhindringer for at gøre det godt. Fokuserer altid på systemet, ikke individerne. Eksperimenterer konstant og bruger den positive resultater til at forbedre sig. Fjerner frygt så folk kan eksperimentere frit og objektivt. Fokus på aktiv læring som del af det daglige arbejde. Succesen er teamets og alle bidrager.
Eliminer spild Ufærdigt arbejde Ekstra processer Ekstra features Skift mellem mange opgaver Ventetid Bevægelse Fejl Tabt viden Læs mere, Lean Principle Number 1: Eliminate Waste (http://community.ative.dk/blogs/ative/ archive/2007/01/18/lean-principle-number-1-_2d00_-eliminate-waste.aspx)
Myte: Bedre specifikationer reducerer spild Features der bruges 20% altid/ofte 64% sjældent/aldrig Always; 7% Often; 13% Producer færre krav Etabler hurtigere feedback Never used; 45% Rarely used; 19% Sometimes; 16% (Kilde: Standish Group studie, Jim Johnson, XP2002) Mål selv!
Årsager til tilbageløb 51% af fejl er kravrelaterede Andet; 9% Reducer misforståelser Gør ændringer billigere Gør udvidelser billigere Skab hurtigere læring Ændrede krav; 24% Manglende krav; 29% Misforståelser; 38% Kilde: Analyzing Requirements Bugs (2000), Vinter O., S. Lauesen - Bug Report Department in Software Testing & Quality Engineering Magazine, Vol. 2-6, Nov/Dec 2000 Mål selv!
Årsagerne til krisen: overproduktion Overproduktion af krav Alt på en gang Helgardering Dyrt at ændre Langsomt at ændre Mangler viden / feedback Sjældne releases Dårlig kvalitet
Årsagerne til krisen: kravrelaterede fejl Kravrelaterede fejl Misforståelser Manglende krav Ændringer Handovers / mgl samarbejde Mangler viden / feedback Sjældne releases Dårlig kvalitet
Vejen ud af krisen Bedre software hurtigere Lav kun det værdifulde Prioritering af features Hyppige releases Hurtig feedback og læring Gør release billigt Konstant, høj kvalitet
Kvalitet? Ønskede resultater Spec Dev Test Deploy Prod Ubenyttede features Dårlige ideer Kompleksitet. Ukorrekte specs Misforståelser Fejl/defects Teknisk gæld Kompleksitet Ekstra processer Uønskede resultater Spild Ufærdigt arbejde Ekstra processer Overflødige features Task switching Ventetid Bevægelse Fejl Tabt/ubrugt viden
Feedback og læring mdr. uger Roadmap Iteration dage timer min. sek. Daily Scrum Continuous Integration TDD Pairing
Feedback i processen Daily Scrum ScrumMaster Running Tested Features Sprint Planning Product Backlog Sprint Backlog Product owner Sprint 2-4 w Team Demo and Retrospective
Feedback under udviklingen Udviklere Feedback loop Commit changes Source Control System Rapport for byg og test Continuous Integration Server Get latest sources Compile code, DB etc. Kør test Inspektion og rapporter Deploy Dan leverancen Gode byg
Det kan ikke lade sig gøre! Vi kan ikke lave en feature på så kort tid! Bliv bedre til nedbrydning Vi kan ikke nå at integrere så hurtigt! Automatiser versionsstyring, byg og deployment Vi kan ikke nå at teste så hurtigt! Kombiner test og kravspec Lær at bygge automatisk test Når der kommer nye krav skal vi rette overalt! Lær testbar arkitektur, robuste tests Vi kan ikke nå at gå i produktion så ofte! Gør processen billigere automatisering mv. Det giver alt for mange fejl! Lær at lave bedre kvalitet Vores system er alt for kompliceret til den slags Så gør det simplere
Likviditet (risiko) Prisen for sløve leverancer Tid 12 md 20 md Udviklingsomkostninger Indtjening
Likviditet (risiko) Gevinsten ved hyppige leverancer 4 md 8 md 12 md 16 md Tid
Eksempel på trinvis levering IPhone (2007) IPhone 3G (2008) IPhone 3GS (2009) Mangler 3G, MMS, GPS, inkomplet Bluetooth og SMS-funktionalitet Nu med 3G og GPS ca. 6 mio (2007-2008) 15 mio+ (2008-nu) Nu med MMS og bedre Bluetooth Forventet 45 mio i 2009
Vejen ud af krisen Bedre software hurtigere Lav kun det værdifulde Prioritering af features Hyppige releases Hurtig feedback og læring Gør release billigt Konstant, høj kvalitet
Grundlaget er kvalitet Løft kvaliteten Ret fejl med det samme Reducer tilbageløb Reducer teknisk gæld Reducer spild for udvikling, test og deployment Lær testbar arkitektur Lær iterativt design Automatiser byg, test og deployment Lever hyppigere og mindre Reducer kravmængden Prioriter krav Lær at nedbryde bedre Etabler hurtigere feedback-løkker
Software på tværs Hurtigere læring Brugerfeedback Evidensbaseret planlægning Nedbrydning Prioritering Tværfaglige teams Retrospectives / 5x hvorfor? Data Idé Produkt Hurtigere udvikling Pairing, TDD, CI Flow: helt færdig Nedbrydning af krav Nedbrydning af siloer Iterativ arkitektur Byg kvalitet ind Testbart design Testautomatisering Robust testdesign Buildscripting Deploymentscripting Hurtigere måling Løbende test (CI) Hyppige leverancer Brugsstatistik Fremdrift Økonomi
Læs mere Ud af krisen Få mere ud af dit IT-budget med Demings 14 punkter UD af krisen Få mere ud af dit IT-budget med Demings 14 punkter Gratis ebook på: http://www.ative.dk/om-ative/downloads.aspx
Kontakt Martin Jul mj@ative.dk +45 2163 3472 Jan Elbæk je@ative.dk +45 2966 2174 www.ative.dk blog.ative.dk
Ekstra materiale
Feedback under udviklingen Udviklere Feedback loop Commit changes Source Control System Rapport for byg og test Continuous Integration Server Get latest sources Compile code, DB etc. Kør test Inspektion og rapporter Deploy Dan leverancen Gode byg
Forretningsmæssige fordele ved CI Mindre manuelt arbejde og cycle time build, deployment, review, test,... Grundlag for at etablere flow. Reducer tilbageløb Bestandig regressionstest Afvis fejl hurtigt Grundlag for indbygget kvalitet. Reducer risiko Kendt kvalitet Ingen løse ender
Teknisk grundlag for CI 1 Alt i source control (kode, DB, config mv.) 2 Automatiseret byg 3 Automatiseret deployment/installation 4 Automatisk test Alle skridt er værdifulde i sig selv
Vejen til automatisk test Hænger det sammen? Automatisk smoke-test Virker byggeklodserne? Automatisk unit-test Hurtigere læring om softwarekvalitet Opfylder programmet forretningens krav? Automatisk accept-test systemtest systemintegrationstest unitintegrationstest Automatisk test: Hurtig feedback på kvalitetssabotage