Vitruv is a framework for view-based software development. It assumes different models to be used for describing a software 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 Vitruv is and how it can be used can be found in the GitHub wiki.
Vitruv is based on the idea of a Single Underlying Model (SUM), which represents all information about a software 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. Vitruv 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.
Vitruv is short for Vitruvius (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, Vitruv is realized as a set of Eclipse plug-ins. 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 in Eclipse via our nightly update site. A wiki page provides detailed instructions for using or extending Vitruv.
The Vitruv project is split into several repositories with well defined dependencies:
|Vitruv-Change||-||Core artifacts for representing model changes and for defining their processing to preserve consistency with the central interface
|Vitruv-DSLs||Vitruv-Change||Languages for defining consistency preservation in terms of model transformations. Currently, the
|Vitruv-V-SUM||Vitruv-Change||The central Vitruv framework providing the V-SUM and views concepts. In the implementation, a V-SUM is called
|Vitruv-CaseStudies||Vitruv-V-SUM, Vitruv-DSLs||Case studies for the Vitruv framework, particularly consisting of an example application of Vitruv for component-based systems, providing
|Vitruv-Tool-Adapters||Vitruv-V-SUM||A set of adapters for tools to use Vitruv in, i.e., in which models can be modified and changes are then propagated to and kept consistent in an underlying V-SUM. Currently, adapters for the Eclipse IDE and in particular for modifying EMF models in any kind of editor, as well as a wizard to setup and use a V-SUM in Eclipse are provided.|
These are the primary maintained repositories, of which the first three are the core repositories providing Vitruv and the last two ones providing a demo application of consistency preservation and adaptation in development tools. There are further repositories in this organization with different experiments we have performed around Vitruv with individual degrees of maturity and maintenance.
Build and Deployment
We build, integrate and deploy our projects using Maven Tycho and GitHub Actions. For details see our wiki. The deployment is supported by the two further repositories updatesite and Vitruv-Build-AggregatedUpdateSite. All repositories generate Eclipse update sites out of their artifacts and deploy them to the updatesite repository. From these artifacts, an aggregated update site is created running the workflow of the Vitruv-Build-AggregatedUpdateSite project, from which Vitruv with all its dependencies can then be installed within Eclipse.