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.