Presentation: Adaptable Components
Traditional approaches to reuse are characterized by uncertainty, complexity, and excessive effort: deciding whether a component with appropriate capability exists, choosing between several components apparently meant for the same purpose, and safely modifying a chosen component to fit a particular need properly.
An approach based on adaptable components addresses the reality that reuse routinely requires tailoring to support particular needs. The most effective time to consider and accommodate alternate uses is during component development rather than at the time of reuse. Adaptable components provide a means for a developer to instrument a component so that alternate versions can be derived mechanically from a single source.
This tutorial describes and illustrates the use of mechanisms, both mundane and innovative, for constructing and using adaptable components. We discuss benefits and implications for individual developers, projects, and product line businesses. Through an included exercise, we explore how variations in similar fragments of existing software can help us identify opportunities for reuse, considering possible future needs, to provide the basis for a viable adaptable component.
This tutorial is intended for experienced software engineers and technical managers who are interested in achieving highly leveraged reuse as a means to higher productivity and more consistent product quality. It provides an understanding of the advantages and means of systematically seeking out and accommodating diversity, uncertainty, and potential for change in software being developed.