Eclipse Franca is a framework for definition and transformation of software interfaces. It is used for integrating software components from different suppliers, which are built based on various runtime frameworks, platforms and IPC (Inter-Process Communication) mechanisms.
The diagram above shows the five aspects of the Franca framework.
IDL and feature-rich editor. The core of it is Franca IDL (Interface Definition Language), which is a textual language for specification of APIs.
Transformations and generation. Franca offers a framework for building transformations from/to other IDLs and model-based interface descriptions (e.g., D-Bus, UML, AUTOSAR, WebIDL) It also supports code generation with some open-source code generators already available. Support for the D-Bus Introspection format is available as installable feature of Franca.
The diagram below shows a typical set-up of transformations (yellow) and generators (blue) built with Franca.
Specification of dynamic behavior. With Franca, the dynamic behavior of client/server interactions can be specified using protocol state machines. Tools are available to use these specifications for validating implementations, e.g., checking runtime traces against the expected order of events on the interface.
A graphical viewer for protocol state machines is part of Franca. The following diagram shows an example screenshot.
Flexible deployment models. In specific application domains, it may be necessary to extend interface specifications by platform- or target-specific information. This is supported by Franca's deployment models, which allow these kind of extensions in a type-safe way.
Rapid interface prototyping. An executable test environment for an interface definition can be generated instantly, allowing users to see the interface in action. This is accomplished by generating eTrice models from Franca interfaces and generating executable Java code from these models. The generated test environment consists of a client component (acting as dynamic test case executor) and a server component (acting as an intelligent mock object).
Based on these features, there is a rich set of possible use-cases. Here are some examples:
- Build your own component model based on EMF and use Franca for the IDL part.
- Generate UML models from Franca interfaces and use those as part of a more detailed UML model of your system.
- Generate standardized C++ bindings using GENIVI CommonAPI.
- Convert Franca interfaces to D-Bus and use the tool-chain as already established on Linux desktops.
- Use Franca to create executable eTrice models and use them as a starting point for eTrice projects.
- Check the interaction of runtime components on-the-fly based on their interface's dynamic behavior specification.