F6 Arkitektur, Planering. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH

Relevanta dokument
F6 Arkitektur, Planering

XP-projekt: En fördjupning

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

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

Agil projektmetodik Varför och vad är det?

Agil programutveckling

12 principer of agile practice (rörlig)

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

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

F4 Testning och Parprogrammering i XP. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson,Datavetenskap, LTH

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

F4 Testning och Parprogrammering i XP EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson,Datavetenskap, LTH

Proj-Iteration 5B. Plan för återstående iterationer

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

Kritik av Extrem Programmering

Proj-Iteration1. Arkitektur alt. 1

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

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

Planeringsspelets mysterier, del 1

F2 XP Extremprogrammering översikt

Användarcentrerad systemdesign

Linköpings universitet 1

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

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions

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

Proj-Iteration 3. Grov plan för releaser

Användarcentrerad systemdesign

QC i en organisation SAST

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

Agile-metoder, XP och ACSD

Cult of Code Quality

Note to programmers. Embrace Change! Extreme Programming? Fyra basaktiviteter. 12 Practices / sedvanor. Vad är Extreme Programming

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

Planering. Planning. Hur planerar vi? Hur planerar vi? XP Bill of Rights. XP Bill of Rights

Scrum + XP samt konsekvensanalys

2203$ ) UHOlVQLQJ. Varför fungerar XP Några motiveringar till varje regel efter Beck. Innehåll. Planeringsspelet

Arkitektur. Den Röda Tråden

Nyttomaximering av spikes

Praktikum i programvaruproduktion

Översikt. Fö: Projekt: Interaktivt system. Projekt. Mål. Coachning. Praktiker att använda

Designmönster - EMW. Kent Petersson epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL:

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

Proj-Iteration 2. Grov plan för releaser

Förändringskontroll i XP-team. Love Johansson (d00lj), Joakim Persson (d00jp)

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

TDDD26 Individuell projektrapport

SCRUM vs. XP en jämförelse mellan två lättviktsmetodiker

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

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

Testplanering, test-first, testverktyg

Användbarhet i sitt sammanhang

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

Design. Vad lärde jag mig förra lekfonen? Hur bidrog jag Fll lärandet? Kravhantering sammanfa0ning 13/04/14

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

Modern utvecklingsmetodik. Användarcentrering i företag. Användarcentrering i företag. Användarcentrering i företag. Användarcentrering i företag

Preliminär specifikation av projekt

XP vs. Tillverkningsindustrin

D J U P S T U D I E I E D A S I M P L E C O D E A N D D E S I G N

Principer för interaktionsdesign

Samarbetsstrukturer för att självorganisera inom givna ramar.

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

Informationshantering vid systemutveckling styrd av CM

Djupstudie Collective Documentation Ownerhip - Wiki. Jakob Nilsson-Ehle

Effekter av införande av agila metoder. Daniel Sundmark Mälardalens högskola

En studie om parprogrammering i praktiken

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

SCRUM och agil utveckling

Projektuppgift.

TDP023 Projekt: Agil systemutveckling

Coaching av programvaruteam EDA270, djupstudie: Praktisk SCM användning i XP-projekt

Testdriven utveckling. Teorin bakom testdriven utveckling. Bakgrund. Januari 2009, KTH. Alexander Tarnowski

Föreläsning 4, Användbarhet, prototyper

Agil Projektledning. En introduktion

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

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

Agil Projektledning. En introduktion

Verktyget FindBugs. Djupstudie i kursen EDA 270 Coachning av programvaruteam. Christofer Bach dt05cb6 Daniel Nilsson dt05dn4. Lunds Tekniska Högskola

SCRUM. på fem minuter

BESKRIVNING AV PROCESSMETODEN SCRUM

CREATING VALUE BY SHARING KNOWLEDGE

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

SCRUM. Marcus Bendtsen Institutionen för datavetenskap

SCRUM och mycket mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Scrums användning i Extreme Programming projekt. Lunds Tekniska Högskola D07 Lars-Olof Rydgren EDA

Continuous Integration med Jenkins. Linus Tolke Enea Experts

Objektorienterad Programkonstruktion. Föreläsning jan 2017

Nina Pikulik, Tyréns Konfigurationssystem för en teknisk plattform. Konfigurationsprocess istället för traditionell projektering

Grundkurs i programmering - intro

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

I detta avsnitt beskrivs vart parprogrammering appliceras, hur det ska fungera och även i vilket projekt det introduceras i.

Kanban i Extreme Programming

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

Alla rättigheter till materialet reserverade Easec

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Att införa XP. Daniel Nilsson och Mattias Nordahl Lunds Tekniska Högskola. 27 februari Abstrakt

TDP023 Projekt: Agil systemutveckling

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

Pressinformation Nyheter i korthet Edgecam 2013R2

Inspel till dagens diskussioner

Transkript:

F6 Arkitektur, Planering EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH 1

XP:s Deltekniker (Practices) 1. Planering Planeringsspelet Regelbundna releaser Hållbart tempo Kund i teamet 2. Utveckling Test-driven utveckling (TDD) Parprogrammering Kollektivt ägande Kontinuerlig integration 3. Kodning och Design Enkel design Refaktorisering Kodningsstandard Gemensam vokabulär Arkitektur 4. Dessutom Gemensamt utvecklingsrum Nollte iterationen Spikes 2

A) Mjukvaruarkitektur? Enkel Design och Refaktorisering - handlar i första hand om design-in-thesmall och god kodkvalitet. Hur hanteras den överordnade designen i XP? 3

Vad är mjukvaruarkitektur? Den övergripande designen Oftast används flera separata vyer Jämför med byggnader och ritningar: - bärande delar - vatten o avlopp - el - ventilation - personflöde (t ex för en flygplats) 4

Kruchten s 4+1 Views The logical view - Vilka viktiga klasser och objekt finns i systemet? (översiktliga UMLklassdiagram) The process view - Vilka viktiga parallella processer finns i systemet? The physical view - Hur är mjukvaran distribuerad på hårdvaran? (Kanske olika subsystem körs på olika maskiner) The development view - Hur är mjukvaran modulariserad? Vilka viktiga subsystem finns (som typiskt kan utvecklas av olika team)? The 5th view scenarios - Några få viktiga scenarion som illustrerar de övriga vyerna 5

Kruchten s 4+1 Views Logical View (klasser, objekt) Development View (moduler, team) Scenarios (use cases) Process View (processer och trådar) Physical View (hårdvara och distribution) 6

Hur stödjs arkitektur i XP? Traditionell syn - arkitekturen har global inverkan på systemet och är svår att ändra därför, planera och designa arkitekturen först XP s syn - embrace change - bygg efterhand 7

XP s stöd för arkitektur Spikes - quick throw-away explorations into potential solutions System Metaphor - a story of what the system is like First Iteration - pick stories that result in an end-to-end (skeleton) system Small releases - weak areas show up quickly and can be corrected Refactoring - the architecture can be changed and evolved Team Practices - No out-of-date document team communicates informally 8

Spike (experimentell prototyplösning) Om vi inte vet hur ett problem kan lösas gör ett experiment - snabb prototyplösning - målet är att se om en viss väg är framkomlig En spike ger inte produktionskod - experimentell kod testfall etc., behövs ej - koden kastas (eller sparas som inspirationskälla vid den riktiga programmeringen) Spikes hjälper oss att göra arkitekturella designval 9

First Iteration Normaltillstånd är ett system i drift som vidareutvecklas ( underhåll ) - XP:s metodik - kom dit så fort som möjligt! Första iterationen är speciell - Vi skall gå från ingenting till normaltillståndet. - Vi behöver få en initial arkitektur på plats att börja fylla med funktionalitet. Mål med första iterationen - Första releasen gör ingenting (användbart), men på ett sådant sätt att hela den initiala arkitekturen är på plats. Zero Feature Release - Se till att få verktyg, systemkonfigurationer och användning av extern programvara på plats. - Målet är att åstadkomma ett minimalt system som kan installeras köras och levereras, men med minimal funktionalitet. 10

Exempel Utveckling av ett interaktivt kalkylbladsprogram Första iterationen skulle kunna innehålla - Ett tomt fönster med titeln Kalkylblad - Ett menyval där man kan göra ingenting - Ett internt tomt modell-objekt - Lagring av det tomma modell-objektet i en databas. Då har vi - något som vi kan skicka och Kunden kan installera och provköra - kontroll på verktyg vi behöver använda: testverktyg, kompilator, makefiles, etc. - kontroll på extern programvara vi har tänkt använda (fönstersystem, databaspaket,...) - ett skelett-program som vi kan börja lägga in riktig funktionalitet i. - en initial arkitektur: lagerindelning med databas, modell, view Vi kan börja arbeta! 11

Systemmetafor En beskrivning av vad systemets implementation liknar. Varför? - Ger en gemensam syn på systemet inom teamet - Kan fungera som källa till namn på viktiga klasser i systemet - Kan fungera som stöd för arkitekturbeskrivning genom att identifiera nyckelobjekt och deras relationer - Kan möjliggöra att även en icke-teknisk kund kan förstå implementationsstrukturen i stora drag 12

Exempel på Metaforer Den naiva metaforen - T.ex. Customer och Account för en bank-tillämpning. Ingen riktig metafor. Objekten representerar helt enkelt sig själva. Desktop-metaforen - För grafiska användargränssnitt (Desktop, Files, Folders,...) Assembly Line - Med löpande band, delar, stationer... [Chrysler C3 payroll system] Pipes and Filters - som i Unix, för att köra data genom en kombination av program Layers - Program uppdelat i lager, t.ex. tillämpning, högnivåprotokoll, lågnivåprotokoll, eller Model-View,... 13

Traditionellt XP Dokumentation av arkitekturen - arkitekturen fixeras innan programmering - dokumentera arkitekturen noga i början av projektet - se till att snabbt få konkret feedback på idéerna om arkitektur (genom zero-feature release) - låt arkitekturen utvecklas och omstruktureras efter hand - dokumentera så att man hittar ( tunnelbanekarta ) - arkitekturen kan dokumenteras när den har stabiliserats (om kunden önskar sådan dokumentation, planerat som vanlig story) 14

B) Planering? Vad är en plan? Varför planerar man? - För att övertyga sig om man inte missat något - För att få en uppfattning hur mycket tid/resurser som behövs - För att underlätta att dela upp en uppgift på parallella aktiviteter 15

Hur noga planerar man? Exempel - du skall köra bil till Alperna 1. Kör söderut efter en karta, navigera efterhand, pausa vid behov. 2. Gör upp en exakt rutt, gör en plan med varje motorvägskorsning du skall svänga i etc, varje stopp, tankning, övernattning, tider. 3. Planera i förväg varje moment i körningen, filval, placering, växlingar, hastighet, inbromsningar... Lagom är bäst, det kan bli för mycket. 1:a alternativet, plus lite mer detaljer för närmsta sträckan/tiden. Kombinerar rimlig arbetsinsats med flexibilitet (trafikstockningar, olyckor, vägarbeten...) 16

Andra exempel Hur planerar en taxichaufför sin dag? - en tur (iteration) i taget - beror på kundernas krav! Hur planerar en tågluffare sin färd? - inte alls kanske 17

Vad är värdet av att planera? Snarare att man tänkt igenom än själva planen Planen behöver ändras ofta - Ju mindre detaljer den innehåller desto mindre planeringsarbete går förlorat vid ändringar. Detaljer bara för nära aktiviteter, grov på långt håll - Något att jämföra med - larmklocka vid problem 18

Planering av programvaruprojekt Med lång tidshorisont - Releaseplaner (kund) Med kort tidshorisont - Iterationer (utvecklare) För att kunna leverera i delar - Stories (kund) För det dela upp arbetet - Tasks (utveckl.) För att driva arbetet - Testfall (par) 19

Planering - ökande detaljer 20

Vad följer man upp tidsmässigt? Jag är klar till 50%, 90% - ofta meningslöst! - En stor uppgift blir aldrig mer än 90% klar! Bättre att dela upp i mindre delar och bara registrera sådana som är helt klara. För oss innebär det Tasks - Uppskattar tid i förväg - Registrera hur lång tid det tog - Räknar ut hur fort vi kör 21

Osäkerhetsrelation för programvarutveckling Av de fyra storheterna: - Bemanning, antal utvecklare - Tidåtgång, kalendertid - Funktion hos systemet - Kvalitet på funktionaliteten Man kan inte bestämma alla på en gång! I XP väljer vi att hålla fast Kvalitet, Tid och Bemanning och låter Funktion variera ( Det kom inte med ) Många andra metoder låter Tid variera ( Systemet ej klart i tid ). 22

Release-plan När ett OS (VM etc) startar måste datorsystemen vara användbara. - Deadline! Det är kunden och deras prioriteringar som bestämmer vilken funktion som skall vara med. R1 R2 R3 R4 R5 Utv1 Utv2 Test Utb VM 23

Iterationer Vi delar upp vägen till nästa (första) release i ett antal steg, iterationer. Precis som releaser bestäms iterationer av tidpunkter, t ex 2-3 veckor, snarare än innehåll. (I projektet kommer iterationerna vara en vecka) R1 R2 R2R2R2 I1 I2 I3 24

Iterationsplan Planning game Vi detaljplanerar bara första (nästa) iteration. - Kunden presenterar stories och svarar på frågor - Utvecklarna delar upp varje story i tasks (deluppgifter) - För varje deluppgift uppskattar utvecklarna hur mycket tid den tar och tar samtidigt på sig att göra den deluppgiften. - Om det blir för mycket/för lite för att fylla iterationen bestämmer kunden vad som skall bort/läggas till. Vi har bestämt vad som skall med i iterationen. Varje utvecklare vet vad han/hon skall göra under iterationen Sen kanske man måste ändra men det gör man med planer. 25

Release-Iteration-Story-Task R1 R2 R2R2R2 I1 I2 I3 S1 S2 S3 S4 S5 T1 T2 T3 7 2 5 4 2 Summa = 16 26

Tidsuppskattning Att tidsuppskatta implementationsarbete är svårt. En del arbetar med ideal tid. Andra gör relativa bedömning av deras svårighet (enhet, poäng gummibjörnar, hallonbåtar) och mäter i efterhand hur många enheter man hinner på given tid. 1. Sätt ett värde på varje task 2. Task 39 verkar vara dubbelt så svår som Task 16 då får den dubbelt så många hallonbåtar 3. Dela upp stora tasks i mindre, små tasks är lättare att skatta. Känns det alltför osäkert vad en task innebär gör man en Spike Ofta bra om alla tasks från en story hanteras av en utvecklare. Om man använder ideal tid är faktorn till riktig tid ofta 3, optimistfaktor. 27

Planering 1:a gången Svårt första gången - när man inte vet hur mycket man hinner - med uppföljning lär man sig efterhand. I början hjälper det med coachens erfarenhet. Gången som på Extreme hour: - Kunden definerar stories, och föreslår de som skall vara med i första release - Utvecklarna uppskattar deras svårighet (skala 1-10) - Utvecklarna uppskattar hur mycket de hinner med (30) - Kunden väljer stories för första release Deadline drivet snarare än funktionsdrivet. 28

Tracking Uppföljning av Iteration Bara hela stories räknas - om en task saknas är storyn av inget värde för kunden. - Viktigt att identifiera tasks som hängt upp sig. - Fördröjer sin Story och mindre kommer med Tracker följer upp hur långt alla task kommit jämfört med uppskattning. Om någon task blir försenad ta upp det med hela gruppen. - Det är inte den som sitter med Svartepetters fel - Han/hon bara gjorde en optimistisk uppskattning och ingen reagerade - Omplanera - vad skall ut? 29

Uppföljning av hastighet Efter varje iteration - för varje task färdig - summera enheter färdiga. - Ger första mått på hastighet (antal enheter / utvecklare / tid). - Nästa iteration har vi ett bättre mått på hur många enheter vi kan klara ( yesterday s weather ) - Om ni uppskattar i ideal tid kan man räkna ut optimistfaktorn Efter några iterationer lär det stabilisera sig. 30

Uppföljning av release Målet är att få med de viktigaste stories (ur kundens synpunkt) i varje release. Bokför hur många stories som kommer med i varje release. När man känner hastigheten kan man uppskatta hur många stories som kan komma med i varje release. Och kunden kan prioritera. 31

Vad göra om det blir problem? Traditionellt: systemet blir inte klart i tid - Stoppa in mer folk? - Projektet blir ännu mer fördröjt (de gamla måste först lära upp de nya och får inget gjort i början). XP: systemet får inte med alla funktioner - De väsentligaste funktionerna är med - Mer folk? - kan gå med parprogrammering 32

Sammanfattning Planering för: - att tänka igenom svårigheterna - inte för att få en detaljerad plan - för att få underlag till uppföljning - upptäcka missade svårigheter - de tar längre tid än uppskattat - för att organisera arbetet Planera inte allt i detalj - bara den aktuella releasen, iterationen, storyn, tasken, testfallet Planera där det är motiverat - så lite som possibly kan funka 33

Feedback - hela tiden! 34

XP Values Communication Feedback Simplicity Courage All XP practices support these values 35

Läsanvisningar chromatic: Delar av Part II, p 36-44 (Business Practices) chromatic: Part III (XP Events) och chromatic: Part IV (Extreme Programming Artifacts) W.Wake:Where s the Architecture? [W. Wake http://xp123.com/articles/wheres-the-architecture/] W. Wake: The System Mehaphor [http://xp123.com/articles/the-system-metaphor/] 36