Skip to content
Leon Starr edited this page Oct 6, 2023 · 15 revisions

Introduction and Status

Our goal here is to define a repository for the Shlaer-Mellor xUML metamodel and then provide the tooling necessary to populate that repository with user specific models.

The metamodel defines the semantic building blocks necessary to express a Shlaer-Mellor xUML modeled system. It is basically xUML modeled using xUML. From here on in, when I use the term 'xUML' I am referring to Shlaer-Mellor Executable UML as defined in the metamodel link above.

The workflow

A modeler specifies a system consisting of a set of domains, class models, state machines, and activities. This specification is a set of text files that describe all these model elements. A small handfull of DSLs (domain specific languages) have been defined to ensure that the text specifications are adequately detailed, consistent with the metamodel, and machine readable.

For example, a class model is written as an *.xcm (executable class model) file. A state machine is a *.xsm (executable state machine) and activities are expressed using an action language named Scrall

All of these model specifications and associated documentation are organized into a system package which is just a hierarchy of folders and files.

The xuml populator will then parse all of the model files into model semantics (classes, attributes, states, signals, traverse actions, etc) and stuff them into a predefined metamodel database.

Validation is performed both during parsing and during database population. Parse level validation looks for conssitency in the specificaiton language while population level validation ensures that the model itself is internally consistent, complete, and doesn't break the modeling formalism.

Now that your system is successfully loaded into the metamodel database, you can use various tools to extract the model elements and do useful things like generate code, estimate performance characteristics, perform logical analysis, and generate a variety of other artifacts.

Here we load the Shlaer-Mellor metammodel into a TclRAL database.

So far, class models and state models load into the database okay via PyRAL (yet another work in progress).

I am in the process of building a Scrall grammar and parser (included in this repo).

It is going well.

Once that is completed, the Activity Subsystem will be populated with the parsed actions.

The metamodel Activity Subsystem is at about 90% completion. By attempting to populate it with parsed actions, I hope to get it finished for presentation of the complete Shlaer-Mellor Metamodel and Scrall 2.0 as a full fledged action language by the end of the 2023.

All during evenings and weekends with a toddler tugging at my arm.

This is a big year for Shlaer-Mellor.

Clone this wiki locally