Artur Södler Software-Qualität
How can we measure quality?
The Quality of a software can be measured according to appropriate standards, if you...
a) know the requirements that the software must meet, and
b) execute tests, which cover each and every possible circumstance, and
c) compare the results with the requirements.
Most regrettably this fails in practice mostly — frankly speaking — because of prerequisites a), b) and hence c), too. For even if the requirement specification contains the real requirement, often important details are missing like user interface functions, formats, timing specification etc. Honestly: If the important details are specified, who thinks to add a "what if the operating system runs out of memory" to the list of test scenarios, or "what happens if the result cannot be saved to disk"?
This is why independent consultants mostly sidestep to a completely different subject: The automatedly ascertainable indicator complexity and the hence predictable maintainability.
McCall defined maintainability 1977 as an essential factor of quality following a convincing logic: Each and every software is incomplete and erroneous at delivery ("banana principle": the software ripens at the customer's site). According to his study, the major part of development is usually done after the first delivery. McCall refers to maintainability as the average expenditure of time in order to solve a problem. Yes, indeed: Whenever developers plan from the beginning for tomorrow (= maintainability), there is hardly a need to correct anything (= quality). Both terms are closely related.
For instance, Thomas J. McCabe (1976) or Maurice Howard Halstead (1977) measure complexity by automated code analysis: Software source code is being analyzed by its branches or by the size and the used vocabulary.
Of course, all three did pioneering work. But: Can we automatically identify whether the software developer understood the task??? In the end, measuring software quality this way remains an illusion.
|•||Assessment of software quality is and has always been manual work and intuition. Anyway it is beneficial to know the "traditional" methods.|
Assessment of software quality is also based on an analysis of the environment, the documentation. A glance over the desk of a software developer for instance tells much about the quality of his work.
|•||One thing can always be measured: The final result. Ask your customers if they are satisfied.|