|Reference||/Scacchi, 2001/ Process Models in Software Engineering|
|Assembling Reusable Components
The basic approach of reusability is to configure and specialize pre-existing software components into viable application systems /Biggerstaff, 1984/, /Neighbors, 1984/, /Goguen, 1986/. Such source code components might already have associated specifications and designs associated with their implementations, as well as have been tested and certified. However, it is also clear that software domain models, system specifications, designs, test case suites, and other software abstractions may themselves be treated as reusable software development components. These components may have a greater potential for favorable impact on reuse and semi-automated system generation or composition /Batori, 1994/, /Neighbors, 1984/. Therefore, assembling reusable software components is a strategy for decreasing software development effort in ways that are compatible with the traditional life cycle models.
The basic dilemmas encountered with reusable software componentry include
The granularity of the components (i.e., size, complexity, and functional capability) varies greatly across different approaches. Most approaches attempt to utilize components similar to common (textbook) data structures with algorithms for their manipulation: small-grain components. However, the use/reuse of small-grain components in and of itself does not constitute a distinct approach to software development. Other approaches attempt to utilize components resembling functionally complete systems or subsystems (e.g., user interface management system): large-grain components. The use/reuse of large-grain components guided by an application domain analysis and subsequent mapping of attributed domain objects and operations onto interrelated components does appear to be an alternative approach to developing software systems /Neighbors, 1984/, and thus is an area of active research.
There are many ways to utilize reusable software components in evolving software systems. However, the cited studies suggest their initial use using architectural or component design specifications as a way to speed implementation. They might also be used for prototyping purposes if a suitable software prototyping technology is available.
|Rationales||The author classifies Assembling Reusable Components as one of the Software Product Development Model|
|GDPA Online Last Updated 27.May.2002 Updated by Webmaster Last Revised 27.May.2002 Revised by Webmaster|