CIP-Tool

From Wikipedia, the free encyclopedia

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.

History[edit]

The underlying mathematical formalisms of CIP were first proposed by the physicist, Prof. Dr. 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.

CIP Tool has been over taken by Actifsource GmbH in summer 2011. Actifsource has integrated the CIP Tool into the Actifsource workbench.

Methodology[edit]

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.

Code generation[edit]

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.

External links[edit]