Matching implementations to specifications

Ramon Janssen, Jan Tretmans · 2019

A well-known conformance relation for model-based testing is ioco. A conformance relation expresses when an implementation is correct with respect to a specification. Unlike many other conformance and refinement relations, ioco has different domains for implementations and for specifications. Consequently, ioco is neither reflexive nor transitive, implying that a specification does not implement itself, and that specifications cannot be compared for refinement. In this paper, we investigate how we can compensate for the lack of reflexivity and transitivity. We show that (i) given a specification, we can construct in a standard way a canonical conforming implementation that is very 'close' to the specification; and (ii) a refinement preorder on specification models can be defined such that a refined model allows less ioco-conforming implementations. We give declarative and constructive definitions of both, we give examples of unimplementable corner-cases, we investigate decidability, and we do that for ioco as well as for the ioco-variant uioco. The latter turns out to be simpler and on more aspects decidable.

Read the paper · More papers on PaperTik