Foundational Theory of Software Component Reliability

Promise of Software Components In engineering design, the idea of aggregating standardized components to create a complex system has allowed engineers to create better systems more easily. Components are described in a handbook, where each has a “data sheet” entry. Its data sheet describes what a component does, and equally important, it gives constraints that allow the system designer to decide if the component is “good enough” for the application. For mechanical components, these constraints concern, for example, the life expectancy of the component. The success of the component-construction paradigm in mechanical and electrical engineering has led to calls for its adoption in software design. Software is embedded in systems with mechanical and electrical components, systems designed using component techniques from these other branches of engineering. The system designer of an embedded system would like the software “component” to have a data sheet. Analogies between disciplines are only suggestive. No one knows whether software components can realize the benefits of the analogous mechanical and electrical ones. Certainly the embedded-system designer who today looks for technical data sheets on software parts will be disappointed. Without the solid information of a data sheet, software “components” are no bargain. To buy off-the-shelf software of unknown quality is only to trade the difficult task of assessing your own work, for the more difficult task of assessing someone else’s.