Reusing software components (e.g. classes or modules) improves software quality and developer’s productivity. Unfortunately, developers may miss many reusing opportunities since current keyword based component search systems cannot provide reusable components if the developers do not use them. This paper proposes a new automatic component recommendation system which supports various usage scenarios and procedures for component reuse. 1 Automatic Component Recommendation Reusing software components (e.g. modules or classes) improves software productivity and quality [3]. There exists a countless number of software components but developers cannot easily benefit from their reuse, since components are sometimes poorly documented and not designed for reuse. To find reusable components satisfying certain requirements, developers often use keyword-based search systems. However, keyword-based search systems recommend components only upon an explicit developer interrogation; consequently,...