Atkinson, C.C.AtkinsonMuthig, D.D.Muthig2022-03-092022-03-092002https://publica.fraunhofer.de/handle/publica/33993110.1007/3-540-46020-9_7The idea of building software systems from semi-autonomous components that can be reused in numerous applications is intuitively appealing. However, simply organizing software systems in terms of components does not by itself ensure that the components will be reusable, or that significant levels of reuse will actually occur. In practice, to achieve meaningful levels of reuse the scope and generality of components must be carefully analyzed and optimized. In this paper we make the case that one of the most effective and systematic ways of achieving this is to complement component-based development with product line engineering techniques. Product line engineering not only provides concrete criteria for maximizing the reusability of components, but also provides enhanced mechanisms for reusing them within new applications. After first outlining the pertinent features of component-based development and product line engineering, the paper explains how they can be integrated under the umbrella of a model-driven architecture (MDA) approach to software development.enproduct linecomponentcomponent-based software engineering004005006400Enhancing component reusability through product line technologyconference paper