Speaker
Description
Abstract
The study report serves as a small introduction to the C++ programming language and to how its features could be useful when compared to software written in the C programming language. The newest revision of C++ (C++20) is explored, but code examples tend to avoid newest features when not necessary, in order to be understandable to readers familiar with older revisions of the language. The report explores topics that are relevant to or important for use in space projects, in flight software in particular. It is organized into chapters, each responsible for exploring a distinct topic.
This abstract provides a summary of the achievements of the project. The purpose of this activity was to research the latest version of the standard and determine if it is suitable for flight software development. Specifically, this translates into the following objectives:
• Identify unsafe operations and propose alternatives. Formulate a coding standard and prepare a definition for automatic code style checker.
• Identify operations in pure C that could be improved by using corresponding C++ features.
• Investigate and measure the impact of using exceptions to handle run-time errors.
• Investigate the maturity of C++20 and C++17 features and identify recommended / not-recommended constructs.
• Investigate the level of testing applied to the C++ Standard Library, compare it with the level of validation required by the ECSS software standard.
• Research how strong is the dependence of the Standard Library on dynamic memory allocation.
• Check compatibility with popular real time operating systems, in particular with RTEMS.
• Check the level of support of most popular compilers. In particular, check cross-compilers targeting architectures used in space industry (SPARC, ARM (Thumb2, A32, A64), RISC-V).
• Investigate the runtime overhead compared to implementations in C. Compare execution time and amount of generated assembly code. Specifically, look into: standard structures, exception handling, polymorphic method calls.
• Investigate availability of static analysis tools (also which C++ version they support), debuggers, syntax checker and unit testing tools.