ECCO
ECCO is a feature-oriented and distributed configuration management and version control system. It makes features, artifacts, traces and variants to first class citizens.
Slides: ecco_slides.pdf
ECCO has many use cases:
- Consolidating a set of individual variants into a common platform representation. For example, reverse engineering a set of individual variants into a Software Product Line (SPL) [SPLC'13][SoSyM'16].
- Supporting ad hoc development of variants (clone and own) as well as their subsequent maintenance [ICSME'14].
- Supporting the evolution of a set of variants and their individual features [SST'15].
- Replacing existing revision control systems (SVN, Git, etc.) [ICSE'16].
Images
This example uses six variants of an image to illustrate ECCO.
Given these six variants ECCO automatically computes traces.
Using these traces ECCO can then compose new variants of the image with a given set of features.
Simple 3D Models
STEP models.
Robot 3D Models
Robot is a set of initially three variants of a 3D CAD model of a simple robot.
The file format of these variants is STEP. There is currently no plugin for ECCO that supports STEP. However, a plugin exists that applies grammar inference to automatically derive a grammar and construct an ECCO model from sample files. The following shows that ECCO in combination with this plugin already produces useful results even in cases where no specific plugin for certain file types exists. With the first three robot variants as input ECCO can automatically compose a new fourth variant. With a dedicated plugin written specifically for STEP files the result could be improved.
Source Code
Java source code of a simple draw application.
Newly composed variant initially is incomplete.
Fixed new variant.