A Theory of Service Dependency

Mats Neovius,Luigia Petre,Kaisa Sere
DOI: https://doi.org/10.4204/EPTCS.209.9
2016-06-07
Abstract:Service composition has become commonplace nowadays, in large part due to the increased complexity of software and supporting networks. Composition can be of many types, for instance sequential, prioritising, non-deterministic. However, a fundamental feature of the services to be composed consists in their dependencies with respect to each other. In this paper we propose a theory of service dependency, modelled around a dependency operator in the Action Systems formalism. We analyze its properties, composition behaviour, and refinement conditions with accompanying examples.
Logic in Computer Science
What problem does this paper attempt to address?
The problem that this paper attempts to solve is the modeling and analysis of service dependencies. With the increasing complexity of software and its supporting networks, service composition has become more and more common. However, the dependencies between different services have not been fully understood and formally described. These dependencies can be manifested as type and format dependencies between data producers and consumers, or as signature and semantic dependencies between service providers and service users. Specifically, the authors propose a service - dependency theory based on Action Systems formalism and introduce a special dependency operator. In this way, they hope to better understand the nature of dependencies between services, their composition behavior, and refinement conditions. This not only helps to gain a deeper understanding of the dependency problems in service composition but also provides theoretical support for service design and integration in practical applications. ### Main contributions of the paper: 1. **Define the dependency operator**: Define the dependency operator in the state - machine formalism and analyze its basic properties. 2. **Relationship with existing composition operators**: Study the relationship between the dependency operator and other existing composition operators (such as priority composition and sequential composition). 3. **Refinement conditions**: Explore the refinement conditions of the dependency operator to ensure that the dependency relationships remain consistent during system evolution. 4. **Case analysis**: Illustrate the application scenarios of the dependency operator through specific examples and show how to use this operator to describe and analyze service dependencies. ### Formal definition of the dependency operator: The dependency operator \(\text{\\}\) is defined as follows: \[ A_1 \text{\\} A_2 = g_{A_1} \land g_{A_2} \rightarrow A_1; A_2 \] where \(g_{A_1}\) and \(g_{A_2}\) are the guard conditions of actions \(A_1\) and \(A_2\) respectively, and \(;\) represents sequential composition. ### Weakest pre - condition and guard condition: The weakest pre - condition and guard condition of the dependency operator are respectively: \[ \text{wp}(A_1 \text{\\} A_2, q) = g_{A_1} \land g_{A_2} \Rightarrow \text{wp}(A_1, \text{wp}(A_2, q)) \] \[ g(A_1 \text{\\} A_2) = g_{A_1} \land g_{A_2} \land \text{wp}(b_{A_1}, g_{A_2}) \] ### Example: Take the bank teller service as an example. Suppose there is a process where a customer is waiting to be served, which involves three actions: - \(A_1\): The customer gets a queuing number and waits to be called. - \(A_2\): The teller calls the customer's number and provides service. - \(A_3\): The printer prints a receipt. Here \(A_2\) depends on \(A_3\) because only when the printer has paper can the teller successfully print a receipt. Therefore, we can use \(A_2 \text{\\} A_3\) to represent this dependency relationship. Through these works, the authors aim to provide a solid theoretical foundation for understanding and dealing with complex service dependencies in the modern digital society.