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 , it is preferred over leverage.
Subroutine
In computer programming, a function or subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed.
Functions may ...
s or
functions are the simplest form of reuse. A chunk of code is regularly organized using
modules or
namespaces into
layers. Proponents claim that
objects and
software components offer a more advanced form of reusability, although it has been tough to objectively measure and define levels or scores of reusability.
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
platform software. Reusability brings several aspects to
software development
Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development invol ...
that do not need to be considered when reusability is not required.
Reusability implies some explicit management of
build
Build may refer to:
* Engineering something
* Construction
* Physical body stature, especially muscle size; usually of the human body
* Build (game engine), a 1995 first-person shooter engine
* "Build" (song), a 1987 song by The Housemartins
* ...
,
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 co ...
,
distribution Distribution may refer to:
Mathematics
*Distribution (mathematics), generalized functions used to formulate solutions of partial differential equations
*Probability distribution, the probability of a particular value or value range of a varia ...
,
installation,
configuration
Configuration or configurations may refer to:
Computing
* Computer configuration or system configuration
* Configuration file, a software file used to configure the initial settings for a computer program
* Configurator, also known as choice board ...
,
deployment,
maintenance and
upgrade issues. If these issues are not considered, software may appear to be reusable from
design point of view, but will not be reused in practice.
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.
Candidate design features for software reuse include:
*
Adaptable
* Brief: small size
*
Consistency
*
Correctness
*
Extensibility
Extensibility is a software engineering and systems design principle that provides for future growth. Extensibility is a measure of the ability to extend a system and the level of effort required to implement the extension. Extensions can be th ...
*
Fast
Fast or FAST may refer to:
* Fast (noun), high speed or velocity
* Fast (noun, verb), to practice fasting, abstaining from food and/or water for a certain period of time
Acronyms and coded Computing and software
* ''Faceted Application of Subje ...
* Flexible
*
Generic
Generic or generics may refer to:
In business
* Generic term, a common name used for a range or class of similar things not protected by trademark
* Generic brand, a brand for a product that does not have an associated brand or trademark, other ...
* Localization of volatile (
changeable) design assumptions (
David Parnas)
*
Modularity
Broadly speaking, 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 s ...
*
Orthogonality
In mathematics, orthogonality is the generalization of the geometric notion of '' perpendicularity''.
By extension, orthogonality is also used to refer to the separation of specific features of a system. The term also has specialized meanings i ...
*
Parameterization
In mathematics, and more specifically in geometry, parametrization (or parameterization; also parameterisation, parametrisation) is the process of finding parametric equations of a curve, a surface, or, more generally, a manifold or a variety, ...
* Simple: low
complexity
Complexity characterises the behaviour of a system or model whose components interact in multiple ways and follow local rules, leading to nonlinearity, randomness, collective dynamics, hierarchy, and emergence.
The term is generally used to c ...
*
Stability
Stability may refer to:
Mathematics
* Stability theory, the study of the stability of solutions to differential equations and dynamical systems
** Asymptotic stability
** Linear stability
** Lyapunov stability
** Orbital stability
** Structural st ...
under changing
requirements
In product development and process optimization, a requirement is a singular documented physical or functional need that a particular design, product or process aims to satisfy. It is commonly used in a formal sense in engineering design, inclu ...
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
*
Code reuse
References
{{Authority control
Source code
Software quality