In general, techniques are described that facilitate the reuse of software
assets within an enterprise. A software asset, as used herein, refers to
a set of one or more related artifacts that have been created or
harvested for the purpose of applying that asset repeatedly in subsequent
development environments. A system, for example, is described that
includes a repository to store artifacts, and an asset source to generate
a software asset based on the artifacts. The system further includes an
asset management system to receive the software asset from the asset
source and store the software asset within an asset library. The system
may further include a model having one or more elements, and an asset
retrieval module to selectively retrieve a subset of the software assets
from the asset library based on input from a user identifying one or more
of the elements.