CIP-Tool
From Wikipedia, the free encyclopedia
- CIP-Tool should not be confused with Ciptool, a Bluetooth configuration tool.
- For other uses of CIP, see CIP (disambiguation).
CIP-Tool (Communicating Interacting Processes) is a software tool for the modelling and implementation of event-driven applications. It is especially relevant for the development of software components of embedded systems.
Contents |
[edit] History
The underlying mathematical formalisms of CIP were first proposed by the physicist, Hugo Fierz. The tool was subsequently developed at the Swiss Federal Institute of Technology (Zurich) in a series of research projects during the 1990s. Development and distribution has since been transferred to a commercially operating spin-off company, CIP-Tool, based in Solothurn, Switzerland.
[edit] Methodology
The CIP-model is basically a finite state machine, or more precisely, an extended finite state machine (processes can store and modify variables and can use these to enable or disable transitions).
In CIP, a desired system behaviour is broken down into distinct processes, each of which is a set of states interconnected by transitions. One state in every process is tagged as active state. This active status can be transferred to another state through the execution of a transition. Such transitions are triggered by events (from external sources, e.g. sensors) or in-pulses (from other processes). Transitions can in turn send one or several out-pulses (to other processes) or actions (to external receivers, e.g. effectors).
The CIP-model is sometimes confused with petri nets. This may be because to beginners, the notation looks similar. The similarities should not be over-stressed, however. For example, CIP allows only (and exactly) one active state per process and processes are neither started nor terminated during run-time.
[edit] Code generation
CIP-Tool permits models to be automatically converted to executable code. This greatly facilitates testing, documentation and final implementation. Currently the languages C/C++ and Java are supported as output formats.