## Introduction

The lack of precise and explicit specifications of component interfaces often leads to problems during the integration of components. Also updates of components might lead to system issues, e.g., caused by changes in the interaction protocol or timing behavior. At system level, it is usually difficult to detect the source of such issues. The CommaSuite framework consists of a set of languages and tools that allow the precise definition and analysis of client-server interfaces.

To specify the interface of a server towards its clients, the approach contains the following ingredients:

- The interface signature, i.e., the set of commands, signals and notifications that a server offers to its clients.

  - Commands: synchronous function calls from client to server; the server sends a reply to the client

  - Signals: asynchronous function calls from client to server; the server does not send a reply

  - Notifications: asynchronous messages from server to client; the client does not send a reply

- State machines that describe the interaction protocol between client and server, i.e., the allowed sequence of commands, signals and notifications in any state.

- Data and timing constraints on the client-server interaction, such as lower and upper bounds on response times, periodicity requirements, and constraints on parameters of events.

The CommaSuite language also allows modeling of components with required and provided interfaces. Also constraints between interfaces can be expressed.

Based on these models a number of different artifacts can be generated, as illustrated in the following figure.

We list a number of possible generators:

- Visualization and documentation. The CommaSuite framework generates plantUML files that visualize state machines. In addition, constraints can be intuitively represented as annotated UML sequence diagrams. Also MS Word documents can be generated by extracting definitions and comments from models and inserting them in a document template. This process also utilizes the diagrams obtained from state machines and constraint rules.

- Interface proxy code. Interface signatures can be transformed to interface proxy code for deployment on a particular type of middleware.

- Model-based testing. Based on the state machines, test cases and models can be generated for various testing techniques.

- Simulation. Simulation of a model helps in receiving an early feedback and detecting errors.

- Monitoring. A monitors can be generated 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.

See the currently supported generators.