Brooks observed that simple, successful systems are often followed by feature-rich software systems that can fail from their complexity.
Table of contents |
2 Explanation 3 A possible solution |
Brooks noted this effect when comparing IBM's 7000-series operating system with the later 360-series operating system. It has been observed with Multics, and a large number of other significant, long-lasting software projects.
The basic mechanism appears to be that people expect software projects to scale linearly with the number of specification items. They therefore engage in a more complex project of the same general type by enlarging its specification.
Unless carefully designed, the specification items can interact, causing a rapid growth in the combinatorial complexity of the final system. This causes a large number of possible failure modes, which are difficult to locate, test and repair.
One general solution may be to limit the forms of interaction between the parts of a new software system to one or a few stereotyped communication methods.
For example, Unix has developed many software utilities that interact via an intentionally-simple character-based file system, and this set of utilities is one the most reliable known large-scale software systems.
Building directly on this interpretation of this experience, the Plan 9 and Inferno operating systems let programs interact only through files, and these operating systems generally have been reported to be robust and yet flexible.
This principle also seems to explain much of the success of relational databases, and object request broker architectures such as CORBA, which provide a similar standard coordinating method.History
Explanation
A possible solution