1. A method for component discovery from source code, the method comprising: receiving source code; determining business classes by excluding packages and classes in the source code identified at least one of as belonging to a presentation layer, as belonging to a data access layer, as models and as utilities; extracting features from the business classes; estimating similarity for business class pairs based on the extracted features; clustering, by a processor, 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.