Guideline: Documenting Service Dependencies
Consider these issues while documenting service dependencies.
Main Description

It is important to understand interservice dependencies, because they control the degree to which a service can be deployed as an autonomous unit. They impact its evolution over time, because dependencies become constraints on the service's ability to change. Pattern 10: Keep Architectural Elements Decoupled specifically speaks to techniques to use to reduce data-related dependencies between services.

Service dependencies describe the relationships between services that arise in the larger context of how they will be used. Such dependencies include these examples:

  • Functional dependencies and composite dependencies that arise from composition of multiple services.
    • Example: The purchasing service depends for its functionality on services that meet the specifications for the InvoicingService, Scheduling, and ShippingService ServiceInterfaces.
  • Temporal dependency where there is some pre- or post-condition or processing requirement that will need to be accounted for in compositions or choreographies.
    • Precondition dependency: Another service must be invoked before the current invocation can begin.
    • Processing dependency: Another service invocation is required to complete the successful execution of the current service.
    • Post-condition dependency: This occurs in cases where a service requires another service invocation after its execution.

These dependencies might often be a part of the decision process that a service client has to go through in choosing to reuse a service, particularly if there are multiple implementations to chose from.

These are the kinds of dependencies and associations in the service model that are important:

  • The relationship between a ServiceInterface and the Participants that realize it
  • The relationship between a ServiceInterface and its provided and required interfaces
  • The relationship between a service (in SoaML terms, a ServicePoint) and the ServiceInterface types of any services it depends on for its functionality
  • The relationship between a service and any ServiceChannel that connects it to other services
  • The relationship between a service and any service-oriented solution in which the service participates

Therefore, it is important that all service specifications be complete, not only with respect to the operations and messages they provide, but also regarding any dependencies, such as required interfaces for callBack operations.

More Information