Software Development Maturity Model
Copyright (c) 2007 NDP Software. All Rights Reserved
The following table summarizes rough categories of software development maturity within in organization. It was inspired by the CMM (capability maturity model), but in no way tries to emulate it.
To use this table, first you must assess where your organization is. Obviously your organization won't simply fit into one maturity level, but different levels in different areas. For example, it's not uncommon to have source code management tools working well, but no bug tracking system.
Numerous pedagogical theories argue in various ways that you must walk before you can run. (CMM echos this.) What this means for a software organization is that before attempting maturity in one area, focus on improving the areas where you are weakest. This will give you the largest return on your investment. That was the idea behind putting this table together.
| Level: | 1 | 2 | 3 |
|---|---|---|---|
| management characterization | works sometimes-- chaotic, ad hoc, heroic | project management, consistent successes, with fire drills, late or buggy releases; tactical | predictable success, agile, efficient-- institutionalized, optimizing; strategic, opportunistic |
| source code management | have source code, backups | modern tool such as svn, cvs, p4, etc. | linkage of code changes to requirements and bugs; metrics |
| builds (configuration management) | versioned product builds as needed | scriptable builds | automated builds |
| release process | determined (or delayed) by software quality and feature completion | scheduled based on feature completion at regular intervals; early planning sacrifices features; late sacrifice of quality or ship date | always releasable quality; maintain quality and release date; sacrifice low-value features |
| requirements management | requirements (un-prioritized, incomplete) | visible, prioritized requirements or user stories | ability to re-prioritize requirements efficiently; reliable estimates; risk management |
| quality control | defect tracking system | defect tracking system, QA team, automated testing, unit testing | continuous integration, code coverage metrics, other software metrics as needed |
| programming team | individuals | functional team, code ownership, code style guide; shared designs as needed | shared code ownership, shared software designs, patterns and strategy; code style compliance, code reviews; professional development |
| programming tools | tools (editors, compilers, etc.) | modern, professional tools | unified, modern and professional tools |