1. A method of identifying existing software for reuse, comprising: maintaining a library of software profiles for existing software; creating a profile for desired software; searching the library to identify one or more similar existing software profiles based on the desired software profile; and identifying existing software.