In
computer programming
Computer programming or coding is the composition of sequences of instructions, called computer program, programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of proc ...
, reusability describes the quality of a
software
Software consists of computer programs that instruct the Execution (computing), execution of a computer. Software also includes design documents and specifications.
The history of software is closely tied to the development of digital comput ...
asset that affects its ability to be used in a
software system
A software system is a system of intercommunicating software component, components based on software forming part of a computer system (a combination of Computer hardware, hardware and software). It "consists of a number of separate Computer progr ...
for which it was ''not'' specifically designed. An asset that is easy to
reuse
Reuse is the action or practice of using an item, whether for its original purpose (conventional reuse) or to fulfill a different function (creative reuse or repurposing). It should be distinguished from recycling, which is the breaking down of ...
and provides utility is considered to have high reusability. A related concept, leverage involves modifying an existing asset to meet system requirements.
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
Software development is the process of designing and Implementation, implementing a software solution to Computer user satisfaction, satisfy a User (computing), user. The process is more encompassing than Computer programming, programming, wri ...
that do not need to be considered when reusability is not required.
Reusability may be impacted by various
DevOps aspects including:
build,
packaging
Packaging is the science, art and technology of enclosing or protecting products for distribution, storage, sale, and use. Packaging also refers to the process of designing, evaluating, and producing packages. Packaging can be described as a coo ...
,
distribution,
installation,
configuration,
deployment,
maintenance
The technical meaning of maintenance involves functional checks, servicing, repairing or replacing of necessary devices, equipment, machinery, building infrastructure and supporting utilities in industrial, business, and residential installa ...
and
upgrade. If these aspects are not considered, software may seem to be reusable based on its
design
A design is the concept or proposal for an object, process, or system. The word ''design'' refers to something that is or has been intentionally created by a thinking agent, and is sometimes used to refer to the inherent nature of something ...
, but may not be reusable in practice.
Many reuse design principles were developed at the WISR workshops.
Although lacking consensus candidate design features for software reuse include:
*
Adaptable
* Brief; small size
*
Consistency
In deductive logic, a consistent theory is one that does not lead to a logical contradiction. A theory T is consistent if there is no formula \varphi such that both \varphi and its negation \lnot\varphi are elements of the set of consequences ...
*
Correctness
*
Extensibility
*
Fast
* Flexible
*
Generic
* Localization of volatile/changeable design assumptions
*
Modularity
Modularity is the degree to which a system's components may be separated and recombined, often with the benefit of flexibility and variety in use. The concept of modularity is used primarily to reduce complexity by breaking a system into varying ...
*
Orthogonality
In mathematics, orthogonality is the generalization of the geometric notion of '' perpendicularity''. Although many authors use the two terms ''perpendicular'' and ''orthogonal'' interchangeably, the term ''perpendicular'' is more specifically ...
* Simple; low
complexity
Complexity characterizes the behavior of a system or model whose components interact in multiple ways and follow local rules, leading to non-linearity, randomness, collective dynamics, hierarchy, and emergence.
The term is generally used to c ...
*
Stability under changing
requirements
See also
*
Code reuse
References
{{Authority control
Source code
Software quality