Skip to content
@vitruv-tools

Vitruvius Tools

Vitruvius Project Development.

Vitruvius

DOI

Vitruvius is a framework for view-based (software) development. It assumes different models to be used for describing a system, which are automatically kept consistent by the framework executing (semi-)automated rules that preserve consistency. These models are modified only via views, which are projections from the underlying models.

A bunch of information on what Vitruvius is and how it can be used can be found in the GitHub wiki.

Idea

Vitruvius is based on the idea of a Single Underlying Model (SUM), which represents all information about a system in a single, redundancy-free und inherently consistent model. A SUM requires the definition of one overarching, redundancy-free model for every development project, although in practice different tools for different purposes are used and thus such a SUM is hard to construct and maintain. Vitruvius extends the concept to a Virtual Single Underlying Model (V-SUM). It is virtual, because it behaves like a SUM in the sense that it is always consistent, but it does not achieve this by being free of redundancies and implicit dependencies but by having explicit rules that preserve consistency of the different models after they have been changed via views.

Vitruvius stands for "VIew-cenTRic engineering Using a VIrtual Underlying Single model" and is developed at the Dependability of Software-intensive Systems group (DSiS) at the Karlsruhe Institute of Technology (KIT).

Getting Started

Vitruvius is realized as a set of Maven projects. It depends on the Eclipse Modeling Framework (EMF) as the modelling environment, on Xtext for language development (in particular the languages for specifying how consistency is preserved), and Xtend and Java for code. No Eclipse installation is required to build or run a Vitruvius project.

Prerequisites: Java 21 and Git. Maven is not required, since all projects come with a Maven wrapper (mvnw).

The easiest way to start is the Methodologist-Template, a ready-to-build V-SUM with two metamodels, a set of Reactions, and tests:

git clone https://github.com/vitruv-tools/Methodologist-Template.git
cd Methodologist-Template
./mvnw clean verify

If the build succeeds and all tests pass, continue with the tutorial in the same repository. It walks you through extending a metamodel, writing a consistency preservation rule in the Reactions language, and testing it.

Alternatively, you can

  • generate a V-SUM project from your own metamodels and Reactions with the Vitruv-CLI, or
  • use the web-based Methodologist Dashboard to upload metamodels and edit Reactions in the browser. The Dashboard is currently only reachable via IPv6; a host name will follow.

More background on the concepts, the roles involved in using Vitruvius, and on extending Vitruvius itself is provided in the Getting Started wiki page.

Using Vitruvius in Your Own Maven Project

All artifacts are published under the group ID tools.vitruv on Maven Central. We recommend inheriting from our parent POM, which manages plugin versions and repositories:

<parent>
  <groupId>tools.vitruv</groupId>
  <artifactId>parent</artifactId>
  <version>4.0.0</version>
</parent>

The artifacts most projects need are:

Artifact Purpose
tools.vitruv.framework.vsum Creating and running a V-SUM
tools.vitruv.framework.views Accessing and modifying the models in a V-SUM via views
tools.vitruv.change.propagation, tools.vitruv.change.interaction Change propagation and user interaction during consistency preservation
tools.vitruv.dsls.reactions.language, tools.vitruv.dsls.reactions.runtime Compiling (via the xtext-maven-plugin) and executing consistency preservation rules written in the Reactions language
tools.vitruv.change.testutils.integration Test utilities for V-SUMs and their consistency preservation rules
<dependency>
  <groupId>tools.vitruv</groupId>
  <artifactId>tools.vitruv.framework.vsum</artifactId>
  <version>4.0.0</version>
</dependency>

See the POMs of the Methodologist-Template for a complete working configuration, including the generation of code from Reactions.

Snapshot builds of the current development state are published to the Maven Central snapshot repository. Projects inheriting from the parent POM resolve snapshots automatically; otherwise add:

<repositories>
  <repository>
    <id>central-portal-snapshots</id>
    <url>https://central.sonatype.com/repository/maven-snapshots/</url>
    <releases><enabled>false</enabled></releases>
    <snapshots><enabled>true</enabled></snapshots>
  </repository>
</repositories>

Structure

The Vitruvius project is split into several repositories with well defined dependencies:

Repository Depends on Description     CI    
Vitruv-Change Underlying definition of changes in Ecore-based models and interfaces for specifying the propagation of changes between models to preserve their consistency, as well as an interface and a default implementation for orchestrating the execution of such specifications. GitHub Action CI
Vitruv-DSLs Vitruv-Change Several languages for specifying consistency preservation rules in terms of model transformations for keeping models consistent. Currently, the Reactions and the Commonalities language are available with different levels of maturity. GitHub Action CI
Vitruv Vitruv-Change Central Vitruvius framework, providing the definition of a V-SUM (Virtual Single Underlying Model) containing development artifacts to be kept consistent and to be accessed and modified via views. GitHub Action CI
Vitruv-Server Vitruv, Vitruv-Change Vitruv server implementation GitHub Action CI
Vitruv-CLI Vitruv, Vitruv-Server Vitruv CLI implementation GitHub Action CI
Vitruv-CaseStudies Vitruv, Vitruv-DSLs Case studies for the Vitruvius framework, in particular an example application of Vitruvius in the domain of component-based systems engineering using Java, UML and PCM models. GitHub Action CI

These are the primary maintained repositories: the first three are the core repositories providing Vitruvius, Vitruv-Server and Vitruv-CLI provide remote access to a V-SUM and the generation of V-SUM projects, and Vitruv-CaseStudies provides a demo application of consistency preservation. There are further repositories in this organization with different experiments we have performed around Vitruvius with individual degrees of maturity and maintenance.

Build and Deployment

We build, integrate and deploy our projects using Maven and GitHub Actions. For details see our wiki.

Pinned Loading

  1. Vitruv-Change Vitruv-Change Public

    Core Artifacts for Change Representation and Propagation

    Java 3 19

  2. Vitruv-DSLs Vitruv-DSLs Public

    Languages for Specifying Consistency Preservation Rules

    Java 4 13

  3. Vitruv Vitruv Public

    View-based Development and Model Consistency Framework

    Java 22 32

  4. Vitruv-Server Vitruv-Server Public

    Vitruv Server

    Java 1 8

  5. Vitruv-CaseStudies Vitruv-CaseStudies Public

    Case Studies for the Vitruvius Framework

    Java 6 23

  6. Methodologist-Template Methodologist-Template Public

    Java 1 14

Repositories

Showing 10 of 39 repositories

Top languages

Loading…

Most used topics

Loading…