Adapting Configuration Management for Agile Teams provides very tangible approaches on how Configuration Management with its practices and infrastructure can be adapted and managed in order to directly benefit agile teams. Written by Mario E. Moreira, author of Software Configuration Management Implementation Roadmap, columnist for CM Crossroads online community and writer for the Agile Journal, this unique book provides concrete guidance on tailoring CM for Agile projects without sacrificing the principles of Configuration Management.
Author(s): Mario E. Moreira
Edition: 1
Year: 2009
Language: English
Pages: 302
Adapting Configuration Management for Agile Teams......Page 4
Contents......Page 10
Publisher’s Acknowledgements......Page 18
Preface......Page 20
Acknowledgements......Page 22
About the Author......Page 24
Contributor Biography......Page 26
1 Introduction: Racing with Confidence......Page 28
1.2 Who should Use this Book......Page 31
1.3 Navigation through this Book......Page 32
1.4 Value of this Book......Page 34
2 CM Primer......Page 36
2.1 Brief History of CM......Page 37
2.2 CM Values......Page 38
2.2.2 Control......Page 39
2.2.3 Audit......Page 41
2.3 CM Practices......Page 42
2.3.1 CM Planning Practice......Page 43
2.3.2 Version Control Practice......Page 45
2.3.3 Change Control Practice......Page 46
2.3.4 Build Management Practice......Page 47
2.3.6 Problem Management Practice......Page 48
2.3.7 Audit Practice......Page 49
2.3.8 Report Practice......Page 50
2.4.2 Benefits of CM to Development Staff......Page 51
2.5 CM Roles......Page 52
2.6.2 Thinking Integrity......Page 56
2.7 Relationship of CM to Culture, Methods, & Governance......Page 57
2.7.1 Relationship of Culture to CM......Page 58
2.7.3 Relationship of Methods to CM......Page 60
2.7.4 Avoiding Mistakes in CM Adoption......Page 61
2.8.2 CM websites......Page 62
3 Agile Primer......Page 64
3.1 Brief History of Agile......Page 67
3.2 Agile Values (a.k.a., Manifesto)......Page 68
3.3.1 Scrum......Page 69
3.3.1.2 Scrum Practices and Artifacts......Page 70
3.3.2.2 XP Practices and Rules......Page 72
3.3.3.1 DSDM......Page 74
3.3.3.3 Agile Unified Process......Page 75
3.4 Benefits of Agile......Page 76
3.5 Agile Personality Types......Page 77
3.5.2 Champion......Page 78
3.5.3 Workhorse......Page 79
3.5.5 Cowboy......Page 80
3.5.6 Deceiver......Page 81
3.6 Agile Roles......Page 82
3.6.2 Agile Project Manager/ScrumMaster......Page 83
3.6.4 Product Owner/Manager......Page 84
3.7 Agile Mindset......Page 85
3.7.4 Thinking Self-Empowered Team......Page 86
3.7.5 Thinking Collaboration......Page 87
3.8.1 Targeting the Sweet Spot......Page 88
3.8.2 Targeting the Product Level......Page 89
3.8.3.2 Ensure Continuous Customer Participation......Page 90
3.8.3.5 Introducing Agile Terminology......Page 91
3.8.3.9 Praising Cancelled Projects......Page 92
3.8.4 Determining Agile Readiness......Page 93
3.8.5 Measuring your Move Toward Agile......Page 94
3.8.6 Avoiding Mistakes in Agile Adoption......Page 95
3.9.1 Agile Books......Page 96
3.9.2 Agile Websites......Page 97
4 How CM and Agile Values Work Together......Page 98
4.1 Aligning Agile and CM Mindsets......Page 99
4.1.1 Challenges of Aligning the Minds......Page 100
4.2 Supporting Agile and CM Values without Sacrifice......Page 101
4.3 Value of Retrospective to CM......Page 102
4.4.1 Value Ranking of CM Practices by CM Professionals......Page 103
4.4.2 Value Rating of CM Practices by Agile Professionals......Page 104
4.4.2.1 Agile Perspective of CM Tools in General......Page 105
4.4.2.2 Agile Perspective of CM Planning......Page 106
4.4.2.4 Agile Perspective for Build Management......Page 108
4.4.2.7 Agile Perspective of CM Audit......Page 109
4.4.2.9 Agile Perspective of Release Engineering......Page 110
5 Approaching Infrastructure for Agile......Page 112
5.1 Guiding Principles for Approaching Infrastructure......Page 113
5.2.2 Agile Team as Customer of Infrastructure......Page 114
5.2.3 Architecture Envisioning......Page 115
5.3 Infrastructure Envisioning......Page 117
5.3.2 Thinking Iterations......Page 118
5.3.3 Tasks in Product Backlog or Infrastructure Backlog......Page 120
5.4 Infrastructure Refactoring......Page 121
5.4.2 Thinking in Iterations......Page 123
5.4.3 Tasks in Product Backlog or Infrastructure Backlog......Page 124
5.4.4 Reflections on Infrastructure Refactoring......Page 125
5.5 Owning on Premises or Renting in the Clouds......Page 126
5.5.1 Renting in the Clouds......Page 127
5.5.2 Owning Server and Renting Space (a.k.a., Co-location as a Service)......Page 129
5.5.3 Owning on Premises......Page 130
5.5.4 Reflections on Premises or in the Clouds......Page 131
6.1 CM Envisioning......Page 132
6.1.1 Strategizing for the Whole with Iteration 0......Page 133
6.1.1.2 Renting CM Infrastructure in the Clouds......Page 134
6.1.1.3 Sharing through CM Co-op Environments......Page 135
6.1.2 Implementing Incrementally......Page 136
6.2 CM Refactoring......Page 137
6.2.1 Iteration Planning or Iteration 0......Page 138
6.3 Automate, Automate, Automate for Agile......Page 139
6.3.1 Benefits of CM Automation to Agile......Page 141
6.3.2.1 Advantages of Smaller Chunks and Increments......Page 143
6.3.2.2 Disadvantages of Smaller Chunks and Increments......Page 144
6.3.3.1 Co-location of Team......Page 145
6.3.3.2 Co-location of Infrastructure......Page 147
6.3.3.3 Co-location of Functionality......Page 148
6.3.3.4 CM Considerations for Co-location and Agile......Page 149
7 Adapting CM Practices for Agile......Page 152
7.1 Adapting to Continuous Integration and Build......Page 153
7.1.1 The ‘‘Continuous’’ Cultural Shift......Page 155
7.1.1.1 How ‘‘Continuous’’ Adds Stress and Load to CM......Page 157
7.1.2.1 ABCs of Branching......Page 158
7.1.2.2 Private Workspace......Page 162
7.1.2.3 Factors for an Agile Branching Strategy......Page 165
7.1.2.4 Understanding Codelines......Page 168
7.1.2.5 Branching Scenarios......Page 169
7.1.2.6 Branching Challenges......Page 172
7.1.2.7 Branching Summary......Page 173
7.1.4 Effective Merge for Agile......Page 174
7.1.4.1 Merge Challenges......Page 176
7.1.5.1 Build Levels......Page 177
7.1.5.2 Build Automation for Continuous Integration......Page 179
7.1.6.2 Smoke Testing......Page 180
7.1.7 Reflections on Continuous Integration and Build......Page 181
7.2.1 Balancing Agile Values with Organization Needs......Page 182
7.2.2 Getting Started with Iteration 0......Page 183
7.2.3 Evolutionary CM Plan......Page 184
7.2.4 Reusable CM Plan......Page 185
7.2.5 Inherited CM Plan......Page 186
7.2.6 Types of CM Planning Formats......Page 187
7.2.7 Adapting CM Roles and Responsibilities for Agile......Page 191
7.2.7.1 CM as Holistic Part of the Agile Team......Page 192
7.2.7.2 Adjusting CM Responsibilities......Page 193
7.3 Adapting to Support Refactoring......Page 195
7.4 Adapting to Support Pair Programming......Page 197
7.5 Adapting to Support Test Driven Development (TDD)......Page 200
7.6.1 Distributed Analysis for Distributed Teams......Page 202
7.6.2 Code Access Approaches......Page 203
7.7 Adapting Change Control, Traceability, and Baselines......Page 207
7.7.1 Tracking Requirements or Stories and their Changes......Page 208
7.7.2 Adjusting the Notion of Baseline......Page 209
7.7.2.2 Baselines for Agile......Page 210
7.7.3.1 Traceability for the Right Reasons......Page 212
7.7.3.2 Traceability Considerations for Agile......Page 213
7.8 Adapting CM Audit......Page 214
7.8.1.2 What Baselines to Audit Against......Page 215
7.8.2.1 Automating Code to Build Baselines......Page 216
7.8.2.4 Giving Cadence to Industry Standards......Page 217
7.8.3 Reflections on CM Audit for Agile......Page 218
7.9.2 From Phase to Iteration......Page 219
7.9.5 Reflections on Problem Management for Agile......Page 220
7.10.1 Moving CM Report and Review into the Retrospective......Page 221
7.10.3 Constructing a Value-Added Metric......Page 222
7.10.3.2 Considering the Benefit of the Metric......Page 223
7.10.3.3 Determining Effort to Collect the Metric......Page 224
7.10.3.4 Assessing the Value of the Metric......Page 225
7.10.3.6 Monitoring of the Metric......Page 226
7.10.4 Waste and Examples of Value-Added CM Metrics......Page 227
7.10.5 Reflections on Adapting CM Report and Review for Agile......Page 229
8 CM Tool as a Strategic Agile Partner......Page 230
8.1 CM Tool Support for Software Development......Page 231
8.2.1 Whole Team......Page 235
8.2.4 Short Iterations......Page 236
8.2.8 Refactoring......Page 237
8.2.11 Traceability vs. Variance......Page 238
8.3.2 Outdated Tools......Page 239
8.4.3 Native Internet Support......Page 240
8.4.6 Codelines (a.k.a. Streams, Lines of Development)......Page 241
8.4.7 Change Tracking......Page 242
8.4.7.2 Transactions (a.k.a. Change Lists or Change Sets)......Page 243
8.4.7.3 Change Packages......Page 244
8.5 Integration with Your Agile Ecosystem......Page 245
8.5.3 Integration with the Test Automation Tool......Page 246
8.6 Conclusion......Page 247
9.1 Looking for Tools out there and in here......Page 248
9.1.1 Using a Vendor Tool Specific for Agile......Page 249
9.1.2 Using a Freeware Tool Specific for Agile......Page 251
9.1.3 Using a Homegrown Tool for Agile......Page 252
9.2 Levels of Technology Evaluation......Page 253
9.2.2 Demonstration Evaluation......Page 254
9.2.4 Considerations on Levels......Page 255
9.3 Perform a Technology Evaluation......Page 256
9.3.1.1 Version Control......Page 257
9.3.1.3 Change Control/Problem Management......Page 258
9.3.2 Investigating Agile Tools......Page 259
9.3.3 Evaluation Process......Page 260
9.3.3.1 Establishing Evaluation Team......Page 261
9.3.3.3 Conducting a Research Evaluation......Page 262
9.3.3.4 Conducting a Demo Evaluation......Page 263
9.3.3.5 Conducting a Pilot/Full Evaluation......Page 264
9.3.3.6 Considering a Request for Proposal (RfP)......Page 265
9.3.3.7 Acquisition Process – Owning or Renting......Page 267
10 Using CM Standards and Frameworks to Support Agile......Page 268
10.2 Compliance and IT Governance Requirements......Page 269
10.3 Communicating Your Approach to Senior Management......Page 270
10.4 Which Standards Should Be Considered?......Page 272
10.5.1 Continuous Integration without the Required Version ID......Page 274
10.6 How do Frameworks such as Cobit, ITIL, CMMI, and RUP support Agile?......Page 276
10.6.2 itSMF ITIL Framework......Page 277
10.6.4 Rational Unified Process (RUP) and Agile Unified Process (AUP)......Page 278
10.7.1 Change Control on Your Standards Tailoring......Page 279
10.8 Conclusion......Page 280
Bibliography......Page 282
Index......Page 286