Intelligent—Domain Specific—Editing

Status


Published as full research paper at 24th IEEE International Conference on Software Analysis, Evolution, and Reengineering (SANER 2017).

Research prototype and evaluation available on GitHub.

Paper preprint is available here.

About


The advances of domain-specific modeling languages (DSMLs) and their editors, created with modern language workbenches, have convinced domain experts of applying them as important and powerful means in their daily endeavors.

Despite the fact that such editors are proficient in retaining syntactical model correctness, they present major shortages in mastering the preservation of consistency in models with elaborated language-specific constraints.

Consequently, there is a demand for automating procedures to support editor users in both comprehending as well as resolving consistency violations.

IntellEdit is the incarnation of an approach to automate the generation of advanced editing support ...

... for DSMLs offering automated validation, content-assist and quick fix capabilities beyond those created by state-of-the-art language workbenches that help domain experts in retaining and achieving the consistency of models.

For validation, we show potential error causes for violated constraints, instead of only the context in which constraints are violated. The state-space explosion problem is mitigated by our approach resolving constraint violations by increasing the neighborhood scope in a three-stage process, seeking constraint repair solutions presented as quick fixes to the editor user.

We illustrate and provide an initial evaluation of our approach based on an Xtext-based DSML for modeling service clusters.

Features


Getting Started


You can obtain the latest version of IntellEdit by directly downloading the IntellEdit project archive file or clone the IntellEdit GitHub repository.

Watch IntellEdit in action by proceeding with the following simple steps:

  1. Optional: Download the VirtualBox Image and uncompress it using 7-zip.
  2. Recommended: Clean Eclipse workspace.
  3. Recommended: Right-click on "at.ac.tuwien.big.serviceexample/model/serviceexample.ecore" and register the package.
  4. Recommended: Open the file "at.ac.tuwien.big.servicelang/src/at.ac.tuwien.big.servicelang/Service.xtext", perform a change in the same file, revert the change, and save the null change (this will remove any errors displayed in the grammar editor).
  5. Run an Eclipse runtime application, i.e., a second Eclipse instance started by your initial Eclipse instance, by right-clicking on any imported project in the package explorer and select "Run As > Eclipse Application".
  6. In case the recommended steps have been skipped, an error pop-up may appear in which "Proceed" needs to be selected.
  7. Within the Eclipse runtime application you can start by creating a new project as well a new file fitting our examplary DSML, i.e., having the extension ".service".
  8. Copy the content of the file "at.ac.tuwien.big.serviceexample/model/test.service" to the ".service" file you just created.
  9. Try out advanced editor features !

Note that validation is performed as soon as file changes have been saved.

Authors