Software reusability is a software engineering concept that describes when a previously designed and developed software element can be used in a new application with little or no rework or additional investment.

A software element is one of the basic building blocks in the design of a computer software program, typically called a module, component, etc.

Software reusability more specifically refers to design features of a software element (or collection of software elements) that enhance its suitability for reuse.

Candidate design features for software reuse include:

  • Adaptable
  • Brief: small size
  • Flexible
  • Parameterization
  • Generic
  • fast
  • Simple: low complexity
  • Localization of volatile (changeable) design assumptions (David Parnas)

Consensus has not yet been reached on this list or the relative importance of the entries nor on the issues which make each one important for a particular class of applications.


This article is a stub. You can help Wikipedia by fixing it.