Avionics Software Code for DO-178C Certification: Key Ingredients to Consider
Cooking and avionics share similarities in their meticulous processes and attention to detail. Just like cooking a delicious dish, implementing avionics software requires careful steps and adherence to specific standards, particularly when aiming for DO-178C certification. In this article, we will focus on the crucial phase of implementation in the avionics software project and discuss five key ingredients to optimize your code for DO-178C compliance.
When the “base” parts of your software dish—requirements and design—are ready, the next step is to get your code implemented in your product. While this particular step isn’t as complex or time-consuming as the entirety of your project, specifically the compliance process, it’s no less a crucial element in getting your entire software “dish” ready to serve. Also, as in every step throughout your avionics software project, you’ll need to ensure that your code implementation follows the processes and standards established in your DO-178C PSAC. Don’t forget you’ll also record observations and provide evidence of your PSAC adherence through the SQA Integral process, as your certification authority is likely to request evidence demonstrating that you have done so in any remaining/future Stage of Involvement (SOI) review.
Here’s a basic DO-178C Certification Checklist
Programming Language Selection:
Choosing a programming language for your avionics software is essential, considering the tools used for verification. Ensure that the language you select is supported by the commercial tools you intend to use, especially if they analyze your source code for structural coverage analysis and other purposes.
Coding Standards:
DO-178C compliance mandates defining and following coding standards during implementation. The coding standards you adopt can influence the ease of verification. Simplifying code constructs reduces the effort required for software verification. When evaluating verification tools, ensure they can analyze sample code written with your chosen coding standard. Be cautious of coding standards that may result in untestable code, as higher Design Assurance Levels (DALs) necessitate reviewing such code, incurring additional effort.
Considering the Right Platform
Your choice of hardware platform and operating system significantly affects the timing behavior and predictability of the final software, particularly for multicore processors. Some platforms and operating systems may offer built-in features that facilitate verification. Evaluate various options early on, considering their impact on downstream verification. For example, utilizing hardware with on-chip tracing capabilities simplifies worst-case execution time analysis compared to relying solely on off-chip tracing capabilities.
Compiler Selection and Options:
The choice of compiler and compiler options can impact the ease of verifying your code, especially concerning structural coverage analysis. Depending on whether you analyze source code or object code constructs, additional verification may be required to map object code coverage to the source code. Compilers can introduce optimizations that make this mapping more challenging. For DAL A software, it is essential to verify any additional code introduced by the compiler. Note that the more compiler optimizations allowed, the greater the verification effort required.
Navigating Emerging Technologies:
Implementations involving emerging technologies, such as GPU devices for computation, multicore systems, or data-driven computation, may present challenges and lengthen the verification process. While established verification methodologies exist for standard implementations, the same level of support may not be available for emerging technologies. Assess the potential impact and consider the availability of verification tools when incorporating these technologies.
In Summary:
When implementing Avionics software code, careful consideration of programming language, coding standards, hardware platforms, compilers, and emerging technologies is crucial for DO-178C compliance. By optimizing these key ingredients, you can enhance efficiency, mitigate risks during verification, and increase your chances of successfully achieving DO-178C certification.
Carefully considering the “what, how and where” of those key ingredients in your code implementation will help you be most successful. That is, you’ll make things more efficient and mitigate the many risks that can come during verification. Of course, remember that this is one section in the whole process, but we cover all those steps as well in our software cooking classes. Ultimately, when aerospace professionals boil down implementation to simply following steps in the avionics software project recipe, your chances of creating a masterpiece increase exponentially.
Remember that this implementation phase is just one component of the overall avionics software project, and further steps are covered comprehensively in our software cooking classes. Embracing the systematic approach of the avionics software project recipe allows aerospace professionals to create masterpieces that adhere to DO-178C standards.