Skip to content

Applications

Heiko Klare edited this page Aug 12, 2022 · 3 revisions

Applications

An application defines the relations between two metamodels. It essentially specifies how changes in instances of one metamodel have to be transferred to instances of another metamodel. For example, the UML-Java application defines how changes in a UML model are transferred to the corresponding Java model.

An application depends on two (sometimes just one) metamodel, which represent the metamodels for which consistency relations are specified.

Applications are built on top of the framework and are therefore placed in separate repositories. They can be found on the vitruv-tools landing page. Applications are defined in the tools.vitruv.applications.* namespace. If you need certain applications in your environment, you have to import the corresponding application projects as well as the metamodels these applications are based on into your workspace. For example, if you want to use the UML-Java application, you have to import the tools.vitruv.applications.umljava.* projects, as well as the metamodels provided in org.emftext.languages.java and org.eclipse.uml2.uml projects.

The relevant class of an application is the ChangePropagationSpecification it defines. Such a specification defines the consistency relations between the metamodels and can be used to automatically keep instances of the metamodels consistent. Such a ChangePropagationSpecification can be generated by documents written in the Reactions language.

Example Application: Component-based Systems Applications

Several applications have been developed for component-based software systems.

These applications comprise the following metamodels:

  • Palladio Component Model (PCM)
    • Requires the "Palladio Bench Core Features" from the update site
  • Unified Modeling Language (UML)
    • Ships with EMF
  • Java