Innehåll Inledning Vad är en utvecklingsmodell? RUP Agila manifestet extreme Programming Lean software development RUP! Implementing Lean Software Development Agilt: Roligare, Snabbare, Högre kvalitet! Problem i utvecklingsprojekt Missade tids- och kostnadsramar Ständig tidsnöd Långa oförutsägbara releasescheman Kvalitetssäkring fungerar dåligt Svårt tidsuppskatta Känsla av tröghet och ineffektivitet Oengagerad personal! inte roligt på jobbet osv 2012 Nordea 5,3 miljarder 2013 SEB 750 miljoner 2014 Polisen 275 miljoner
Innehåll Inledning Vad är en utvecklingsmodell? RUP Agila manifestet extreme Programming Lean software development Utvecklingsmodeller Vad är en modell? När behövs de? Vad är en utvecklingsmodell? Vad ska vi ha den till? Utvecklingsmodeller Hjälper dig göra rätt sak på rätt sätt! Utvecklingsmodeller sätter ramen, luckor att fylla och principer som hjälper dig välja. Principer: bakomliggande sanningar som inte ändras över tid Arbetssätt (practices): sätt att jobba som ändras när man märker att de inte funkar eller när man upptäcker något bättre.
En traditionell modell som man enkelt kan komma fram till. Utvecklingsmodell Tid DESIGN IMPLEMENTATION DRIFTSÄTTNING Utvecklingsmodell VISION Iterativ vs inkrementell Utvecklingsmodeller sätter ramen, luckor att fylla och principer som hjälper dig välja. Vissa UM är helt färdiga, andra kan anpassas. Ett projekt/produkt har en vision och effektmål. Vision och effektmål hjälper dig prioritera och välja bort krav. Krav leder till Design som implementeras i kod. Kod kompileras till en eller flera binärartefakter. När artefakten uppfyller vision och effektmål är du klar. Blir du klar? Allt arbete som inte leder till att uppfylla vision och effektmål är potentiellt slöseri. SYSTEM Utvecklingsmodell Utvecklingsmodeller sätter ramen, luckor att fylla och principer som hjälper dig välja. Vissa UM är helt färdiga, andra kan anpassas. Ett projekt/produkt har en vision och effektmål. Vision och effektmål hjälper dig prioritera och välja bort krav. Krav leder till Design som implementeras i kod. Kod kompileras till en eller flera binärartefakter. När artefakten uppfyller vision och effektmål är du klar. Blir du klar? Allt arbete som inte leder till att uppfylla vision och effektmål är potentiellt slöseri.
RUP Rational Unified Process 1996: Ivar Jacobson, Grady Booch, Jim Rumbaugh, Philip Kruchten. UML Inception: Vet vi vad vi ska bygga? Elaboration: Vet vi hur vi ska bygga? Construction: Har vi byggt det? Transition: Kan det vi byggt användas? RUP Rational Unified Process Relatera till föreläsningar: Nåt som saknas? Teamwork! (Grupprocesser och Värderingar) Engineering disciplines Business modeling Svarar på frågan: Hur tjänar vi pengar på detta? Alternativt: Hur sparar vi pengar på detta? Vem är kunden? Vem är användaren? Vilket problem löser vi för dem? Vad gör vår lösning unik? (Core Domain) Hur når vi våra kunder? (Hur marknadsför vi produkten?) Vad är det minimala vi kan sjösätta för att börja tjäna pengar? Etc Supporting disciplines Rational Unified Process Inception Vet vi vad vi ska bygga? Elaboration Vet vi hur vi ska bygga? Construction Har vi byggt det? Transition Kan det vi byggt användas?
Rational Unified Process Engineering disciplines Business modeling Svarar på frågan: Hur tjänar vi pengar på detta? Alternativt: Hur sparar vi pengar på detta? Vem är kunden? Vem är användaren? Vilket problem löser vi för dem? Vad gör vår lösning unik? (Core Domain) Hur når vi våra kunder? (Hur marknadsför vi produkten?) Vad är det minimala vi kan sjösätta för att börja tjäna pengar? Kravhantering - Vad ska vi utveckla? Design Hur ska vi utveckla detta på bästa långsiktigt billigast sätt? Architectural Patterns, Design Patterns Designprinciper: Coupling, Cohesion, Ramverk: JEE,.Net, JSE, Angular etc. Implementation Hur formulerar vi lösningen i kod på bästa långsiktigt billigast sätt? Designprinciper, ramverk, bibliotek. TDD Test/QA Löser vi rätt problem, dvs motsvarar vi kraven? Funktionstestning, prestanda, interoperabilitet, resursanvändning, etc Deployment Hur får vi koden ut i produktion? Rational Unified Process Supporting disciplines Configuration and Change Management Hur hanterar vi förändrade krav, design, kod, dokumentation, tester etc. Versionshantering, ärendehanteringssystem, etc. Project management Hur hanterar vi risk, framförallt på tid mot budget? Hur får vi ut maximalt av varje person? Etc... Environment Hur optimerar vi processen för det problem vi ska lösa? Vilka verktyg ska vi använda? Hårdvara såväl som mjukvara Rational Unified Process Mastodonten RUP 4 faser 9 discipliner 100+ artefakter ~30 roller RUP är ett ramverk som ska instansieras till en process som passar aktuellt projekt!
RUP:s Nyckelprinciper för affärsdriven utveckling 1.Anpassa processen 2.Balansera intressenters prioriteringar 3.Samarbeta mellan team 4.Demonstrera kundvärde iterativt 5.Höj abstraktionsnivån 6.Fokusera kontinuerligt på kvalité Innehåll Inledning Vad är en utvecklingsmodell? RUP Agila manifestet extreme Programming Lean software development VISION SYSTEM Agile Adjective S: (adj) agile, nimble, quick, spry (moving quickly and lightly) "sleek and agile as a gymnast"; "as nimble as a deer"; "nimble fingers"; "quick of foot"; "the old dog was so spry it was halfway up the stairs before we could stop it" S: (adj) agile, nimble (mentally quick) "an agile mind"; "nimble wits"
Inga arbetssätt http://agilemanifesto.org/iso/sv/principles.html Iterativ vs inkrementell: Jämför med inkrementella synsättet för RUP
RUP vs Agila utvecklingsmodeller? Winston Walker Royce - paper from which Waterfall model was mistakenly drawn. Historik Waterfall model - 1970 Scrum - 1995 RUP - 1996 extreme Programming - 1996 Agile manifesto - 2001 Lean Software Development 2003 Agila arbetssätt Test Driven Development (TDD) Parprogrammering Continuous Integration (CI) Acceptance TDD (ATDD) / Behaviour Driven Development (BDD) Automatiserade testfall Dagliga möten Retrospective med demo Estimering med story points Kanban etc Måste man använda dessa för att vara agil? Reflektera över vilka av dessa som kommer från XP?
Innehåll Inledning Vad är en utvecklingsmodell? RUP Agila manifestet extreme Programming Lean software development VISION SYSTEM Extreme Programming (XP) Kent Beck och Ward Cunningham ca 1996 Chrysler XP-boken ute 2000 - Beck Find the essential element of creating good software, do them all the time, and discard everything else Extreme Programming (XP) Principer (Values) Feedback Communication Simplicity Courage Kent Beck och Ward Cunningham ca 1996 XP-boken ute 2000 - Beck Feedback - ofta! Ju mindre tid mellan action och feedback desto effektivare inlärning och desto mer får vi ut av en ändring Simplicity - Välj så enkel implementation som möjligt, dvs ta inte onödig höjd inför framtiden - ger bara accidental complexity.
http://www.extremeprogramming.org/map/project.html Test-first upphov till TDD (Kent Beck) Shuhari "It is known that, when we learn or train in something, we pass through the stages of shu, ha, and ri. These stages are explained as follows.in shu, we repeat the forms and discipline ourselves so that our bodies absorb the forms that our forebears created. We remain faithful to these forms with no deviation. Next, in the stage of ha, once we have disciplined ourselves to acquire the forms and movements, we make innovations. In this process the forms may be broken and discarded. Finally, in ri, we completely depart from the forms, open the door to creative technique, and arrive in a place where we act in accordance with what our heart/mind desires, unhindered while not overstepping laws. Aikido master Endō Seishirō shihan
Innehåll Inledning Vad är en utvecklingsmodell? RUP Agila manifestet extreme Programming Lean software development VISION K SYSTEM Lean - bakgrund Toyoda - sent 1800-tal automatiserad vävning 5 whys, kaizen, 1st Toyota 1936 Toyota Production System 1945 JIT, Stop the line, etc Lean Production 1990 Lean Product Development 1990-tal Lean Software development - 2003 av Mary och Tom Poppendieck Principer i Lean Software Development Minimera slöseri (Eliminate Waste) Bygg in kvalitet (Build quality in) Skapa Kunskap (Create knowledge) Ta beslut så sent som möjligt (Defer commitment) Leverera snabbt (Deliver fast) Respektera människor (Respect people) Optimera helheten (Optimize the whole)
Minimera slöseri Allt som kunden inte uppfattar som värde, är slöseri, t.ex. Onödig funktionalitet (80/20-regeln) Fördröjningar (req churn, test and fix cycles, etc) Defekter Överlämningar Task switching Wikipedia: Pareto principle: for many events, roughly 80% of the effects come from 20% of the causes. Economist Vilfredo Pareto showed that approximately 80% of the land in Italy was owned by 20% of the population; Pareto developed the principle by observing that 20% of the peapods in his garden contained 80% of the peas. Microsoft noted that by fixing the top 20% of the most-reported bugs, 80% of the related errors and crashes in a given system would be eliminated.[12] In load testing, it is common practice to estimate that 80% of the traffic occurs during 20% of the time.[citation needed] In software engineering, Lowell Arthur expressed a corollary principle: "20 percent of the code has 80 percent of the errors. Find them, fix them!"[13] Exempel minimera slöseri Tid till leverans vid tre samtidiga projekt
Bygg in kvalitet Exempel (TDD, anti: Legacy code, bugs find fast: fix now!) En bugg som upptäcks i testfasen tyder på fel i utvecklingsprocessen Att testa för att hitta buggar är slöseri Att testa för att undvika buggar är ett måste Kod som är svår att underhålla är av låg kvalité! förbättra utvecklingsprocessen Kod som är svår att testa är för komplex! förbättra utvecklingsprocessen Skapa kunskap Skapa en miljö som främjar lärande av varandra. Förbättra kontinuerligt processen Experimentera! Snabbas upp av korta cykler snabbare feedback Exempel: Pairing Ta sena beslut Bättre beslut tas baserade på fakta och inte spekulationer. Ju senare beslut tas, desto mer kunskap, desto bättre grund för beslutet Planer är till för att lära sig om problemet. Sedan är det till för att ändras. (Jmf krav).
Leverera snabbt (ofta) Snabbhet är frånvaro av slöseri Snabbare feedback från kund gör vi rätt. Gör rätt sak på rätt sätt Köteori fokusering på utilization(beläggning?) skapar trafikstopp som minskar utilization Hitta rätt fart och håll den. Begränsa listor och köer till kapacitet Exempel: Det går inte att leverera ofta utan att hålla hög kvalité. Respektera människor Fabriken i Kalifornien Basera relationer på tillit och inte bevakning De som är bäst lämpade att förbättra processen är de som jobbar med den. Ge team mandat att förbättra sig tillit. Optimera helheten Ständig optimering är ett måste Att traditionellt optimera delar leder till suboptimering. För verklig optimering måste hänsyn till hela värdeflödet tas. Se till produkten, inte bara mjukvaran. Exempel: Features köas pga manuell deploy
Viktigast Ständig förbättring! Vetenskaplig metod för experiment Föreslå en hypotes Föreslå ett test som bekräftar/motsäger hypotesen Utför testet Validera/Invalidera hypotesen Lean Practices Value stream mapping User stories vs Use Cases Test Driven Development (TDD) Acceptance TDD (ATDD) Behaviour Driven Development (BDD) Continuous Integration (CI) Pair Programming och Code Review mfl Boktips Implementing Lean Software Development går igenom LSD principer och practices utifrån författarnas erfarenheter inklusive massor av lärande exempel från olika företag (även svenska). Finns även Leading Software Development (nyare) och Lean Software Development An Agile Toolkit (Äldre).
Sammanfattning Vad är en utvecklingsmodell? RUP Agila manifestet extreme Programming Lean software development VISION SYSTEM Vi kommer basera gruppdiskussioner på filmen! Till nästa föreläsning Agile Product Ownership in a nutshell 16 min. http://blog.crisp.se/2012/10/25/ henrikkniberg/agile-product-ownership-in-anutshell