Domain-Specific Modeling Language (DSML)
A Domain-Specific Modeling Language (DSML) is a modeling language tailored for a specific and delimited domain. A DSML is a combination of visual presentation of entities from the domain as well as a set of rules and guidelines that defines how they should be organized and related to each other. A well-defined DSML helps you to express whatever needed in the specific domain in a correct manner without disturbance from concepts irrelevant for the domain.
A UML-based DSML is a combination of extensions and limitations of the Unified Modeling Language (UML) for a specific modeling domain. A UML-based DSML does often, but not always, include UML-profile(s) with stereotypes and additional properties, as well as new graphics (icons and symbols).
A UML-based DSML normally contains a set of constraints on how to be applied in terms of model structure, elements and relationships usage, valid property values as well as diagram usage, placement and content etc.
MetaModelAgent Tool Extension
MetaModelAgent is a tool extension to Eclipse-based UML-modeling tools.
With MetaModelAgent you can easily define and use your own DSML in your existing modeling tool. The concept of MetaModelAgent is based on a formal UML-based representation of your DSML, a so called Metamodel. MetaModelAgent will make use of the metamodel to provide additional DSML-adapted features to the modeling tool and make sure that the models conforms to the DSML.
Define your own UML-based DSML
MetaModelAgent lets you easily define your own DSML for input. You simply define your own DSML by developing a metamodel that together with your UML-profiles capture your DSML.
A metamodel is simply a UML-model following the specific metamodel notation developed for MetaModelAgent. A Metamodel can be defined by anyone with decent knowledge in UML.
MetaModelAgent comes with a complete user manual of the metamodel notation , as well as an embedded meta-metamodel that helps you create and validate your DSML using MetaModelAgent itself.
Within a metamodel you can express constraints on the model structure, the use of elements and stereotypes, the use of diagram and diagram content, relationship usage and property values etc.
Use your own UML-based DSML
When the metamodel defining your DSML is ready, the users simply establish a connection (dependency) between their models and your metamodel. This dependency tells MetaModelAgent that the model should be compliant with the metamodel and will activate MetaModelAgent functionality for the model.
After activating MetaModelAgent for the model, you have access to MetaModelAgent's unique features for efficient modeling, analysis, and publishing. Read more about the features provided by MetaModelAgent.
Use standard UML or UML-RT out of the box
If you do not have a need for your own DSML, MetaModelAgent will use a built-in general UML metamodel covering standard UML. If your are running RSARTE and develop UML-RT models, MetaModelAgent will use a built-in general UML-RT metamodel instead.
When using one of those metamodels, MetaModelAgent will not detect any compliancy deviations, but will still provide you with a lot of unique features for efficient UML modeling, model analytics and model publishing.
This means that even if you do not have any plans for using any UML or UML-RT customizations, MetaModelAgent will still give you substantial business value.
What about UML Profiles?
MetaModelAgent and metamodels are not a substitution for UML profiles in any way.
If your DSML is in need of stereotypes, optionally with additional properties, you should still develop UML profiles for those extensions. From your metamodel you will then refer to your stereotypes and stereotype properties in your profiles whenever needed, optionally with more fine-grained property value constraints than expressible in a profile.
If your DSML is just a subset of UML with no need for extensions, that subset can be defined in a metamodel without need for any profile.
MetaModelAgent allows you to have an unlimited number of metamodels available in the same workspace.
Metamodels can extend each other in several levels making it possible to provide several dialects of the same DSML. Any model can be connected to several different metamodels (but only activated towards one metamodel at a time).
Metamodels can be deployed in plugins and managed by your favorite CM-tool, making it easy to manage and deploy to the users.
MetaModelAgent does not add anything to your model that goes behind standard UML and can be added using the standard user interface in your host tool. The only footprint MetaModelAgent will add to your models is dependency relationships, representing the connections to your metamodel.
This means that you will never be locked-in using MetaModelAgent. You can stop using MetaModelAgent at any time and continue using the standard user interface in the original modeling tool, although it will have a negative impact on your performance.
“Enabling a tailor-made Modeling Environment for your Enterprise Architecture” is an article that describes definition and usage of a domain-specific language. The article focuses on enterprise architecture and open source Eclipse Papyrus, but it is applicable for any modeling domain and also for IBM RSAD/RSARTE and HCL RTist modeling tools.
MetaModelAgent's Youtube channel contains several introduction and demo videos which describes the concept of, and demonstrates the features in MetaModelAgent.