Adapting Configuration Management for Agile Teams Balancing Sustainability and Speed Mario E. Moreira A John Wiley and Sons, Ltd., Publication Thiseditionfirstpublished2010 2010MarioE.Moreira Registeredoffice JohnWiley&SonsLtd,TheAtrium,SouthernGate,Chichester,WestSussex,PO198SQ,United Kingdom Fordetailsofourglobaleditorialoffices,forcustomerservicesandforinformationabouthowtoapply forpermissiontoreusethecopyrightmaterialinthisbookpleaseseeourwebsiteatwww.wiley.com. Therightoftheauthortobeidentifiedastheauthorofthisworkhasbeenassertedinaccordancewith theCopyright,DesignsandPatentsAct1988. Allrightsreserved.Nopartofthispublicationmaybereproduced,storedinaretrievalsystem,or transmitted,inanyformorbyanymeans,electronic,mechanical,photocopying,recordingor otherwise,exceptaspermittedbytheUKCopyright,DesignsandPatentsAct1988,withouttheprior permissionofthepublisher. Wileyalsopublishesitsbooksinavarietyofelectronicformats.Somecontentthatappearsinprint maynotbeavailableinelectronicbooks. Designationsusedbycompaniestodistinguishtheirproductsareoftenclaimedastrademarks.All brandnamesandproductnamesusedinthisbookaretradenames,servicemarks,trademarksor registeredtrademarksoftheirrespectiveowners.Thepublisherisnotassociatedwithanyproductor vendormentionedinthisbook.Thispublicationisdesignedtoprovideaccurateandauthoritative informationinregardtothesubjectmattercovered.Itissoldontheunderstandingthatthepublisher isnotengagedinrenderingprofessionalservices.Ifprofessionaladviceorotherexpertassistanceis required,theservicesofacompetentprofessionalshouldbesought. AcataloguerecordforthisbookisavailablefromtheBritishLibrary. ISBN:9780470746639 Typesetin11/13PalatinobyLaserwordsPrivateLtd,Chennai,India PrintedinGreatBritainbyBell&Bain,Glasgow Contents Publisher’sAcknowledgements xv Preface xvii Acknowledgements xix About theAuthor xxi Contributor Biography xxiii 1 Introduction: RacingwithConfidence 1 1.1 FocusofthisBook 4 1.2 WhoshouldUsethisBook 4 1.3 NavigationthroughthisBook 5 1.4 ValueofthisBook 7 2 CMPrimer 9 2.1 BriefHistoryofCM 10 2.2 CMValues 11 2.2.1 Identification 12 2.2.2 Control 12 2.2.3 Audit 14 2.2.4 Report 15 2.3 CMPractices 15 2.3.1 CMPlanningPractice 16 2.3.2 VersionControlPractice 18 2.3.3 ChangeControlPractice 19 2.3.4 BuildManagementPractice 20 2.3.5 ReleasePractice 21 2.3.6 ProblemManagementPractice 21 2.3.7 AuditPractice 22 2.3.8 ReportPractice 23 2.3.9 OtherPractices 24 vii viii Contents 2.4 BenefitsofCM 24 2.4.1 BenefitsofCMtoManagement 24 2.4.2 BenefitsofCMtoDevelopmentStaff 24 2.4.3 BenefitsofCMforCMandQA/TestPersonnel 25 2.5 CMRoles 25 2.6 CMMindset 29 2.6.1 ThinkingModular 29 2.6.2 ThinkingIntegrity 29 2.6.3 Thinking‘‘GetItDone’’ 30 2.6.4 ThinkingImprovement 30 2.7 RelationshipofCMtoCulture,Methods,&Governance 30 2.7.1 RelationshipofCulturetoCM 31 2.7.2 RelationshipofGovernancetoCM 33 2.7.3 RelationshipofMethodstoCM 33 2.7.4 AvoidingMistakesinCMAdoption 34 2.8 CMResourceGuide 35 2.8.1 CMBooks 35 2.8.2 CMwebsites 35 3 AgilePrimer 37 3.1 BriefHistoryofAgile 40 3.2 AgileValues(a.k.a.,Manifesto) 41 3.3 AgileMethods 42 3.3.1 Scrum 42 3.3.1.1 ScrumRoles 43 3.3.1.2 ScrumPracticesandArtifacts 43 3.3.2 ExtremeProgramming(XP) 45 3.3.2.1 XPRoles 45 3.3.2.2 XPPracticesandRules 45 3.3.3 OtherMethodsthatSupportAgile 47 3.3.3.1 DSDM 47 3.3.3.2 Feature-DrivenDevelopment(FDD) 48 3.3.3.3 AgileUnifiedProcess 48 3.4 BenefitsofAgile 49 3.5 AgilePersonalityTypes 50 3.5.1 Innovator 51 3.5.2 Champion 51 3.5.3 Workhorse 52 3.5.4 Bandwagon 53 3.5.5 Cowboy 53 3.5.6 Deceiver 54 3.5.7 Denier 55 3.5.8 SummarizingtheTypes 55 3.6 AgileRoles 55 3.6.1 AgileCoach 56 3.6.2 AgileProjectManager/ScrumMaster 56 3.6.3 AgileProjectTeam 57 Contents ix 3.6.4 ProductOwner/Manager 57 3.6.5 Customer 58 3.7 AgileMindset 58 3.7.1 ThinkingSmall 59 3.7.2 ThinkingBusinessValue 59 3.7.3 ThinkingContinuous 59 3.7.4 ThinkingSelf-EmpoweredTeam 59 3.7.5 ThinkingCollaboration 60 3.8 MovingtoanAgileCulture 61 3.8.1 TargetingtheSweetSpot 61 3.8.2 TargetingtheProductLevel 62 3.8.3 ActionsforAgileChange 63 3.8.3.1 PromotingaDedicatedTeam 63 3.8.3.2 EnsureContinuousCustomerParticipation 63 3.8.3.3 AdvocatingforanAgileCoach 64 3.8.3.4 PromotingCo-Location 64 3.8.3.5 IntroducingAgileTerminology 64 3.8.3.6 PromotingAgilePractices 65 3.8.3.7 MinimizingProjectReporting 65 3.8.3.8 EmbracingChange 65 3.8.3.9 PraisingCancelledProjects 65 3.8.3.10 RemovingFormalityandCeremony 66 3.8.4 DeterminingAgileReadiness 66 3.8.5 MeasuringyourMoveTowardAgile 67 3.8.6 AvoidingMistakesinAgileAdoption 68 3.9 AgileResourceGuide 69 3.9.1 AgileBooks 69 3.9.2 AgileWebsites 70 4 HowCMandAgileValuesWorkTogether 71 4.1 AligningAgileandCMMindsets 72 4.1.1 ChallengesofAligningtheMinds 73 4.2 SupportingAgileandCMValueswithoutSacrifice 74 4.3 ValueofRetrospectivetoCM 75 4.4 AgilePerspectiveofCMPractices 76 4.4.1 ValueRankingofCMPracticesbyCM Professionals 76 4.4.2 ValueRatingofCMPracticesbyAgileProfessionals 77 4.4.2.1 AgilePerspectiveofCMToolsinGeneral 78 4.4.2.2 AgilePerspectiveofCMPlanning 79 4.4.2.3 AgilePerspectiveforVersionControl 81 4.4.2.4 AgilePerspectiveforBuildManagement 81 4.4.2.5 AgilePerspectiveofChangeControl 82 4.4.2.6 AgilePerspectiveofProblemManagement 82 4.4.2.7 AgilePerspectiveofCMAudit 82 4.4.2.8 AgilePerspectiveofCMReporting 83 4.4.2.9 AgilePerspectiveofReleaseEngineering 83 x Contents 5 Approaching InfrastructureforAgile 85 5.1 GuidingPrinciplesforApproachingInfrastructure 86 5.2 ConsiderationsforApproachingInfrastructure 87 5.2.1 Iteration0 87 5.2.2 AgileTeamasCustomerofInfrastructure 87 5.2.3 ArchitectureEnvisioning 88 5.2.4 ToEnvisionortoRefactor 90 5.3 InfrastructureEnvisioning 90 5.3.1 InitiatinganIteration0attheBeginning 91 5.3.2 ThinkingIterations 91 5.3.3 TasksinProductBacklogorInfrastructure Backlog 93 5.3.4 ReflectionsonInfrastructureEnvisioning 94 5.4 InfrastructureRefactoring 94 5.4.1 IterationPlanningorIteration0 96 5.4.2 ThinkinginIterations 96 5.4.3 TasksinProductBacklogorInfrastructure Backlog 97 5.4.4 ReflectionsonInfrastructureRefactoring 98 5.5 OwningonPremisesorRentingintheClouds 99 5.5.1 RentingintheClouds 100 5.5.2 OwningServerandRentingSpace(a.k.a.,Co-location asaService) 102 5.5.3 OwningonPremises 103 5.5.4 ReflectionsonPremisesorintheClouds 104 6 ApproachingtheCMImplementation forAgile 105 6.1 CMEnvisioning 105 6.1.1 StrategizingfortheWholewithIteration0 106 6.1.1.1 OwningCMInfrastructureonPremises 107 6.1.1.2 RentingCMInfrastructureintheClouds 107 6.1.1.3 SharingthroughCMCo-opEnvironments 108 6.1.2 ImplementingIncrementally 109 6.1.3 CMinProductBacklogorCMBacklog 110 6.2 CMRefactoring 110 6.2.1 IterationPlanningorIteration0 111 6.2.2 ThinkinIterations 112 6.2.3 CMinProductBacklogorCMBacklog 112 6.3 Automate,Automate,AutomateforAgile 112 6.3.1 BenefitsofCMAutomationtoAgile 114 6.3.2 Chunks,Iterations,andIncrements 116 6.3.2.1 AdvantagesofSmallerChunksandIncrements 116 6.3.2.2 DisadvantagesofSmallerChunksandIncrements 117 6.3.3 Location,Location,Location 118 6.3.3.1 Co-locationofTeam 118 6.3.3.2 Co-locationofInfrastructure 120 6.3.3.3 Co-locationofFunctionality 121 6.3.3.4 CMConsiderationsforCo-locationandAgile 122 Contents xi 7 AdaptingCMPracticesforAgile 125 7.1 AdaptingtoContinuousIntegrationandBuild 126 7.1.1 The‘‘Continuous’’CulturalShift 128 7.1.1.1 How‘‘Continuous’’AddsStressandLoadtoCM 130 7.1.2 Right-SizeBranchingforAgile 131 7.1.2.1 ABCsofBranching 131 7.1.2.2 PrivateWorkspace 135 7.1.2.3 FactorsforanAgileBranchingStrategy 138 7.1.2.4 UnderstandingCodelines 141 7.1.2.5 BranchingScenarios 142 7.1.2.6 BranchingChallenges 145 7.1.2.7 BranchingSummary 146 7.1.3 ShiftingResponsibilitiesforMergeandBuildActivities 147 7.1.4 EffectiveMergeforAgile 147 7.1.4.1 MergeChallenges 149 7.1.5 EffectiveBuildforAgile 150 7.1.5.1 BuildLevels 150 7.1.5.2 BuildAutomationforContinuousIntegration 152 7.1.6 ContinuousTestingwithTeeth 153 7.1.6.1 UnitTesting 153 7.1.6.2 SmokeTesting 153 7.1.7 ReflectionsonContinuousIntegrationandBuild 154 7.2 AdaptingCMPlanning 155 7.2.1 BalancingAgileValueswithOrganizationNeeds 155 7.2.2 GettingStartedwithIteration0 156 7.2.3 EvolutionaryCMPlan 157 7.2.4 ReusableCMPlan 158 7.2.5 InheritedCMPlan 159 7.2.6 TypesofCMPlanningFormats 160 7.2.7 AdaptingCMRolesandResponsibilitiesforAgile 164 7.2.7.1 CMasHolisticPartoftheAgileTeam 165 7.2.7.2 AdjustingCMResponsibilities 166 7.2.8 ReflectionsonCMPlanningforAgile 168 7.3 AdaptingtoSupportRefactoring 168 7.3.1 ReflectionsonRefactoring 170 7.4 AdaptingtoSupportPairProgramming 170 7.4.1 ReflectionsonPairProgramming 173 7.5 AdaptingtoSupportTestDrivenDevelopment(TDD) 173 7.5.1 ReflectionsonTest-DrivenDevelopment 175 7.6 AdaptingtoSupportAgileDistributedTeams 175 7.6.1 DistributedAnalysisforDistributedTeams 175 7.6.2 CodeAccessApproaches 176 7.6.3 ReflectionsonApproachingAgileDistributedTeams 180 7.7 AdaptingChangeControl,Traceability,andBaselines 180 7.7.1 TrackingRequirementsorStoriesandtheirChanges 181 7.7.2 AdjustingtheNotionofBaseline 182 7.7.2.1 BaselineConsiderationsforAgile 183 7.7.2.2 BaselinesforAgile 183 xii Contents 7.7.3 ApproachingTraceabilityforAgile 185 7.7.3.1 TraceabilityfortheRightReasons 185 7.7.3.2 TraceabilityConsiderationsforAgile 186 7.7.4 ReflectionsonChangeControl,Traceability,andBaselines forAgile 187 7.8 AdaptingCMAudit 187 7.8.1 AgileConsiderationsforAudit 188 7.8.1.1 TrustorVerification 188 7.8.1.2 WhatBaselinestoAuditAgainst 188 7.8.1.3 ChallengeswithBEUFSpecifications 189 7.8.1.4 AuditaftertheThirdIteration 189 7.8.2 ApproachingAuditforAgile 189 7.8.2.1 AutomatingCodetoBuildBaselines 189 7.8.2.2 MovetheProcessAudittotheRetrospective 190 7.8.2.3 MovetheBaselineAudittotheReview 190 7.8.2.4 GivingCadencetoIndustryStandards 190 7.8.3 ReflectionsonCMAuditforAgile 191 7.9 AdaptingProblemManagement 192 7.9.1 EstablishingProblemManagementUpfront 192 7.9.2 FromPhasetoIteration 192 7.9.3 ProblemManagementforPairProgramming 193 7.9.4 ProblemManagementAutomation 193 7.9.5 ReflectionsonProblemManagementforAgile 193 7.10 AdaptingCMReportandReview 194 7.10.1 MovingCMReportandReviewintotheRetrospective 194 7.10.2 AdjustingCMMetricsthatHelpDeliverValue 195 7.10.3 ConstructingaValue-AddedMetric 195 7.10.3.1 MetricBuildingBlocks 196 7.10.3.2 ConsideringtheBenefitoftheMetric 196 7.10.3.3 DeterminingEfforttoCollecttheMetric 197 7.10.3.4 AssessingtheValueoftheMetric 198 7.10.3.5 ComparingamongstPotentialMetrics 199 7.10.3.6 MonitoringoftheMetric 199 7.10.4 WasteandExamplesofValue-AddedCMMetrics 200 7.10.5 ReflectionsonAdaptingCMReportandReviewforAgile 202 8 CMToolasaStrategicAgilePartner 203 8.1 CMToolSupportforSoftwareDevelopment 204 8.2 TheAgilePracticesthatImpactaCMTool 208 8.2.1 WholeTeam 208 8.2.2 Retrospectives 209 8.2.3 Backlog 209 8.2.4 ShortIterations 209 8.2.5 IterationReview 210 8.2.6 OnePieceFlow 210 8.2.7 ContinuousIntegration(CI) 210 8.2.8 Refactoring 210 8.2.9 CollectiveCodeOwnership 211 Contents xiii 8.2.10 FrequentReleases 211 8.2.11 Traceabilityvs.Variance 211 8.3 EvaluatingYourSituation 212 8.3.1 HomegrownTools 212 8.3.2 OutdatedTools 212 8.4 CMToolFeaturesthatFacilitateAgileDevelopment 213 8.4.1 HighPerformance 213 8.4.2 FastConfigurationCreation(a.k.a.BranchingandLabeling) 213 8.4.3 NativeInternetSupport 213 8.4.4 ReplicationforDistributedTeamContinuousIntegration 214 8.4.5 AllWriteableFiles 214 8.4.6 Codelines(a.k.a.Streams,LinesofDevelopment) 214 8.4.7 ChangeTracking 215 8.4.7.1 Refactoring:Rename,Merge,andPatchTracking 216 8.4.7.2 Transactions(a.k.a.ChangeListsorChangeSets) 216 8.4.7.3 ChangePackages 217 8.4.8 PrivateBranches 218 8.5 IntegrationwithYourAgileEcosystem 218 8.5.1 IntegrationwiththeAgileProjectManagementTool 219 8.5.2 IntegrationwiththeContinuousIntegrationandBuildTool 219 8.5.3 IntegrationwiththeTestAutomationTool 219 8.5.4 Configurationvs.Customization 220 8.6 Conclusion 220 9 Evaluating ToolsSuitedforAgile 221 9.1 LookingforToolsoutthereandinhere 221 9.1.1 UsingaVendorToolSpecificforAgile 222 9.1.2 UsingaFreewareToolSpecificforAgile 224 9.1.3 UsingaHomegrownToolforAgile 225 9.1.4 ToolClassificationComparison 226 9.2 LevelsofTechnologyEvaluation 226 9.2.1 ResearchEvaluation 227 9.2.2 DemonstrationEvaluation 227 9.2.3 Pilot/FullEvaluation 228 9.2.4 ConsiderationsonLevels 228 9.3 PerformaTechnologyEvaluation 229 9.3.1 InvestigatingaCMToolforYourNeeds 230 9.3.1.1 VersionControl 230 9.3.1.2 BuildManagement 231 9.3.1.3 ChangeControl/ProblemManagement 231 9.3.1.4 ReleaseEngineering 232 9.3.1.5 TheCMTool(orTools)forYou 232 9.3.2 InvestigatingAgileTools 232 9.3.3 EvaluationProcess 233 9.3.3.1 EstablishingEvaluationTeam 234 9.3.3.2 DeterminingEvaluationLevel 235 9.3.3.3 ConductingaResearchEvaluation 235 9.3.3.4 ConductingaDemoEvaluation 236 xiv Contents 9.3.3.5 ConductingaPilot/FullEvaluation 237 9.3.3.6 ConsideringaRequestforProposal(RfP) 238 9.3.3.7 AcquisitionProcess–OwningorRenting 240 10 UsingCMStandards andFrameworkstoSupport Agile 241 10.1 ImportanceofCM 242 10.2 ComplianceandITGovernanceRequirements 242 10.3 CommunicatingYourApproachtoSeniorManagement 243 10.4 WhichStandardsShouldBeConsidered? 245 10.5 ConfigurationManagementFunctionsthataremostEssential 247 10.5.1 ContinuousIntegrationwithouttheRequiredVersionID 247 10.6 HowdoFrameworkssuchasCobit,ITIL,CMMI,andRUP supportAgile? 249 10.6.1 ISACACobit 250 10.6.2 itSMFITILFramework 250 10.6.3 CMMIandAgile 251 10.6.4 RationalUnifiedProcess(RUP)andAgileUnifiedProcess (AUP) 251 10.7 AchievingSynergythroughHarmonizationandTailoring 252 10.7.1 ChangeControlonYourStandardsTailoring 252 10.7.2 OvercomingResistancetoChange 253 10.8 Conclusion 253 Bibliography 255 Index 259