Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
Domains and Applications
Table of Contents
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.
- The UML2 metamodel ships with EMF
- EMFText 1.4.1 from the Eclipse Marketplace
- JaMoPP 1.4.1 from the nightly update site (see Installing from update sites), do not use the Eclipse Marketplace as this will give you JaMoPP 1.4
- ASEM metamodel from the GitHub project: https://github.com/kit-sdq/ASEM
- Import the metamodel into your workspace
- Papyrus modeling environment from Eclipse Modeling Components
- SysML 1.4 from Papyrus Additional Components
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.
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)
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.
Applications for automotive software systems can be found here: TBA Currently, these domains are supported:
- Systems Modeling Language (SysML)
- Automotive Software Engineering Metamodel (ASEM)