Software Architectures to Improve the Eeectiveness of Reuse Techniques

Gains of productivity through software reuse require important eeorts for the construction of general-purpose high-level abstractions for reusable software artifacts through systematic approaches to Domain Engineering techniques. This paper sugggests general-purpose software architectures as appropriate abstractions to achieve this goal. 1 Background Rosario Girardi has been working in software reuse since 1989. First, she worked with object-oriented development methodologies and their support to reuse 1, 2]. Later, she focused on software library issues using concepts from the information retrieval and computational linguistics elds 3, 4]. Currently, her main interest in the software reuse area is on software architectures for the creation of reusable software 5]. Bertrand Ibrahim has been involved with software reuse since 1987. He rst worked on software reuse based on automatic code generation, within the context of a CASE environment for the development of computer-aided learning software. Later on, he focused on the automatic detection of reuse opportunities based on natural language description of software components. 2 Position Software reuse has been considered as a means to overcome the software crisis. However, the expectations of higher productivity in the development and maintenance of software and of better quality of the created software artifacts through software reuse have not been frequently met. This may be so because the eeort needed to create reusable software artifacts, locate them, adapt them and integrate them in a speciic application has very often been felt to be greater than the eeort needed to create the application from scratch. A few successful reuse experiences have been reported. Success has depended mainly on both knowledge and development experience of particular application domains. Good results have been obtained on well-known domains and with domains where there is a mature development experience. Two main technical problems currently limit successful reuse. One of them concerns software library features with the need for mechanisms to retrieve software artifacts eeectively according to user requirements. Advances in information retrieval and natural language processing techniques have provided some directions to approach this problem 3, 4]. Another problem concerns development for reuse activities with the need for mechanisms to create eeective software abstractions providing a considerable improvement of productivity through their reuse. The reuse community has shown the relevance of the productivity beneets of reusing early life-cycle artifacts, like design speciications, rather than the simple low-level reuse of source code. Therefore, there is a need for mechanisms to identify and create high-level …