I guess it was pretty naive of me to think that quantifying software quality was a new undertaking. There are five models that appear repeatedly in the literature:
- Boehm
- McCall
- FURPS
- ISO 9126
- Dromey
Reference: Ortega, Maryoly; Pérez, María and Rojas, Teresita. Construction of a Systemic Quality Model for evaluating a Software Product. Software Quality Journal, 11:3, July 2003, pp. 219-242. Kluwer Academic Publishers, 2003
In "Quantifying the cost of expediency", I proposed using McConnell's "internal quality characteristics" from Code Complete. Does this still hold up in light of these large bodies of research? Lets see.
In a perfect world, I'd take the time research all of these models along with the various hybrids that have been devised. Perhaps I'll formulate my own model one day and become rich and famous. My goal for now is not to devise the optimal model, but rather to create a proof-of-concept for calculating the cost of expedient design and development choices.
From a cursory literature search, it appears that ISO 9126 is the most widely used model. I'll use that as the basis for comparison.
The ISO 9126 standard is summarized by the following graph:
(from http://www.cse.dcu.ie)
As you can see from the graph, the ISO model defines six major characteristics of quality:
- Functionality
- Reliability
- Efficiency
- Usability
- Portability
- Maintainability
The characteristics on McConnell's list that don't appear in ISO 9126 are flexibility and reusability. These characteristics seem relevant to the technical debt of a project. Flexibility and reusability do appear in the McCall model (see table). McConnell provides the following definitions (p. 558):
Flexibility - The extent to which you can modify a system for uses or environments other than those for which it was specifically designed.After all this, I am back to where I started. That is not where I expected to be. The original title of this entry was something like "An ISO model for technical debt". It was not until I started comparing ISO 9126 with McConnell that I came to the conclusion that McConnell better serves my purpose.
Reusability - The extent to which and the ease with which you can use parts of a system in other systems.
In the next entry I'll return to looking at the available tools for calculating technical debt.
No comments:
Post a Comment