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.6.1 Managing Complexity and Change

2.6.2 Validity of Requirements

2.6.3 Testing Requirements

2.6.4 Functional Requirements

2.6.5 Nonfunctional Requirements

2.6.6 Epics and Stories

2.6.7 Planning for Changing Requirements

2.6.8 Workflow for Defining Requirements

2.7 Test-Driven Development

2.8 Designing Systems

2.9 Software Development

2.10 Testing

2.10.1 Testing the Application

2.10.2 Testing the Process Itself

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.11.1 Mired in Process

4.11.2 Pretending to Follow the Process

4.12 The Items on the Right

4.12.1 Adjusting Ceremony

4.13 Agile Coexisting with Non-Agile

4.14 IT Governance

4.14.1 Providing Transparency

4.15 ALM and the Agile Principles

4.16 Agile as a Repeatable Process

4.16.1 Scalability

4.16.2 Delivering on Time and within Budget

4.16.3 Quality

4.17 Deming and Quality Management

4.17.1 Testing versus Building Quality In

4.17.2 Productivity

4.18 Agile Maturity in the Enterprise

4.18.1 Consistency across the Enterprise

4.18.2 Marketing the New Approach

4.19 Continuous Process Improvement

4.19.1 Self-Correcting

4.20 Measuring the ALM

4.20.1 Project Management Office (PMO) Metrics

4.21 Vendor Management

4.22 Hardware Development

4.22.1 Firmware

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

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.4.1 Do Tools Matter?

7.4.2 Process over Tools

7.4.3 Understanding Tools in the Scope of ALM

7.4.4 Staying Tools Agnostic

7.4.5 Commercial versus Open Source

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.18.1 Gold Copies

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.10.1 Easier to Find Issues

8.10.2 Easier to Fix Problems

8.10.3 Fix Broken Builds

8.11 Code Reviews

8.12 Establishing a Build Farm

8.12.1 Virtualization and Cloud Computing

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.19.1 Selecting the Right CI Server

8.19.2 Selecting the Shared Repository

8.20 Enterprise Continuous Integration

8.21 Training and Support

8.22 Deploy and Test

8.23 Tuning the Process

8.23.1 Getting Lean

8.23.2 Interesting Builds

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.10.1 Kanban—Push versus Pull

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

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.14.1 Entry/Exit Criteria

10.14.2 Post-Implementation

10.15 Preapproved Changes

10.16 Establishing the Change Management Function

10.16.1 Change Control Board

10.16.2 Change Advisory Board

10.17 Change Control Topology

10.17.1 A Priori

10.17.2 Gatekeeping

10.17.3 Configuration Control

10.17.4 Emergency Change Control

10.17.5 Process Change Control

10.17.6 E-change Control

10.17.7 Preapproved

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.4.1 Events

11.4.2 Incidents

11.4.3 Problems

11.5 Production Support

11.6 Help Desk

11.6.1 Virtual Help Desks

11.6.2 Remote Work

11.6.3 Virtual World Help Desk

11.6.4 Developers on the Help Desk

11.7 IT Process Automation

11.7.1 Knowledge Management

11.8 Workflow Automation

11.9 Communication Planning

11.9.1 Silos within the Organization

11.10 Escalation

11.10.1 Level 1

11.10.2 Level 2

11.10.3 Level 3

11.11 DevOps

11.12 Continuous Process Improvement

11.13 Utilizing Standards and Frameworks

11.13.1 ITIL v3

11.13.2 Knowledge Management

11.13.3 ISACA Cobit

11.14 Business and Product Management

11.15 Technical Management

11.16 IT Operations Management

11.17 IT Operations Controls

11.17.1 Facilities Management

11.18 Application Management

11.18.1 Middleware Support

11.18.2 Shared Services

11.19 Security Operations

11.19.1 Center for Internet Security

11.19.2 Outsourcing

11.20 Cloud-Based Operations

11.20.1 Interfacing with Vendor Operations

11.21 Service Desk

11.21.1 Centralized

11.21.2 Virtual

11.21.3 Specialized

11.21.4 Vendor Escalation

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.12.1 Left-Shift

12.12.2 Right-Shift

12.13 DevOps in Dev

12.14 DevOps as Development

12.14.1 Deployment Pipeline

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.4.1 Start with Assessing Success

13.4.2 Incidents and Problems

13.4.3 Mistakes Are Good

13.4.4 Personality and Disposition

13.4.5 Don’t Just Tell Me What I Want to Hear

13.5 Which Mode Should You Use?

13.5.1 In Person Is Best

13.5.2 Online and Video Conferencing

13.5.3 Teleconference

13.5.4 Virtual Worlds

13.6 Perspective Is Essential

13.6.1 Developers

13.6.2 Customers

13.6.3 Tester

13.6.4 Operations

13.7 DevOps: The Cross-Functional View

13.8 Understanding the Use Case

13.8.1 Epics and Stories

13.9 Retrospectives as Leadership

13.9.1 Removing Barriers

13.10 Running the Meeting

13.10.1 Probing and Questioning

13.11 Retrospectives Supporting ITIL

13.11.1 Incidents

13.11.2 Problems

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

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.8.1 Section 404 of the Sarbanes-Oxley Act of 2002

16.8.2 Financial Industry Regulatory Authority

16.8.3 Health Insurance Portability and Accountability Act of 1996

16.8.4 ISACA Cobit

16.8.5 Government Accountability Office

16.8.6 Office of the Comptroller of the Currency (OCC)

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.5.1 Source Code Management in the Cloud

17.5.2 Build Automation in the Cloud

17.5.3 Release Engineering in the Cloud

17.5.4 Deployment in the Cloud

17.6 Change Management in the Cloud

17.6.1 Service Provider Notification

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.10.1 Development Models in SaaS

17.11 Interfacing with Your Customers

17.11.1 Fronting Service Providers

17.12 Managing with SLAs

17.12.1 Reliance upon Service Providers

17.13 Managing Cloud Risk

17.14 Development and Test Environments for All

17.14.1 Starting Small

17.15 Environment Management

17.15.1 Gold Copies

17.15.2 CMDB in the Cloud

17.16 DevOps in the Cloud

17.17 Controlling Costs and Planning

17.18 Conclusion

Chapter 18 Agile ALM on the Mainframe

18.1 Goals of Agile ALM on the Mainframe

18.2 Why Is Agile ALM on the Mainframe Important?

18.3 Where Do I Start?

18.4 DevOps on the Mainframe

18.5 Conclusion

Chapter 19 Integration across the Enterprise

19.1 Goals of Integration across the Enterprise

19.2 Why Is Integration across the Enterprise Important?

19.3 Where Do I Start?

19.4 Multiplatform

19.5 Coordinating across Systems

19.6 Understanding the Interfaces

19.7 The Enterprise Ecosystem

19.8 Release Coordination

19.9 Conclusion

Chapter 20 QA and Testing in the ALM

20.1 Goals of QA and Testing

20.2 Why Are QA and Testing Important?

20.3 Where Do I Start?

20.4 Planning the Testing Process

20.5 Creating the Test Cases

20.6 Ensuring Quality

20.7 Ensuring Quality from the Beginning

20.8 Conclusion

Chapter 21 Personality and Agile ALM

21.1 Goals of Personality and the Agile ALM

21.2 Why Are Personality and Agile ALM Important?

21.3 Where Do I Start?

21.3.1 Understanding the Culture

21.3.2 Probing Deeper into the Organization’s Psyche

21.4 Group Dynamics

21.4.1 Using DevOps to Drive Out Silos

21.4.2 Managing Power and Influence in DevOps

21.5 Intergroup Conflict

21.5.1 Overly Agreeable People and Other Challenges

21.5.2 Learned Helplessness

21.5.3 Introspection and the Postmortem

21.6 Managing Stress and Dysfunctional Behavior

21.6.1 The Danger of Learned Complacency

21.6.2 Dealing with Aggressive Team Members

21.6.3 Extremism in the Workplace

21.7 Taking a Positive Approach

21.7.1 How Positive Psychology Can Help Your Organization

21.7.2 Three Pillars of Positive Psychology

21.7.3 Using Positive Psychology to Motivate Your Team

21.7.4 Learning from Mistakes

21.7.5 Positive Psychology in DevOps

21.8 Conclusion

References

Further Reading

Chapter 22 The Future of ALM

22.1 Real-World ALM

22.2 ALM in Focus

22.3 Conclusion

Index

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.191.237.79