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.
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).
In short, 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. It can be installed via Maven Central (release builds) or OSSRH (snapshot builds). A wiki page provides detailed instructions for using or extending Vitruvius.
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. | ||
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. |
|
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. | |
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. |
These are the primary maintained repositories, of which the first three are the core repositories providing Vitruvius and the last one 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.
We build, integrate and deploy our projects using Maven and GitHub Actions. For details see our wiki.