Origins of the Software Process: The Software Maturity Framework

Software is the Wild West of engineering compared to its long subsiding science siblings. In June 1948, Tom Kilburn helped to run the first stored-program computer and this is arguably where software first started. During the seventy years since its genesis, a plethora of constant technological advancements and challenges arose. In order to solve issues related to the process of software development, Watts S. Humphrey published “Managing the Software Process” in 1989. Humphrey utilized his 26 years of experience from working at IBM to help tailor and develop an effective software process. This process helped burgeoning companies create successful products within timelines. The book covers the software maturity framework, which was later coined as the capability maturity model.

Humphrey discusses software process improvement steps and the process maturity levels. The software process improvement steps are: 

  1. Understand the current status of the development process.
  2. Develop a vision of the desired process.
  3. Establish a list of required process improvement actions in order of priority.
  4. Produce a plan to accomplish the required actions.
  5. Commit the resources to execute the plan.
  6. Repeat step 1.

The purpose behind these steps is to refine and improve the software process with an important step being to repeat the process. There is no perfect process, so refinement is always necessary. Engaging in the software process improvement steps can help one ascend through the process maturity levels.

There are five process maturity levels: initial, repeatable, defined, managed, and optimizing. 

Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Ink Drawings
Initial
Repeatable
Defined
Managed
Optimizing
Ink Drawings
Process Maturity

These levels represent the maturity of the process itself. As you go further up, the more mature and effective your process.

Initial – Achieve rudimentary predictability of schedules and costs. Overall chaotic and Ad Hoc environment.

Repeatable – Stable process with a repeatable level of statistical control by initiating rigorous project management of commitments, costs, schedules, and changes.

Defined – Defined process as a basis for consistent implementation and better understanding. Advanced tech can be introduced.

Managed – Organization has initiated comprehensive process measurements and analysis. This is when the most significant quality improvements begin.

Optimizing – Organization now has a foundation for continuing improvement and optimization of the process.

The levels can be boiled down to starting out in an ad hoc and chaotic environment, with minimal planning and process. Through creating and following a process, collecting data on said process, and refining it, optimization with continuous improvement occurs. While some of this may seem like common sense, there was an issue in the 1980s whereas numerous Department of Defense (DoD) projects were not able to meet timelines or even complete projects. This framework helped to build a reliable process for software companies to use their time effectively as well as meet realistic timelines.

So, why even look at a framework this old? I think it’s worthwhile, because a lot of these principles are timeless. It’s important to develop some sort of process regardless of the software being engineered. Modern processes such as Agile/Scrum can still be applied using the framework discussed by Humphrey. Additionally, even though the scope of the framework is directed towards an organization, you can and should apply them to any personal projects. Some aspects such as data collection of efficiencies won’t be relevant for a one person team, but the concept of picking a process and constantly refining it for efficacy is. To begin your own process, I’d recommend starting out with something basic such as the issues and project tabs on GitHub repositories.

Working on any project, whether personal or professional, you can quickly see the importance of a process, or notice the glaring lack of one. Studying the origins of the software process can help you use your time efficiently and deliver a better product.

Note: Below is the current updated framework, which has some modifications, but still follows the foundations set by Humphrey

References

Humphrey, W. S. (1990). Managing the software process (Software Engineering Institute). Reading: Addison-Wesley Publishing Company.

Leave a comment