In this paper, we analyse some existing approaches to service composition in terms of their strength, limitations and challenges. Some important concepts and principles are discussed which lead to a novel model-driven approach to attacking these challenges in the context of services engineering and Service-Oriented Computing (SOC). This approach is applied on a case study in a real world context. It shows some advantages, such as improved productivity and support to engineering decision-making and knowledge re-use. Some limitations are identified and future work is planned to address them.