Aerospace software is part of a larger aircraft that needs to be approved for flight by the FAA in the USA or EASA in Europe, and similar organizations around the world. To this end, the correctness of the avionics needs to be proven. The avionics industry and the authorities have agreed that compliance to the DO-178C certification guideline document is an acceptable way of proving the quality of the software.
DO-178C has 71 objectives, that serve as a summary of the larger process that needs to be followed. Only a couple of these 71 objectives are about the software source code. The objectives also address the requirements, design, coding standards, but the majority of the objectives are (off course) about verification.
Meeting these objectives is an enormous amount of work, even for relatively simple applications. As a result, some technologies such as automated code generation have entered into the avionics business. Unfortunately, these methods automate the wrong thing. Writing the code is not the majority of the work. In fact, on a level A application, automated code generation automates about 10% of the actual work. Which is to say that 90% of the work remains.
At (UN)MANNED, we took a step back and looked at all 71 objectives. We posed ourselves the challenge: can we automate all of the objectives?
We acknowledge that there are objectives, such as the objective to communicate with the authorities, that we cannot automate fully. But we can provide automation support, by automatically preparing the documents needed to communicate with those authorities. So by automating all 71 objectives, we mean automating them all fully (when possible) or partially. With the focus on continuously raising the automation bar.
What we came up with is the ability to Sol, a requirements specification language. Sol feels like a modern scripting language, so that you feel you are designing the application itself. And indeed, Sol is directly executable. However, Sol is literate, which means you can freely type text and detailed descriptions around your executable expressions. In aerospace, documentation is at least as important as the executable code. In addition, Sol is carefully designed to comply with the definition of a (textual) model-based design environment, where you actually provide requirements, not code. So in practice, that means that you specify what would happen, but not how. You provide the formula's to calculate, specify the source of the information, specify what should be on the screen. You don't worry about how the system will achieve those intentions.
Sol is expresses it equations and intentions at such a high level, that the only level above it is system design. A Sol application reads as, and truly is, a requirements document.
But our intent was not to automatically generate code from the Sol requirements. Sol is designed for analysis, where you can mathematically derive (and thus prove) properties, such as worst case time of execution, possible ranges of outputs, expected response times to signals, and so much more. Moreover, Sol also allows to abstract to even a high level, effectively providing the means to automatically generate the documents associated with those 71 objectives.
So why does this matter. Simple really. If you can reduce automation effort, and mathematically prove correctness, you can build safer software faster. A project that previously took 2 years, can now be executed in 6 months.
Sol is also a great language to combine components. Integrating a Primary Flight Display (PFD) into an Engine Indicator and Crew Alert System (EICAS) on a single display to reduce cost and displays in the cockpit is now cost effective. Integrating Electronic Flight Bag (EFB) data gathering into a PFD is no longer an issue.
Best of all, when it easier to create certified software, it becomes possible to aim higher, to build more advanced software. Such that aircraft can become smarter, more situational aware, and provide better information to the pilot. And better information in times of crisis may eventually save lives.
Sol simultaneously saves cost, and increases safety.