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.
BIP supports a rigorous design flow characterized by the following:
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.
R&D on BIP is organized into 5 main activities:
You can find below some non trivial case studies with BIP: