1. A method of identifying existing software components for reuse, comprising: maintaining a library of existing software profiles for corresponding existing software components, each existing software profile including a set of attributes associated with an existing software component, and each existing software profile created from a semantic analysis of the corresponding existing software component, the semantic analysis based at least in part on a software classification system, and wherein the set of attributes included in each of the existing software profiles is according to at least a first software taxonomy; creating a profile for desired software, the desired software profile defining a conceptualized software component and comprising a set of search criteria associated with the library of existing software profiles, wherein the search criteria include attributes according to a second software taxonomy different from the at least first software taxonomy; searching, by at least one processor, the library of existing software profiles to identify one or more existing software profiles similar to the desired software profile; identifying, by the at least one processor, one or more existing software components associated with the one or more similar existing software profiles identified in the search; and providing said identified one or more existing software components to a user.