Reusability
Encyclopedia
In computer science
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...

 and software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

, reusability is the likelihood a segment of source code that can be used again to add new functionalities with slight or no modification. Reusable modules and classes reduce implementation time, increase the likelihood that prior testing and use has eliminated bugs and localizes code modifications when a change in implementation is required.

Subroutine
Subroutine
In computer science, a subroutine is a portion of code within a larger program that performs a specific task and is relatively independent of the remaining code....

s or functions are the simplest form of reuse. A chunk of code is regularly organized using modules or namespaces
Namespace (computer science)
A namespace is an abstract container or environment created to hold a logical grouping of unique identifiers or symbols . An identifier defined in a namespace is associated only with that namespace. The same identifier can be independently defined in multiple namespaces...

 into layer
Layer (HTML tag)
Layers were the core of a method of dynamic HTML programming specific to Netscape 4. Each layer was treated as a separate document object in JavaScript...

s. Proponents claim that object
Object (computer science)
In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure...

s and s 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 commonalities
Commonality
Aviation commonality describes the economic and logistic benefits of operating a standardized fleet of aircraft that share common parts, training requirements, or other characteristics. Commonality lowers the cost of operating a fleet of aircraft by reducing the quantity and variety of spare parts...

 among those parts. Reusability is often a required characteristic of platform
Platform (computing)
A computing platform includes some sort of hardware architecture and a software framework , where the combination allows software, particularly application software, to run...

 software. Reusability brings several aspects to software development
Software development
Software development is the development of a software product...

 that do not need to be considered when reusability is not required.

Reusability implies some explicit management of build
Software build
In the field of computer software, the term software build refers either to the process of converting source code files into standalone software artifact that can be run on a computer, or the result of doing so...

, packaging, distribution
Distribution (business)
Product distribution is one of the four elements of the marketing mix. An organization or set of organizations involved in the process of making a product or service available for use or consumption by a consumer or business user.The other three parts of the marketing mix are product, pricing,...

, installation
Installation (computer programs)
Installation of a program is the act of putting the program onto a computer system so that it can be executed....

, configuration
Computer configuration
In communications or computer systems, a configuration is an arrangement of functional units according to their nature, number, and chief characteristics. Often, configuration pertains to the choice of hardware, software, firmware, and documentation...

, deployment
Software deployment
Software deployment is all of the activities that make a software system available for use.The general deployment process consists of several interrelated activities with possible transitions between them. These activities can occur at the producer site or at the consumer site or both...

, maintenance
Software maintenance
Software Maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes....

 and upgrade
Upgrade
The term upgrade refers to the replacement of a product with a newer version of the same product. It is most often used in computing and consumer electronics, generally meaning a replacement of hardware, software or firmware with a newer or better version, in order to bring the system up to date...

 issues. If these issues are not considered, software may appear to be reusable from design
Software design
Software design is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution...

 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. http://www.umcs.maine.edu/~ftp/wisr/SEN-pap/node1.html

Candidate design features for software reuse include:
  • Adaptable
    Adaptability
    Adaptability is a feature of a system or of a process. This word has been put to use as a specialised term in different disciplines and in business operations. Word definitions of adaptability as a specialised term differ little from dictionary definitions...

  • Brief
    Brief
    Brief or briefs may refer to:* A firefox extension for RSS* A letter* A papal letter less formal than a bull, sealed with the pope's signet ring or stamped with the device borne on this ring...

    : small size
  • Flexible
    Flexible
    Flexible may refer to:* Flexible electrical cable, also known as a power cord* Flexible electronics* Flexible response* Flexible mold* Flextime* Flexible-fuel vehicle* Flexible rake receiver* Flexible spending account, a tax-advantaged savings account...

  • Parameterization
  • Generic
    Generic programming
    In a broad definition, generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters...

  • Fast
    FAST
    -Primary meanings:Fast may refer to:* Fast as in high speed or velocity, may be used with anything that has a speed.* Fasting, abstaining from foodSlang:* Fast, a slang term for someone who is sexually promiscuous-Sports:...

  • Simple: low complexity
    Complexity (disambiguation)
    In general usage, complexity tends to be used to characterize something with many parts in intricate arrangement.Complexity may also refer to:* Complex systems* Complexity theory * Kolmogorov complexity...

  • Localization of volatile (changeable) design assumptions (David Parnas
    David Parnas
    David Lorge Parnas is a Canadian early pioneer of software engineering, who developed the concept of information hiding in modular programming, which is an important element of object-oriented programming today. He is also noted for his advocacy of precise documentation.- Biography :Parnas earned...

    )
  • Modularity
    Modularity (programming)
    Modular programming is a software design technique that increases the extent to which software is composed of separate, interchangeable components called modules by breaking down program functions into modules, each of which accomplishes one function and contains everything necessary to accomplish...

  • Stability
    Stability Model
    Stability Model is a method of designing and modelling software. It is an extension of Object Oriented Software Design methodology, like UML, but adds its own set of rules, guidelines, procedures, and heuristics to achieve a more advanced Object Oriented software.The motivation is to achieve a...

     under changing requirements
  • Extensibility
    Extensibility
    In software engineering, extensibility is a system design principle where the implementation takes into consideration future growth. It is a systemic measure of the ability to extend a system and the level of effort required to implement the extension...

  • Consistency
    Consistency
    Consistency can refer to:* Consistency , the psychological need to be consistent with prior acts and statements* "Consistency", an 1887 speech by Mark Twain...

  • Correctness
    Correctness
    In theoretical computer science, correctness of an algorithm is asserted when it is said that the algorithm is correct with respect to a specification...

  • Orthogonality
    Orthogonality
    Orthogonality occurs when two things can vary independently, they are uncorrelated, or they are perpendicular.-Mathematics:In mathematics, two vectors are orthogonal if they are perpendicular, i.e., they form a right angle...



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.

External links

  • http://frakes.cs.vt.edu/renews.html
  • http://www.umcs.maine.edu/~ftp/wisr/SEN-pap/node1.html
  • http://www.soamag.com/I28/0430-1.asp
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK