How to develop safe, secure and reliable Embedded Software

Software is increasingly in a position to adversely affect lives and property, from voting machines to medical implants to the cars we drive (and drive us). Most software is buggy, but buggy code is not inevitable and reliable high-integrity code need not be prohibitively expensive.

We have put together for you a microsite with webinars, technical articles and other useful information about how to develop safe, secure and reliable Embedded Software based on SPARK 2014, a programming language and tool-suite based on static analysis that makes production of reliable embedded software practical.

  Introductory Webinar

Practical Development of Safe, Secure, Reliable Embedded Software

This  webinar will present SPARK 2014, a programming language and tool-suite based on static analysis that makes production of reliable embedded software practical. Using this technology you can formally prove the properties of your code, using your existing team, and without breaking the bank. We will present existing, real-world examples of the use of the technology, including applications currently running on ARM platforms. At the end of the presentation attendees will have an idea of just how much better things could be, and how to get more information.

  Technical Know-how

How to prevent drone crashes using SPARK

The Crazyflie is a very small quadcopter sold as an open source development platform. Even if the Crazyflie flies out of the box, it has not been developed with safety in mind: in case of crash, its size, its weight and its plastic propellers won’t hurt anyone! But what if the propellers were made of carbon fiber, and shaped like razor blades to increase the drone’s performance? In this post, I present the work I did to rewrite the stabilization system of the Crazyflie in SPARK 2014, and to prove that it is free of runtime errors. SPARK also helped me to discover little bugs in the original firmware. Besides the Crazyflie, this work could be an inspiration for others to do the same work on larger and more safety-critical drones.

Make with Ada: Formal proof on my wrist

When the Pebble Time kickstarter went through the roof, I looked at the specification and noticed the watch was running on an STM32F4, an ARM cortex-M4 CPU which is supported by GNAT. So I backed the campaign, first to be part of the cool kids and also to try some Ada hacking on the device.

Make with Ada: All that is useless is essential

A few weeks ago I discovered the wonderful world of solenoid engines. The idea is simple: take a piston engine and replace explosion with electromagnetic field. In this article I will experiment a solenoid engine using a hacked hard drive and a software controller on a STM32F4.
- See more at:

Tetris in SPARK on ARM Cortex M4

Tetris is a well-known game from the 80's, which has been ported in many versions to all game platforms since then. There are even versions of Tetris written in Ada. But there was no version of Tetris written in SPARK, so we've repaired that injustice. Also, there was no version of Tetris for the Atmel SAM4S ARM processor, another injustice we've repaired.

  Links to more information


Embedded Software for Safety Critical Applications

Production code generation with Model-Based Design has replaced document-based development and manual coding in various domains in automotive, industrial automation, aerospace and medical. Safety-rela...

Coding safe and secure applications

The debate about safety and security concerns in high integrity software applications is a hot topic of discussion in modern software management. The need to address these concerns is present in e...

Best practices for static analysis tools

This paper reviews a number of the growing complexities that embedded software development teams are facing, including the proliferation of third-party code, increased pressures to develop secure ...