Interoperability

Interoperability verification mainly focus on evaluating whether a concrete local model can play a role in a global model without undermining local and global rules. This is particularly important in a service-oriented setting, where a choreography is designed as a contract containing rules of engagement to make different partners correctly collaborate, and then a set of compatible concrete services implementation must be found to concretely realize the system.



Because DecSerFlow models are declarative and loosely-coupled, the only form of interoperability currently addressed in CLIMB is an existential one. That is, a global and a local model are composed by simply joining their constraints and then g-SCIFF is used to detect conflicts and dead activities on the overall model (see the Static Verification section). If such an overall model is conflicts-free, then at least one execution exists such that both choreography and service constraints are satisfied.



CLIMB interoperability does not ensure that an interoperable service w.r.t. the choreography will correctly interact with any other interoperable service (see the work of Baldoni et al.), because it aims to find agreement on at least one execution. From the other side, it is more flexible: actually, a pool of services non totally conformant could anyway correctly interact with each other satisfying choreography constraints as well.