I have been travelling every week for the past four weeks several locations per week... one theme seems to recur: the need to discuss what are the essential elements or constructs of an SOA, so we can go about building them.

In the world of OO, an Object has identity, state (attributes) and behavior (methods). In the world of SOA, a Service has a description which describes the interface to use to invoke its functionality. To be successful, services must also have a contract showing their quality of service (QoS) attributes. Thus, a Service Provider would guarantee a certain quality of service accompanying the functionality it is providing.

In order to build an SOA, which often implies both consuming and providing services, we need to identify three contructs: services, components and flows (processes). The services are realized through a special class of components, service components. Service Components not only provide the functionality for the services, but is a monitoried, managed enterprise-scale asset that is a governed, funded component. A Flow or process is used to choreograph/orchestrate services. Sometimes, a process is composed of a combination of services and hard-coded parts of the process; for performance or funding reasons, not every bit of functioanlity is separated out as a distinct service (e.g., a Web service).

Therefore, services have a service description that exposes their functional interface, but also has two additional elements reflecting the non-functional aspects of policies as well as the data model snippets they relate to, as depicted in their (input and output) messages. So services have a functional and operational side to them that are BOTH externalized so that they can be found, bound and invoked or applied (in the case of policy).

These three fundamental constructs must be identified, then specified in greater detail and then, finally, realized using some technology mapping. This process of service modeling is described in the Service-oriented Modeling and Architecture method.