This proposal has been approved and the Eclipse CommaSuite project has been created.
Visit the project page for the latest information and development.

Eclipse CommaSuite

Tuesday, November 24, 2020 - 08:37 by Jozef Hooman
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Parent Project
Proposal State
Created
Background

This project originates from joint research of ESI (TNO) and Philips Healthcare on the description of client-server software interfaces. This work was motivated by the observation that many issues which are found during integration and test are due to unclear software interfaces of components. In the current state-of-practice, usually only the signature of an interface is described. Missing are constraints on the order of calls and additional timing and data constraints. Moreover, there was a need for industrial-applicable tools that make it possible to check interface compliance of components, including 3rd party components.

This research resulted in a dedicated domain-specific language for rich interface specifications and the generation of monitoring tooling to check interface compliance. Other high-tech companies in the Netherlands recognized the motivation behind the approach leading to a company-independent Eclipse plugin which is gradually extended with new features and generators.

Scope

Eclipse CommaSuite defines a domain-specific language, and provides tools that support the description and analysis of component interfaces, including the allowed order of events exchanged between components, constraints on timing and data, and relations between interfaces. 

The project concentrates on the description and analysis of component interfaces, including the allowed order of events exchanged between components, constraints on timing and data, and relations between interfaces. Based on these interfaces, many artefacts can be generated, such as documentation, code for middleware, monitors, and tests.  

The focus is on the combination and integration of existing techniques into mature tooling that brings value to industry and advances the state-of-practice in industry. New techniques and algorithms will only be developed if there is a clear industrial need. The same holds for language extensions. It should be relatively easy to adapt and extend the tooling for someone familiar with the used technology (Xtext, Xtend, EMF).

Description

The domain-specific language of Eclipse CommaSuite allows the specification of the provided and required interfaces of a software component. Each interface is described by means of (1) a signature, i.e., the set of commands, signals and notifications that are offered by a server, (2) a protocol state machine which describes the allowed sequences of interaction events between clients and server, (3) timing constraints on the occurrence of the events, and (4) data constraints on the values communicated.  For a component, constraints can be added on the relations between its interfaces.

Based on an instance of the domain-specific language, a number of artefacts can be generated. This includes visualization based on PlantUML and GraphML, documentation, and interface monitoring. Monitoring allows frequent checks on interface conformance. For instance, during nightly tests and after components updates. Monitoring is based on traces of client-server interactions, e.g., obtained via logging or sniffing. It checks whether these traces conform to the state machine behavior of the interfaces and the additional constraints.

The tooling is available as Eclipse plugin and as command line tooling for integration in the industrial workflow.

Why Here?

The challenges addressed by Eclipse CommaSuite are recognized by many companies. By making the tooling easy accessible, companies can quickly experiment with the tooling to investigate whether it brings value. When needed, they can adapt, improve, or extend the tooling.

For research institutes, Eclipse CommaSuite provides mature and industrial applicable tooling that can be extended with new research results, for instance on reverse engineering, run-time monitoring, test generation and security.

A number of industrial partners of ESI (TNO) expressed their strong preference for open source tooling to avoid vendor lock-in, to be able to develop own company-specific generators (e.g. for proprietary middleware), and to build a larger community of users and contributors. The Eclipse Foundation and its principles are a perfect fit for this new open source project.

Future Work

Planned extensions of functionality:

  • Generation of scenarios that can be used for test generation.
  • Simulation of interface models.
  • Generation of interface stubs.
  • Improved validation of models, e.g., detecting race conditions.

Plans to increase community:

  • Publication in popular magazines for industry.
  • Presentations on conferences and meetings with industrial audience.
  • Publications and tool presentations at scientific conferences.
  • Improve current tutorials, use of these tutorials in hands-on workshops.
  • Manuals that describe how to extend the framework, for instance, how to add a generator to the core and how to add validation rules.
Project Scheduling

The initial contribution is planned for Q2 2021; it will be based on the current tooling, providing an Eclipse plugin for interface specifications and the generation of visualization, documentation and monitoring.

The fist release as an Eclipse project is expected in Q3 2021.

Project Leads
Committers
Jozef Hooman (This committer does not have an Eclipse Account)
Koen Kanters (This committer does not have an Eclipse Account)
Interested Parties
  • ESI (TNO), the Netherlands
  • Philips, the Netherlands
  • Thales, the Netherlands
  • Thermo Fisher Scientific, the Netherlands
  • Kulicke & Soffa, the Netherlands
Initial Contribution

The initial contribution will consist of:

  • Xtext projects with the grammars for:
    • A language for the specification of component interfaces, including interface signatures, state machines to describe the allowed client-server interactions, timing constraints, data constraints, and constraints on relations between interfaces.
    • Event files that are used for monitoring.
    • Project files that specify which generators should be applied and additional parameters for these generators.
  • Generators in Xtend to generate:
    • Monitors to check whether a trace of client-server interaction conforms to the specification, both for a single interface and for a component with multiple interfaces and additional constraints.  
    • Documentation, based in M2Doc.
    • Visualization, based on PlantUML.
  • Validation, implemented in Xtend  / Java.
  • Auto-formatting, implemented in Xtend  / Java.
  • Build process using Maven.
  • Tests based on JUnit and RCPTT.
  • Help pages.

The code is developed by ESI (TNO) and Philips in joint projects. In a contract of September 15, 2020, these parties agree with the distribution of the code under the open source Eclipse Public License (EPL) version 2 and succeeding versions.

The next list summarizes the results after obtaining all dependencies of the current tool, running the dash-licenses tool, and removing dependencies on internal projects.

dependencies - approved

p2/orbit/p2.eclipse-plugin/org.eclipse.ui.*, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.e4.*, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.team.*, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.emf.*, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.core*, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.equinox.*, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.osgi.*, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.jdt.*, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.debug.*, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.ltk.*, approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.acceleo.*, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.help/3.8.500.v20190624-2105, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.compare/3.7.700.v20190802-1838, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.compare.core/3.6.600.v20190615-1517, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.platform/4.13.0.v20190916-1045, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.search/3.11.700.v20190813-2210, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.text/3.9.0.v20190826-1019, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.swt/3.112.0.v20190904-0609, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.xpand/2.2.0.v201605260315, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.jface/3.17.0.v20190820-1444, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.xtext/2.19.0.v20190902-0737, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.eclipse.xtend/2.2.0.v201605260315, , approved, eclipse

p2/orbit/p2.eclipse-plugin/org.w3c.css.sac/1.3.1.v200903091627, Apache-2.0 OR LicenseRef-Public-Domain OR W3C, approved, CQ1448

p2/orbit/p2.eclipse-plugin/org.w3c.dom.events/3.0.0.draft20060413_v201105210656, Apache-2.0, approved, CQ2492

p2/orbit/p2.eclipse-plugin/org.w3c.dom.smil/1.0.1.v200903091627, Apache-2.0 OR LicenseRef-Public-Domain OR W3C, approved, CQ1448

p2/orbit/p2.eclipse-plugin/org.w3c.dom.svg/1.1.0.v201011041433, Apache-2.0, approved, CQ208

p2/orbit/p2.eclipse-plugin/org.hamcrest.core/1.3.0.v20180420-1519, BSD-2-Clause, approved, CQ7063

p2/orbit/p2.eclipse-plugin/org.tukaani.xz/1.8.0.v20180207-1613, LicenseRef-Public-Domain, approved, CQ15538

p2/orbit/p2.eclipse-plugin/org.apache.commons.*, Apache-2.0, approved, CQ4578

p2/orbit/p2.eclipse-plugin/org.junit/4.12.0.v201504281640, EPL-1.0, approved, CQ9232

p2/orbit/p2.eclipse-plugin/org.apache.batik.css/1.11.0.v20190515-0436, Apache-2.0, approved, CQ19683

p2/orbit/p2.eclipse-plugin/com.google.guava/27.1.0.v20190517-1946, Apache-2.0 AND CC0-1.0, approved, CQ19110

p2/orbit/p2.eclipse-plugin/org.apache.felix.scr/2.1.14.v20190123-1619, Apache-2.0 AND MIT, approved, CQ18208

p2/orbit/p2.eclipse-plugin/com.ibm.icu/64.2.0.v20190507-1337, ICU AND Unicode-TOU AND BSD-3-Clause AND BSD-2-Clause AND LicenseRef-ipadic-license AND LicenseRef-Public-Domain, approved, CQ19629

p2/orbit/p2.eclipse-plugin/com.google.inject/3.0.0.v201605172100, Apache-2.0, approved, CQ5058

p2/orbit/p2.eclipse-plugin/org.apache.batik.constants/1.11.0.v20190515-0436, Apache-2.0, approved, CQ19682

p2/orbit/p2.eclipse-plugin/org.objectweb.asm/7.1.0.v20190412-2143, BSD-3-Clause, approved, CQ19168

p2/orbit/p2.eclipse-plugin/io.github.classgraph/4.8.35.v20190528-1517, MIT, approved, CQ19923

p2/orbit/p2.eclipse-plugin/javax.inject/1.0.0.v20091030, Apache-2.0, approved, CQ3555

p2/orbit/p2.eclipse-plugin/org.antlr.runtime/4.3.0.v201502022030, BSD-2-Clause, approved, CQ8895

p2/orbit/p2.eclipse-plugin/org.apache.batik.*, Apache-2.0, approved, CQ19685

p2/orbit/p2.eclipse-plugin/org.apache.log4j/1.2.15.v201012070815, Apache-2.0, approved, CQ2555

p2/orbit/p2.eclipse-plugin/org.antlr.runtime/3.2.0.v201101311130, BSD-2-Clause, approved, CQ3820

p2/orbit/p2.eclipse-plugin/org.apache.ant/1.10.5.v20190526-1402, Apache-2.0, approved, CQ10717

p2/orbit/p2.eclipse-plugin/org.apache.xmlgraphics/2.3.0.v20190515-0436, Apache-2.0, approved, CQ19686

p2/orbit/p2.eclipse-plugin/org.apache.poi/4.1.0.201910021432, Apache-2.0 AND MIT, approved, CQ19412

p2/orbit/p2.eclipse-plugin/net.sourceforge.plantuml.eclipse/1.1.24, EPL-1.0 AND Apache-2.0, approved, CQ19828

dependencies - restricted

p2/orbit/p2.eclipse-plugin/org.obeonetwork.m2doc/3.0.0.201912181356, unknown, restricted, none

License: Eclipse Public License - v 1.0 (https://github.com/ObeoNetwork/M2Doc)

p2/orbit/p2.eclipse-plugin/nl.tue.rotalumis.executables/4.2.0.202011060922, unknown, restricted, none

License: http://www.es.ele.tue.nl/poosl/Tools/rotalumis/license

p2/orbit/p2.eclipse-plugin/nl.esi.poosl.model/4.2.0.202011031413, unknown, restricted, none

p2/orbit/p2.eclipse-plugin/nl.esi.poosl.rotalumisclient/4.2.0.202011031413, unknown, restricted, none

License: https://poosl.esi.nl/downloads/license.txt

Note: the aim is to remove the last two dependencies on Rotalumis and POOSL.

Source Repository Type