Home - modelint/xuml-populate GitHub Wiki
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.
Documentation and resources
The purpose of this wiki is to fully document the design and usage of the metamodel populator with links to helpful illustrations, videos, books and other helpful resources. Links to other repositories in the Blueprint modeling ecosystem will be provided throughout.
Latest project status
25-4-29
Just released version 0.2.0!
- Populates the metamodel Wave and Wave Assignment classes to establish the required order of execution of data flow diagram actions to support Activity execution
- The class model *.xcm file is now stored in a dedicated folder