Boolean Partition - modelint/shlaer-mellor-metamodel GitHub Wiki

Consider the following expression written in Scrall:

calling up, calling down = ^call dir == _up

The booelan predicate on the right of the assignment operator is evaluated and, if it evaluates to true, assignes (true, false) to the left hand side. Otherwise, (false, true). Downstream logic is now simplified so that we can do soemthing like:

cabin low and calling up?
    // actions

Without a preceding boolean expression, we would need to do:

^call dir == up and cabin height <= calling height

which is not as clear. Fine if you are writing code, but one of the primary reasons for modeling is to clarify the logic,

We could also get the same result by doing:

calling up = ^call dir == up
calling down = not calling up

(Or just doing the first statement and then writing:

cabin low and not calling up?
    // actions

So the Boolean Paritition is not truly essential, but it is a nice convenience.

Identifiers

  1. ID + Activity + Domain

Attributes

No non-referential attributes.