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