Rights Contact Login For More Details
- Wiley
More About This Title Adapting Configuration Management for Agile Teams- Balancing Sustainability and Speed
- English
English
- English
English
Mario Moreira has been working in the configuration management (CM) field since 1987, and the agile field since 1999. He's a certified ScrumMaster and author of Software Configuration Management Implementation Roadmap published by Wiley in 2004. Mario is also columnist/writer for CM Crossroads, online community and resource for configuration management with 40 articles written to date ranging from topics on CM, Agile requirements engineering to release management.
He has led various agile initiatives with his employer Fidelity Investments as well as leading an agile coaching forum, he is an experienced conference and webinar speaker.
- English
English
Publisher’s Acknowledgements xv
Preface xvii
Acknowledgements xix
About the Author xxi
Contributor Biography xxiii
1 Introduction: Racing with Confidence 1
1.1 Focus of this Book 4
1.2 Who should Use this Book 4
1.3 Navigation through this Book 5
1.4 Value of this Book 7
2 CMPrimer 9
2.1 Brief History of CM 10
2.2 CM Values 11
2.2.1 Identification 12
2.2.2 Control 12
2.2.3 Audit 14
2.2.4 Report 15
2.3 CM Practices 15
2.3.1 CM Planning Practice 16
2.3.2 Version Control Practice 18
2.3.3 Change Control Practice 19
2.3.4 Build Management Practice 20
2.3.5 Release Practice 21
2.3.6 Problem Management Practice 21
2.3.7 Audit Practice 22
2.3.8 Report Practice 23
2.3.9 Other Practices 24
2.4 Benefits of CM 24
2.4.1 Benefits of CM to Management 24
2.4.2 Benefits of CM to Development Staff 24
2.4.3 Benefits of CM for CM and QA/Test Personnel 25
2.5 CM Roles 25
2.6 CM Mindset 29
2.6.1 Thinking Modular 29
2.6.2 Thinking Integrity 29
2.6.3 Thinking ‘‘Get It Done’’ 30
2.6.4 Thinking Improvement 30
2.7 Relationship of CM to Culture, Methods, & Governance 30
2.7.1 Relationship of Culture to CM 31
2.7.2 Relationship of Governance to CM 33
2.7.3 Relationship of Methods to CM 33
2.7.4 Avoiding Mistakes in CM Adoption 34
2.8 CM Resource Guide 35
2.8.1 CM Books 35
2.8.2 CM websites 35
3 Agile Primer 37
3.1 Brief History of Agile 40
3.2 Agile Values (a.k.a., Manifesto) 41
3.3 Agile Methods 42
3.3.1 Scrum 42
3.3.2 Extreme Programming (XP) 45
3.3.3 Other Methods that Support Agile 47
3.4 Benefits of Agile 49
3.5 Agile Personality Types 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 Summarizing the Types 55
3.6 Agile Roles 55
3.6.1 Agile Coach 56
3.6.2 Agile Project Manager/ScrumMaster 56
3.6.3 Agile Project Team 57
3.6.4 Product Owner/Manager 57
3.6.5 Customer 58
3.7 Agile Mindset 58
3.7.1 Thinking Small 59
3.7.2 Thinking Business Value 59
3.7.3 Thinking Continuous 59
3.7.4 Thinking Self-Empowered Team 59
3.7.5 Thinking Collaboration 60
3.8 Moving to an Agile Culture 61
3.8.1 Targeting the Sweet Spot 61
3.8.2 Targeting the Product Level 62
3.8.3 Actions for Agile Change 63
3.8.4 Determining Agile Readiness 66
3.8.5 Measuring your Move Toward Agile 67
3.8.6 Avoiding Mistakes in Agile Adoption 68
3.9 Agile Resource Guide 69
3.9.1 Agile Books 69
3.9.2 Agile Websites 70
4 How CM and Agile Values Work Together 71
4.1 Aligning Agile and CM Mindsets 72
4.1.1 Challenges of Aligning the Minds 73
4.2 Supporting Agile and CM Values without Sacrifice 74
4.3 Value of Retrospective to CM 75
4.4 Agile Perspective of CM Practices 76
4.4.1 Value Ranking of CM Practices by CM Professionals 76
4.4.2 Value Rating of CM Practices by Agile Professionals 77
5 Approaching Infrastructure for Agile 85
5.1 Guiding Principles for Approaching Infrastructure 86
5.2 Considerations for Approaching Infrastructure 87
5.2.1 Iteration 0 87
5.2.2 Agile Team as Customer of Infrastructure 87
5.2.3 Architecture Envisioning 88
5.2.4 To Envision or to Refactor 90
5.3 Infrastructure Envisioning 90
5.3.1 Initiating an Iteration 0 at the Beginning 91
5.3.2 Thinking Iterations 91
5.3.3 Tasks in Product Backlog or Infrastructure Backlog 93
5.3.4 Reflections on Infrastructure Envisioning 94
5.4 Infrastructure Refactoring 94
5.4.1 Iteration Planning or Iteration 0 96
5.4.2 Thinking in Iterations 96
5.4.3 Tasks in Product Backlog or Infrastructure Backlog 97
5.4.4 Reflections on Infrastructure Refactoring 98
5.5 Owning on Premises or Renting in the Clouds 99
5.5.1 Renting in the Clouds 100
5.5.2 Owning Server and Renting Space (a.k.a., Co-location as a Service) 102
5.5.3 Owning on Premises 103
5.5.4 Reflections on Premises or in the Clouds 104
6 Approaching the CM Implementation for Agile 105
6.1 CM Envisioning 105
6.1.1 Strategizing for the Whole with Iteration 0 106
6.1.2 Implementing Incrementally 109
6.1.3 CM in Product Backlog or CM Backlog 110
6.2 CM Refactoring 110
6.2.1 Iteration Planning or Iteration 0 111
6.2.2 Think in Iterations 112
6.2.3 CM in Product Backlog or CM Backlog 112
6.3 Automate, Automate, Automate for Agile 112
6.3.1 Benefits of CM Automation to Agile 114
6.3.2 Chunks, Iterations, and Increments 116
6.3.3 Location, Location, Location 118
7 Adapting CM Practices for Agile 125
7.1 Adapting to Continuous Integration and Build 126
7.1.1 The ‘‘Continuous’’ Cultural Shift 128
7.1.2 Right-Size Branching for Agile 131
7.1.3 Shifting Responsibilities for Merge and Build Activities 147
7.1.4 Effective Merge for Agile 147
7.1.5 Effective Build for Agile 150
7.1.6 Continuous Testing with Teeth 153
7.1.7 Reflections on Continuous Integration and Build 154
7.2 Adapting CM Planning 155
7.2.1 Balancing Agile Values with Organization Needs 155
7.2.2 Getting Started with Iteration 0 156
7.2.3 Evolutionary CM Plan 157
7.2.4 Reusable CM Plan 158
7.2.5 Inherited CM Plan 159
7.2.6 Types of CM Planning Formats 160
7.2.7 Adapting CM Roles and Responsibilities for Agile 164
7.2.8 Reflections on CM Planning for Agile 168
7.3 Adapting to Support Refactoring 168
7.3.1 Reflections on Refactoring 170
7.4 Adapting to Support Pair Programming 170
7.4.1 Reflections on Pair Programming 173
7.5 Adapting to Support Test Driven Development (TDD) 173
7.5.1 Reflections on Test-Driven Development 175
7.6 Adapting to Support Agile Distributed Teams 175
7.6.1 Distributed Analysis for Distributed Teams 175
7.6.2 Code Access Approaches 176
7.6.3 Reflections on Approaching Agile Distributed Teams 180
7.7 Adapting Change Control, Traceability, and Baselines 180
7.7.1 Tracking Requirements or Stories and their Changes 181
7.7.2 Adjusting the Notion of Baseline 182
7.7.3 Approaching Traceability for Agile 185
7.7.4 Reflections on Change Control, Traceability, and Baselines for Agile 187
7.8 Adapting CM Audit 187
7.8.1 Agile Considerations for Audit 188
7.8.2 Approaching Audit for Agile 189
7.8.3 Reflections on CM Audit for Agile 191
7.9 Adapting Problem Management 192
7.9.1 Establishing Problem Management Upfront 192
7.9.2 From Phase to Iteration 192
7.9.3 Problem Management for Pair Programming 193
7.9.4 Problem Management Automation 193
7.9.5 Reflections on Problem Management for Agile 193
7.10 Adapting CM Report and Review 194
7.10.1 Moving CM Report and Review into the Retrospective 194
7.10.2 Adjusting CM Metrics that Help Deliver Value 195
7.10.3 Constructing a Value-Added Metric 195
7.10.4 Waste and Examples of Value-Added CM Metrics 200
7.10.5 Reflections on Adapting CM Report and Review for Agile 202
8 CM Tool as a Strategic Agile Partner 203
8.1 CM Tool Support for Software Development 204
8.2 The Agile Practices that Impact a CM Tool 208
8.2.1 Whole Team 208
8.2.2 Retrospectives 209
8.2.3 Backlog 209
8.2.4 Short Iterations 209
8.2.5 Iteration Review 210
8.2.6 One Piece Flow 210
8.2.7 Continuous Integration (CI) 210
8.2.8 Refactoring 210
8.2.9 Collective Code Ownership 211
8.2.10 Frequent Releases 211
8.2.11 Traceability vs. Variance 211
8.3 Evaluating Your Situation 212
8.3.1 Homegrown Tools 212
8.3.2 Outdated Tools 212
8.4 CM Tool Features that Facilitate Agile Development 213
8.4.1 High Performance 213
8.4.2 Fast Configuration Creation (a.k.a. Branching and Labeling) 213
8.4.3 Native Internet Support 213
8.4.4 Replication for Distributed Team Continuous Integration 214
8.4.5 All Writeable Files 214
8.4.6 Codelines (a.k.a. Streams, Lines of Development) 214
8.4.7 Change Tracking 215
8.4.8 Private Branches 218
8.5 Integration with Your Agile Ecosystem 218
8.5.1 Integration with the Agile Project Management Tool 219
8.5.2 Integration with the Continuous Integration and Build Tool 219
8.5.3 Integration with the Test Automation Tool 219
8.5.4 Configuration vs. Customization 220
8.6 Conclusion 220
9 Evaluating Tools Suited for Agile 221
9.1 Looking for Tools out there and in here 221
9.1.1 Using a Vendor Tool Specific for Agile 222
9.1.2 Using a Freeware Tool Specific for Agile 224
9.1.3 Using a Homegrown Tool for Agile 225
9.1.4 Tool Classification Comparison 226
9.2 Levels of Technology Evaluation 226
9.2.1 Research Evaluation 227
9.2.2 Demonstration Evaluation 227
9.2.3 Pilot/Full Evaluation 228
9.2.4 Considerations on Levels 228
9.3 Perform a Technology Evaluation 229
9.3.1 Investigating a CM Tool for Your Needs 230
9.3.2 Investigating Agile Tools 232
9.3.3 Evaluation Process 233
10 Using CM Standards and Frameworks to Support Agile 241
10.1 Importance of CM 242
10.2 Compliance and IT Governance Requirements 242
10.3 Communicating Your Approach to Senior Management 243
10.4 Which Standards Should Be Considered? 245
10.5 Configuration Management Functions that are most Essential 247
10.5.1 Continuous Integration without the Required Version ID 247
10.6 How do Frameworks such as Cobit, ITIL, CMMI, and RUP support Agile? 249
10.6.1 ISACA Cobit 250
10.6.2 itSMF ITIL Framework 250
10.6.3 CMMI and Agile 251
10.6.4 Rational Unified Process (RUP) and Agile Unified Process (AUP) 251
10.7 Achieving Synergy through Harmonization and Tailoring 252
10.7.1 Change Control on Your Standards Tailoring 252
10.7.2 Overcoming Resistance to Change 253
10.8 Conclusion 253
Bibliography 255
Index 259