1. A method for managing hierarchically related software components, comprising: creating a first software component descriptor containing information about a first software component of a plurality of software components; creating a second software component descriptor containing information about a second software component of the plurality of software components; creating a plurality of aggregate descriptors, each descriptor containing information about relationships among the plurality of software components and aggregates of the plurality of software components; defining hierarchical interrelationships between the plurality of software components and the aggregate descriptors to produce a component hierarchy; managing lifecycles, access controls, interrelationships, versioning and a list of the plurality of software components to maintain the consistency of the component hierarchy; filtering the list of software components based upon the component hierarchy to produce a filtered list of software components; selecting a particular software component from the filtered list of software components; and integrating the particular software component into a software application; and modifying the component hierarchy based upon associations generated by the filtering.