The constraint diagram language was designed to be used in conjunction with the unified modelling language (UML), primarily for placing formal constraints on software models. In particular, constraint diagrams play a similar role to the textual object constraint language (OCL) in that they can be used for specifying system invariants and operation contracts in the context of a UML model. Unlike the OCL, however, constraint diagrams can be used independently of the UML. In this paper, we illustrate a range of intuitive and counter-intuitive features of constraint diagrams and highlight some (potential) expressiveness limitations. The counter-intuitive features are related to how the individual pieces of syntax interact. A generalized version of the constraint diagram language that overcomes the illustrated counter-intuitive features and limitations is proposed. In order to discourage specification readers and writers from overlooking certain semantic information, the generalized notation allows this information to be expressed more explicitly than in the non-generalized case. The design of the generalized notation takes into account five language design principles which are discussed in the paper. We provide a formalization of the syntax and semantics for generalized constraint diagrams. Moreover, we establish a lower bound on the expressiveness of the generalized notation and show that they are at least as expressive as constraint diagrams.
- Constraint diagrams
- Precise software specification
- Diagrammatic specification