Web Services are modular, self-describing, self-contained and loosely coupled applications that can be published, located, and invoked across the web. With the increasing number of web services available on the web, the need for web services composition is becoming more and more important. Nowadays, for answering complex needs of users, the construction of new web services based on existing ones is required. This problem is known as web services composition. However, it is one of big challenge problems of recent years in a distributed and dynamic environment. The various approaches in field of web service compositions proposed by the researchers. In this paper we present a review of existing approaches for web service composition and compare them among each other with respect to some key requirements. We hope this paper helps researchers to focus on their efforts and to deliver lasting solutions in this field.