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
- ID + Activity + Domain
Attributes
No non-referential attributes.