At one time, discussions of components and component development were limited to small-grained, encapsulated software objects. The history of component development, however, is one in which the industry continually strives to employ larger-grained, more substantive componentry. Regardless of their form, however, support for both usable and reusable components, as well as component interoperability via interfaces, requires automated cataloging, component location, and routine inspection of component interfaces. Repositories provide this functionality. The repository's role Clearly, collections of reusable components and classes, regardless of their type, are of little use if the development environment in general is not repository-based.
Repositories can provide sophisticated methods for storing, browsing and examining components.
This is important because most barriers to reuse are largely organizational, and anything that can make components or component specifications easier to find and reuse is beneficial. But repositories can be much more than just a simple component catalogue and storage mechanism. That is, they also provide the underlying architecture for managing, controlling and sharing components. This architecture includes support for version control, dependency tracking, impact analysis and all the other necessary functionality required for large scale systems development efforts of any kind. The interfaces that let components interoperate must be well specified and sharable across all development groups.