HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
Integrate Agile ALM and DevOps to Build Better Software and Systems at Lower Cost
Agile Application Lifecycle Management (ALM) is a comprehensive development lifecycle that encompasses essential Agile principles and guides all activities needed to deliver successful software or other customized IT products and services. Flexible and robust, Agile ALM offers “just enough process” to get the job done efficiently and utilizes the DevOps focus on communication and collaboration to enhance interactions among all participants.
Agile Application Lifecycle Management offers practical advice and strategies for implementing Agile ALM in your complex environment. Leading experts Bob Aiello and Leslie Sachs show how to fully leverage Agile benefits without sacrificing structure, traceability, or repeatability.
You’ll find realistic guidance for managing source code, builds, environments, change control, releases, and more. The authors help you support Agile in organizations that maintain traditional practices, conventional ALM systems, or siloed, non-Agile teams. They also show how to scale Agile ALM across large or distributed teams and to environments ranging from cloud to mainframe.
Coverage includes
Today, you need maximum control, quality, and productivity, and this guide will help you achieve these capabilities by combining the best practices found in Agile ALM, Configuration Management (CM), and DevOps.
Download the sample pages (includes Chapter 4 and Index)
Preface xxiii
Acknowledgments xxxix
About the Authors xli
Part I: Defining the Process 1
Chapter 1: Introducing Application Lifecycle Management Methodology 3
1.1 Goals of Application Lifecycle Management 4
1.2 Why Is ALM Important? 5
1.3 Where Do I Start? 7
1.4 What Is Application Lifecycle Management? 8
1.5 Conclusion 26
References 26
Chapter 2: Defining the Software Development Process 27
2.1 Goals of Defining the Software Development Process 27
2.2 Why Is Defining the Software Development Process Important? 28
2.3 Where Do I Start? 29
2.4 Explaining the Software Development Lifecycle 29
2.5 Systems versus Software Development Lifecycle 32
2.6 Defining Requirements 32
2.7 Test-Driven Development 37
2.8 Designing Systems 37
2.9 Software Development 38
2.10 Testing 38
2.11 Continuous Integration 40
2.12 Continuous Delivery and Deployment 41
2.13 Defining Phases of the Lifecycle 41
2.14 Documentation Required 42
2.15 DevOps 43
2.16 Communicating with All Stakeholders 44
2.17 Production Support 45
2.18 Maintenance and Bugfixes 46
2.19 Lifecycle in the Beginning 46
2.20 Maintenance of the Lifecycle 47
2.21 Creating the Knowledge Base 47
2.22 Continuous Improvement 48
2.23 Conclusion 48
Chapter 3: Agile Application Lifecycle Management 49
3.1 Goals of Agile Application Lifecycle Management 49
3.2 Why Is Agile ALM Important? 50
3.3 Where Do I Start? 50
3.4 Understanding the Paradigm Shift 51
3.5 Rapid Iterative Development.52
3.6 Remember RAD? 53
3.7 Focus on 12 Agile Principles 54
3.8 Agile Manifesto 56
3.9 Fixed Timebox Sprints 57
3.10 Customer Collaboration 58
3.11 Requirements 59
3.12 Documentation 60
3.13 Conclusion 60
Chapter 4: Agile Process Maturity 61
4.1 Goals of Agile Process Maturity 62
4.2 Why Is Agile Process Improvement Important? 62
4.3 Where Do I Start? 63
4.4 Understanding Agile Process Maturity 64
4.5 Applying the Principles 69
4.6 Recognition by the Agile Community 70
4.7 Consensus within the Agile Community 71
4.8 What Agile Process Maturity Is Not 71
4.9 What Does an Immature Agile Process Look Like? 72
4.10 Problems with Agile 72
4.11 Waterfall Pitfalls73
4.12 The Items on the Right 75
4.13 Agile Coexisting with Non-Agile 75
4.14 IT Governance 75
4.14.1 Providing Transparency 76
4.15 ALM and the Agile Principles 76
4.16 Agile as a Repeatable Process.76
4.17 Deming and Quality Management 77
4.18 Agile Maturity in the Enterprise78
4.19 Continuous Process Improvement 79
4.20 Measuring the ALM79
4.21 Vendor Management 80
4.22 Hardware Development 80
4.23 Conclusion 81
Chapter 5: Rapid Iterative Development 83
5.1 Goals of Rapid Iterative Development 83
5.2 Why Is Rapid Iterative Development Important? 84
5.3 Where Do I Start? 84
5.4 The Development View 85
5.5 Controlled Isolation 85
5.6 Managing Complexity 86
5.7 Continuous Integration 86
5.8 It’s All About (Technology) Risk 87
5.9 Taming Technology 87
5.10 Designing Architecture 87
5.11 Conclusion 88
Further Reading 88
Part II: Automating the Process 89
Chapter 6: Build Engineering in the ALM 91
6.1 Goals of Build Engineering 91
6.2 Why Is Build Engineering Important? 92
6.3 Where Do I Start? 92
6.4 Understanding the Build..93
6.5 Automating the Application Build 94
6.6 Creating the Secure Trusted Base 95
6.7 Baselining 96
6.8 Version Identification 97
6.9 Compile Dependencies 98
6.10 Build in the ALM 98
6.11 The Independent Build 99
6.12 Creating a Build Robot 99
6.13 Building Quality In 100
6.14 Implementing Unit Tests 100
6.15 Code Scans 100
6.16 Instrumenting the Code..101
6.17 Build Tools 101
6.18 Conclusion 101
Chapter 7: Automating the Agile ALM 103
7.1 Goals of Automating the Agile ALM 103
7.2 Why Automating the ALM Is Important 103
7.3 Where Do I Start? 104
7.4 Tools 104
7.5 What Do I Do Today? 107
7.6 Automating the Workflow 108
7.7 Process Modeling Automation 108
7.8 Managing the Lifecycle with ALM 109
7.9 Broad Scope of ALM Tools 109
7.10 Achieving Seamless Integration 109
7.11 Managing Requirements of the ALM 110
7.12 Creating Epics and Stories 111
7.13 Systems and Application Design 111
7.14 Code Quality Instrumentation 111
7.15 Testing the Lifecycle 112
7.16 Test Case Management 112
7.17 Test-Driven Development 113
7.18 Environment Management 114
7.19 Supporting the CMDB 115
7.20 Driving DevOps 115
7.21 Supporting Operations 116
7.22 Help Desk 116
7.23 Service Desk 117
7.24 Incident Management 117
7.25 Problem Escalation 117
7.26 Project Management 118
7.27 Planning the PMO 118
7.28 Planning for Implementation119
7.29 Evaluating and Selecting the Right Tools 119
7.30 Defining the Use Case 119
7.31 Training Is Essential 120
7.32 Vendor Relationships 120
7.33 Keeping Tools Current 120
7.34 Conclusion 120
Chapter 8: Continuous Integration 121
8.1 Goals of Continuous Integration 121
8.2 Why Is Continuous Integration Important? 122
8.3 Where Do I Start? 123
8.4 Principles in Continuous Integration 123
8.5 Challenges of Integration 123
8.6 Commit Frequently 124
8.7 Rebase and Build Before Commit 125
8.8 Merge Nightmares 125
8.9 Smaller Units of Integration 126
8.10 Frequent Integration Is Better 126
8.11 Code Reviews 127
8.12 Establishing a Build Farm 127
8.13 Preflight Builds 129
8.14 Establishing the Build and Deploy Framework 129
8.15 Establishing Traceability 130
8.16 Better Communication 131
8.17 Finger and Blame 133
8.18 Is the Nightly Build Enough? 133
8.19 Selecting the Right Tools 134
8.20 Enterprise Continuous Integration 135
8.21 Training and Support 136
8.22 Deploy and Test 136
8.23 Tuning the Process 137
8.24 CI Leads to Continuous Deployment 138
8.25 Conclusion 138
Chapter 9: Continuous Delivery and Deployment 139
9.1 Goals of Continuous Deployment 139
9.2 Why Is Continuous Deployment Important? 140
9.3 Where Do I Start? 141
9.4 Establishing the Deployment Pipeline 141
9.5 Rapid Incremental Deployment.143
9.6 Minimize Risk 144
9.7 Many Small Deployments Better than a Big Bang 145
9.8 Practice the Deploy 146
9.9 Repeatable and Traceable 147
9.10 Workflow Automation 148
9.11 Ergonomics of Deployments 150
9.12 Verification and Validation of the Deployment 150
9.13 Deployment and the Trusted Base 151
9.14 Deploy to Environments that Mirror Production 152
9.15 Assess and Manage Risk 153
9.16 Dress Rehearsal and Walkthroughs 154
9.17 Imperfect Deployments 155
9.18 Always Have a Plan B 155
9.19 Smoke Test 156
9.20 Conclusion 157
Part III: Establishing Controls 159
Chapter 10: Change Management 161
10.1 Goals of Change Management 161
10.2 Why Is Change Management Important? 162
10.3 Where Do I Start? 163
10.4 Traceability for Compliance 164
10.5 Assess and Manage Risk 164
10.6 Communication 165
10.7 Change in Application Lifecycle Management 166
10.8 The Change Ecosystem 167
10.9 QA and Testing 167
10.10 Monitoring Events 168
10.11 Establishing the Command Center 169
10.12 When Incidents Occur 170
10.13 Problems and Escalation 172
10.14 The Change Management Process 173
10.15 Preapproved Changes 175
10.16 Establishing the Change Management Function 176
10.17 Change Control Topology 176
10.18 Coordinating across the Platform 180
10.19 Coordinating across the Enterprise 180
10.20 Beware of Fiefdoms181
10.21 Specialized Change Control 182
10.22 Vendor Change Control 182
10.23 SaaS Change Control 182
10.24 Continuous Process Improvement 183
10.25 Conclusion 184
Chapter 11: IT Operations 185
11.1 Goals of IT Operations 185
11.2 Why Is IT Operations Important? 186
11.3 Where Do I Start? 186
11.4 Monitoring the Environment 188
11.5 Production Support 191
11.6 Help Desk 192
11.7 IT Process Automation195
11.8 Workflow Automation 196
11.9 Communication Planning 197
11.10 Escalation 198
11.11 DevOps 200
11.12 Continuous Process Improvement 200
11.13 Utilizing Standards and Frameworks 201
11.14 Business and Product Management 205
11.15 Technical Management 206
11.16 IT Operations Management 206
11.17 IT Operations Controls 206
11.18 Application Management 208
11.19 Security Operations 208
11.20 Cloud-Based Operations 209
11.21 Service Desk 210
11.22 Staffing the Service Desk 211
11.23 Incidents and Problems 212
11.24 Knowledge Management 212
11.25 Conclusion 212
Chapter 12: DevOps 213
12.1 Goals of DevOps 213
12.2 Why Is DevOps Important? 214
12.3 Where Do I Start? 214
12.4 How Do I Implement DevOps? 215
12.5 Developers and Operations Conflict 216
12.6 Developers and Operations Collaboration 216
12.7 Need for Rapid Change 218
12.8 Knowledge Management 219
12.9 The Cross-Functional Team 220
12.10 Is DevOps Agile? 221
12.11 The DevOps Ecosystem 222
12.12 Moving the Process Upstream 223
12.13 DevOps in Dev 224
12.14 DevOps as Development 225
12.15 Dependency Control 227
12.16 Configuration Control 228
12.17 Configuration Audits 228
12.18 QA and DevOps 229
12.19 Information Security 229
12.20 Infrastructure as Code 229
12.21 Taming Complexity 230
12.22 Automate Everything 230
12.23 Disaster Recovery and Business Continuity 230
12.24 Continuous Process Improvement 231
12.25 Conclusion 231
Chapter 13: Retrospectives in the ALM 233
13.1 Goals of Retrospectives 234
13.2 Why Are Retrospectives Important? 234
13.3 Where Do I Start? 234
13.4 Retrospectives as Process Improvement 235
13.5 Which Mode Should You Use? 238
13.6 Perspective Is Essential 240
13.7 DevOps: The Cross-Functional View 241
13.8 Understanding the Use Case 241
13.9 Retrospectives as Leadership 241
13.10 Running the Meeting 242
13.11 Retrospectives Supporting ITIL 242
13.12 Retrospectives and Defect Triage 243
13.13 Retrospectives as Crisis Management 243
13.14 Supporting IT Governance 244
13.15 Audit and Regulatory Compliance 244
13.16 Retrospectives as Risk Management 244
13.17 Vendor Management 244
13.18 Too Much Process 245
13.19 Corporate Politics 245
13.20 Metrics and Measurement 245
13.21 Conclusion 246
Part IV: Scaling the Process 247
Chapter 14: Agile in a Non-Agile World 249
14.1 Goals of Hybrid Agile 249
14.2 Why Is Hybrid Agile Important? 250
14.3 Where Do I Start? 250
14.4 Pragmatic Choices 251
14.5 The Best of Both Worlds 251
14.6 Keeping It Agile 252
14.7 Establishing the Agile Pilot 253
14.8 Transitioning to Agile 253
14.9 Having a Baby 254
14.10 The Elephant in the Room 254
14.11 Are We There Yet? 255
14.12 Agile Disasters 255
14.13 Developer View 256
14.14 No Information Radiators Allowed 256
14.15 Waterfall Is Iterative, Too 256
14.16 Document Requirements as Much as Possible 257
14.17 Last Responsible Moment 257
14.18 Technology Risk 257
14.19 Understanding the Ecosystem 257
14.20 Mature Agile 258
14.21 Meeting IT Governance Requirements 258
14.22 Conclusion 259
Chapter 15: IT Governance 261
15.1 Goals of IT Governance 261
15.2 Why Is IT Governance Important? 262
15.3 Where Do I Start? 262
15.4 Senior Management Makes Decisions 263
15.5 Communicating Up 264
15.6 How Much Work Is Going On? 265
15.7 Identify and Manage Risk 266
15.8 Time and Resources 267
15.9 Scalability with More Resources 268
15.10 Delays Happen 268
15.11 The Helicopter Mom 269
15.12 I Told You That Already 269
15.13 Learning from Mistakes 270
15.14 Governance Ecosystem 270
15.15 Continuous Process Improvement 270
15.16 Governance and Compliance 271
15.17 Conclusion 271
Chapter 16: Audit and Regulatory Compliance 273
16.1 Goals of Audit and Regulatory Compliance 273
16.2 Why Are Audit and Regulatory Compliance Important? 274
16.3 Where Do I Start? 274
16.4 Compliance with What? 275
16.5 Establishing IT Controls 275
16.6 Internal Audit 276
16.7 External Audit 277
16.8 Federally Mandated Guidelines 278
16.9 Essential Compliance Requirements 283
16.10 Improving Quality and Productivity through Compliance 283
16.11 Conducting an Assessment 283
16.12 Conclusion 284
Chapter 17: Agile ALM in the Cloud 285
17.1 Goals of ALM in the Cloud 285
17.2 Why Is ALM in the Cloud Important? 286
17.3 Where Do I Start? 286
17.4 Understanding the Cloud 287
17.5 Developing in the Cloud 288
17.6 Change Management in the Cloud290
17.7 Managing the Lifecycle with ALM292
17.8 Cloud-based ALM Tools 292
17.9 Achieving Seamless Integrations 292
17.10 Iterative Development in the Cloud 293
17.11 Interfacing with Your Customers 293
17.12 Managing with SLAs.294
17.13 Managing Cloud Risk 294
17.14 Development and Test Environments for All 295
17.15 Environment Management 295
17.16 DevOps in the Cloud 296
17.17 Controlling Costs and Planning 296
17.18 Conclusion 297
Chapter 18: Agile ALM on the Mainframe 299
18.1 Goals of Agile ALM on the Mainframe 299
18.2 Why Is Agile ALM on the Mainframe Important? 299
18.3 Where Do I Start? 300
18.4 DevOps on the Mainframe 302
18.5 Conclusion 303
Chapter 19: Integration across the Enterprise 305
19.1 Goals of Integration across the Enterprise 305
19.2 Why Is Integration across the Enterprise Important? 305
19.3 Where Do I Start? 306
19.4 Multiplatform 307
19.5 Coordinating across Systems 307
19.6 Understanding the Interfaces 307
19.7 The Enterprise Ecosystem 308
19.8 Release Coordination 308
19.9 Conclusion 308
Chapter 20: QA and Testing in the ALM 309
20.1 Goals of QA and Testing 309
20.2 Why Are QA and Testing Important? 309
20.3 Where Do I Start? 310
20.4 Planning the Testing Process 311
20.5 Creating the Test Cases 313
20.6 Ensuring Quality 313
20.7 Ensuring Quality from the Beginning 313
20.8 Conclusion 314
Chapter 21: Personality and Agile ALM 315
21.1 Goals of Personality and the Agile ALM 315
21.2 Why Are Personality and Agile ALM Important? 315
21.3 Where Do I Start? 316
21.4 Group Dynamics 320
21.5 Intergroup Conflict 323
21.6 Managing Stress and Dysfunctional Behavior 329
21.7 Taking a Positive Approach 335
21.8 Conclusion 344
References 344
Further Reading 345
Chapter 22: The Future of ALM 347
22.1 Real-World ALM 347
22.2 ALM in Focus 348
22.3 Conclusion 349
Index 351