Definition of Reuse

  • The reuse of a software artifact is its integration into another context.

Why reuse?

  • The purpose of reuse is to reduce cost, time, effort, and risk; and to increase productivity, quality, performance, and interoperability.

Scope of reuse for ESDS

  • The most common type of reuse is the reuse of software components, but other artifacts produced during the software development process can also be reused: system architectures, analysis models, design models, design patterns, database schemas, web services, etc.
  • Software reuse may occur across similar systems (e.g., within the Earth science community) or across widely different systems (e.g., we may be able to reuse a component from outside the Earth science community).

What counts as reuse?

  • In general, if you have acquired (or used) a software development asset from another context that otherwise you would have written yourself, then you have experienced the benefit of reuse.
  • Something that was originally written for a different Earth science project will usually be recognized as reuse.
  • Integration of open source software that was originally developed in another context will generally be recognized as reuse.

What doesn't count as reuse?

  • Software developed and used repeatedly by the same people on the same project is regarded as "good programming practice" and is not typically counted as reuse.
  • Product maintenance and new product versions; we do not usually claim the base code as reuse.
  • Use of operating systems, database management systems, and other system tools is generally not regarded as reuse.
  • The use of commercial off-the-shelf (COTS) software is generally not regarded as reuse.