1. A method for component discovery from source code, the method performed by a processor and comprising: receiving source code; determining business classes by determining a component identification boundary in the source code; extracting features from the business classes by extracting packaging information for each of the business classes, wherein extracting packaging information for each of the business classes includes extracting concept words embedded in business class names, extracting a packaging hierarchy as a string, and extracting a substring that describes the packaging hierarchy; estimating similarity for business class pairs based on the extracted features; clustering the business classes based on the similarity, wherein clusters generated by the clustering represent components of the source code; and determining interfaces for the components based on the clustering.