founda’ons of soware engineeringckaestne/17313/2017/20171102-agile.pdf · agile tradi.on that are...
TRANSCRIPT
Founda'onsofSo,wareEngineering
Process:AgilePrac.cesClaireLeGoues
1
Learninggoals• Defineagileasbothasetofitera.veprocessprac.cesandabusinessapproachforaligningcustomerneedswithdevelopment.
• Explainthemo.va.onbehindandreasonaboutthetradeoffspresentedbyseveralcommonagileprac.ces.
• Summarizebothscrumandextremeprogramming,andprovidemo.va.onandtradeoffsbehindtheirprac.ces.
• Iden.fyandjus.fytheprocessprac.cesfromtheagiletradi.onthataremostappropriateinagivenmoderndevelopmentprocess.
2
Whatproblemsarethereinso,waredevelopment?
3
AgileSo,wareDevelopmentIs…
Both:• asetofsoMwareengineeringbestprac.ces(allowingforrapiddeliveryofhighqualitysoMware)• abusinessapproach(aligningdevelopmentwithcustomerneedsandgoals)
4
BriefHistoryofAgile
5
1930s
Incep&onofItera&veandIncrementalDevelopment(IID):WalterShewhart(BellLabs,signaltransmission)proposedaseriesof“plan-do-study-act”(PDSA)cycles
2001
Introduc&onof“Agile”:TheAgileManifestowri[enby17soMwaredevelopers
XPreified:KentBeckreleasedExtremeProgrammingExplained:EmbraceChange
1999
Introduc&onofScrum:JeffSutherlandandKenSchwaberpresentedapaperdescribingtheScrummethodologyataconferenceworkshop
19951970
Introduc&onofthewaterfall:WinstonRoyce’sar.cleManagingtheDevelopmentofLargeSo<wareSystems
Agileinanutshell• Aprojectmanagementapproachthatseekstorespondtochangeandunpredictability,primarilyusingincremental,itera.veworksequences(oMencalled“sprints”).
• Also:acollec.onofprac.cestofacilitythatapproach.
• Allpredicatedontheprinciplesoutlinedin“TheManifestoforAgileSoMwareDevelopment.”
6
TheManifestoforAgileSo,wareDevelopment(2001)
7
Value
Individualsandinterac'ons over Processesandtools
Workingso,ware over Comprehensivedocumenta.on
Customercollabora'on over Contractnego.a.on
Respondingtochange over Followingaplan
TheTwelvePrinciplesofAgileSo,wareDevelopment
1. Projectsarebuiltaroundmo.vatedindividuals,whoshouldbetrusted
2. Face-to-faceconversa.onisthebestformofcommunica.on(co-loca.on)
3. Self-organizingteams
4. WorkingsoMwareisdeliveredfrequently(weeksratherthanmonths)
5. WorkingsoMwareistheprincipalmeasureofprogress
6. Sustainabledevelopment,abletomaintainaconstantpace
7. Con.nuousa[en.ontotechnicalexcellenceandgooddesign
8. Simplicity—theartofmaximizingtheamountofworknotdone—isessen.al
9. Customersa.sfac.onbyrapiddeliveryofusefulsoMware
10. Close,dailycoopera.onbetweenbusinesspeopleanddevelopers11. Welcomechangingrequirements,evenlateindevelopment
12. Regularadapta.ontochangingcircumstances
8
Individu
alsa
nd
interac'on
sCu
stom
er
collabo
ra'o
nWorking
so,ware
Respon
ding
tocha
nge
AgilePrac'ces• Backlogs(Productand
Sprint)• Behavior-driven
development(BDD)• Cross-func.onalteam• Con.nuousintegra.on(CI)• Domain-drivendesign
(DDD)• Informa.onradiators
(Kanbanboard,Taskboard,Burndownchart)
• Acceptancetest-drivendevelopment(ATDD)
• Itera.veandincrementaldevelopment(IID)
• Pairprogramming• Planningpoker• Refactoring• Scrummee.ngs
(Sprintplanning,Dailyscrum,Sprintreviewandretrospec.ve)
• Smallreleases• Simpledesign• Test-driven
development(TDD)• Agiletes.ng
• Timeboxing• Usecase• Userstory• Story-drivenmodeling• Retrospec.ve• On-sitecustomer• AgileModeling• 40-hourweeks• Shortdevelopment
cycles• Collec.veownership• Openworkspace• Velocitytracking• Etc.
9
40-hourWeeks
Noonecanworkasecondconsecu.veweekofover.me.Evenisolatedover.meusedtoofrequentlyisasignofdeeperproblemsthatmustbeaddressed.
10
PlanningPoker
11
Collec'veOwnership
Everyprogrammerimprovesanycodeanywhereinthesystematany.meiftheyseetheopportunity.
12
KanbanBoard
13
SimpleDesign
“Sayeverythingonceandonlyonce”:Ateverymoment,thedesignrunsallthetests,communicateseverythingtheprogrammerswanttocommunicate,containsnoduplicatecode,andhasthefewestpossibleclassesandmethods.
14
On-siteCustomer
Acustomersitswiththeteamfull-.me.
15
PairProgramming
16
Driver
Navigator
Shortdevelopmentcycle
ThesoMwaredevelopmentprocessisorganizedinawayinwhichthefullsoMwaredevelopmentcycle—fromdesignphasetoimplementa.onphasetotestanddeploymentphase—isperformedwithinashort.mespan,usuallyseveralmonthsorevenweeks.
17
SmallReleases
Thesystemisputintoproduc.oninafewmonths,beforesolvingthewholeproblem.NewreleasesaremadeoMen—anywherefromdailytomonthly.
18
Refactoringvs.Design
Thedesignofthesystemisevolvedthroughtransforma.onsoftheexis.ngdesignthatkeepallthetestsrunning.
19
Con'nuousIntegra'on(CI)
NewcodeisintegratedwiththecurrentsystemaMernomorethanafewhours.Whenintegra.ng,thesystemisbuiltfromscratchandalltestsmustpassorthechangesarediscarded.
20
Test-drivendevelopment
Programmerswriteunittestsminutebyminute.Thesetestsarecollectedandtheymustallruncorrectly.Customerswritefunc.onaltestsforthestoriesinanitera.on.
21
Openworkspace
22
SolvingSo,wareDevelopmentProblemswithAgilePrac'ces
23
ProbleminSo,wareDevelopment AgileMethodsThatMi'gateIt1. Requirementchangesduringthe
developmentprocessCloserela.onwithcustomer,shortdevelopmentcycle,smallreleases,planningpoker,Kanbanboard
2. Scopecreep Shortdevelopmentcycle,smallreleases,planningpoker
3. Architectureerosion Collec.veownership,pairprogramming4. Under-oroveres.ma.on(.meand
budget),s.ckingtotheplanCloserela.onwithcustomer,planningpoker,shortdevelopmentcycle,smallreleases
5. Bringinginnewdevelopers(.meandeffortfortheirtraining),steeplearningcurve
Collec.veownership(pros&cons),planningpoker
6. Changeofmanagementduringthedevelopmentprocess
Closerela.onshipwithcustomer
7. IntroducingnewbugsasyoudevelopsoMware
40-hourweek,collec.veownership,shortdevelopmentcycle,smallreleases,tests,CI,pairprogramming
Contd.
SolvingSo,wareDevelopmentProblemswithAgilePrac'ces*(contd.)
24
ProbleminSo,wareDevelopment AgileMethodsThatMi'gateIt8. Challengeofcommunica.on Closerela.onwithcustomer9. Developerturnover Collec.veownership(pros&cons),40-hourweek10. Integra.onissues Collec.veownership11. Difficultyoftrackingbugs Collec.veownership,shortdevelopmentcycle,
smallreleases,CI,tests12. Disagreementbetweendevelopers Closerela.onwithcustomer13. Schedulingproblems(globalteam) Closerela.onwithcustomer14. “Groupthink”(tendencyof
developerstoagreewithoneanother,commonthinkingamongthem),fearofhur.ngthefeelingsofotherdevelopers
Planningpoker,pairprogramming
15. Challengeswithintegra.ngwithlegacycode
Collec.veownership
*Thisisanexpanded,buts.llnotcomprehensivelist.
Scrum
25
Customer,team,scrummaster
26
ScrumProcess
27
ExtremeProgramming(XP)
28
Humanevolu'on
XPevolu'on
Programmingis4ac'vi'es
"Listening,Tes.ng,Coding,Designing.That'sallthereistosoMware.Anyonewhotellsyoudifferentissellingsomething.”–KentBeck(ExtremeProgrammingExplained)
29
ExtremeProgramming(XP)
30
XPValues
• Communica.on:Verbalcommunica.onisbe[erthanwri[encommunica.on.• Simplicity:Dothesimplestthingthatcouldpossiblywork.• Feedback:Getlotsoffeedback,espfromcustomer(“first-effort”prototype).• Courage:(somewhatunderspecified)
31
XPPrac'ces(subsetofAgile!)• TDD(test-firstapproach).• Planninggame:1-3weekitera.ons,oneitera.onata.me,customerdecideswhich
userstoriestouse• Wholeteam/on-sitecustomer:“customerspeakswithonevoice.”Customermaybea
wholeteam.• Smallreleases,withvaluablefunc.onality,toguardagainstunhappycustomers.• Systemmetaphorisasinglesharedstoryofhowitworks.(Sortoflikearchitecture)• Simplestthingthatpossiblyworks(codingfortoday)• Refactorallthe.me,becauseyoudon’thaveup-frontdesignbeforeprogramming.• Collec.veownership.Everyoneisresponsibleforeverything.Ifaprogrammersees
somethingshedoesn’tlike,shecangochangeit.Taskownershipisindividual.• Pairprogramming.cancodealonefornonproduc.oncodelikeprototypes• Con.nuousIntegra.on.Adayofdevelopmentatmost.• Sustainablepace.40hourworkweeks.• Codingstandards,Especiallysinceallcodecanchangeatall.mes.
32
Evolu'on,explora'on• Evolu.onary:codegrows/evolvesratherthanbeingplanned)– contrastwithRUP(itera.veandincremental)
• Norequirementsdocuments:programmersandthecustomerassembleanddiscussthecustomer'sneeds.– Compilestories,removeambiguityfromthestoriesbymakingsurethattheyaretestableandes.mable.– Orderbybusinessvalue.
33
Ques'ons/Conversa'on
• Casestudy:WhathappenedwithC3?• Tradeoffsofprac.ces:on-sitecustomer/co-locatedteam,TDD,userstories/planninggame,smallreleases,systemmetaphor,codefortoday,refactor,collec.veownership,pairprogramming,con.nuousintegra.on,sustainablepace,codingstandards.
34