Modeling and analysis of interfaces using ComMA
Precise interface descriptions are crucial for component-based design
The lack of precise and explicit specifications of component interfaces often leads to problems during the integration of components. Also updates of components may 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 challenge is to develop a set of tools that allows the precise definition and analysis of client-server interfaces.
The ComMA (Component Modeling and Analysis) approach is based on a hierarchy of Domain Specific Languages (DSLs). Interface specifications in ComMA consist of three main ingredients:
- The interface signature, i.e., the set of commands, signals and notifications that a server offers to its clients.
- State machine(s) that describe the interaction protocol between client and server, i.e., the allowed sequence of commands, signals and notifications.
- 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 subsequent events.
For such an interface, the Eclipse-based ComMA environment generates a large number of artefacts:
- UML diagrams of the state machine(s) and constraints. Also a document according to a company template can be generated.
- Interface proxy code that adheres to a company standard for transparent component deployment.
- Simulation models that can be used to experiment with the interface in the phase of concept development.
- A framework to monitor whether implementations of client and server conform to the specified interface.
- Statistics about the aspects specified in the constraints during execution, such as a histogram of the observed response times.
An important analysis tool is the monitoring framework, which allows frequent checks on interface conformance. For instance, during nightly tests and after components updates. Monitoring is based on a trace of client-server interactions, e.g., obtained via logging or sniffing. The monitoring tool generates an error when a trace does not conform to the state machine behavior. A warning is generated if a constraint is violated.