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.
See https://www.eclipse.org/comma/ for more information such as download, installation and user guide.