1. A method for managing hierarchically related software components, comprising: creating a software component descriptor containing information about a software component; creating one or more aggregate descriptors containing information about a set of related software components or aggregates of software components; defining hierarchical interrelationships between software components and aggregates of software components to produce a component hierarchy; and managing lifecycles, access controls, interrelationships and versioning of software components to maintain the consistency of the component hierarchy.