F2 XP Extremprogrammering översikt

Relevanta dokument
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

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

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

12 principer of agile practice (rörlig)

Linköpings universitet 1

Användarcentrerad systemdesign

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

Användarcentrerad systemdesign

Kritik av Extrem Programmering

Agile-metoder, XP och ACSD

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

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

F5 Enkel Design, Refaktorisering. EDAF45 Programvaruutveckling i grupp Projekt Görel Hedin, Boris Magnusson,Datavetenskap, LTH

XP-projekt: En fördjupning

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

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

F5 Enkel Design, Refaktorisering

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

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

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

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

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

XP vs. Tillverkningsindustrin

Proj-Iteration1. Arkitektur alt. 1

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

Scrum + XP samt konsekvensanalys

F6 Arkitektur, Planering

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

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions

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

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

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

Planeringsspelets mysterier, del 1

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

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

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

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

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

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

Djupstudie Code smells / Refaktorisering. Martin Larsson dt08ml5 Stefan Johansson, dt08sj7

Lean programvaruutveckling

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

Verktyg för agil systemutveckling. Vad är ett verktyg? Olika typer av verktyg för mjukvaruutveckling. Vad kan ett bra verktyg tillföra?

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

A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices

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

Djupstudie Collective Documentation Ownerhip - Wiki. Jakob Nilsson-Ehle

SCRUM och agil utveckling

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

TDP023 Projekt: Agil systemutveckling

Pragmatisk programmering. Cyberrymden Marcus Rejås Pragmatisk programmering,19 september (26)

SCRUM. Marcus Bendtsen Institutionen för datavetenskap

Projektarbete DAVC20

Refaktorisering i ett XP-projekt

Djupstudie Verktyg för att förebygga problem i källkod. Anders Forslund Anders Lund

Kursmål. Kursens delar. Obligatorisk närvaro

Extreme Programming En bra metod?

Cult of Code Quality

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

Labrapport över Rumbokningssytemet Grupp:1

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

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

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

Agila Metoder. Nils Ehrenberg

Föreläsning 23. Tobias Wrigstad. Refaktorering

Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson

TDDD26 Individuell projektrapport

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

Den Röda Tråden. Vi kan ta fram arkitekturkrav. Vi kan ta fram arkitektur och design. Vi kan skriva Clean Code KRAV DESIGN IMPLEMENT VISION TEST

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

Pragmatisk programmering. Cyberrymden Marcus Rejås Pragmatisk programmering,16 december (29)

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

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

TDP005. Föreläsning 1. Filip Strömbäck

Objektorienterad programmering

Mer om kodkvalitet. Mer om kodkvalitet. Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité?

Eclipse. Kort genomgång

Kursöversikt Certifierad Mjukvarutestare

Kravsammanställning. Förstudie verksamhetsstödjande. Drift & Förvaltning. Affärs-/ processutveckling. Analys & Design. Konstruktion Test Införande

Aktivitet ett: Kommunicera! Aktiviteter i praktiken. Parprogrammering. Aktiviteter. Parprogrammeringens sju myter. Parprogrammeringens sju myter

BESKRIVNING AV PROCESSMETODEN SCRUM

En studie om parprogrammering i praktiken

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

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Scaled Agile Framework

JUnit. Junit Unit Testing. JUnit 3. JUnit 3 forts. Villkorskontroller i test. Exempel JUnit3

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

Testautomatisering. BDD, RSpec

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

Nyttomaximering av spikes

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

Agile i ett större sammanhang. Thomas Nilsson CTO, Agile Developer, Coach & Mentor

LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015

Praktikum i programvaruproduktion

TDP005. Föreläsning 1. Filip Strömbäck

Transkript:

F2 XP Extremprogrammering översikt EDA260 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH 1

Vad är XP? En metod för hur man utvecklar programvara i grupp i nära samspel med kunden med täta releaser med hög kodkvalitet som skall kunna förändras och leva under lång Ld 2

XP en agil metod agile lämrörlig, vig The agile manifesto : vik7gt arbetsprocesser och verktyg dokumentalon kontrakt med kunden följa en plan ännu vik7gare individer och interaklon fungerande programvara samarbete med kunden kunna hantera ändringar i planen 3

Varifrån kommer XP? Smalltalk- tradilonen: 1972, 1980, dynamiskt typat OO språk och integrerad programmeringsmiljö everything is an object programmeringssll: exploralv, prototypande, Kent Beck & Ward Cunningham pionjärer inom OO design CRC- cards 1989 (Class, Responsibility, CollaboraLon) PaMerns 1987 XP 1996, 2001 4

XP s deltekniker ( praclces ) Kodning och design Enkel design Refaktorisering Kodningsstandard Gemensam vokabulär Planering Kund i teamet Planeringsspelet Regelbundna releaser Hållbart tempo Utveckling Test- driven utveckling (TDD) Parprogrammering KollekLvt kodägande KonLnuerlig integralon Dessutom Gemensamt utvecklingsrum Nollte iteralonen Spikes 5

Planering i XP Börja med en enkel plan Planera om efer hand Jämför: köra bil 0ll Italien 6

Planeringsspelet (The Planning Game) Vad skall vi utveckla? Hur lång Ld tar det? Vem bestämmer vad? Kunder och utvecklare möts regelbundet för em planeringsspel för am planera nästa iteralon Plan 1 Plan 2 Plan 3 Iter 1 Iter 2 Iter 3 Exempelvis kan varje iteralon vara 2 veckor 7

Kunder Skriver user stories (enkla användningsfall) Prioriterar stories story Utvecklare eslmerar poäng (motsvarande Ld) för varje story Rela0v eslmering hur svår är denna story jämfört med andra? Hur mycket hann vi sist? Så mycket hinner vi nog nästa iteralon också. Yesterday s weather Prioritering vad är viklgast just nu? 8

User stories (användarberämelser) Exempel: Visa vem som ringer När telefonen ringer skall namnet på den som ringer visas på displayen om namnet är inlagt i telefonboken. Annars skall numret visas. Enkel, informell. Stories are promises for conversalon Lagom stor man bör hinna med flera stories varje iteralon. 9

Labb 1: Extreme Hour EM rollspel som illustrerar planeringsspelet. en produkt tas fram på en Lmma vi ritar i stället för am implementera på riklgt 10

Regelbundna releaser Release Regularly / Small releases Vad innebär det? Releaser Lll kund skall göras oaa, och med små inkrement Den första releasen begränsas i storlek så mycket som möjligt så am normalfallet är am vi har en releasad produkt När? Typiskt efer varje iteralon Ibland konlnuerligt (kunden har möjlighet am ladda ner den senaste integrerade versionen) Varför? Programmerarna får snabb feedback Nya krav kan påverka vidareutvecklingen LäM am göra omprioriteringar Kunden kan Ldigt börja använda nya funkloner 11

Kund i teamet Add a Customer to the Team / On- site customer Vad innebär det? En kund (eller representant för kundens intressen) finns på plats i projektet Varför? Utvecklarna får omedelbar Lllgång Lll en presumlv kravställare Stories behöver inte utarbetas så detaljerat detaljer kan besvaras direkt Muntlig kommunikalon är MYCKET snabbare än skriflig Det blir en låg tröskel för am överhuvudtaget fråga 12

Gemensam vokabulär Common vocabulary / System Metaphor En enkel beskrivning av hur systemet fungerar och som kan förstås av både kunder och utvecklare Ofa i form av en metafor, t.ex. skrivbordsmetaforen för grafiska operalvsystem kundvagnsmetaforen för on- line shopping- system Varför? Kunder och utvecklare kan lämare diskutera Förenklar namngivning i programmet 13

Utveckling i XP Hög kodkvalitet: Enkel am förstå, enkel am modifiera Snabb feedback Lll: utvecklaren själv andra i teamet kunden 14

Testning i XP Enhetstestning Enhetstester (unit tests) för varje klass/modul EM tesoall skrivs innan motsvarande kod (TDD Test- Driven Development) Tesoallen automalseras (regressionstestning) (vi kan enkelt köra om alla tesoall efer en ändring) Acceptanstestning Acceptanstester för varje story Även acceptanstesoallen automalseras 15

Enhetstester Skrivs av programmeraren Måste fungera Lll 100% innan man får integrera Ackumulerar förtroende för koden gör am man vågar ändra i koden Class TestClass 16

Test- Driven Development Tesoallet skrivs innan koden! fungerar som specifikaloner vad skall koden göra? skrivs i mycket små iteraloner: testa koda testa koda körs automalserat alla tesoall körs efer en ändring (så ser man am man inte förstört något som fungerade Ldigare) när testprogrammen fungerar är man färdig! 17

xunit Enkelt ramverk och interaklvt verktyg för am automalsera testning Finns för flera språk junit för Java sunit för Smalltalk cppunit för C++ Grundidé: Tesoall kan läggas Lll mycket enkelt i koden Verktyget kan köra alla tesoall Verktyget kan visa vilka tesoall som inte fungerar 18

Tesoall För varje klass A i produklonskoden, gör en testklass TestA För varje tesoall, gör en metod i TestA som anropar metoder i A och testar resultatet Exempel: 19

junit användargränssnim keep the bar green, keep the code clean 20

Erfarenheter av TDD jämfört med am skriva testerna eaer kodningen Utvecklarna gillar det känner sig säkrare på am man implementerat räm vet när de är färdiga BäMre design man tänker igenom användning innan man implementerar koden blir designad för test (ofa svårt am lägga Lll tesoall i eferhand) Hur mycket testar man? Krävs erfarenhet för am skriva bra tesoall, på lagom detaljnivå. Det tar längre Ld am skriva tesoallen än am skriva produklonskoden. Testkoden utgör cirka 25-50% av all kod. Ibland ännu mer. 21

Acceptanstester Kunden tänker ut tesoall för stories Vad skulle övertyga mig om am denna story är implementerad? Utvecklare hjälper kunden am implementera tesoallen Tesoallen mäter hur projektet framskrider 22

Kodning och Design i XP Komma igång så fort som möjligt Hålla hög kodkvalitet 23

Enkel design Code and Design Simply / Simple Design Vad innebär det? Ren tydlig kod, goda namn Ingen duplicerad kod Ingen onödig komplexitet (all komplexitet skall vara molverad av dagens behov tesoallen) Enkel design innebär am programmet är läm am förstå och ändra i 24

Enkel design växer fram Designen växer fram för am passa de tesoall som finns idag I motsats Lll Big upfront design (när man designar för morgondagens behov) Varför? Vi vet inte om en big upfront design verkligen kommer am passa förrän vi har implementerat kraven. Vi vet inte om en big upfront design verkligen kommer am behövas kanske alla delar av designen inte kommer am utnymjas, kanske ändrar projektet riktning Vi är inte rädda för am ändra kod och design när vi behöver det En komplicerad design blir bämre om man gör den i många små steg, med feedback från tesoallen i varje steg. 25

Slogans om Enkel Design Avoid Big Upfront Design Don t design on speculalon Do the simplest thing that could possibly work Obs! DeMa betyder inte am man kan nöja sig med am göra enklast möjliga ändring. Efer am i har gjort en ändring måste vi ta em steg Lllbaka och kontrollera am vår design foroarande är enkel, dvs har god struktur, bra namn, ingen duplicerad kod, etc. Har den inte det måste vi refaktorisera. 26

Refaktorisering (Refactoring) Omstrukturering av koden utan ai ändra beteendet Exempel Rename Method (byt namn på metod, och alla anrop Lll den) Extract Method (bryt ut em stycke kod Lll en egen metod) Move Method (flyma en metod från en klass Lll en annan) Varför? Åstadkomma och upprämhålla Enkel Design Hur? med verktyg (Eclipse, Smalltalk refactoring browser, ) för hand (jobbigt) 27

När gör man refaktorisering? När man läser koden för am förstå koden bämre När man skall införa en ändring för am lämare kunna göra ändringen Medan man implementerar ny funklonalitet för am förbämra sin egen lösning När koden börjat lukta illa och man inte längre har Enkel Design 28

Bad smells in code Duplicated code Long method Large class Long parameter list SpeculaLve generality 29

Två personer vid en maskin! Parprogrammering (pair programming) Driver och Partner. Växlar ofa roller. Paren kan växla flera gånger per dag. Parprogrammering innebär automalsk kodgranskning 30

Rapporterade erfarenheter Parprogrammering: Fokuserat arbete Man lägger inte Ld på sidospår Man arbetar mer effeklvt (inget paus- surfande) Man blir tröm! Man blir inte avbruten av andra Kvalitet Högre kodkvalitet (bämre detalj- design) Man håller sig lämare Lll disciplinen (TDD, refaktoriseringar, ) Man lär sig mycket av sin partner (design, verktyg, ) En del är negalva innan de provat, därefer posilvt överraskade Speciellt användbart när man debuggar svåra problem i inlärningssitualoner när man fasar in nya utvecklare 31

Gör 2 personer 1 persons jobb? Inte enligt XP- förespråkare som hävdar: Utvecklare med god parprogrammeringsvana kan programmera dubbelt så snabbt i par som när de programmerar själva Koden blir av mycket högre kvalitet 32

KollekLvt ägande (CollecLve ownership) Vad innebär det? Koden ägs gemensamt av alla i gruppen Alla i gruppen får ändra i all kod Varför är det bra? Man slipper beställa ändringar man gör dem helt enkelt själv Kodningsstandard Hur koden formameras Hur man namnger klasser, metoder, variabler 33

KonLnuerlig integralon (ConLnuous integralon) När skall man integrera sina ändringar med huvudversionen? Så snart em nym tesoall fungerar! Flera gånger varje dag! Kräver smidiga versionshanterings- verktyg 34

Hur Gemensamt utvecklingsrum (Bullpen / Open Workplace) Alla som utvecklar kod simer i samma rum. Maskinerna är placerade så am man läm kan prata med varandra. Varför? XP bygger på muntlig kommunikalon 35

Hållbart Tempo (Sustainable Pace / 40- Lmmars vecka) Regeln i XP Arbeta högst 40 Lmmar i veckan närhelst dema är möjligt. Arbeta aldrig överld mer än två veckor i sträck Varför? TröMa programmerare gör många misstag och skriver dålig kod 36

Delteknikerna förstärker varandra Kund i teamet Hållbart tempo Gemensam vokabulär Refaktorisering Enkel Design Planeringsspel Regelbundna Releaser Parprogrammering KollekLvt ägande Kodningsstandard Test- Driven Utveckling Gemensamt utvecklingsrum KonLnuerlig IntegraLon 37

XP s värden Kommunika0on alla kommunicerar med varandra, och ofa (Kund i Teamet, Parprogrammering, ) Enkelhet enkla lösningar är bämre än komplicerade (Enkel Design, ) Feedback alla får feedback: kunder, utvecklare, projektledare (TDD, Planeringsspelet, ) Mod Utvecklarna vågar ändra i koden för am förbämra koden eller Lllgodose nya krav (Refaktorisering, KollekLvt ägande, ) 38

DokumentaLon? XP fokuserar inte på detaljerad dokumentalon Enkel informell dokumentalon Story- kort, diagram på whiteboard, enkla beskrivningar, Koden är det viklgaste dokumentet Ren och tydlig kod em måste God namngivning på variabler, klasser, etc. em måste så am koden blir läsbar Acceptanstesterna fungerar som precis kravspecifikalon Kundbeställd dokumentalon Mer noggrann dokumentalon kan tas fram, beställd av kunden, planerad som stories 39

Rapporterade erfarenheter från lyckade XP- projekt Utvecklarna uppskamar am arbeta fokuserat am snabbt åstadkomma resultat man får visa andra Projektledningen uppskamar am läm kunna följa projektet am läm kunna ändra inriktning Kunderna uppskamar am konlnuerligt se resultat am konlnuerligt kunna komma med nya ideer 40

Hur stora XP- projekt kan man ha? Erfarenheter av XP: XP passar små projekt (4-20 utvecklare). Muntlig kommunikalon och KollekLvt kodägande begränsar. Planeringsspelet och Regelbundna Releaser passar även stora projekt (150-400 utvecklare) Hur kan man skala upp XP? Stora projekt kan drivas som många små XP- projekt Teamen behöver koordineras (XP behöver då komplemeras med tekniker för dema) 41

Varför kallas det Extrem programmering? Korta utvecklingscykler är bra: I XP gör man dem extremt korta Testning är bra: I XP testar man hela Lden. Design är bra: I XP designar man hela Lden Kodgranskning är bra: I XP kodgranskar man hela Lden 42

Feedback i XP 43

Deltekniker i XP Kodning och design Enkel design Refaktorisering Kodningsstandard Gemensam vokabulär Planering Kund i teamet Planeringsspelet Regelbundna releaser Hållbart tempo Utveckling Test- driven utveckling (TDD) Parprogrammering KollekLvt kodägande KonLnuerlig integralon Dessutom Gemensamt utvecklingsrum Nollte iteralonen Spikes 44

Målet med XP Mycket hög kodkvalitet Kod som kan ändras i takt med förändrade krav 45

Det finns många metoder Agila XP FDD (Feature- Driven Development) SCRUM (kan kombineras med XP) Lean TradiLonella (dokumenookuserade) VaMenfall Spiral IteraLv RUP (RaLonal Unified Process) 46

Labb 1 Extreme Hour Förberedelser Repetera F1 och F2 (OH- bilder på kurswebben) Läs arlkeln av Kent Beck (i häfet) chromalc: Läs Part I (Why XP?) Ta med papper och penna Skrifligt labbförhör. Underkänd => ny labbld Ej i Ld => ny labbld 47

F3: KonfiguraLonshantering (Nästa veckas föreläsning, Lars Bendix) Please note that: the lecture will not cover all the literature the lecture will cover more than the literature part of the lecture is introduclon to the CVS- lab Read before the lecture: Häfet: Utdrag ur bok av Babich: Sofware ConfiguraLon Management CoordinaLon for Team ProducLvity chromalc: Delar av Part II (XP PracLces): p 18-20 (Refactor Mercilessly) p32-36 (CollecLve Code Ownership, Integrate ConLnually) p 41-42 (Release Regularly) Häfet: Utdrag ur bok av Jeffries et al: Extreme Programming Installed. Delar av Kap 11 + 15. AddiLonally, read before Lab 2 (CVS): Kurswebben, labbsidan: IntroducLon to CVS Kurswebben, labbsidan: Labbhandledning labb 2 48