Building Systems from Commercial Components: Design and Search
Building systems from commercial components is often a completely different experience from building custom systems in that the focus of control shifts from the architect or designer to the commercial marketplace. To deal with this loss of control, the successful architect must take a risk-driven approach by considering multiple design contingencies, weighing benefit against risk, and generally playing the odds.
Herbert A. Simon, winner of the 1978 Nobel Prize in Economics and many prestigious international scientific awards for his work in cognitive psychology and computer science wrote the following in the Science of Design in 1969:
Design procedures in the real world do not merely assemble problem solutions from components but must search for appropriate assemblies.
... In carrying out such a search, it is often efficient to divide one’s eggs among a number of baskets—that is, not to follow out one line until it succeeds completely or fails definitively, but to begin to explore several tentative paths, continuing to pursue a few that look most promising at a given moment. If one of the active paths begins to look less promising, it may be replaced by another that had previously been assigned a lower priority.
Some 30 years later, we are saying almost the same thing about building systems from commercial components, namely that system architects and designers must pursue multiple simultaneous design contingencies to balance and reduce risk. While this is not a typical tenet of software engineering, it applies in the case of commercial components for a simple reason. Software design does not take place in the real world but consists instead of the formulation of an artificial world of abstractions that may or may not model real-world properties. However, the use of commercial components introduces a substantial dose of reality into the design equation.