- Bringing common sense back to software development -
Software variability is due to many factors:
variable software complexity
variable schedule pressures
variable budget pressures
variable staff skills (programmers and testers)
variable customer interface
This is not surprising since software development is not a real industry. It is an intensively human endeavor. In fact, on the scale of the development of mathematics, quantitative software engineering is probably comparable to the pre-Pythagorean era. The software “technologies” are in sharp contrast with the hardware technologies underlying them.
There are several consequences of software variability:
The traditional software reliability models do not apply
The traditional testing methodologies do not apply
The traditional software development process metrics do not apply
The traditional assessment metrics of field readiness do not apply
Recognizing software variability all along the software development process results in software development methodologies that focus more on areas where defects are expected to be than on areas where defects are less likely.
Ignoring this fact leads to a significant economic waste, and conversely, recognizing it will result in substantial savings as experience has repeatedly confirmed it.