reusability
{{Short description|Quality of software relevant to reuse}}
{{about|reusability in computer science}}
{{More citations needed|date=July 2012}}
In computer programming, reusability describes the quality of a software asset that affects its ability to be used in a software system for which it was not specifically designed. An asset that is easy to reuse and provides utility is considered to have high reusability. A related concept, leverage involves modifying an existing asset to meet system requirements.{{cite web|author1=Lombard Hill Group|title=What is Software Reuse|url=http://lombardhill.com/What_Reuse.htm|archive-url=https://web.archive.org/web/20141022010101/http://lombardhill.com/What_Reuse.htm|website=www.lombardhill.com|publisher=Lombard Hill Group|access-date=22 October 2014|archive-date=2014-10-22|url-status=dead|date=October 22, 2014}}
The ability to reuse can be viewed as the ability to build larger things from smaller parts, and to identify commonality among the parts. Reusability is often a required characteristic of platform software. Reusability brings several aspects to software development that do not need to be considered when reusability is not required.
Reusability may be impacted by various DevOps aspects including: build, packaging, distribution, installation, configuration, deployment, maintenance and upgrade. If these aspects are not considered, software may seem to be reusable based on its design, but may not be reusable in practice.
Many reuse design principles were developed at the WISR workshops.{{cite web |url=http://www.umcs.maine.edu/~ftp/wisr/SEN-pap/node1.html |title=Design for Reuse and Object Oriented Reuse Methods |publisher=Umcs.maine.edu |date=1995-01-20 |access-date=2012-07-31 |url-status=dead |archive-url=https://web.archive.org/web/19970715093310/http://www.umcs.maine.edu/~ftp/wisr/SEN-pap/node1.html |archive-date=1997-07-15 }} Although lacking consensus candidate design features for software reuse include:
- Adaptable
- Brief; small size
- Consistency
- Correctness
- Extensibility
- Fast
- Flexible
- Generic
- Localization of volatile/changeable design assumptions
- Modularity
- Orthogonality
- Simple; low complexity
- Stability under changing requirements
See also
References
{{Reflist}}
{{Software quality}}
{{Authority control}}