Current advances and research directions for the identification and development of software architectural abstractions are also discussed. The paper is organized as follows. Section 2 describes the requirements for software abstraction effectiveness and suggests the development of general-purpose software architectures to meet these requirements. Section 3 introduces some research directions which will enable or contribute with appropriate methods for building effective software architectural abstractions. All approaches to software reuse use some form of abstraction for software artifacts.
Abstractions play a central role in reuse activities.
Concise abstractions are needed to efficiently locate, understand, compare, and select the appropriate software artifacts from a collection. Specialization of a generalized software artifact corresponds to choosing an abstraction realization from the variable part of an abstraction specification. Finally, to compose a set of software artifacts, users must understand the artifact interface which must be clearly described in the abstraction specification. This can be accomplished by both moving the abstraction specifications closer to the abstractions used to reason about the application domain, and partially or fully automating the mapping from abstraction specifications to executable abstraction realizations. On the other hand software abstractions should ideally be applicable to a broad range of application domains to quickly pay off the cost of their development.