This paper focuses on the need to adapt software components and software architectures. Too often, examples from the literature avoid the difficult problem of constructing a software system from sets of (possibly independently constructed) software components. Consider the following example: given a set of components, an application builder attempts to construct a software system. Along the way, however, some components are adapted with new code to suit the requirements of the final application. If the components have architectural specifications, how are these adaptations reflected? In particular, changes in the component implementation (i.e., new classes, modified methods, new lines of code) must be reflected in the specification of the component (i.e., ports, roles). This problem is more important than simply keeping documentation synchronized with software -- the architectural description of a software system is essential in understanding the interconnections between the various software components.
Heineman, George T.
(1998). Adaptation and Software Architecture. .
Retrieved from: http://digitalcommons.wpi.edu/computerscience-pubs/209