Maturity model for Continuous Delivery

The method behind Continuous Delivery can’t be implemented overnight.
It’s a work in progress where the organization goes from beginner to expert.
The central tool is a maturity model.

DefinitionFrequently integrating and using automated tests. The benefits of short feedback loops start showing.Continuously integrating code changes. Content and quality visible for each delivery.Continuously delivering and deploying on demand. Each delivery has high visibility of functionality and quality.Continuously improving environment and software health using monitoring. Frequent deployments can be made without interrupting service.
Code• Code is integrated early and often
• Teams share code using a single branch
• Each code change is commented
• Each code change is tied to tasks, visualizing status and progress
• Each code change is explained and reviewed
• Each code change is continuously integrated
• Dependencies between code changes managed• Stable releases do not interfere with feature development
• Feature development does not interfere with stable releases
Build• Build logs available to developers
• Builds for different configurations
• Builds are automatically triggered on code change
• Static code analysis is a part of the build
• Binary build dependencies managed
• Incremental builds
• Regular builds for all tests and product configurations as clean builds• Build environment generated from code
• Trends on static code analysis are visualized
Test• Unit tests run locally before commit
• Unit tests run as part of the build
• Test results available to developers
• Functional tests run as part of the build
• Code coverage visible
• Each test result tied to code change and task, visualizing status and progress
• Effective and efficient tests of all configurations
• Test code included in version
• Detailed debug info that can be used to recreate test result
• Manual testing is mainly exploratory
• Value of the tests measured and continuously tuned
• Quality trends and performance in production collected and visualized
• Testers work with developers to try to break the application
Delivery• Delivery result visualized
• Deliverable shared with stakeholders
• Automated delivery on demand
• Automatically generated release notes
• Test and production environments generated from code
• Automated delivery on each change
• Deployment on demand
• Deployment without downtime
• Deployments are monitored and visualized
• Test and production environments maintained through infrastructure orchestration