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.
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).
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.
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.
No legal issues that we are aware of.
There are a number of trademarks with the name “comma”, for instance:
- https://www.comma-store.eu/ fashion
- https://nl.commaoil.com/ automotive lubricants and chemicals for passenger and commercial vehicles (see also https://euipo.europa.eu/eSearch/#details/trademarks/W10591212 and https://www.tmdn.org/tmview/#/tmview/detail/GB500000002050145)
- https://commavastgoed.nl/ real estate agent (see also https://www.tmdn.org/tmview/#/tmview/detail/BX500000001215583)
- https://www.tmdn.org/tmview/#/tmview/detail/BX500000001232767 communication, distribution and control
- https://www.tmdn.org/tmview/#/tmview/detail/GB500000002636564 Body Logical Limited, cushions
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.
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.