Skip to main content

Populates the SM Metamodel schema with a user model and outputs this as a TclRAL *.ral database

Project description

Blueprint MBSE Repository Populator

This package transforms human readable text files describing an Executable UML model of a system into a populated metamodel database. With your models loaded into this database it is now possible to produce a variety of useful artifacts to support model execution and verification, code generation and anything else that performs detailed analyis on the model components and their relationships.

The text files are expressed in an easy to read markdown format so you can browse through the classes, relationships, states and transitions, actions and all other model components.

Here we support the Shlaer-Mellor variant of Executable UML exclusively.

Command usage

% modeldb -s elevator-case-study

Assuming your system is named 'elevator-case-study' and is in the current working directory with the internal structure defined below, will output a file named mmdb_elevator-case-study.ral. This *.ral file is a text file serialization of a TclRAL database.

Your user model is loaded into the Shlaer-Mellor Metamodel and, if there are no errors, you know you have a Shlaer-Mellor Executable Model that doesn't break any of the rules defined by the metamodel.

You can load and view it using TclRAL or PyRAL or feed it to other downstream Blueprint tools such as the Model Executor which among its tasks will generate a user model database.

Input to the populator

Each system is defined in a single package broken down into standard hierarchy of folders like so:

system
    domain
        subsystem
            classmodel.xcm
            types.yaml
            methods
                m1.mtd
                m2.mtd
                ...
            state-machines
                s1.xsm
                ...
            external
                EE
                    op1.op
                    ...
        subsystem2
        ...
    domain2
    ...

Here is a partial layout for The Elevator Case Study as an example:

elevator-case-study // system
    elevator-management // application domain
        elevator // All defined in one subsystem
            elevator.xcm // the class model
            methods // methods for all classes in subsystem
                cabin // methods on 'cabin' class
                    ping.mtd // the ping method
                    ...
                ...
            state-machines // lifecycles and assigners for this subsystem
                cabin.xsm // lifecycles named by class, assigners by association
                transfer.xsm
                R53.xsm // assigner state machine on association R53
                ...
            external // external entities, each a proxy for some class
                CABIN // proxy for 'cabin' class
                    arrived-at-floor.op // two ee operations
                    goto-floor.op
        types.yaml // data types for all subsystems in domain
    transport // two more domains (not broken down yet)
    signal io

Each modeled domain has its own folder. Above we just see one for the Elevator Managment domain.

Each domain requires at least one subsystem folder. Here we see only one and that is the Elevator domain.

Within a subsystem folder there is one class model expressed as an .xcm (executable class model) file.

The folders are optional and are:

  • external – external entities and their operations, one subfolder per external entity
  • methods – class methods each in a folder matching the class name with each method in a separate .mtd file
  • state-machines – each state machine, assigner or lifecycle, in its own .xsm (executable state machine) file

Also within a domain you have a types.yaml file which specifies each domain specific type (Pressure, Speed, etc) and selects a corresponding system (database) type. This is a stop gap measure as we have not yet provided a more robust typing domain, so, for now we settle with what our database has to offer (int, string, float, etc). Unltimately, though, a full featured typing facility will support a variety of types and operations on those types as well as a type definition system. Note that the typing facility can be, but need not necessarily be a modeled domain.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xuml_populate-0.1.6.tar.gz (76.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xuml_populate-0.1.6-py3-none-any.whl (105.0 kB view details)

Uploaded Python 3

File details

Details for the file xuml_populate-0.1.6.tar.gz.

File metadata

  • Download URL: xuml_populate-0.1.6.tar.gz
  • Upload date:
  • Size: 76.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.4

File hashes

Hashes for xuml_populate-0.1.6.tar.gz
Algorithm Hash digest
SHA256 de4398fd5e3ecc78650319f7149fe5ffd474000670bf5ab67585cbab46aa42fb
MD5 62b76ef63646f7b7928c09b682ff3c4c
BLAKE2b-256 e2ad01f615ac70b0e0797e1ed5bc644a382a41bc0f3508cb70c0188fdb86ec9e

See more details on using hashes here.

File details

Details for the file xuml_populate-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: xuml_populate-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 105.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.4

File hashes

Hashes for xuml_populate-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 2cf0e1648b1d522b52e7d6eae0d68d729169d22fe91210263d66103a691ba93e
MD5 3ef9bde36a707bb1d184da71943be00f
BLAKE2b-256 d527e2374839755e14b5ca9f12cf089a002c85f5be0763e0ca3e2f88e2502bd3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page