Computation - modelint/shlaer-mellor-metamodel GitHub Wiki

We define an Action that applies an operator such as +, -, JOIN, and so forth to Operands provided by one or more Data Flows and yields a single output Data Flow as a Computation Result. We can't use the term Operation as it is already defined on External Entities.

When describing an Activity textually in a language such as Scrall, we use local variables to collect intermediate results.

Consider an example assignment in Scrall:

destination heights #= ((requested stops.(Floor, Shaft) + requested floors) ## Floor[Name >> Floor]).(Floor, Height)

Here we are using the #= table assignment operator to place a table value in the destination heights variable.

On the right hand side (RHS) of the assignment there is a nested expression consisting of multiple operands and operators that ultimately yield the assigned value.

The metamodel action semantics must be independent of any action language. To accomplish this, we think in terms of data flow semantics. So what we really see in our example is set of computational operations UNION +, JOIN ## and some relational restriction, projection, and attribute rename >> operations.

Note that the outputs of many of these operations are unlabeled. It is only the final result of the RHS expression that is assigned a name on the LHS.

In data flow terms, we can think of each operator defining some computation that takes one or more data flow inputs. Each such input may be either a variable in which case we think of it as a labeled data flow, or the result of some other computation which is an unlabled data flow output. Think of each nested operation as yielding an labeled result.

The parenthetic nesting, however, is an artifiact of textual representation. If we think in terms of a data flow diagram, we realize that the process of assignment is not really an Action. Assignment as we think of it in a textual action langauge is simply the labeling of a data flow output. All non-labeled outputs correspond to a level of parenthetical nesting.

Identifiers

  1. ID + Activity + Domain

Attributes

Operator

A name or symbol that identifies a specific type of computation. This name corresponds to a computation defined outside the metamodel in a typing system.

Type: Operator Name, based on Name