QVT 1.4 RTF Avatar
  1. OMG Issue

QVT14 — QVTr - Check before enforce is unsound

  • Key: QVT14-55
  • Status: open  
  • Source: Model Driven Solutions ( Ed Willink)
  • Summary:

    QVTr (and QVTc) defines check and enforce modes with a check-before-enforce specified to suppress a redundant enforce. This seems sensible but is only possible for trivial cases. A relation/mapping defines constraints between objects that check mode can validate. But while checking before enforcing none of the intermediate and trace objects exist, so only trivial relations/mappings whose intermediate objects can be inferred can actually be checked. In the general case most of an enforce execution must be performed in order to create the intermediates. In practice, much simpler to specify a full enforce to an internal-output that can then be synchronized with the output-under-test. Successful synchronization determines the check success. If an internal-output is still available as a consequence of an earlier enforce, then a synchronize and check of yet another output-under-test can re-use the enforce. But check cannot be done without a prior enforce. For the trivial cases implementations may synthesize an optimized enforce/synchronize to improve check performance.

  • Reported: QVT 1.3 — Mon, 31 Jul 2017 06:52 GMT
  • Updated: Sat, 9 Mar 2019 08:45 GMT