Making FACETM Units of Conformance Fully Portable: Coding Guidance for Ada

Source code portability of airborne software is the keystone of the Future Airborne Capability Environment (FACETM) approach and is realized through well-defined application program interfaces (APIs) and widely used industry standards such as IDL, POSIX, and ARINC-653. However, full portability of a Unit of Conformance (UoC) requires more than usage of common APIs and standards. It entails adhering to programming language-specific restrictions to ensure that the UoC has an equivalent effect when ported to a new platform. This paper, geared to UoC developers and project managers, offers guidance for Ada and its formally analyzable SPARK subset. It shows how to deal with vendor-specific or optional language features, how to avoid implementation dependencies, and how to manage target platform dependencies. By adopting the recommended stylistic conventions (most of which can be enforced by static analysis tools) developers of airborne software can use Ada or SPARK to achieve full portability for their FACE UoCs while also realizing the assurance benefits (extensive static checks that catch errors early) that these languages provide.