- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Agile is a blossoming field in the technology and software development industry. When using Agile correctly, it allows you to move fast and efficiently, helping you to evolve your business needs in short iterations, allowing continuous change until the needs are transformed into a working product. CM provides the smooth road and controls needed to move and maintain such a fast pace.
Most professionals find the alignment of Configuration Management (CM) for Agile a challenge, however Adaptive CM for Agile doesn't mean throwing out the CM principles of identification, control, audit and…mehr
Andere Kunden interessierten sich auch für
- Scott AmblerAgile Modeling47,99 €
- Mike HolcombeRunning an Agile Software Development Project131,99 €
- Markus VölterModel-Driven Software Development87,99 €
- Neil MaidenScenarios, Stories, Use Cases60,99 €
- Joseph PhillipsSoftware Project Management for Dummies31,99 €
- James F. PetersSoftware Engineering303,99 €
- Martin LippertExtreme Programming in Action47,99 €
-
-
-
Agile is a blossoming field in the technology and software development industry. When using Agile correctly, it allows you to move fast and efficiently, helping you to evolve your business needs in short iterations, allowing continuous change until the needs are transformed into a working product. CM provides the smooth road and controls needed to move and maintain such a fast pace.
Most professionals find the alignment of Configuration Management (CM) for Agile a challenge, however Adaptive CM for Agile doesn't mean throwing out the CM principles of identification, control, audit and report. Instead it means that CM should be adapted to allow the lean nature of Agile. The question is how do we do this? Adapting Configuration Management for Agile Teams provides insightful concepts and concrete guidance on tailoring CM for Agile methods while maintaining CM principles and allowing minimal structure needed for Agile projects to continue to run fast.
Aimed at all levels of professionals in the Agile, Configuration Management, Project Management and Product Management field., this book will provide:
Introductory level information on both CM and Agile
Extensive and insightful information on how CM and Agile can work together.
Intermediate to advanced level information on how to adapt CM to best support projects using the Agile methodology.
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.
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Most professionals find the alignment of Configuration Management (CM) for Agile a challenge, however Adaptive CM for Agile doesn't mean throwing out the CM principles of identification, control, audit and report. Instead it means that CM should be adapted to allow the lean nature of Agile. The question is how do we do this? Adapting Configuration Management for Agile Teams provides insightful concepts and concrete guidance on tailoring CM for Agile methods while maintaining CM principles and allowing minimal structure needed for Agile projects to continue to run fast.
Aimed at all levels of professionals in the Agile, Configuration Management, Project Management and Product Management field., this book will provide:
Introductory level information on both CM and Agile
Extensive and insightful information on how CM and Agile can work together.
Intermediate to advanced level information on how to adapt CM to best support projects using the Agile methodology.
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.
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Produktdetails
- Produktdetails
- Verlag: Wiley & Sons
- Artikelnr. des Verlages: 14574663000
- 1. Auflage
- Seitenzahl: 304
- Erscheinungstermin: 1. Dezember 2009
- Englisch
- Abmessung: 238mm x 190mm x 24mm
- Gewicht: 564g
- ISBN-13: 9780470746639
- ISBN-10: 0470746637
- Artikelnr.: 26879312
- Herstellerkennzeichnung
- Libri GmbH
- Europaallee 1
- 36244 Bad Hersfeld
- 06621 890
- Verlag: Wiley & Sons
- Artikelnr. des Verlages: 14574663000
- 1. Auflage
- Seitenzahl: 304
- Erscheinungstermin: 1. Dezember 2009
- Englisch
- Abmessung: 238mm x 190mm x 24mm
- Gewicht: 564g
- ISBN-13: 9780470746639
- ISBN-10: 0470746637
- Artikelnr.: 26879312
- Herstellerkennzeichnung
- Libri GmbH
- Europaallee 1
- 36244 Bad Hersfeld
- 06621 890
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.
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 CM Primer 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.1.1 Scrum Roles 43
3.3.1.2 Scrum Practices and Artifacts 43
3.3.2 Extreme Programming (XP) 45
3.3.2.1 XP Roles 45
3.3.2.2 XP Practices and Rules 45
3.3.3 Other Methods that Support Agile 47
3.3.3.1 DSDM 47
3.3.3.2 Feature-Driven Development (FDD) 48
3.3.3.3 Agile Unified Process 48
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.3.1 Promoting a Dedicated Team 63
3.8.3.2 Ensure Continuous Customer Participation 63
3.8.3.3 Advocating for an Agile Coach 64
3.8.3.4 Promoting Co-Location 64
3.8.3.5 Introducing Agile Terminology 64
3.8.3.6 Promoting Agile Practices 65
3.8.3.7 Minimizing Project Reporting 65
3.8.3.8 Embracing Change 65
3.8.3.9 Praising Cancelled Projects 65
3.8.3.10 Removing Formality and Ceremony 66
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
4.4.2.1 Agile Perspective of CM Tools in General 78
4.4.2.2 Agile Perspective of CM Planning 79
4.4.2.3 Agile Perspective for Version Control 81
4.4.2.4 Agile Perspective for Build Management 81
4.4.2.5 Agile Perspective of Change Control 82
4.4.2.6 Agile Perspective of Problem Management 82
4.4.2.7 Agile Perspective of CM Audit 82
4.4.2.8 Agile Perspective of CM Reporting 83
4.4.2.9 Agile Perspective of Release Engineering 83
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.1.1 Owning CM Infrastructure on Premises 107
6.1.1.2 Renting CM Infrastructure in the Clouds 107
6.1.1.3 Sharing through CM Co-op Environments 108
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.2.1 Advantages of Smaller Chunks and Increments 116
6.3.2.2 Disadvantages of Smaller Chunks and Increments 117
6.3.3 Location, Location, Location 118
6.3.3.1 Co-location of Team 118
6.3.3.2 Co-location of Infrastructure 120
6.3.3.3 Co-location of Functionality 121
6.3.3.4 CM Considerations for Co-location and Agile 122
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.1.1 How ''Continuous'' Adds Stress and Load to CM 130
7.1.2 Right-Size Branching for Agile 131
7.1.2.1 ABCs of Branching 131
7.1.2.2 Private Workspace 135
7.1.2.3 Factors for an Agile Branching Strategy 138
7.1.2.4 Understanding Codelines 141
7.1.2.5 Branching Scenarios 142
7.1.2.6 Branching Challenges 145
7.1.2.7 Branching Summary 146
7.1.3 Shifting Responsibilities for Merge and Build Activities 147
7.1.4 Effective Merge for Agile 147
7.1.4.1 Merge Challenges 149
7.1.5 Effective Build for Agile 150
7.1.5.1 Build Levels 150
7.1.5.2 Build Automation for Continuous Integration 152
7.1.6 Continuous Testing with Teeth 153
7.1.6.1 Unit Testing 153
7.1.6.2 Smoke Testing 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.7.1 CM as Holistic Part of the Agile Team 165
7.2.7.2 Adjusting CM Responsibilities 166
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.2.1 Baseline Considerations for Agile 183
7.7.2.2 Baselines for Agile 183
7.7.3 Approaching Traceability for Agile 185
7.7.3.1 Traceability for the Right Reasons 185
7.7.3.2 Traceability Considerations for Agile 186
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.1.1 Trust or Verification 188
7.8.1.2 What Baselines to Audit Against 188
7.8.1.3 Challenges with BEUF Specifications 189
7.8.1.4 Audit after the Third Iteration 189
7.8.2 Approaching Audit for Agile 189
7.8.2.1 Automating Code to Build Baselines 189
7.8.2.2 Move the Process Audit to the Retrospective 190
7.8.2.3 Move the Baseline Audit to the Review 190
7.8.2.4 Giving Cadence to Industry Standards 190
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.3.1 Metric Building Blocks 196
7.10.3.2 Considering the Benefit of the Metric 196
7.10.3.3 Determining Effort to Collect the Metric 197
7.10.3.4 Assessing the Value of the Metric 198
7.10.3.5 Comparing amongst Potential Metrics 199
7.10.3.6 Monitoring of the Metric 199
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.7.1 Refactoring: Rename, Merge, and Patch Tracking 216
8.4.7.2 Transactions (a.k.a. Change Lists or Change Sets) 216
8.4.7.3 Change Packages 217
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.1.1 Version Control 230
9.3.1.2 Build Management 231
9.3.1.3 Change Control/Problem Management 231
9.3.1.4 Release Engineering 232
9.3.1.5 The CM Tool (or Tools) for You 232
9.3.2 Investigating Agile Tools 232
9.3.3 Evaluation Process 233
9.3.3.1 Establishing Evaluation Team 234
9.3.3.2 Determining Evaluation Level 235
9.3.3.3 Conducting a Research Evaluation 235
9.3.3.4 Conducting a Demo Evaluation 236
9.3.3.5 Conducting a Pilot/Full Evaluation 237
9.3.3.6 Considering a Request for Proposal (RfP) 238
9.3.3.7 Acquisition Process - Owning or Renting 240
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
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 CM Primer 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.1.1 Scrum Roles 43
3.3.1.2 Scrum Practices and Artifacts 43
3.3.2 Extreme Programming (XP) 45
3.3.2.1 XP Roles 45
3.3.2.2 XP Practices and Rules 45
3.3.3 Other Methods that Support Agile 47
3.3.3.1 DSDM 47
3.3.3.2 Feature-Driven Development (FDD) 48
3.3.3.3 Agile Unified Process 48
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.3.1 Promoting a Dedicated Team 63
3.8.3.2 Ensure Continuous Customer Participation 63
3.8.3.3 Advocating for an Agile Coach 64
3.8.3.4 Promoting Co-Location 64
3.8.3.5 Introducing Agile Terminology 64
3.8.3.6 Promoting Agile Practices 65
3.8.3.7 Minimizing Project Reporting 65
3.8.3.8 Embracing Change 65
3.8.3.9 Praising Cancelled Projects 65
3.8.3.10 Removing Formality and Ceremony 66
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
4.4.2.1 Agile Perspective of CM Tools in General 78
4.4.2.2 Agile Perspective of CM Planning 79
4.4.2.3 Agile Perspective for Version Control 81
4.4.2.4 Agile Perspective for Build Management 81
4.4.2.5 Agile Perspective of Change Control 82
4.4.2.6 Agile Perspective of Problem Management 82
4.4.2.7 Agile Perspective of CM Audit 82
4.4.2.8 Agile Perspective of CM Reporting 83
4.4.2.9 Agile Perspective of Release Engineering 83
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.1.1 Owning CM Infrastructure on Premises 107
6.1.1.2 Renting CM Infrastructure in the Clouds 107
6.1.1.3 Sharing through CM Co-op Environments 108
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.2.1 Advantages of Smaller Chunks and Increments 116
6.3.2.2 Disadvantages of Smaller Chunks and Increments 117
6.3.3 Location, Location, Location 118
6.3.3.1 Co-location of Team 118
6.3.3.2 Co-location of Infrastructure 120
6.3.3.3 Co-location of Functionality 121
6.3.3.4 CM Considerations for Co-location and Agile 122
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.1.1 How ''Continuous'' Adds Stress and Load to CM 130
7.1.2 Right-Size Branching for Agile 131
7.1.2.1 ABCs of Branching 131
7.1.2.2 Private Workspace 135
7.1.2.3 Factors for an Agile Branching Strategy 138
7.1.2.4 Understanding Codelines 141
7.1.2.5 Branching Scenarios 142
7.1.2.6 Branching Challenges 145
7.1.2.7 Branching Summary 146
7.1.3 Shifting Responsibilities for Merge and Build Activities 147
7.1.4 Effective Merge for Agile 147
7.1.4.1 Merge Challenges 149
7.1.5 Effective Build for Agile 150
7.1.5.1 Build Levels 150
7.1.5.2 Build Automation for Continuous Integration 152
7.1.6 Continuous Testing with Teeth 153
7.1.6.1 Unit Testing 153
7.1.6.2 Smoke Testing 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.7.1 CM as Holistic Part of the Agile Team 165
7.2.7.2 Adjusting CM Responsibilities 166
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.2.1 Baseline Considerations for Agile 183
7.7.2.2 Baselines for Agile 183
7.7.3 Approaching Traceability for Agile 185
7.7.3.1 Traceability for the Right Reasons 185
7.7.3.2 Traceability Considerations for Agile 186
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.1.1 Trust or Verification 188
7.8.1.2 What Baselines to Audit Against 188
7.8.1.3 Challenges with BEUF Specifications 189
7.8.1.4 Audit after the Third Iteration 189
7.8.2 Approaching Audit for Agile 189
7.8.2.1 Automating Code to Build Baselines 189
7.8.2.2 Move the Process Audit to the Retrospective 190
7.8.2.3 Move the Baseline Audit to the Review 190
7.8.2.4 Giving Cadence to Industry Standards 190
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.3.1 Metric Building Blocks 196
7.10.3.2 Considering the Benefit of the Metric 196
7.10.3.3 Determining Effort to Collect the Metric 197
7.10.3.4 Assessing the Value of the Metric 198
7.10.3.5 Comparing amongst Potential Metrics 199
7.10.3.6 Monitoring of the Metric 199
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.7.1 Refactoring: Rename, Merge, and Patch Tracking 216
8.4.7.2 Transactions (a.k.a. Change Lists or Change Sets) 216
8.4.7.3 Change Packages 217
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.1.1 Version Control 230
9.3.1.2 Build Management 231
9.3.1.3 Change Control/Problem Management 231
9.3.1.4 Release Engineering 232
9.3.1.5 The CM Tool (or Tools) for You 232
9.3.2 Investigating Agile Tools 232
9.3.3 Evaluation Process 233
9.3.3.1 Establishing Evaluation Team 234
9.3.3.2 Determining Evaluation Level 235
9.3.3.3 Conducting a Research Evaluation 235
9.3.3.4 Conducting a Demo Evaluation 236
9.3.3.5 Conducting a Pilot/Full Evaluation 237
9.3.3.6 Considering a Request for Proposal (RfP) 238
9.3.3.7 Acquisition Process - Owning or Renting 240
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
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 CM Primer 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.1.1 Scrum Roles 43
3.3.1.2 Scrum Practices and Artifacts 43
3.3.2 Extreme Programming (XP) 45
3.3.2.1 XP Roles 45
3.3.2.2 XP Practices and Rules 45
3.3.3 Other Methods that Support Agile 47
3.3.3.1 DSDM 47
3.3.3.2 Feature-Driven Development (FDD) 48
3.3.3.3 Agile Unified Process 48
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.3.1 Promoting a Dedicated Team 63
3.8.3.2 Ensure Continuous Customer Participation 63
3.8.3.3 Advocating for an Agile Coach 64
3.8.3.4 Promoting Co-Location 64
3.8.3.5 Introducing Agile Terminology 64
3.8.3.6 Promoting Agile Practices 65
3.8.3.7 Minimizing Project Reporting 65
3.8.3.8 Embracing Change 65
3.8.3.9 Praising Cancelled Projects 65
3.8.3.10 Removing Formality and Ceremony 66
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
4.4.2.1 Agile Perspective of CM Tools in General 78
4.4.2.2 Agile Perspective of CM Planning 79
4.4.2.3 Agile Perspective for Version Control 81
4.4.2.4 Agile Perspective for Build Management 81
4.4.2.5 Agile Perspective of Change Control 82
4.4.2.6 Agile Perspective of Problem Management 82
4.4.2.7 Agile Perspective of CM Audit 82
4.4.2.8 Agile Perspective of CM Reporting 83
4.4.2.9 Agile Perspective of Release Engineering 83
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.1.1 Owning CM Infrastructure on Premises 107
6.1.1.2 Renting CM Infrastructure in the Clouds 107
6.1.1.3 Sharing through CM Co-op Environments 108
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.2.1 Advantages of Smaller Chunks and Increments 116
6.3.2.2 Disadvantages of Smaller Chunks and Increments 117
6.3.3 Location, Location, Location 118
6.3.3.1 Co-location of Team 118
6.3.3.2 Co-location of Infrastructure 120
6.3.3.3 Co-location of Functionality 121
6.3.3.4 CM Considerations for Co-location and Agile 122
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.1.1 How ''Continuous'' Adds Stress and Load to CM 130
7.1.2 Right-Size Branching for Agile 131
7.1.2.1 ABCs of Branching 131
7.1.2.2 Private Workspace 135
7.1.2.3 Factors for an Agile Branching Strategy 138
7.1.2.4 Understanding Codelines 141
7.1.2.5 Branching Scenarios 142
7.1.2.6 Branching Challenges 145
7.1.2.7 Branching Summary 146
7.1.3 Shifting Responsibilities for Merge and Build Activities 147
7.1.4 Effective Merge for Agile 147
7.1.4.1 Merge Challenges 149
7.1.5 Effective Build for Agile 150
7.1.5.1 Build Levels 150
7.1.5.2 Build Automation for Continuous Integration 152
7.1.6 Continuous Testing with Teeth 153
7.1.6.1 Unit Testing 153
7.1.6.2 Smoke Testing 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.7.1 CM as Holistic Part of the Agile Team 165
7.2.7.2 Adjusting CM Responsibilities 166
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.2.1 Baseline Considerations for Agile 183
7.7.2.2 Baselines for Agile 183
7.7.3 Approaching Traceability for Agile 185
7.7.3.1 Traceability for the Right Reasons 185
7.7.3.2 Traceability Considerations for Agile 186
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.1.1 Trust or Verification 188
7.8.1.2 What Baselines to Audit Against 188
7.8.1.3 Challenges with BEUF Specifications 189
7.8.1.4 Audit after the Third Iteration 189
7.8.2 Approaching Audit for Agile 189
7.8.2.1 Automating Code to Build Baselines 189
7.8.2.2 Move the Process Audit to the Retrospective 190
7.8.2.3 Move the Baseline Audit to the Review 190
7.8.2.4 Giving Cadence to Industry Standards 190
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.3.1 Metric Building Blocks 196
7.10.3.2 Considering the Benefit of the Metric 196
7.10.3.3 Determining Effort to Collect the Metric 197
7.10.3.4 Assessing the Value of the Metric 198
7.10.3.5 Comparing amongst Potential Metrics 199
7.10.3.6 Monitoring of the Metric 199
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.7.1 Refactoring: Rename, Merge, and Patch Tracking 216
8.4.7.2 Transactions (a.k.a. Change Lists or Change Sets) 216
8.4.7.3 Change Packages 217
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.1.1 Version Control 230
9.3.1.2 Build Management 231
9.3.1.3 Change Control/Problem Management 231
9.3.1.4 Release Engineering 232
9.3.1.5 The CM Tool (or Tools) for You 232
9.3.2 Investigating Agile Tools 232
9.3.3 Evaluation Process 233
9.3.3.1 Establishing Evaluation Team 234
9.3.3.2 Determining Evaluation Level 235
9.3.3.3 Conducting a Research Evaluation 235
9.3.3.4 Conducting a Demo Evaluation 236
9.3.3.5 Conducting a Pilot/Full Evaluation 237
9.3.3.6 Considering a Request for Proposal (RfP) 238
9.3.3.7 Acquisition Process - Owning or Renting 240
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
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 CM Primer 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.1.1 Scrum Roles 43
3.3.1.2 Scrum Practices and Artifacts 43
3.3.2 Extreme Programming (XP) 45
3.3.2.1 XP Roles 45
3.3.2.2 XP Practices and Rules 45
3.3.3 Other Methods that Support Agile 47
3.3.3.1 DSDM 47
3.3.3.2 Feature-Driven Development (FDD) 48
3.3.3.3 Agile Unified Process 48
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.3.1 Promoting a Dedicated Team 63
3.8.3.2 Ensure Continuous Customer Participation 63
3.8.3.3 Advocating for an Agile Coach 64
3.8.3.4 Promoting Co-Location 64
3.8.3.5 Introducing Agile Terminology 64
3.8.3.6 Promoting Agile Practices 65
3.8.3.7 Minimizing Project Reporting 65
3.8.3.8 Embracing Change 65
3.8.3.9 Praising Cancelled Projects 65
3.8.3.10 Removing Formality and Ceremony 66
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
4.4.2.1 Agile Perspective of CM Tools in General 78
4.4.2.2 Agile Perspective of CM Planning 79
4.4.2.3 Agile Perspective for Version Control 81
4.4.2.4 Agile Perspective for Build Management 81
4.4.2.5 Agile Perspective of Change Control 82
4.4.2.6 Agile Perspective of Problem Management 82
4.4.2.7 Agile Perspective of CM Audit 82
4.4.2.8 Agile Perspective of CM Reporting 83
4.4.2.9 Agile Perspective of Release Engineering 83
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.1.1 Owning CM Infrastructure on Premises 107
6.1.1.2 Renting CM Infrastructure in the Clouds 107
6.1.1.3 Sharing through CM Co-op Environments 108
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.2.1 Advantages of Smaller Chunks and Increments 116
6.3.2.2 Disadvantages of Smaller Chunks and Increments 117
6.3.3 Location, Location, Location 118
6.3.3.1 Co-location of Team 118
6.3.3.2 Co-location of Infrastructure 120
6.3.3.3 Co-location of Functionality 121
6.3.3.4 CM Considerations for Co-location and Agile 122
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.1.1 How ''Continuous'' Adds Stress and Load to CM 130
7.1.2 Right-Size Branching for Agile 131
7.1.2.1 ABCs of Branching 131
7.1.2.2 Private Workspace 135
7.1.2.3 Factors for an Agile Branching Strategy 138
7.1.2.4 Understanding Codelines 141
7.1.2.5 Branching Scenarios 142
7.1.2.6 Branching Challenges 145
7.1.2.7 Branching Summary 146
7.1.3 Shifting Responsibilities for Merge and Build Activities 147
7.1.4 Effective Merge for Agile 147
7.1.4.1 Merge Challenges 149
7.1.5 Effective Build for Agile 150
7.1.5.1 Build Levels 150
7.1.5.2 Build Automation for Continuous Integration 152
7.1.6 Continuous Testing with Teeth 153
7.1.6.1 Unit Testing 153
7.1.6.2 Smoke Testing 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.7.1 CM as Holistic Part of the Agile Team 165
7.2.7.2 Adjusting CM Responsibilities 166
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.2.1 Baseline Considerations for Agile 183
7.7.2.2 Baselines for Agile 183
7.7.3 Approaching Traceability for Agile 185
7.7.3.1 Traceability for the Right Reasons 185
7.7.3.2 Traceability Considerations for Agile 186
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.1.1 Trust or Verification 188
7.8.1.2 What Baselines to Audit Against 188
7.8.1.3 Challenges with BEUF Specifications 189
7.8.1.4 Audit after the Third Iteration 189
7.8.2 Approaching Audit for Agile 189
7.8.2.1 Automating Code to Build Baselines 189
7.8.2.2 Move the Process Audit to the Retrospective 190
7.8.2.3 Move the Baseline Audit to the Review 190
7.8.2.4 Giving Cadence to Industry Standards 190
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.3.1 Metric Building Blocks 196
7.10.3.2 Considering the Benefit of the Metric 196
7.10.3.3 Determining Effort to Collect the Metric 197
7.10.3.4 Assessing the Value of the Metric 198
7.10.3.5 Comparing amongst Potential Metrics 199
7.10.3.6 Monitoring of the Metric 199
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.7.1 Refactoring: Rename, Merge, and Patch Tracking 216
8.4.7.2 Transactions (a.k.a. Change Lists or Change Sets) 216
8.4.7.3 Change Packages 217
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.1.1 Version Control 230
9.3.1.2 Build Management 231
9.3.1.3 Change Control/Problem Management 231
9.3.1.4 Release Engineering 232
9.3.1.5 The CM Tool (or Tools) for You 232
9.3.2 Investigating Agile Tools 232
9.3.3 Evaluation Process 233
9.3.3.1 Establishing Evaluation Team 234
9.3.3.2 Determining Evaluation Level 235
9.3.3.3 Conducting a Research Evaluation 235
9.3.3.4 Conducting a Demo Evaluation 236
9.3.3.5 Conducting a Pilot/Full Evaluation 237
9.3.3.6 Considering a Request for Proposal (RfP) 238
9.3.3.7 Acquisition Process - Owning or Renting 240
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