Domain-Specific Modeling Language (DSML)
A Domain-Specific Modeling Language (DSML) is a modeling language tailored for a very specific and limited domain. A DSML is a combination of visual presentation of entities from the domain as well as a set of rules that defines their behavior. 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 is a tool extension to open source Papyrus Modeling environment and IBM Rational Software Architect (RSA).
With MetaModelAgent you can easily define and use your own DSML in Papyrus or RSA. 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 online-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 and ensuring compliancy to your DSML. Read more about the unique features.
Use standard UML without any customization
If you do not have a need for your own DSML, MetaModelAgent will use a built-in general UML metamodel covering standard UML.
When using this metamodel, MetaModelAgent will not detect any compliancy deviations, but will still provide you with a lot of unique features for efficient UML modeling and not least impressive model publishing.
This means that even if you do not have any plans for using any UML-customization, 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 RSA or Papyrus. 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 Papyrus or RSA, although it will have a negative impact on your performance.