Overview

BIP (Behavior, Interaction, Priority) is a general framework encompassing rigorous design. It uses the BIP language and an associated toolset supporting the design flow. The BIP language is a notation which allows building complex systems by coordinating the behavior of a set of atomic components. Behavior is described as a Petri net extended with data and functions described in C.

The description of coordination between components is layered. The first layer describes the interactions between components. The second layer describes dynamic priorities between the interactions and is used to express scheduling policies. The combination of interactions and priorities characterizes the overall architecture of a component. It confers BIP strong expressiveness that cannot be matched by other languages.

BIP has clean operational semantics that describes the behavior of a composite component as the composition of the behaviors of its atomic components. This allows a direct relation between the underlying semantic model (transition systems) and its implementation.

Design Flow

It is model-based, that is all the software and system descriptions used along the design flow should be based on a single semantic model.

It is component-based that is it provides primitives for building composite components as the composition of simpler components.

It relies on tractable theory for guaranteeing correctness by construction to avoid as much as possible monolithic a posteriori verification.

Toolset

The BIP design flow is supported by a toolset including translators from various programming models into BIP, source-to-source transformers as well as a compiler for generating code executable by a dedicated engines.

We recommend to use the new version of BIP, which currently includes only a compiler targetting C++ code generation and the corresponding centralized single-thread engines.
However, you can still access to the old version of the toolset.