extreme Programming Hvad er XP?



Relaterede dokumenter
Kvalitetssikring og agile udvikling

extreme Programming, motivation og baggrund november 2002 november 2002 Erfaringer fra XP og non-xp projekter - ved Carsten Juel Andersen 1

Objektorienterede metoder

Objektorienterede metoder

Det vigtigste først! Dette er måske den vigtigste bog der nogensinde er skrevet om agile vs. vandfald. Muligvis fordi det vel stadig er den eneste

extreme Programming Kunders og udvikleres menneskerettigheder

Test med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det.

Visual Studio Team System. Team Build en grundpille i søgen efter it-projektproduktivitet?

Scrum er ikke Agilt! Jesper Boeg, Agile Coach, Developer, Lean Consultant, Januar 19, 2010

IT-Universitetet, Projekt- og Programledelse November 2013 AGIL PROGRAMLEDELSE

Hvem er vi? Kursus Introduktion. Kursuslærerne. Agenda for i dag

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Tendenser inden for systemudviklingsprocesser. Den Danske Advantage Gen Brugergruppe Den 13. marts 2003

Usability-arbejde i virksomheder

Agil softwareudvikling i praksis. v/ Thomas Schou-Moldt, Lead Architect, Miracle A/S

A Profile for Safety Critical Java

INTERAKTIONSDESIGN PROCESSEN (KAP 9), REPETITION, KÅRING AF ÅRETS BEDSTE MUSIKVIDEO OG PROJETK

Scrum er ikke Agilt! Jesper Boeg, Agile Coach 2. september, 2010

It-håndbogen. Uddrag af artikel trykt i It-håndbogen. Gengivelse af denne artikel eller dele heraf er ikke tilladt ifølge dansk lov om ophavsret.

Test med NUnit. Denne artikel introducerer NUnit. Den forklarer ideen med NUnit. Og den viser hvordan man konkret bruger det.

Lovkrav vs. udvikling af sundhedsapps

KundeCenter Privat FRA KPI TIL FORMÅL

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov.

SWC eksamens-spørgsmål. Oversigt

Agenda. The need to embrace our complex health care system and learning to do so. Christian von Plessen Contributors to healthcare services in Denmark

Øg sporbarhed og produktivitet gennem integration

Software Design (SWD) Spørgsmål 1

Software Construction 1 semester (SWC) Spørgsmål 1

how to save excel as pdf

Setup Guide Do It Now Work Smarter

Om forretningsmæssige kompetencer

Software Design (SWD) Spørgsmål 1

Forelæsning den 18. marts 2002

Enterprise Strategy Program

Software Design (SWD) Spørgsmål 1

DANMARKS NATIONALBANK LEVER AGIL UDVIKLING STADIG I DET VILDE VESTEN

Nexus Guide. Den definitive guide til Nexus: Et ydre skelet for skaleret Scrum udvikling. Udarbejdet og vedligeholdt af Ken Schwaber og Scrum.

Pilotforløb(eksempel): Idea Management Tool. Aftalen. Ansvarlig. Modtager.

Objects First with Java A Practical Introduction Using BlueJ

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Agil test tilgang - erfaringer fra projekter

Software 1 with Java. Recitation No. 7 (Servlets, Inheritance)

Kursusgang 12. Oversigt: Sidste kursusgang Layout-manager Event-håndtering. Design af brugerflader 12.1

Lav testsuppe på en sten med exploratory test

Knas med udviklingsprojekterne? Iterativ udvikling kan være løsningen!

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende

Agil-model versus V-model set i lyset af en testers dilemmaer

Software Design (SWD) Spørgsmål 1

Plan for præsentationen

SOFTWARE PROCESSES. Dorte, Ida, Janne, Nikolaj, Alexander og Erla

Linguistic support for unit testing

Web CMS kontra Collaboration

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

QUICK START Updated:

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

Idekatalog. Så vidt jeg husker fremgik det ret tydeligt hvad der skulle være i ansøgningen. Der var bare virkelig mange informationer der skulle med.

Behavior Driven Test and Development. ebay Classifieds

SEPA Direct Debit. Mandat Vejledning Nets Lautrupbjerg 10 DK-2750 Ballerup

Projektledelse i praksis

Java Klasse nedarvninger

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X & 10.8

QUICK START Updated: 18. Febr. 2014

Succesfuld implementering af automatiseret test

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

Design til digitale kommunikationsplatforme-f2013

Vejen til nemmere og mere sikker implementering af Microsoft Dynamics AX

Water Sensitive Urban Design Socio-teknisk analyse af regnvandshåndtering i Melbourne og København

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension

SCRUM/Agil Udvikling som projektmetode ved udviklingen af forretningssoftware

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Den røde tråd fra testdækning til releasemetrikker

The LEGO Journey: Building an agile test foundation one brick at the time. Casper Gaardland Englund. Stephan Hjelmdal Nielsen The LEGO Group l

Markedsføring IV e-business

10 gode grunde. - derfor skal du vælge Office365

USERTEC USER PRACTICES, TECHNOLOGIES AND RESIDENTIAL ENERGY CONSUMPTION

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

En god Facebook historie Uddannelser og valgfag målrettet datacenterindustrien!?

APEX i Praksis Martin B. Nielsen. Navn. MBNDATA Emne

Bemærk, der er tale om ældre versioner af softwaren, men fremgangsmåden er uændret.

2. Metode. 2.1 Interessentanalyse Interessenterne i projektet er vist i nedenstående figur: Aftalekalenderprojektet. Indledning

Appendiks - Speciale ITU 2002 Offline XML Datavarehus. Figuroversigt. Afsnit 1 Figur 1.1 Fiktiva s nuværende datastruktur

Feedback Informed Treatment

Klar og tydelig kommunikation tak Thomas Axen

Microservices. Hvad er det og hvordan kommer du i gang?

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

SOCIALE MEDIER ONLINE MARKETING 2. SEMESTER, FORÅR 2014

Struktur for samkøring af Family Tables og Top Down Design under brug af Wildfire 5.0/Creo 1.0

Shared space - mellem vision og realitet. - Lyngby Idrætsby som case

make connections share ideas be inspired

dsoftark E2007 Gruppe 14: Anders, Troels & Søren 15. november 2007 Rapport til a. 1 'TDD rytmen'

Basic statistics for experimental medical researchers

Hvad skal vi leve af i fremtiden?

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Testing Tuesday 07.Juni Aarhus. CapgeminiSogeti

CASE: Royal Copenhagen

En måling er bedre end 100 mavefornemmelser

Den strategisk platform

Dagens tema. Kompetencemæssigt begiver vi os ud i de teknologiske forventninger fra Cloud computing til Robotteknologi og programmering

Transkript:

extreme Programming Ole Monrad Selandia - Center for Erhvervsuddannelse 1 Hvad er XP? Hvad er XP? XP er en letvægts, effektiv, lavrisiko, flexibel, forudsigelige, videnskabelig og morsom måde at udvikle software Kent Beck 2 1

Hvad er XP også? Utraditionel måde at gennemføre systemudvikling Første eksempel på en ny familie af metoder de adrætte [agile] Kombinerer ledelse og systemudvikling Ikke nødvendigvis anvendelig til alle typer af projekter Stadig under udvikling 3 Omkostninger Systemændringer Tid 4 2

Disposition Praksis gennemgang af 12 dele planning game test refactoring par programmering opsummering Adrætte metoder Sammenligning med de traditionelle Perspektiver Cases 5 Praksis The planning game Kunden på stedet brugerinvolvering Mindre releases Metafor metafor historie [story] Test Simpelt design Refactoring Løbende integration Par programmering Kollektivt ejerskab Kode standarder 37 timers uge 6 3

;e^tu^`{cdutud @\Q^^Y^W7Q]U =UdQV_b #'dy]ubcewu CY]`U\dTUcYW^ BUVQSd_bY^W DUcd @Qb`b_WbQ]]UbY^W =Y^TbUbU\UQcUc ;_\\U[dYfdUZUbc[QR ;_TUcdQ^TQbTUb < RU^TUY^dUWbQdY_^ 7 ;e^tu^`{cdutud @\Q^^Y^W7Q]U =UdQV_b #'dy]ubcewu CY]`U\dTUcYW^ BUVQSd_bY^W DUcd @Qb`b_WbQ]]UbY^W =Y^TbUbU\UQcUc ;_\\U[dYfdUZUbc[QR ;_TUcdQ^TQbTUb < RU^TUY^dUWbQdY_^ 8 4

;e^tu^`{cdutud @\Q^^Y^W7Q]U =UdQV_b #'dy]ubcewu CY]`U\dTUcYW^ BUVQSd_bY^W DUcd @Qb`b_WbQ]]UbY^W =Y^TbUbU\UQcUc ;_\\U[dYfdUZUbc[QR ;_TUcdQ^TQbTUb < RU^TUY^dUWbQdY_^ 9 XP Projekt Historie om det kommende Historie sysem om det kommende Historie sysem om det kommende Historie sysem 12 om det Historie om det Til senere releases Kunde Historie om det kommende Historie sysem om det kommende Historie sysem om det kommende Historie sysem om det kommende Historie sysem om det kommende Historie sysem om det kommende Historie sysem om det kommende Historie sysem om det kommende Historie sysem om det Historier til én release kommende Historie sysem om det Projektleder kommende Historie sysem 12 om det Historie om det Historie om det Historie 12 om det Historie om det Historie om det Historie 12 om det Historie 12 om det Historie om det Historie om det Historie 12 om det Historie om det Historie om det Historie om det Historie om det Udviklere Historier fordelt på iterationer 10 5

2 3 2 1 2 1 4 1 1 3 extreme Programming Projektforløb Release plan Iterationer,1-3 uger Release Release plan Iterationer,1-3 uger Release Releaseplan Iteration 1 Iter. 2 Iter. 3 Iteration 4 11 Kunde og udvikler Skriv en historie Spydspids ved ikke Estimér for stor Opdel historien Sortér 12 6

Kunderettigheder Du har ret til en overordnet plan, til at vide, hvad der kan opnås, hvornår, og hvad det koster Du har ret til at følge udviklingen via et kørende system, der har vist dets duelighed gennem gentagne test, som du har beskrevet Du har ret til at ombestemme dig, dvs. at udskifte funktioner og at ændre på prioriteter Du har ret til at blive gjort opmærksom på ændringer i planer, så du tids nok kan vælge, hvordan omfanget reduceres, så den oprindelige tidsplan kan overholdes. Du kan endog vælge at afbryde og alligevel få overladt et brugbart kørende system, der afspejler den hidtil foretagne investering. 13 Udviklerrettigheder Du har ret til at vide, hvad der er behov for, via klare kravorienterede historier med klar angivelse af prioritet Du har ret til at sige hvor lang hver historie vil tage for dig at implementere og at revidere estimater ud fra erfaringer Du har ret til at identificere risikofyldte historier, at få dem prioriteret højere og et eksperimentere for at nedbringe risikoen Du har ret til at lave kvalitetsarbejde til enhver tid. Du har ret til roligt, sjovt samt produktivt og interessant arbejde 14 7

The planning game RAD (Rapid Application Development) Kort udviklingscyclus (fx 3-uger) Hyppige opdateringer Forretningsmæssige og tekniske prioriteringer Estimering baseret på historier [stories] 15 Kunden på stedet Skriver historier, prioriterer, fordeler på releases Besvare spørgsmål, afgøre tvivl Skal bruge systemet i produktion Til rådighed for projektgruppen, men kan også lave andet Sikring af at der hele tiden laves det rigtige 16 8

Mindre releases Tingene bliver færdiggjort Hyppig feedback Release og releasemoden [releasable] Omkostninger ved en release installering, træning, omstilling 17 Metafor Simpel historie af systemet som helhed for kunde, udvikler, leder Fælles opfattelse af systemet Fælles begreber Fortæller en del om systemarkitekturen Modner under udviklingsprocessen Grundlag for inspiration, analogier 18 9

Eksempler på metaforer Kundeservice er som et samlebånd Skrivebord for grafisk brugerflade System der kombinerer det dobbelte bogholderi og et regneark Editor: kort (hulkort), tabel m/linjer, gigantisk streng, sekvens af strenge Start med en naiv metafor sammensat af de vigtigste begreber 19 ;e^tu^`{cdutud @\Q^^Y^W7Q]U =UdQV_b BUVQSd_bY^W #'dy]ubcewu CY]`U\dTUcYW^ DUcd =Y^TbUbU\UQcUc @Qb`b_WbQ]]UbY^W ;_\\U[dYfdUZUbc[QR ;_TUcdQ^TQbTUb < RU^TUY^dUWbQdY_^ 20 10

Test Løbende automatisk test Livscyklus: lyt (krav) test kod design Unit test giver programmører tillid Functional test giver kunder tillid Test skrives før koden Tester produktionskode 21 JUnit oversigt JUnit javax.swing extensions TestDecorator swingui TestRunner awtui TestRunner runner BaseTestRunner textui TestRunner ui TestRunner framework Assert Assertion- FaildError Test TestCase TestFailure TestListener TestResult TestSuite java.awt 22 11

JUnit og egen test TestResult wassuccessfull Assert errors failures TestFailure failedtest «Interface» Test run(testresult) counttestcases * Composite:Component Adapter EgenTest runtest TestCase TestSuite Composite Template Method run setup runtest teardown runtest Composite:Leaf 23 Eksempel fra: www.diasparsoftware.com/ articles/junit/junitstarterguide.html 24 12

Trin 1 Opret nogle objekter Trin 2 Brug metode(r) Trin 3 Kontrollér resultat Trin 1 Money class + constr. Trin 2 Tilføj add-metoden Trin 3 Tilføj getvalue-metode incl. returværdi 25 Første assertequals fejler. Class Money rettes nødtørftigt, så kontrollen kan passeres. Anden assertequals fejler. Class Money må tilføjes en attribut, så objektet husker værdien. 26 13

Class Money er rettet med en attribut, overførsel af værdi i constructor samt returnering af værdi med getvalue(). Fejler samme sted som første gang. 20 er money1 s værdi inden add. Constructor og getvalue virker, men ikke add. 27 Unit test er gennemført uden fejl. OK den befriende udskrift. 28 14

Unit test gennemført med tre forskellige testmetoder. 29 atestrunner atestsuite pass: TestCase error: TestCase failure: TestCase run() Et test resultatsæt oprettes til opsamling af resultater fra testene. atestresult Testsuiten eksekverer alle TestCases. En succesfuld TestCase returnerer normalt. run() run(atestresult)) Hvis TestCase n kaster en exception tilføjes en fejl til resultatsættet. run(atestresult)) «exception» adderror()) En værdi testes ved at kalde en assert. Hvis assert en fejler kastes en Assertion Failed exception og fejlen tilføjes til resultatsættet. run(atestresult)) adderror()) Assert() «exception» Assertion Failed 30 15

Simpelt design Lave det bedst mulige design, der imødekommer behovene netop nu Ingen potentielle fremtidige funktioner Skørt at spekulere om en usikker fremtid Mål: Gennemfører alle test, ingen duplikeret logik, beskriver alt der er vigtigt for programmørerne 31 Refactoring Er en ændring i programmets interne struktur for at gøre det lettere at forstå og billigere at ændre. Ændringen foretages uden at ændre på programmets opførsel udadtil. Martin Fowler software lettere at forstå og ændre observerbart resultat ændres ikke forbedring i overskuelige skridt test et centralt element forbedring og ændring holdes adskilt 32 16

Parameterize Method Flere metoder udfører den samme ting men med forskellige værdier i metodens kode Udarbejd en metode der bruger en parameter til de forskellige værdier 33 Introduce Explaining Variable Man har et kompliceret udtryk Anbring udtrykkets resultat, eller del deraf, i en midlertidig variabel med et navn, der forklarer formålet if ( (platform.touppercase().indexof("mac") > -1) && (browser.touppercase().indexof("ie") > -1) && wasinitialized() && resize > 0 ) { // do something } final boolean ismacos = platform.touppercase().indexof("mac") > -1; final boolean isiebrowser = browser.touppercase().indexof("ie") > -1; final boolean wasresized = resize > 0; if (ismacos && isiebrowser && wasinitialized() && wasresized) { // do something } 34 17

Pull Up Method Man har metoder med identiske resultater i subklasserne Flyt dem til superklassen 35 Type Refactorings» Rename Class» Move Class» Add Parent Class» Add Child Class» Remove Class» Extract Interface Method Refactorings» Push Up Method» Push Up Abstract Method» Push Down Method» Rename Parameter» Extract Method Field Refactorings» Rename Field» Push Up Field» Push Down Field UML diagram 36 18

1. Højreklik på getname() i Salesman og valg af Method Refactoring Push Up 2. Bekræft at metoden både i Salesman og Engineer skal flyttes. 3. Metoden getname() er fjernet fra Salesman og Engineer og findes i stedet i Employee. Klassernes kode er justeret. 37 Push Down Method Adfærd i superklassen er kun relevant for nogle af dens subklasser Flyt den til disse subklasser 38 19

Replace Conditional with Polymorphism En betingelse som vælger forskellig adfærd afhængig af et objekts type Flyt hver betingelsesdel til en overstyrende metode i en subklasse. Gør den oprindelige metode abstrakt double getspeed() { switch (_type) { case EUROPEAN: return getbasespeed(); case AFRICAN: return getbasespeed() - getloadfactor() * _numberofcoconuts; case NORWEIGIAN_BLUE: return (_isnailed)? 0 : getbasespeed(_voltage); } throw new RuntimeException ("Should be unreachable"); } 39 Refactoring Løbende redesign Forbedre mulighederne for ændringer Konstant ønsker om ændringer Gøre programmet simplere og stadig gennemføre alle tests Gennemføres i mindre trin 40 20

Kilde: www.refactoring.com/catalog/index.html 41 Sammenhæng med mønstre Flere refactorings indeholder kendte mønstre, fx strategy Anvendes på bagkanten Ofte af mindre omfang Opstilles i skabelonform Enkeltelementer, der kan kombineres på mange måder (hypertekst-form) 42 21

Integration Integration mindst dagligt Feedback cyklus: udvikl testcase kod integrer test Et sæt ændringer integreres ad gangen Tydeligt feedback 43 ;e^tu^`{cdutud @\Q^^Y^W7Q]U =UdQV_b BUVQSd_bY^W #'dy]ubcewu CY]`U\dTUcYW^ DUcd =Y^TbUbU\UQcUc @Qb`b_WbQ]]UbY^W ;_\\U[dYfdUZUbc[QR ;_TUcdQ^TQbTUb < RU^TUY^dUWbQdY_^ 44 22

Par programmering To personer om en maskine Løbende software inspektion Samarbejde, hurtig indlæring, afdækker fejl Programmerer og lærer at programmere bedre Forhindrer introduktion af fejl 45 Par progr. resultater Figur 1. Sammenligning af færdiggørelsestider for par programmørers og individuelles projekter. 46 23

Kollektivt ejerskab Alle har ansvar for at øge kodens kvalitet Alle har kendskab til enhver del Gør projektet og systemet mindre sårbart 47 Kodestandarder Nødvendighed som følge af kollektivt ejerskab og parprogrammering i skiftende par Al kode ser ens ud Accepteret af alle 48 24

Kodestandard i Java Kilde: http://www.xp123.com/xplor/xp0002f/codingstd.gif 49 37 timers uge Møde frisk, udhvilet og entusiastisk Ingen kan lave kvalitetsarbejde med 60 timers arbejdstid uge efter uge Overarbejde er symptom på problemer i projektet 50 25

Værdier og filosofi Kommunikation Simpelthed Feedback Mod Kvalitetsarbejde 51 Manifesto for Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. Beck, Beedle, Bebbekum, Cockburn, Cunningham, Fowler, Grenning, Highsmith, Hunt, Jeffries, Kern, Marick, Martin, Mellor, schwaber, Sutherland & Thomas Uddybning: Fowler & Highsmith: The Agile Manifesto. http://www.sdmagazine.com/documents/s=844/sdm0108a/0108a.htm 52 26

Agile Software Development extreme Programming Adaptive Software Development Jim Highsmith Crystal methodology family Alistair Cockburn Scrum Software Development DSDM Dynamic Systems Development Method Feature-Driven Development Peter Coad 53 Agile traditionelle Lære og beherske Udgangspunkt i kode, dokumentation Tidlige resultater Øget kvalitet af koden Har stor bevågenhed Kræver meget af projektdeltagerne Problemer omkring skalering Ikke alle opgaver kan deles op i iterationer 54 27

Perspektiver Bevidstgøre metodeanvendelsen én metode til alt Det menneskelige aspekt individ kontra ressource Udviklingstakt Nye måder test før kode kode før design løsninger før dokumentation 55 Chrysler Lønningssystem til 86.000 ansatte Erstatning for flere lønsystemer Kuldsejlet forsøg på anvendelse af standardsystem Kent Beck startede forfra med XPteam fra 1996, sidste del i 1999 Ref: Distributed Computing, oct. 98. Kilde: www.xprogramming.com/publications/dc9810cs.pdf 56 28

Web-løsning integreret eksisterende system og layout fra eksterne web designere 6-8 udviklere, 5 måneder -> udvik.gruppe parprogrammering: spredning af ny teknologi, få misforståelser historier: web designere brugte use cases kundens involvering: tid til tilpasning, sen fokus på central funktion: olielotteri releases: produktion efter 4 måneder design: brug af design sessioner Kilde: www.nordija.dk 57 Q8 / Bankdata Kommunikation fremmes i åbne arbejdsmiljøer Kundeinvolvering er alfa og omega Kunden skal tage et ansvar Refactoring er risikabel uden test Ændringer er dyre uden brug af refactoring Parprogrammering giver kollektivt ejerskab, vidensdeling og ensartede regler Man bør benytte alle elementerne Kilde: www.nordija.dk 58 29

Home Information System, email, kalender, opgaveliste, gui, web og db-server Hurtig udvikling parprogrammering, test, planning game, 37 timer, refactoring Fulgte med ændrede krav planning game, mindre releases, refactoring Afleverede til tiden planning game, mindre releases, integration Få fejl parprogrammering, 37 timer, refactoring, test Kilde: bestbrains.dk 59 Speakanet Kilde: speakanet.dk 60 30

Litteratur, bøger Kent Beck: Extreme Programming Explained: Embrace Change. Addison Wesley, 2000 Kent Beck & Martin Fowler: Planning Extreme Programming. Addison-Wesley, 2001 Martin Fowler: Refactoring. Improving the design of existing code. Addison Wesley, 1999 Ron Jeffries, Ann Anderson & Chet Hendrickson: Extreme Programming Installed. Addison-Wesley, 2001 William C. Wake: Extreme Programming Explored. Addison-Wesley, 2001 61 Litteratur, Agile metoder Coad, P: Feature-Driven Development. www.togethersoft.com/jmcu/chapter6.pdf Cockburn, A: Crystal Clear: A Human-Powered Methodology for Small Teams. Members.aol.com/humansandt/crystal/clear Highsmith, J: Adaptive Software Development. Dorset House, 2000. Schwaber, K: Scrum online: www.controlchaos.com Stapleton, J: DSDM Dynamic Systems Development Method. Addison-Wesley, 1997. www.dsdm.org 62 31

Litteratur, tidsskrifter Chrysler Goes to Extremes, by the C3 Team. Distributed Computing, october 1998. Jim Highsmith: Extreme Programming. e- business application delivery, feb 2000. Light Methodologies, redigeret af Ed Yourdon. Cutter IT-journal, nov 2000. The Great Methodologies Debate: Part 1 & 2. Cutter IT-journal, dec 2001 & jan 2002. Laurie A. Williams and Robert R. Kessler: All I really need to know about Pair-programming, I learned in kindergarten. Communication of the ACM, may 2000. 63 Net referencer www.extremeprogramming.org. God tutorial om XP /more.html har gode referencer videre, herunder gode artikler om emnet www.xprogramming.com. Samling af information og henvisninger, indeholder bl.a. JUnit www.cutter.com/ead/ead0002.pdf. Indholdsrig artikel om XP af Jim Highsmith www.refactoring.com v/martin Fowler, indeholder bl.a, et on-line katalog over refactorings computer.org/seweb/dynabook/whatis.html. Korte noter om XP (bl.a. af Kent Beck) samt tre artikler om XP fra IEEE Software, july/aug 2000. 64 32

Litteratur på www I extreme Programming Extreme Programming: A gentle introduction. Løbende opdatering, www.extremeprogramming.org XP Exchange. Løbende opdatering, www.xpexchange.net William Wake: Xploration. Løbende opdatering, www.xp123/xplor Martin Fowler: The New Methodology. www.martinfowler.com/articles Adrætte metoder (agile methods) Manifesto for Agile Software Development. www.agilealliance.org Bibliography for Agile Methodologies and Practices. collaboration.csc.ncsu.edu/agile/bibliography.htm Par programmering Laurie A. Williams and Richard L. Upchurch: In Support of Student Pair- Programming. www.csc.ncsu.edu/laurie. Laurie A. Williams et al: Strengthening the Case for Pair Programming. IEEE Software, jul/aug 2000. Værktøjer JUnit. www.junit.org Ant. jakarta.apache.org/ant JRefactory. jrefactory.sourceforge.net/chrisdown.html 65 Litteratur på www II Test Malcom Davis: Incremental development with Ant and Junit. 2000, www-4.ibm.com/software/developer/library/j-ant/index.html Martin Fowler: A UML Testing Framework. April 1999, Refactoring Catalog of Refactorings: www.refactoring.com/catalog Flere eksempler på www.xp123.com: Refactorings from Writing Efficient Programs Refactoring: An Example Refactoring: An Example, Extended From 0 to Composite (and Back Again) Simpel design Martin Fowler: Is Design Dead? www.martinfowler.com/articles Kodestandard http://www.horstmann.com/ccj/styleguide.html Løbende integration Martin Fowler: Continuous Integration. www.martinfowler.com/articles JUnit Mike Clark: JUnit Primer. www.clarkware.com/articles/junitprimer.html Diaspar Software Services: JUnit:: A Starter Guide. www.diasparsoftware.com/articles/junit/junitstarterguide.html 66 33