Learning from the aerospace industry
Tuesday, 21 June 2011 13:01
By Magnus Unemyr

I have been fortunate to work in a very interesting part of the software industry; mission-critical software projects within the aircraft industry. In fact, Atollic has been contracted to develop software development tools for flight-control-system development, and we are heavily involved in software development for various aircraft models since many years.
What always strikes me is the huge gap in quality consiousness between safety-critical software industries (like the aerospace industry), and more typical commercial development projects. While the full development process used in the aircraft industry might be a bit over-ambitious for most embedded systems development projects, there are lessons to be learned for commercial projects who want to deliver high-quality products.
A clear difference is that the aircraft industry uses stringent requirements definitions, and manage requirement changes in a structured manner, as opposed to the ad-hoc development that is often the case in many commercial embedded development projects. The net result of using a more controlled requirements definition is that the feature-set and software behaviour is not a moving target.
Aicraft projects are typically quite large, and so software projects within the aircraft industry typically uses team collaboration tools to manage important things like source code changes (version control systems), issue tracking (bug database systems) and source code reviews (peer review).
Additionally, testing is done more formally, and test quality is often measured using advanced code coverage analysis such as modified condition/decision coverage (MC/DC), that is supported by the Atollic TrueANALYZER® and Atollic TrueVERIFIER™ products.
With the new modern embedded systems C/C++ IDE's (like Atollic TrueSTUDIO®), many of the methods used by the aerospace industry are available to any embedded developer. In fact, they are deeply integrated into the IDE as well. Many commercial projects would benefit from learning from more quality consious software industries, and at least make use of some of the methods that improve software quality.