Avoiding Failure in Airborne Software Development: Tips for Engineers
Introduction
Too often “How to” guides present lofty goals which seem desirable, but at the same time are seemingly unattainable. This paper is different. An unhealthy software development diet is just like a poor nutritional diet: seemingly good tastes can become bad habits and result in real harm to health. But what ingredients go into an unhealthy airborne software diet? Understanding and addressing airborne software failures is the first step towards better avionics health. Remember: with knowledge, training, discipline, and practice, software engineers – just like athletes – can become winners.
DO-178C describes the integral processes spanning the software development lifecycle. Up to 71 formal objectives are summarized which cover the full range of software engineering activities, beginning with planning and ending with certification. While some of these objectives are self-evident (for example, ‘develop requirements before design’, ‘develop design before code’), others are more nuanced. Returning to our metaphor, the parallels between software health and human health abound: everyone knows that reducing fat and sugar intake while engaging in modest exercise yields health benefits. But how can you identify the most cost-effective and healthy foods? And, when it comes to exercise, what types and frequency provide the greatest return on time while minimizing the risk of injury? DO-178C says nothing about reducing schedule, cost, or risk yet these things are paramount to the success of any avionics project. 95 of the world’s 100 most successful avionics companies have hired the authors of this paper (CRITICAL Software and Afuzion) to prove or improve airborne software health. Drawing on this experience, this paper explores the ingredients that contribute to BAD avionics software health and how to avoid them, in order to better understand the healthy practices that lead to successful airborne software development.