Reusability
This article needs additional citations for verification. (July 2012) |
In computer science and software engineering, reusability is the use of existing assets in some form within the software product development process; these assets are products and by-products of the software development life cycle and include code, software components, test suites, designs and documentation. The opposite concept of reusability is leverage, which modifies existing assets as needed to meet specific system requirements. Because reuse implies the creation of a separately maintained version of the assets[clarification needed], it is preferred over leverage.[1]
The ability to reuse relies in an essential way on the ability to build larger things from smaller parts, and being able to identify commonality among those parts. Reusability is often a required characteristic of
Reusability implies some explicit management of
Software reusability more specifically refers to design features of a software element (or collection of software elements) that enhance its suitability for reuse.
Many reuse design principles were developed at the WISR workshops.[2]
Candidate design features for software reuse include:
- Adaptable
- Brief: small size
- Consistency
- Correctness
- Extensibility
- Fast
- Flexible
- Generic
- Localization of volatile (changeable) design assumptions (David Parnas)
- Modularity
- Orthogonality
- Simple: low complexity
- requirements
Consensus has not yet been reached on this list on the relative importance of the entries nor on the issues which make each one important for a particular class of applications.
See also
References
- ^ Lombard Hill Group (October 22, 2014). "What is Software Reuse". www.lombardhill.com. Lombard Hill Group. Archived from the original on 2014-10-22. Retrieved 22 October 2014.
- ^ "Design for Reuse and Object Oriented Reuse Methods". Umcs.maine.edu. 1995-01-20. Archived from the original on 1997-07-15. Retrieved 2012-07-31.