Component-Based Software Development: Case Studies

In many engineering disciplines, the idea of aggregating standardized components to create a complex system has allowed the creation of better systems more easily. Components are listed in a handbook, which describes what a component does, and equally important, gives constraints that allow the system designer to decide if the component is good enough for the application. For example, in analog electronic systems, these constraints concern the allowable voltages for the component and performance parameters such as bandwidth. Accurate, precise handbook descriptions of components are the basis for computer-aided design (CAD) techniques. CAD tools allow the system designer to experiment with components in the abstract and predict the properties that hypothetical systems would exhibit if built from those components.
Any subject of current research begins with a terminology war in which researchers try to thrash out what they will and will not include in the subject, Historically, component in software is a rough synonym for module or unit or routine. It began by referring to source code in a programming language. Some of these terms have now acquired additional precision; for example, module may mean an abstract data type definition, or an object-oriented class. This adds fuel to the terminology conflagration, because it raises questions like: What s the difference between an O-O class and a component? demons Szyperski has cut through much of the difficulty by removing the focus from the code source. He defines a software component as executable, with a black-box...