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 and its applications.
Vitruv can be installed in Eclipse via the nightly update site. A wiki page provides detailed instructions for using or extending Vitruv.
Vitruv is short for Vitruvius (VIew-cenTRic engineering Using a VIrtual Underlying Single model) and is developed at the Chair for Software Design and Quality (SDQ) at the Karlsruhe Institute of Technology (KIT): http://sdq.ipd.kit.edu/
The project page can be found in the GitHub wiki: http://vitruv.tools
Vitruv is realized as Eclipse Plug-ins and depends on the following Eclipse tools:
- Eclipse Modeling Framework (EMF) as the modelling environment
- Xtext for language development
- Xtend for code
The project is structured as follows:
Section | Description |
---|---|
Framework | The framework consists of the central elements for defining a virtual single underlying model (VSUM) and provides extension points for the different domains and applications to be used with the framework. |
Extensions | Extensions extend the framework with new functionality and can be used by different domains and applications. |
DSLs | The provided DSLs can be used to specify consistency-restoring transformations between two domains. They generate code that is used to extend the framework for keeping instances of a specific pair of models consistent. |
Testutils | The testutils provide functionality for fast and consistent testing of the framework as well as applications. In particular, a test framework for applications is provided. |
Domains | A domain defines the necessary concepts for one metamodel. It defines the metamodel namespaces a domain consists of, defines utilities specific for this metamodel and defines the way in which editors for this metamodel are watched for changes. |
Applications | An application is defined for a pair of domains. It essentially consists of the consistency-restoring transformations that keep model instances of these two domains consistent. It can also define further features for the domains, e.g. the integration of existing models. |
Views | A view is defined for a single or a set of domains. It specifies a specify view on the models, e.g. a UML class diagram view on Java code. |