Skip to content

Domains and Applications

HeikoKlare edited this page Nov 28, 2016 · 3 revisions

Table of Contents

Domains

A domain represents a certain metamodel and attached information for its use within the Vitruvius framework. It essentialles defines a specialization of the Vitruvius Metamodel class (no Ecore metamodel) with information about the metamodel's namespaces, file extensions, etc.

Domains are defined in the tools.vitruv.domains.* namespace and are persisted in the domains folder of the Vitruv project. If you need certain domains in your environment, you have to import the corresponding domain projects into your workspace.

Domains depend on the metamodels they represent. This is why most domains have further dependencies on the projects that define the metamodel. Dependencies for the different metamodels are presented in the following.

Supported Domains

Unified Modeling Language (UML)

  • The UML2 metamodel ships with EMF

Java Metamodel (JaMoPP)

Palladio Component Model (PCM)

Automotive Software Engineering Metamodel (ASEM)

Systems Modeling Language (SysML)

  • Papyrus modeling environment from Eclipse Modeling Components
  • SysML 1.4 from Papyrus Additional Components

Applications

An application defines the relations between two domains. It essentially specifies how changes in instances of one domain's metamodel have to be transferred to instances of another domain's 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) domains, 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 (https://github.com/vitruv-tools). 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 domain projects that the application depends 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 tools.vitruv.domains.java.* and tools.vitruv.domains.uml.*' projects from the appropriate 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 is generated by documents written in the reactions language.

Application Repositories

Component-based Systems Applications

Several applications are developed for component-based software systems: https://github.com/vitruv-tools/Vitruv-Applications-ComponentBasedSystems These applications comprise the following domains:

  • Palladio Component Model (PCM)
  • Unified Modeling Language (UML)
  • Java

PCM-Java Additionals

For the PCM-Java applications, several further projects, especially for integrating existing projects and keeping service-effect specifications (SEFFs) consistent, have been developed. They can be found in an extra repository: https://github.com/vitruv-tools/Vitruv-Applications-PCMJavaAdditionals These applications are not necessary for the green-field consistency mechanisms (projects are built from scratch), except for the consistency of SEFFs.

Automotive Software Systems Applications

Applications for automotive software systems can be found here: TBA Currently, these domains are supported:

  • Systems Modeling Language (SysML)
  • Automotive Software Engineering Metamodel (ASEM)
You can’t perform that action at this time.