Book description
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
Understanding key concepts underlying modern application and system lifecycles
Creating your best processes for developing your most complex software and systems
Automating build engineering, continuous integration, and continuous delivery/deployment
Enforcing Agile ALM controls without compromising productivity
Creating effective IT operations that align with Agile ALM processes
Gaining more value from testing and retrospectives
Making ALM work in the cloud, and across the enterprise
Preparing for the future of Agile ALM
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.
Table of contents
- About This E-Book
- Title Page
- Copyright Page
- Dedication Page
- Contents
- Preface
- Acknowledgments
- About the Authors
-
Part I: Defining the Process
-
Chapter 1. Introducing Application Lifecycle Management Methodology
- 1.1 Goals of Application Lifecycle Management
- 1.2 Why Is ALM Important?
- 1.3 Where Do I Start?
-
1.4 What Is Application Lifecycle Management?
- 1.4.1 Remember the SDLC?
- 1.4.2 Business Focus
- 1.4.3 Agile or Not?
- 1.4.4 Mature Process or Fluid?
- 1.4.5 Rapid Iterative Development
- 1.4.6 Core Configuration Management Best Practices
- 1.4.7 Automation
- 1.4.8 Continuous Integration
- 1.4.9 Continuous Deployment
- 1.4.10 Change Management
- 1.4.11 IT Operations
- 1.4.12 DevOps
- 1.4.13 Retrospectives
- 1.4.14 IT Governance
- 1.4.15 Audit and Regulatory Compliance
- 1.4.16 ALM and the Cloud
- 1.4.17 Mainframe
- 1.4.18 Integration across the Enterprise
- 1.4.19 Quality Assurance and Testing
- 1.4.20 Role of Personality
- 1.5 Conclusion
- References
-
Chapter 2. Defining the Software Development Process
- 2.1 Goals of Defining the Software Development Process
- 2.2 Why Is Defining the Software Development Process Important?
- 2.3 Where Do I Start?
- 2.4 Explaining the Software Development Lifecycle
- 2.5 Systems versus Software Development Lifecycle
- 2.6 Defining Requirements
- 2.7 Test-Driven Development
- 2.8 Designing Systems
- 2.9 Software Development
- 2.10 Testing
- 2.11 Continuous Integration
- 2.12 Continuous Delivery and Deployment
- 2.13 Defining Phases of the Lifecycle
- 2.14 Documentation Required
- 2.15 DevOps
- 2.16 Communicating with All Stakeholders
- 2.17 Production Support
- 2.18 Maintenance and Bugfixes
- 2.19 Lifecycle in the Beginning
- 2.20 Maintenance of the Lifecycle
- 2.21 Creating the Knowledge Base
- 2.22 Continuous Improvement
- 2.23 Conclusion
-
Chapter 3. Agile Application Lifecycle Management
- 3.1 Goals of Agile Application Lifecycle Management
- 3.2 Why Is Agile ALM Important?
- 3.3 Where Do I Start?
- 3.4 Understanding the Paradigm Shift
- 3.5 Rapid Iterative Development
- 3.6 Remember RAD?
- 3.7 Focus on 12 Agile Principles
- 3.8 Agile Manifesto
- 3.9 Fixed Timebox Sprints
- 3.10 Customer Collaboration
- 3.11 Requirements
- 3.12 Documentation
- 3.13 Conclusion
-
Chapter 4. Agile Process Maturity
- 4.1 Goals of Agile Process Maturity
- 4.2 Why Is Agile Process Improvement Important?
- 4.3 Where Do I Start?
-
4.4 Understanding Agile Process Maturity
- 4.4.1 Adherence to the Principles
- 4.4.2 Repeatable Process
- 4.4.3 Scalability (Scrum of Scrums)
- 4.4.4 Comprehensive (Items on the Right)
- 4.4.5 Transparency and Traceability
- 4.4.6 IT Governance
- 4.4.7 Coexistence with Non-agile Projects
- 4.4.8 Harmonization with Standards and Frameworks
- 4.4.9 Following a Plan
- 4.4.10 Continuous Process Improvement
- 4.5 Applying the Principles
- 4.6 Recognition by the Agile Community
- 4.7 Consensus within the Agile Community
- 4.8 What Agile Process Maturity Is Not
- 4.9 What Does an Immature Agile Process Look Like?
- 4.10 Problems with Agile
- 4.11 Waterfall Pitfalls
- 4.12 The Items on the Right
- 4.13 Agile Coexisting with Non-Agile
- 4.14 IT Governance
- 4.15 ALM and the Agile Principles
- 4.16 Agile as a Repeatable Process
- 4.17 Deming and Quality Management
- 4.18 Agile Maturity in the Enterprise
- 4.19 Continuous Process Improvement
- 4.20 Measuring the ALM
- 4.21 Vendor Management
- 4.22 Hardware Development
- 4.23 Conclusion
-
Chapter 5. Rapid Iterative Development
- 5.1 Goals of Rapid Iterative Development
- 5.2 Why Is Rapid Iterative Development Important?
- 5.3 Where Do I Start?
- 5.4 The Development View
- 5.5 Controlled Isolation
- 5.6 Managing Complexity
- 5.7 Continuous Integration
- 5.8 It’s All About (Technology) Risk
- 5.9 Taming Technology
- 5.10 Designing Architecture
- 5.11 Conclusion
- Further Reading
-
Chapter 1. Introducing Application Lifecycle Management Methodology
-
Part II: Automating the Process
-
Chapter 6. Build Engineering in the ALM
- 6.1 Goals of Build Engineering
- 6.2 Why Is Build Engineering Important?
- 6.3 Where Do I Start?
- 6.4 Understanding the Build
- 6.5 Automating the Application Build
- 6.6 Creating the Secure Trusted Base
- 6.7 Baselining
- 6.8 Version Identification
- 6.9 Compile Dependencies
- 6.10 Build in the ALM
- 6.11 The Independent Build
- 6.12 Creating a Build Robot
- 6.13 Building Quality In
- 6.14 Implementing Unit Tests
- 6.15 Code Scans
- 6.16 Instrumenting the Code
- 6.17 Build Tools
- 6.18 Conclusion
-
Chapter 7. Automating the Agile ALM
- 7.1 Goals of Automating the Agile ALM
- 7.2 Why Automating the ALM Is Important
- 7.3 Where Do I Start?
- 7.4 Tools
- 7.5 What Do I Do Today?
- 7.6 Automating the Workflow
- 7.7 Process Modeling Automation
- 7.8 Managing the Lifecycle with ALM
- 7.9 Broad Scope of ALM Tools
- 7.10 Achieving Seamless Integration
- 7.11 Managing Requirements of the ALM
- 7.12 Creating Epics and Stories
- 7.13 Systems and Application Design
- 7.14 Code Quality Instrumentation
- 7.15 Testing the Lifecycle
- 7.16 Test Case Management
- 7.17 Test-Driven Development
- 7.18 Environment Management
- 7.19 Supporting the CMDB
- 7.20 Driving DevOps
- 7.21 Supporting Operations
- 7.22 Help Desk
- 7.23 Service Desk
- 7.24 Incident Management
- 7.25 Problem Escalation
- 7.26 Project Management
- 7.27 Planning the PMO
- 7.28 Planning for Implementation
- 7.29 Evaluating and Selecting the Right Tools
- 7.30 Defining the Use Case
- 7.31 Training Is Essential
- 7.32 Vendor Relationships
- 7.33 Keeping Tools Current
- 7.34 Conclusion
-
Chapter 8. Continuous Integration
- 8.1 Goals of Continuous Integration
- 8.2 Why Is Continuous Integration Important?
- 8.3 Where Do I Start?
- 8.4 Principles in Continuous Integration
- 8.5 Challenges of Integration
- 8.6 Commit Frequently
- 8.7 Rebase and Build Before Commit
- 8.8 Merge Nightmares
- 8.9 Smaller Units of Integration
- 8.10 Frequent Integration Is Better
- 8.11 Code Reviews
- 8.12 Establishing a Build Farm
- 8.13 Preflight Builds
- 8.14 Establishing the Build and Deploy Framework
- 8.15 Establishing Traceability
- 8.16 Better Communication
- 8.17 Finger and Blame
- 8.18 Is the Nightly Build Enough?
- 8.19 Selecting the Right Tools
- 8.20 Enterprise Continuous Integration
- 8.21 Training and Support
- 8.22 Deploy and Test
- 8.23 Tuning the Process
- 8.24 CI Leads to Continuous Deployment
- 8.25 Conclusion
-
Chapter 9. Continuous Delivery and Deployment
- 9.1 Goals of Continuous Deployment
- 9.2 Why Is Continuous Deployment Important?
- 9.3 Where Do I Start?
- 9.4 Establishing the Deployment Pipeline
- 9.5 Rapid Incremental Deployment
- 9.6 Minimize Risk
- 9.7 Many Small Deployments Better than a Big Bang
- 9.8 Practice the Deploy
- 9.9 Repeatable and Traceable
- 9.10 Workflow Automation
- 9.11 Ergonomics of Deployments
- 9.12 Verification and Validation of the Deployment
- 9.13 Deployment and the Trusted Base
- 9.14 Deploy to Environments that Mirror Production
- 9.15 Assess and Manage Risk
- 9.16 Dress Rehearsal and Walkthroughs
- 9.17 Imperfect Deployments
- 9.18 Always Have a Plan B
- 9.19 Smoke Test
- 9.20 Conclusion
-
Chapter 6. Build Engineering in the ALM
-
Part III: Establishing Controls
-
Chapter 10. Change Management
- 10.1 Goals of Change Management
- 10.2 Why Is Change Management Important?
- 10.3 Where Do I Start?
- 10.4 Traceability for Compliance
- 10.5 Assess and Manage Risk
- 10.6 Communication
- 10.7 Change in Application Lifecycle Management
- 10.8 The Change Ecosystem
- 10.9 QA and Testing
- 10.10 Monitoring Events
- 10.11 Establishing the Command Center
- 10.12 When Incidents Occur
- 10.13 Problems and Escalation
- 10.14 The Change Management Process
- 10.15 Preapproved Changes
- 10.16 Establishing the Change Management Function
- 10.17 Change Control Topology
- 10.18 Coordinating across the Platform
- 10.19 Coordinating across the Enterprise
- 10.20 Beware of Fiefdoms
- 10.21 Specialized Change Control
- 10.22 Vendor Change Control
- 10.23 SaaS Change Control
- 10.24 Continuous Process Improvement
- 10.25 Conclusion
-
Chapter 11. IT Operations
- 11.1 Goals of IT Operations
- 11.2 Why Is IT Operations Important?
- 11.3 Where Do I Start?
- 11.4 Monitoring the Environment
- 11.5 Production Support
- 11.6 Help Desk
- 11.7 IT Process Automation
- 11.8 Workflow Automation
- 11.9 Communication Planning
- 11.10 Escalation
- 11.11 DevOps
- 11.12 Continuous Process Improvement
- 11.13 Utilizing Standards and Frameworks
- 11.14 Business and Product Management
- 11.15 Technical Management
- 11.16 IT Operations Management
- 11.17 IT Operations Controls
- 11.18 Application Management
- 11.19 Security Operations
- 11.20 Cloud-Based Operations
- 11.21 Service Desk
- 11.22 Staffing the Service Desk
- 11.23 Incidents and Problems
- 11.24 Knowledge Management
- 11.25 Conclusion
-
Chapter 12. DevOps
- 12.1 Goals of DevOps
- 12.2 Why Is DevOps Important?
- 12.3 Where Do I Start?
- 12.4 How Do I Implement DevOps?
- 12.5 Developers and Operations Conflict
- 12.6 Developers and Operations Collaboration
- 12.7 Need for Rapid Change
- 12.8 Knowledge Management
- 12.9 The Cross-Functional Team
- 12.10 Is DevOps Agile?
- 12.11 The DevOps Ecosystem
- 12.12 Moving the Process Upstream
- 12.13 DevOps in Dev
- 12.14 DevOps as Development
- 12.15 Dependency Control
- 12.16 Configuration Control
- 12.17 Configuration Audits
- 12.18 QA and DevOps
- 12.19 Information Security
- 12.20 Infrastructure as Code
- 12.21 Taming Complexity
- 12.22 Automate Everything
- 12.23 Disaster Recovery and Business Continuity
- 12.24 Continuous Process Improvement
- 12.25 Conclusion
-
Chapter 13. Retrospectives in the ALM
- 13.1 Goals of Retrospectives
- 13.2 Why Are Retrospectives Important?
- 13.3 Where Do I Start?
- 13.4 Retrospectives as Process Improvement
- 13.5 Which Mode Should You Use?
- 13.6 Perspective Is Essential
- 13.7 DevOps: The Cross-Functional View
- 13.8 Understanding the Use Case
- 13.9 Retrospectives as Leadership
- 13.10 Running the Meeting
- 13.11 Retrospectives Supporting ITIL
- 13.12 Retrospectives and Defect Triage
- 13.13 Retrospectives as Crisis Management
- 13.14 Supporting IT Governance
- 13.15 Audit and Regulatory Compliance
- 13.16 Retrospectives as Risk Management
- 13.17 Vendor Management
- 13.18 Too Much Process
- 13.19 Corporate Politics
- 13.20 Metrics and Measurement
- 13.21 Conclusion
-
Chapter 10. Change Management
-
Part IV: Scaling the Process
-
Chapter 14. Agile in a Non-Agile World
- 14.1 Goals of Hybrid Agile
- 14.2 Why Is Hybrid Agile Important?
- 14.3 Where Do I Start?
- 14.4 Pragmatic Choices
- 14.5 The Best of Both Worlds
- 14.6 Keeping It Agile
- 14.7 Establishing the Agile Pilot
- 14.8 Transitioning to Agile
- 14.9 Having a Baby
- 14.10 The Elephant in the Room
- 14.11 Are We There Yet?
- 14.12 Agile Disasters
- 14.13 Developer View
- 14.14 No Information Radiators Allowed
- 14.15 Waterfall Is Iterative, Too
- 14.16 Document Requirements as Much as Possible
- 14.17 Last Responsible Moment
- 14.18 Technology Risk
- 14.19 Understanding the Ecosystem
- 14.20 Mature Agile
- 14.21 Meeting IT Governance Requirements
- 14.22 Conclusion
-
Chapter 15. IT Governance
- 15.1 Goals of IT Governance
- 15.2 Why Is IT Governance Important?
- 15.3 Where Do I Start?
- 15.4 Senior Management Makes Decisions
- 15.5 Communicating Up
- 15.6 How Much Work Is Going On?
- 15.7 Identify and Manage Risk
- 15.8 Time and Resources
- 15.9 Scalability with More Resources
- 15.10 Delays Happen
- 15.11 The Helicopter Mom
- 15.12 I Told You That Already
- 15.13 Learning from Mistakes
- 15.14 Governance Ecosystem
- 15.15 Continuous Process Improvement
- 15.16 Governance and Compliance
- 15.17 Conclusion
-
Chapter 16. Audit and Regulatory Compliance
- 16.1 Goals of Audit and Regulatory Compliance
- 16.2 Why Are Audit and Regulatory Compliance Important?
- 16.3 Where Do I Start?
- 16.4 Compliance with What?
- 16.5 Establishing IT Controls
- 16.6 Internal Audit
- 16.7 External Audit
- 16.8 Federally Mandated Guidelines
- 16.9 Essential Compliance Requirements
- 16.10 Improving Quality and Productivity through Compliance
- 16.11 Conducting an Assessment
- 16.12 Conclusion
-
Chapter 17. Agile ALM in the Cloud
- 17.1 Goals of ALM in the Cloud
- 17.2 Why Is ALM in the Cloud Important?
- 17.3 Where Do I Start?
- 17.4 Understanding the Cloud
- 17.5 Developing in the Cloud
- 17.6 Change Management in the Cloud
- 17.7 Managing the Lifecycle with ALM
- 17.8 Cloud-based ALM Tools
- 17.9 Achieving Seamless Integrations
- 17.10 Iterative Development in the Cloud
- 17.11 Interfacing with Your Customers
- 17.12 Managing with SLAs
- 17.13 Managing Cloud Risk
- 17.14 Development and Test Environments for All
- 17.15 Environment Management
- 17.16 DevOps in the Cloud
- 17.17 Controlling Costs and Planning
- 17.18 Conclusion
- Chapter 18. Agile ALM on the Mainframe
- Chapter 19. Integration across the Enterprise
- Chapter 20. QA and Testing in the ALM
- Chapter 21. Personality and Agile ALM
- Chapter 22. The Future of ALM
-
Chapter 14. Agile in a Non-Agile World
- Index
Product information
- Title: Agile Application Lifecycle Management: Using DevOps to Drive Process Improvement
- Author(s):
- Release date: June 2016
- Publisher(s): Addison-Wesley Professional
- ISBN: 9780132761857
You might also like
book
Managing Software Requirements the Agile Way
Learn how to deliver software that meets your clients' needs with the help of a structured, …
book
Agile Project Management with Azure DevOps: Concepts, Templates, and Metrics
Roll up your sleeves and jump into Agile project management to use and customize Microsoft Azure …
book
Agile Project Management with Kanban
Use Kanban to maximize efficiency, predictability, quality, and value With Kanban, every minute you spend on …
book
Hands-On Guide to AgileOps: A Guide to Implementing Agile, DevOps, and SRE for Cloud Operations
Discover the best practices for transforming cloud and infrastructure operations by using Agile, Scrum, Kanban, Scrumban …