1. A method of collecting data concerning software including the steps of: discovering previously unknown information about a software component using a data processing device which includes a memory and a processor; creating a dependency model in a knowledge model base for the previously unknown information including a plurality of weighted dependency links; walking the dependency model for a subset of components of the software component that are needed for a successful installation of the software component; building an installation map in the knowledge model base of the subset of components; identifying duplicate components in the installation map that indicate at least one circular dependency; in response to identifying at least one circular dependency, using a weighted dependency of less weighting so as to not create the at least one circular dependency; and producing a set of components required for installation of the software component and installation rules.