Basile D., Ter Beek M. H., Degano P., Legay A., Ferrari G. L., Gnesi S., Di Giandomenico F.
Behavioural variability Supervisory control theory Service orchestrations Variability Service computing Contract automata Software
Service contracts characterise the desired behavioural compliance of a composition of services. Compliance is typically defined by the fulfilment of all service requests through service offers, as dictated by a given Service-Level Agreement (SLA). Contract automata are a recently introduced formalism for specifying and composing service contracts. Based on the notion of synthesis of the most permissive controller from Supervisory Control Theory, a safe orchestration of contract automata can be computed that refines a composition into a compliant one. To model more fine-grained SLA and more adaptive service orchestrations, in this paper we endow contract automata with two orthogonal layers of variability: (i) at the structural level, constraints over service requests and offers define different configurations of a contract automaton, depending on which requests and offers are selected or discarded, and (ii) at the behavioural level, service requests of different levels of criticality can be declared, which induces the novel notion of semi-controllability. The synthesis of orchestrations is thus extended to respect both the structural and the behavioural variability constraints. Finally, we show how to efficiently compute the orchestration of all configurations from only a subset of these configurations. A prototypical tool supports the developed theory.
Source: Science of computer programming (Print) 187 (2019). doi:10.1016/j.scico.2019.102344
Publisher: North-Holland, Amsterdam , Paesi Bassi
@article{oai:it.cnr:prodotti:409807, title = {Controller synthesis of service contracts with variability}, author = {Basile D. and Ter Beek M. H. and Degano P. and Legay A. and Ferrari G. L. and Gnesi S. and Di Giandomenico F.}, publisher = {North-Holland, Amsterdam , Paesi Bassi}, doi = {10.1016/j.scico.2019.102344}, journal = {Science of computer programming (Print)}, volume = {187}, year = {2019} }