In component-based development (CBD), component is the basic unit for reuse and it provides a relatively coarse-grained functionality. A component typically consists of several related objects, where they collaborate in order to carry out system operations. Hence it is essential in CBD to identify components with high cohesion and low coupling. In this article, we propose a systematic UML-based method to identify components. Our approach makes use of clustering algorithms, metrics, decision rules and a set of heuristics. We assume that an object-oriented model for a target domain is available. The method takes these artifacts and transforms them into components in a seamless way.