Execution Subsystem - modelint/shlaer-mellor-metamodel GitHub Wiki

mint.sm-meta.execution.td.1 / Leon Starr / Version 0.2.0 / 2025-3-28

The vast bulk of the Shlaer-Mellor Metamodel subsystems are concerned with specifying modeling language semantics. The models in these subsystems define the building blocks and the rules for combining assembling these blocks to define the logic and dynamics of a user's software system.

Let's say for example that you are the user defining the Elevator Case Study system. The Shlaer-Mellor Metamodel language defines the classes, attributes, relationships of various types, lifecycles, assigners, actions, and all other language elements that you use to model each domain of your elevator system.

But to breathe life into your models, you need to populate the classes with instances: shafts, cabins, floors and such. And, for each instance of a class with a lifecycle, you need to put that instance into a current state. And then you need to inject live events into that system to kick things into action. Instances process incoming events, change states, execution actions and so forth.

Here, in the execution subsystem, we model the the dynamic behavior necessary to make all this happen.

Specifically, we define instance populations, the dispatching and processing of events, and the execution of actions.

This is the one subystem where we'll actually need to create state machines to express the behavior necessary to support all this activity.

By design, the Shlaer-Mellor methodology keeps the rules of dynamic behavior to a bare minimum. This philosophy puts the spotlight on the user's system structure, logic, and behavior rather than on intricate mechanics of a modeling language.

Consequently, we need only this one small and simple subsystem to express the dynamic rules of our entire modeling language.

Note: Well, maybe two small subsystems if we split Activity Execution out

Subsystem range: 2000-2099

Class Diagram

State machine diagrams

Class descriptions
Relationship descriptions