Web services provide an instantiation of the loosely coupled Service Oriented Architecture (SOA) and facilitate the process of enterprise application integration. However, with the explosive growth of the number of Web services published over the Internet, identifying a high quality of composite services by taking into account both functional and non-functional requirements of end users has become a real challenge that needs to be addressed. We propose in this paper an approach that adresses this challenge by considering a two-phase composition process. The composition first proceeds to generate an abstract plan based on Web service types using Dynamic Description Logics (DDL). This abstract plan is then concretized into an executable plan by selecting the appropriate Web service instances based on non-functional requirements.