1. A method for finding dependencies in a software system, the method comprising: obtaining an input resource, wherein the resource includes a plurality of entry points to the software system and at least one strategy; identifying at least one artifact for each of the plurality of entry points; using the at least one strategy for gathering a plurality of related artifacts in the software system, wherein each of the plurality of related artifacts is heterogeneous in at least one of structure, composition, and relationships; determining a dependency between the gathered plurality of related artifacts; and outputting an output resource, wherein the output resource comprises the at least one dependency.