Today, many software-based, reactive systems offer a multitude of functionality. One way to master the development of such a system is to model its functionality on an abstract level and derive a system architecture and an implementation out of this functionality model. In this paper, we present an approach to model the functionality by means of related, interacting services. For us, a service represents an single functionality of a system. The concept of services is used in two consecutive model layers with well-defined semantics leading from a black-box description of the system to a white-box model which consists of communicating services. Due to the precise semantics of a service and the interaction of services, the service models can be directly refined to a logical component architecture which in turn integrates into the development of a concrete implementation of the overall system.