Professional Documents
Culture Documents
September 2009
01
In this paper we present a maturity model for building and releasing software. This model is designed to serve several purposes:
To provide a structure for assessing your team or organizational capabilities in building and releasing software To provide an approach for planning and executing improvements to existing practices
We start with a discussion of the Agile Maturity Model, move on to building and releasing software, present the maturity model, and then describe how to use it.
02
03
Build management and continuous integration Teams regularly meet to discuss integration problems and resolve them with automation, faster feedback, and better visibility. Build metrics gathered, made visible, and acted on. Builds are not left broken. Automated build and test cycle every time a change is committed. Dependencies managed. Re-use of scripts and tools.
Environments and deployment All environments managed effectively. Provisioning fully automated. Virtualization used if applicable. Orchestrated deployments managed. Release and rollback processes tested.
Release management and compliance Operations and delivery teams regularly collaborate to manage risks and reduce cycle time. Environment and application health monitored and proactively managed. Cycle time monitored.
Data management Release to release feedback loop of database performance and deployment process. Database upgrades and rollbacks tested with every deployment. Database performance monitored and optimized. Database changes performed automatically as part of deployment process. Changes to databases done with automated scripts versioned with application.
Level 2 - Quantitatively managed: Process measured and controlled Level 1 - Consistent: Automated processes applied across whole application lifecycle
Quality metrics and trends tracked. Non functional requirements dened and measured. Automated unit and acceptance tests, the latter written with testers. Testing part of development process. Automated tests written as part of story development.
Fully automated, selfChange management and service push-button approvals processes process for deploying dened and enforced. software. Same process Regulatory and to deploy to every compliance conditions environment. met. Automated deployment to Regular automated build Painful and infrequent, some environments. Level 0 Repeatable: and testing. Any build can but reliable, releases. Creation of new Process documented and be re-created from source Limited traceability from environments is cheap. partly automated control using automated requirements to release. All conguration process. externalized / versioned Level -1 Regressive: processes unrepeatable, poorly controlled, and reactive Manual processes for building software. No management of artifacts and reports. Manual process for deploying software. Environment-specic binaries. Environments provisioned manually. Infrequent and unreliable releases.
We believe that using this maturity model can help you achieve all of these outcomes.
04
Here are the steps to use the model, based upon the Deming cycle: plan, do, check, act1.
1. Identify where your organization lies on the model. You may find that different
parts of your organization achieve different levels on each of the different categories.
2. Choose what to focus on. You should work out what the possible improvements
you could implement are, how much they will cost, and what benefit they will deliver. You then choose a few improvements you could make, and decide how to implement those changes. You should set acceptance criteria to define the results you are expecting to see so you can decide if the changes were successful.
3. Implement the changes. First, plan how to implement the changes. You might
decide to start with a proof of concept. If so, choose a part of your organization that is really suffering - these people will have the best motivation to implement change, and it is there that you will see the most dramatic change. Then of course you have to execute your plan.
4. Check if the changes you implemented had the desired effect. Use the
acceptance criteria you created. Hold a retrospective to find out how well the changes were executed.
5. Repeat these steps, building upon your knowledge. Roll out more improvements
Organizational change is hard, and a detailed guide is beyond the scope of this paper. The most important advice we can offer is to implement change incrementally. If you try and go from level one to level five across your whole organization in one step, you will fail. Changing large organizations can take several years. Finding the changes that will deliver the most value and working out how to execute them should be treated scientifically: come up with a hypothesis, and then test. Repeat, and learn in the process. No matter how good you are, it is always possible to improve. If something doesn't work, don't abandon the process: try something else.
1 W. Edwards Deming - Out of the Crisis, MIT Center for Advanced Engineering Study (1986) See Management-driven Metrics Versus Metrics-driven Management,
05
FURTHER READING
Build Management and Continuous Integration Fowler, M., Continuous Integration, http://www.martinfowler.com/articles/continuousIntegration.html (2006). Duvall, P., Matyas, S., Glover, A., Continuous Integration: Improving Software Quality and Reducing Risk, Addison-Wesley (2007). Humble, J., Read, C., North, D., The Deployment Production Line, Agile Conference 2006 (2006). Environments and Deployment Farley, D., Single-Click Software Release, in ThoughtWorks Anthology, The Pragmatic Programmers (2008). Nygard, M., Release It!, The Pragmatic Programmers (2007). Release management and Compliance Lacy, S., Macfarlane, I., Service Transition, ITIL Version 3, Stationery Office (2007) Behr, K., Kim, G. and Spafford, G., The Visible Ops Handbook: starting ITIL in 4 Practical Steps, Information Technology Process Institute (2004) Testing Crispin, L., Gregory, J., Agile Testing: A Practical Guide for Testers and Agile Teams, Addison-Wesley (2009) Data Management Ambler, S., Sadalage, P., Refactoring Databases: Evolutionary Database Design, Addison-Wesley (2006) Agile Maturity Model Pettit, R., An Agile Maturity Model?, Agile Journal (2006)
AUTHORS
Jez Humble
Jez Humble is Product Manager for Cruise, ThoughtWorks Studios' continuous integration and release management server. As the founding leader of ThoughtWorks' build and deployment community, he has worked to capture and propagate best practices in the build engineering and release management space. Jez has ten years of professional experience in IT as a developer, system administrator, trainer and manager. He has worked with a variety of platforms and technologies,
06 consulting for non-profits, telecoms, financial service and insurance service organizations. Since 2004 he has worked for ThoughtWorks in London, Bangalore, Beijing and San Francisco. He holds a BA in Physics and Philosophy from Oxford University and an MMus in Ethnomusicology from the School of Oriental and African Studies, University of London.
Rolf Russell
Rolf Russell is Practice Director for Build & Release Management at ThoughtWorks. In this role he is responsible for the development of ThoughtWorks' service offerings that enable clients to achieve more throughput, transparency, security and speed-to-market in their build and release processes. Rolf has been a part of ThoughtWorks for seven years in a variety of roles including developer, trainer, project manager, innovation facilitator, and as a member of the North American Operating Committee. His interest has drawn him to the build & release world and, prior to becoming Practice Director, Rolf led several teams executing significant B&RM projects. Before joining ThoughtWorks, Rolf worked for a supply chain intelligence startup and for Oracle Corporation as well as teaching English in Japan. He holds an MSc in Artificial Intelligence from Edinburgh University and a BS in Computer Science from Cornell University.
ACKNOWLEDGEMENTS
Thanks to Tim Brown, Rebecca Parsons, Ross Pettit, and Andy Yates for comments, contributions, and feedback.
Honeywell, BBC, eBay, Barclays, Vodafone, McGraw-Hill and Rackspace. It is headquartered in San Francisco and Bangalore, with offices in London and select cities in Europe, Asia and Australia. For more information, please visit www.thoughtworks-studios.com. For more information, please visit www.thoughtworks-studios.com.