Ivette has been designed with modern HTML5 technologies in order to explore new ways of interacting with the Frama-C platform. It is still experimental but ready to use for EVA-centric usage. This blog post provides a gentle introduction to Ivette. Any feedback is very welcomed!
Architecture
The technical stack we have chosen so far consists of the following frameworks:
- A GUI desktop application using the HTML5 and NodeJS JavaScript runtime engine of the Electron platform.
- A GUI code base written in TypeScript with the Reactive Programming framework ReactJS.
- A Frama-C/Server plug-in written in OCaml, that provides an asynchronous, JSON-based, strongly typed Request System.
- Each Frama-C plug-in will then register new requests in the Server plug-in, independently of any communication protocol with any external User Environment.
- A collection of middlewares and protocols written in different languages to specifically connect the Frama-C/Server plug-in and the ReactJS code with each other.
The GUI code itself is entirely written in TypeScript and is split into three parts:
- The Dome framework, which is a collection of carefully designed and themed high-level components, offering a predefined choice of features.
- The Ivette framework, which is an application built with Electron and Dome featuring the main GUI environment and managing the connection with Frama-C.
- The Frama-C plug-in components for Ivette are build from Dome components and interact with the Frama-C static analyzer plug-ins.
More details can be found in this article.