The Maturity Model
In order to achieve our ideal, it is essential to cover all parts of the process of building, deploying, testing, and releasing software.
- Build management and continuous integration are concerned with creating and maintaining an automated
process that builds your application and runs tests on every change and then provides feedback to the
whole team on the process. - Environments consist of the entire stack your application requires to work:
hardware, infrastructure, networking, application stacks, external services, and their configuration. - Release management is defined by Forrester as “the definition, support, and enforcement of processes for
preparing software for deployment to production.” We have added considerations around compliance to this
area, since conformance to regulatory environments is often one of the strongest constraints on release
management. - Testing, whether through automated tests or manual processes such as exploratory testing and user
acceptance testing is designed to ensure that software contains as few defects as possible as well as
conforms to non-functional requirements. We have focused on the areas of testing that are most relevant to
building and releasing software. - Finally, data management (usually, but not always, in the context of relational databases) forms an essential
part of the deployment and release process, since it is a frequent source of problems when releasing or
upgrading software.
To ensure each part of the process is given due attention, we have divided the model into five sections.