We use the following definitions for common reuse terminology:
- Asset. An artifact that is retained after its initial purpose is fulfilled. For example, working source code is an asset because it is retained and potentially updated in the future to address new stakeholder needs. A user story that is discarded once the functionality it describes is implemented is not considered an asset.
- Robust asset. An asset that is appropriately documented, generalized beyond the needs of a single team, thoroughly tested, is of high quality, and ideally has several examples to show how to work with it. Robust assets are much more likely to be reused than items without these characteristics.
- Reusable asset. A robust asset that has been used at least three separate times by at least three separate teams. You can claim that something is reusable, but it isn’t truly reusable until it’s actually been reused; reusability is in the eye of the reuser, not in the eye of the creator.
- Ad-hoc reuse. An informal approach to reuse where individuals or teams reuse whatever they can find on their own. Ad-hoc reuse is often a good start.
- Engineered reuse. A formalized approach to reuse where an organization actively supports a reuse engineering strategy.
- Reuse engineering. The purposeful creation (or rescue), management, support, and governance of reusable assets.