Skip to content

ekuiter/variED-NG

Repository files navigation

variED

variED running on desktop device

What? variED (the variability editor) is a research prototype for viewing, editing and analyzing feature models in a collaborative, real-time web environment.

Why? In software product line engineering, a team of developers and other stakeholders may be involved in the feature modeling process. To facilitate live, light-weight editing, a real-time editing platform similar to Google Docs or Overleaf may be useful. This enables various use cases, such as sharing and editing feature models or teaching feature model concepts.

How? variED relies on a client-server architecture where the client is implemented in TypeScript and the server in Java. This fork of variED utilizes a pessimistic locking approach for concurrency control, which greatly simplifies the overall architecture compared to the optimistic technique implemented in ekuiter/variED.

Who? This project is a research effort of the DBSE working group and has been supported by pure-systems. It is released under the LGPL v3 license.

Getting Started

As a prerequisite, set up FeatJAR in the local Maven repository.

  • ./gradlew build builds a JAR file that can be run with a double click (on Windows) or with java -jar variED.jar. To stop the server, click Tools > Command Palette > Exit (if run via double-click) or press Ctrl+C (on a shell).
  • npm start inside the client directory runs the client on http://localhost:3000.
  • ./gradlew server:run runs the server on http://localhost:8080, which also serves the client at /, if it already has been built.

Implementation

Client and server communicate by sending JSON-encoded messages over a WebSocket connection. The client makes use of the React, Redux, Fluent UI and D3.js libraries to provide a user interface for feature modeling. The server relies on FeatJAR as a backend for feature-model IO, editing, and analysis.

About

A collaborative, real-time feature model editor

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages