extreme Programming nogle observationer... Carsten Juel Andersen Softwarearkitekt juel@captator.dk www.captator.dk november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 1 Min historie 1982 Bidt af en gal computer 1989 Uddannet Teknikum ingeniør fra Sønderborg 1990 Udviklingsingeniør siden teknologisspecialist Større projekter (en sæson med adskillige produkter samlet 50 swudviklere, eget projekt ca. 10) 1997 Ansat på Teknologisk Institut Konsulent/underviser SA/SD, OO, Java, XP mv. 1999 Købte XP bogen på OOPSLA Hørte også her de første erfaringsindlæg Har siden holdt en del foredrag om XP og XUnit / testførst m.v. 2000 Deltog på XP2000 Her var en anseelig del af guru -erne for Agile metoder til stede Vild optimisme 2001 Deltog på XP2001 Agile Manifesto som det store Bekymring over problemer med at indføre XP 2002 Stiftet Captator for at arbejde med MS.NET november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 2 extreme Programming - motivation og baggrund ved Carsten Juel Andersen 1
De 12 XP praktikker Refaktorering Simpelt design Test Programmering Kode standarder Kort tid mellem releases Kollektivt ejerskab Fortløbende integration Programmering i par 37-timers arbejdsuge Team praktikker Metafor The Planning Game Kunde involvering Test Kort tid mellem releases Proces november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 3 Værdierne som XP værdsætter Kommunikation Mangel på samme er ofte en fejlkilde XP er en team-process med konstant kommunikation Enkelthed design ikke for imorgen, men kun for idag Feedback Optimisme er en fare, feedback er medicinen :-) MOD Frygt ikke følgefejl, men hav mod til at turde lave ændringer! november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 4 extreme Programming - motivation og baggrund ved Carsten Juel Andersen 2
Refaktorerings katalog Refactoring Improving the Design of Existing Code beskriver et katalog af 72 refaktoreringer Der er beskrevet et motiv og en løsning for hver Ofte går en refaktorering begge veje alt efter omstændighederne ex: Pull Up Field kontra Push Down Field Eksempler fra bogen Collapse Hierarchy, Encapsulate Field, Extract Class, Inline Class, Introduce Assertion, Introduce Null Object, Move Field, Move Method, Pull Up Field, Push Down Field, Replace Constructor with Factory Method, Replace Inheritance with Delegation, Replace Magic Number with Symbolic Constant november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 5 Hvornår skal man refaktorere? Når koden lugter! (bad smell), som ex. Duplikeret kode Lange metoder Store klasser Lange parameter lister Divergerende ændringer (klasse er blevet ændret mange gange med forskellig fokus) Haglgeværskirurgi (en rettelse = ændringer mange steder) Switch statements Doven klasse Spekulativ generalisering Mellemmand november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 6 extreme Programming - motivation og baggrund ved Carsten Juel Andersen 3
Junit/NUnit/XUnit et testværktøj Keep the bar green to to keep the code clean...... Citat fra www.junit.org november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 7 Fortløbende integration Når en programmeringsopgave afsluttes Sætter den taskansvarlige sig ved integrationsmaskinen Det sikrer at check-in serialiseres Det checkes på en clean maskine Herefter testes rettelserne og rettelsen checkes ind i versionssystemet 1. Clean maskine 2. Nyeste version hentes ud fra versionsstyringssystemet 3. Egne rettelser lægges ind på maskinen 4. Compiler og afvikl alle unittests - skal give grønt lys 5. Rettelserne checkes ind i versionsstyringssystemet 6. PAUSE J!! november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 8 extreme Programming - motivation og baggrund ved Carsten Juel Andersen 4
Fortløbende integration nightly build Sørg for at projektet altid kan passere alle tests med grønt lys! Der findes værktøjer til at lave en fuldautomatisk build og testafvikling Kør den hver nat Få resultatet når I møder på arbejde om morgenen november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 9 Release planlægning - Story Card En historie er er ikke en fuldkommen specifikation, men blot et et løfte om en senere samtale mellem kunde og udvikler om hvad denne historie indebærer En historie (Story) - er skrevet på et kartotekskort, hvorpå der står en overskrift på den givne historie et estimat samt eventuelle yderligere kommentarer, som var vigtige for kunden eller udviklererne i det, den blev påført kortet november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 10 extreme Programming - motivation og baggrund ved Carsten Juel Andersen 5
Release planlægning - points Hver historie estimeres efter et pointsystem Et point = en effektiv mandeuge Der kan gives 1, 1.5, 2, 2.5 og 3 points En historie må aldrig være større en 3 points så skal den splittes til mindre historier En historie kan ikke være mindre end 1 point klips flere små historier sammen til 1 historie så den opnår 1 point til sammen november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 11 Release planlægning - omfang Med de givne estimater kan man herefter udregne den nødvendige projektudstrækning antal iteration af (normalt) 3 ugers udstrækning antaliterationer = pointsum / projekthastighed Projekthastigheden (velocity) bestemmes udfra følgende Ved starten på projekt (1. iteration) - 1 point pr. udvikler efterfølgende - antal points nået i foregående iteration november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 12 extreme Programming - motivation og baggrund ved Carsten Juel Andersen 6
Release planlægning - resultat Resultat af release planlægning er 3 stakke af kort 1 stak til første iteration 1 stak til øvrige historier i denne release 1 stak til alle de andre historier R R R R R R Nu ved vi: Hvad der er med i første release og hvornår projektet er færdigt (selvom vi godt ved det ikke holder i længden... :-) Dette er bedre en et gantkort hvor detaljeringen har en tendens til at forplumre billedet november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 13 Agile Manifesto Manifest for agile softwareudvikling "Vi forsøger at finde bedre måder at udvikle software på, ved selv at være udførende og ved at hjælpe andre. Gennem dette arbejde, har vi fundet frem til at værdsætte følgende værdier Det individuelle individ og samarbejde frem for metoder og værktøjer Fungerende software frem for omfattende dokumentation Samspil med kunden frem for kontraktforhandlinger Reaktion på forandring frem for at følge en plan november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 14 extreme Programming - motivation og baggrund ved Carsten Juel Andersen 7
Referencer til bøger og websteder om XP november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 15 Artikler om XP Chrysler Goes to Extremes Distributed Computing, oktober 1998 http://www.distributedcomputing.com Embracing change with Extreme Programming Kent Beck, IEEE Computer, Oktober 1999 Extreme Programming: Flatten the change-cost curve by using XP in project planning and testing Kent Beck, C++ Report, May 1999, pp. 26-29, 44. http://archive.creport.com/9905/html/from_pages/feature.shtml Experiences in Applying Extreme Programming to a Java- Based Project Fred George, Rob Billington Erfaringsindlæg fra OOPSLA 99 november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 16 extreme Programming - motivation og baggrund ved Carsten Juel Andersen 8
Junit / XUnit referencer Extreme Testing Ron Jeffries, Software Testing & Quality Engineering, V1I2, March/April 1999, pp 22-27., http://www.xprogramming.com/software_testing.htm Simple Smalltalk Testing: With Patterns Kent Beck, original artikel om XP test. http://www.xprogramming.com/testfram.htm JUNIT: A Cook s Tour Erich Gamma & Kent Beck; Java Report, Maj 1999 XP test framework for Java (JUnit) og.net (NUnit) http://www.junit.org, http://www.nunit.org Andre XUnit frameworks http://www.xprogramming.com/software.htm november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 17 Web XP ressourcer Ward Cunninghams Wiki om XP http://c2.com/cgi/wiki?extremeprogrammingroadmap Ron Jeffries XP site http://www.xprogramming.com Don Wells XP site http://www.extremeprogramming.org Martin Fowler http://martinfowler.com Agile Alliance http://www.agilealliance.org november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 18 extreme Programming - motivation og baggrund ved Carsten Juel Andersen 9
Bøgerne i XP serien Extreme Programming Explained Kent Beck; ISBN 0-201-61641-6 Den oprindelige bog om XP skrevet af idemanden bag: Kent Beck. Bogen gennemgå de grundlæggende elementer af XP og forsøger at give en baggrund for hvorfor de enkelte dele af XP er vigtige. Planning Extreme Programming Kent Beck, Martin Fowler; ISBN 0-201-71091-9 Bogen om the planning game. Her beskrives dette ene princip i XP til bunds. Mange af delene af planlægning kan benyttes også uden at benytte de øvrige XP principper. En god bog hvis man vil vide mere om at planlægge og styre sine projekter. Extreme Programming Installed Ron Jeffries, Ann Anderson, Chet Hendrickson; ISBN 0-201-70842-6 Fra 3 af de oprindelige C3 projektdeltagere/konsulenter er her bogen, der prøver at give en mere grunding praktisk indgang til de enkelte XP principper. november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 19 Bøgerne i XP serien Extreme Programming Examined Giancarlo Succi, Michele Marchesi; ISBN 0-201-71040-4 I maj 2000 blev den første konference om XP afholdt på Sardinien, Italien. Denne bog er de redigerede conference proceedings. Den indeholder alle de bedste artikler fra konferencen. Extreme Programming Explored William C. Wake; ISBN 0-201-73397-8 Herfra er opdelingen af de enkelte praktikker i 3 kategorier: Programmering, Team praktikker og process hentet. Bogen holder sig til at beskrive praktikkerne. Den giver også nogle gode råd på hvilke praktikker, der kan benyttes selvom man ikke ønsker en 100% XP process. Der er flere bøger i denne serie, men der er simpelthen for megen gentagelse mellem bøgerne til at de er af nogen nytte november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 20 extreme Programming - motivation og baggrund ved Carsten Juel Andersen 10
Bøger om XP og beslægtede metoder Refactoring: Improving the Design of Existing Code Martin Fowler, Kent Beck m.fl.; ISBN 0-201-48567-2 Dette er en utrolig god bog om disiplinen Refactoring. Den indeholder en længere introduktion om hvad refaktorering er, men den vigtigste del er et katalog af refaktoreringer. Her er beskrevet fordele og ulemper ved de enkelte løsninger. Ofte kan en refaktorering gå begge veje, i nogle tilfælde er en løsning bedste - i andre den modsatte. Dette katalog giver gode regler for hvornår man bør bruge det ene, og hvornår man bør benytte det andet. Surviving Object-Oriented Projects Alistair Cockburn; ISBN 0-201-49834-0 En bog om Alistair Cockburn s egen familie af letvægts metoder: Crystal. Bogen beskriver også en række projekter. Vil man vide noget om hvad der gør et oo-projekt sucessfuldt, og hvad der får det til af fejle er dette en god bog at læse. Alistair Cockburn er også en af dem der gennem de senere år har slået hårdt på at det er det personlige aspekt, der udgår den største del af et projekts success. Det er i god tråd med XP s filosofi. november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 21 Bøger om XP og beslægtede metoder The Pragmatic Programmer Andrew Hunt, David Thomas; ISBN 0-201-61622-X Hvordan bliver man en bedre programmør? Ved at læse denne bog! Bogen giver en masse råd - lidt al a XP s principper - om hvordan man kan blive en bedre programmør. Denne bog er også for den enkelte, dvs. at man kan bruge mange af rådene herfra uden nødvendigvis at skulle overbevise alle man arbejder sammen med for at kunne bruge dem. november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 22 extreme Programming - motivation og baggrund ved Carsten Juel Andersen 11
Spørgsmål www.captator.dk nyheder, artikler, demoer,... november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 23 extreme Programming - motivation og baggrund ved Carsten Juel Andersen 12