AdaCore Tech Space Systems
AdaCore Tech Space Systems
Version 1.0
November 2021
The AdaCore Technologies Series
The AdaCore Technologies Series is a collection of books targeted to
software developers in critical domains. Each book explains how the
Ada and SPARK programming languages, together with AdaCore’s
products, can reduce system life cycle costs and facilitate
conformance with applicable software certification / qualification
standards. Current titles in the series:
Jean-Paul Blanquart
Dr. Blanquart is a recognized authority on computer-
based systems safety and dependability, with a
decades-long career that spans academic research
(LAAS-CNRS, Toulouse, France) and the space
industry (Airbus Defence and Space). He was a
member of the ECSS Working Groups in charge of
revision 1 of ECSS-Q-ST-80C and ECSS-Q-HB-80-03A
(and also the dependability and safety standards
ECSS-Q-ST-30C and ECSS-Q-ST-40C). He has been an active member of a
French cross-domain Working Group on safety and safety standards since
its creation in 2010. This Working Group gathers industrial safety experts
and related tool providers from domains that include automotive, aviation,
defense, nuclear, industrial processes, railway and space.
iii
Foreword
Software development presents daunting challenges when the resulting
system needs to operate reliably, safely, and securely while meeting hard
real-time deadlines on a memory-limited target platform. Correct program
execution can literally
be a matter of life and
“Failure is not an option”
death, but such is the
Gene Kranz (NASA) in the film Apollo 13
reality facing develop-
ers of space software
systems. A project’s ability to produce high-assurance software in a cost-
effective manner depends on two factors:
v
modularization and encapsulation. Nevertheless, the key messages have
stayed constant:
[email protected]
www.adacore.com
vi
Table of Contents
About the Authors ................................................................................... iii
Foreword .................................................................................................. v
Table of Contents ....................................................................................vii
1 Introduction.................................................................................. 11
1.1 ECSS-E-ST-40C: Space engineering / Software ......................... 13
1.2 ECSS-Q-ST-80C: Space product assurance / Software product
assurance.................................................................................. 22
1.3 ECSS Handbooks ....................................................................... 24
2 Programming Languages for Space Software .............................. 27
2.1 Ada ........................................................................................... 27
2.1.1 Ada language overview................................................... 28
2.1.2 Ada language background .............................................. 30
2.1.3 Scalar ranges ................................................................... 31
2.1.4 Contract-based programming ........................................ 32
2.1.5 Programming in the large ............................................... 34
2.1.6 Generic templates .......................................................... 34
2.1.7 Object-Oriented Programming (OOP) ............................ 35
2.1.8 Concurrent programming ............................................... 36
2.1.9 Systems programming .................................................... 36
2.1.10 Real-time programming.................................................. 36
2.1.11 High-integrity systems .................................................... 37
2.1.12 Enforcing a coding standard ........................................... 38
2.1.13 Ada and the ECSS Standards ........................................... 39
2.2 SPARK ....................................................................................... 40
2.2.1 SPARK Basics ................................................................... 40
2.2.2 Ease of Adoption: Levels of Adoption of Formal Methods
........................................................................................ 44
vii
2.2.3 Hybrid Verification...........................................................46
2.2.4 SPARK and the ECSS Standards .......................................48
3 Tools for Space Software Development ....................................... 49
3.1 AdaCore Tools and the Software Life Cycle ............................. 49
3.2 QGen Toolsuite for Model-Based Engineering ........................ 51
3.2.1 QGen Capabilities ............................................................52
3.2.2 QGen and the ECSS standards .........................................53
3.3 Static Verification: SPARK Pro .................................................. 53
3.3.1 Powerful Static Verification .............................................54
3.3.2 Minimal Run-Time Footprint ...........................................55
3.3.3 CWE Compatibility ...........................................................55
3.3.4 SPARK Pro and the ECSS Standards .................................57
3.4 GNAT Pro Ada Development Environments ............................ 58
3.4.1 GNAT Pro Enterprise........................................................59
3.4.2 GNAT Pro Assurance ........................................................60
3.4.3 GNAT Pro Integrated Development Environments (IDEs)
.........................................................................................61
3.4.4 GNAT Pro and the ECSS Standards ..................................64
3.5 GNAT Pro Ada Tools for Static Analysis and Target Emulation 66
3.5.1 GNATcheck ......................................................................66
3.5.2 GNATmetric .....................................................................67
3.5.3 GNATstack .......................................................................68
3.5.4 Time and Space Analysis..................................................70
3.5.5 Semantic Analysis Tools—Libadalang..............................71
3.5.6 GNATemulator .................................................................71
3.5.7 GNAT Pro Ada Tools and the ECSS Standards .................72
3.6 Static Verification: CodePeer ................................................... 73
3.6.1 Early Error Detection .......................................................73
3.6.2 CWE Compatibility ...........................................................74
3.6.3 CodePeer and the ECSS Standards ..................................75
viii
Benjamin M. Brosgol & Jean-Paul Blanquart
3.7 GNAT Dynamic Analysis Suite .................................................. 76
3.7.1 GNATtest......................................................................... 76
3.7.2 GNATcoverage ................................................................ 77
3.7.3 GNAT Dynamic Analysis Suite and the ECSS Standards .. 77
3.8 Support and Expertise .............................................................. 78
4 Compliance with ECSS-E-ST-40C................................................... 81
4.1 Software requirements and architecture engineering process
{§5.4} ........................................................................................ 81
4.1.1 Software architecture design {§5.4.3} ............................ 81
4.2 Software design and implementation engineering process
{§5.5} ........................................................................................ 85
4.2.1 Design of software items {§5.5.2} .................................. 85
4.2.2 Coding and testing {§5.5.3} ............................................ 88
4.2.3 Integration {§5.5.4}......................................................... 89
4.3 Software validation process {§5.6} .......................................... 90
4.3.1 Validation activities with respect to the technical
specification {§5.6.3} ...................................................................... 90
4.3.2 Validation activities with respect to the requirements
baseline {§5.6.4} ............................................................................. 90
4.4 Software delivery and acceptance process {§5.7} ................... 91
4.4.1 Software acceptance {§5.7.3} ......................................... 91
4.5 Software verification process {§5.8} ........................................ 92
4.5.1 Verification activities {§5.8.3} ......................................... 92
4.6 Software operation process {§5.9}........................................... 96
4.6.1 Process implementation {§5.9.2} ................................... 96
4.6.2 Software operation support {§5.9.4}.............................. 97
4.7 Software maintenance process {§5.10} ................................... 97
4.7.1 Process implementation {§5.10.2} ................................. 97
ix
4.7.2 Modification implementation {§5.10.4} ..........................98
5 Compliance with ECSS-Q-ST-80C.................................................. 99
5.1 Software product assurance programme implementation {§5}
.................................................................................................. 99
5.1.1 Software product assurance programme management
{§5.2} .........................................................................................99
5.1.2 Tools and supporting environment {§5.6}.......................99
5.2 Software process assurance {§6} ........................................... 101
5.2.1 Requirements applicable to all software engineering
processes {§6.2} ............................................................................101
5.2.2 Requirements applicable to individual software
engineering processes or activities {§6.3} .....................................103
5.3 Software product quality assurance {§7} ............................... 107
5.3.1 Product quality objectives and metrication {§7.1} ........107
5.3.2 Product quality requirements {§7.2} .............................107
6 Abbreviations ............................................................................. 109
7 References.................................................................................. 111
Index .................................................................................................... 117
x
Benjamin M. Brosgol & Jean-Paul Blanquart
1 Introduction
Software for space applications must meet unique and
formidable requirements. Hard real-time deadlines, a
constrained target execution environment with limited storage
capacity, and distributed functionality between ground and on-
board systems are some of the challenges, with little margin for
error. The software needs to work correctly from the outset,
without safety or security defects, and the source code needs to
be amenable to maintenance over the system’s lifetime (which
may extend over decades) as requirements evolve.
1
All references to ECSS-Q-ST-80C in this book relate to the ECSS-Q-ST-
80C-Rev1 edition.
11
AdaCore Technologies for Space Systems Software
12
Benjamin M. Brosgol & Jean-Paul Blanquart
Chapter 7 is a bibliography.
13
AdaCore Technologies for Space Systems Software
14
Benjamin M. Brosgol & Jean-Paul Blanquart
15
AdaCore Technologies for Space Systems Software
16
Benjamin M. Brosgol & Jean-Paul Blanquart
17
AdaCore Technologies for Space Systems Software
18
Benjamin M. Brosgol & Jean-Paul Blanquart
19
AdaCore Technologies for Space Systems Software
20
Benjamin M. Brosgol & Jean-Paul Blanquart
21
AdaCore Technologies for Space Systems Software
22
Benjamin M. Brosgol & Jean-Paul Blanquart
23
AdaCore Technologies for Space Systems Software
24
Benjamin M. Brosgol & Jean-Paul Blanquart
25
Benjamin M. Brosgol & Jean-Paul Blanquart
2 Programming
Languages for Space
Software
This chapter explains how space software developers can
benefit from the Ada language and its formally analyzable
SPARK subset. Unless explicitly stated otherwise, the Ada
discussion applies to the current version of the language
standard, Ada 2012.
2.1 Ada
The choice of programming language(s) is one of the funda-
mental decisions during software design. The source code is the
artifact that is developed, verified, and maintained, and it is also
the subject of much of the analysis / inspection required for
certification / qualification against domain-specific standards.
Although in principle almost any programming language can be
used for software development, in practice the life-cycle costs
for the high-assurance real-time software found in space
systems are reduced when the chosen language has been
explicitly designed for reliability, safety, security, and ease of
maintenance of large, long-lived systems.
27
AdaCore Technologies for Space Systems Software
28
Benjamin M. Brosgol & Jean-Paul Blanquart
Source code portability was also a key goal for Ada. The
challenge for a programming language is to define the
semantics in a platform-independent manner but not sacrifice
run-time efficiency. Ada achieves this in several ways.
29
AdaCore Technologies for Space Systems Software
30
Benjamin M. Brosgol & Jean-Paul Blanquart
AdaCore has a long history and close connection with the Ada
programming language. Company members worked on the
original Ada 83 design and review and played key roles in the
Ada 95 project as well as the subsequent revisions. The initial
GNAT compiler was delivered at the time of the Ada 95
language’s standardization, thus guaranteeing that users would
have a quality implementation for transitioning to Ada 95 from
Ada 83 or other languages.
31
AdaCore Technologies for Space Systems Software
My_Score : Test_Score
N : Integer;
...
My_Score := N;
-- A run-time check verifies that N is within the
-- range 1 through 100, inclusive
-- If this check fails, a Constraint_Error exception
-- is raised
32
Benjamin M. Brosgol & Jean-Paul Blanquart
package Table_Pkg is
type Table is private; -- Encapsulated type
33
AdaCore Technologies for Space Systems Software
type Launching_Pad is
record
D, H : Meter;
Max_Angle : Radian;
end record
with
Predicate => Arctan (H, D) <= Max_Angle;
34
Benjamin M. Brosgol & Jean-Paul Blanquart
35
AdaCore Technologies for Space Systems Software
36
Benjamin M. Brosgol & Jean-Paul Blanquart
2
Low-level code sometimes needs to defeat the language’s type
checking (for example treating a pointer as an integer), and that is
allowed in Ada but with explicit syntax that reveals the programmer
intent.
37
AdaCore Technologies for Space Systems Software
• pragma Restrictions
• pragma Profile
38
Benjamin M. Brosgol & Jean-Paul Blanquart
• ECSS-E-ST-40C
o §5.4 Software requirements and architecture
engineering process
§5.4.3 Software architecture design
o §5.5 Software design and implementation
engineering process
§5.5.2 Design of software items
o §5.8 Software verification process
§5.8.3 Verification activities
o §5.10 Software maintenance process
§5.10.4 Modification implementation
• ECSS-Q-ST-80C
o §6.2 Requirements applicable to all software
engineering processes
§6.2.3 Handling of critical software
o §6.3 Requirements applicable to individual
software engineering processes or activities
§6.3.4 Coding
o §7.2 Product quality requirements
39
AdaCore Technologies for Space Systems Software
2.2 SPARK
2.2.1 SPARK Basics
SPARK 3 ([MC 2015], [AA 2021]) is a software development
technology (programming language and verification toolset)
specifically oriented around applications demanding an ultra-
low defect level, in particular where safety and/or security are
key requirements. SPARK Pro is the commercial-grade offering
of the SPARK technology developed by AdaCore, Capgemini
Engineering 4, and Inria. As will be described below, the main
component in the toolset is GNATprove, which performs formal
verification on SPARK code.
3
Note that this language/technology is totally unrelated to the Apache
SPARK analytics framework, or the SPARC CPU Instruction Set Archi-
tecture.
4
Formerly Altran
40
Benjamin M. Brosgol & Jean-Paul Blanquart
41
AdaCore Technologies for Space Systems Software
SPARK code can easily be combined with full Ada code or with
C, so that new systems can be built on and reuse legacy
codebases. Moreover, the same code base can have some
sections in SPARK and others excluded from SPARK analysis
(SPARK and non-SPARK code can also be mixed in the same
package or subprogram).
42
Benjamin M. Brosgol & Jean-Paul Blanquart
N : Positive := 100;
-- N constrained to 1 .. Integer'Last
In this example the SPARK tool can verify the Global and
Depends contracts and can also prove several dynamic
properties: no run-time errors will occur during execution of the
Decrement procedure, and, if the Pre contract is met when
the procedure is invoked then the Post contract will be
satisfied on return.
43
AdaCore Technologies for Space Systems Software
SPARK (and the SPARK proof tools) work with Ada 2012 syntax,
but a SPARK program can also be expressed in Ada 95, with
contracts captured as pragmas.
44
Benjamin M. Brosgol & Jean-Paul Blanquart
45
AdaCore Technologies for Space Systems Software
procedure Example is
N : Interfaces.C.unsigned_char range 0 .. 127;
begin
N := getascii;
-- SPARK can prove that no range check is needed
end Example;
46
Benjamin M. Brosgol & Jean-Paul Blanquart
47
AdaCore Technologies for Space Systems Software
48
Benjamin M. Brosgol & Jean-Paul Blanquart
49
AdaCore Technologies for Space Systems Software
QGen
CodePeer
Figure 3-1: AdaCore Toolsuites and the “V” Software Life Cycle
In summary:
50
Benjamin M. Brosgol & Jean-Paul Blanquart
51
AdaCore Technologies for Space Systems Software
Ada. The generated code is suitable for formal analysis and for
projects following software standards such as ECSS-E-ST-40C
and ECSS-Q-ST-80C, DO-178C, ISO 26262, or EN 50128.
52
Benjamin M. Brosgol & Jean-Paul Blanquart
• ECSS-E-ST-40C
o §5.4 Software requirements and architecture
engineering process
§5.4.3 Software architecture design
o §5.5 Software design and implementation
engineering process
§5.5.2 Design of software items
o §5.8 Software verification process
§5.8.3 Verification activities
• ECSS-Q-ST-80C
o §6.2 Requirements applicable to all software
engineering processes
§6.2.8 Automatic code generation
53
AdaCore Technologies for Space Systems Software
54
Benjamin M. Brosgol & Jean-Paul Blanquart
For the most critical embedded systems, SPARK supports the so-
called “Bare-Metal” development style, where SPARK code is
running directly on a target processor with little or no COTS
libraries or operating system at all. SPARK is also designed to be
compatible with GNAT Pro’s Light run-time library 5. In a Bare-
Metal / light run-time development, every byte of object code
can be traced to the application’s source code and accounted
for. This can be particularly useful for systems that must
undergo evaluation by a national technical authority or
regulator.
5
This library supersedes the Zero FootPrint (ZFP) run-time library from
earlier GNAT Pro releases
55
AdaCore Technologies for Space Systems Software
56
Benjamin M. Brosgol & Jean-Paul Blanquart
More specifically, using the SPARK Pro technology can help the
supplier meet ECSS-E-ST-40C and ECSS-Q-ST-80C requirements
in a number of areas. These comprise the ones mentioned
57
AdaCore Technologies for Space Systems Software
• ECSS-E-ST-40C
o §5.6 Software validation process
§5.6.3 Validation activities with respect
to the technical specification
§5.6.4 Validation activities with respect
to the requirements baseline
o §5.8 Software verification process
§5.8.3 Verification activities
• ECSS-Q-ST-80C
o §5.6 Tools and supporting environment
5.6.2 Development environment
selection
o §6.2 Requirements applicable to all software
engineering processes
§6.2.3 Handling of critical software
o §7.2 Product quality requirements
§7.2.3 Test and validation
documentation
58
Benjamin M. Brosgol & Jean-Paul Blanquart
59
AdaCore Technologies for Space Systems Software
60
Benjamin M. Brosgol & Jean-Paul Blanquart
61
AdaCore Technologies for Space Systems Software
Tools
GNAT Studio’s extensive navigation and analysis tools can
generate a variety of useful information including call graphs,
source dependencies, project organization, and complexity
metrics, giving the developer a thorough understanding of a
program at multiple levels. It allows interfacing with third-party
Version Control Systems, easing both development and
maintenance.
62
Benjamin M. Brosgol & Jean-Paul Blanquart
Remote Programming
Integrated into GNAT Studio, Remote Programming provides a
secure and efficient way for programmers to access any number
of remote servers on a wide variety of platforms while taking
advantage of the power and familiarity of their local laptop
computers or workstations.
3.4.3.3 GNATdashboard
GNATdashboard serves as a one-stop control panel for
monitoring and improving the quality of Ada software. It
integrates and aggregates the results of AdaCore’s various static
63
AdaCore Technologies for Space Systems Software
• ECSS-E-ST-40C
o §5.4 Software requirements and architecture
engineering process
§5.4.3 Software architecture design
o §5.5 Software design and implementation
engineering process
§5.5.3 Coding and testing
§5.5.4 Integration
o §5.6 Software validation process
§5.6.2 Validation process
implementation
o §5.7 Software delivery and acceptance process
§5.7.3 Software acceptance
o §5.8 Software verification process
§5.8.3 Verification activities
64
Benjamin M. Brosgol & Jean-Paul Blanquart
65
AdaCore Technologies for Space Systems Software
3.5.1 GNATcheck
GNATcheck is a coding standard verification tool that is
extensible and rule-based. It allows developers to completely
define a coding standard as a set of rules, for example a subset
of permitted language features. It checks whether a source
program satisfies the resulting rules and thereby facilitates the
demonstration of a system’s conformance with software safety
standards.
66
Benjamin M. Brosgol & Jean-Paul Blanquart
3.5.2 GNATmetric
GNATmetric is a static analysis tool that calculates a set of
commonly used industry metrics, thus allowing developers to
estimate code complexity and better understand the structure
of the source program. This information also facilitates
satisfying the requirements of certain software development
frameworks and is useful in conjunction with GNATcheck (for
67
AdaCore Technologies for Space Systems Software
3.5.3 GNATstack
GNATstack is a software analysis tool that enables Ada/C
software development teams to accurately estimate the
maximum size of the memory stack required for program
execution. GNATstack will be useful to space software
developers since a stack overflow in an application at a high-
criticality category could lead to a catastrophic failure.
68
Benjamin M. Brosgol & Jean-Paul Blanquart
• External calls. The tool displays all the subprograms that are
reachable from any entry point for which there is no stack
or call graph information.
procedure P (N : Integer) is
S : String (1 .. N);
begin
...
end P;
• Cycles. The tool can detect all the cycles (i.e., potential
recursion) in the call graph.
69
AdaCore Technologies for Space Systems Software
GNATstack allows the user to supply a text file with the missing
information, such as the potential targets for indirect calls, the
stack requirements for externals calls, and the maximal size for
unbounded frames.
AdaCore does not produce its own WCET tool, but there are
several such tools on the market from partner companies, such
as RapiTime from Rapita Systems Ltd.
70
Benjamin M. Brosgol & Jean-Paul Blanquart
3.5.6 GNATemulator
GNATemulator is an efficient and flexible tool that provides
integrated, lightweight target emulation.
71
AdaCore Technologies for Space Systems Software
• ECSS-E-ST-40C
o §5.8 Software verification process
§5.8.3 Verification activities
• ECSS-Q-ST-80C
o §5.2 Software product assurance programme
management
§5.2.7 Quality requirements and quality
models
o §5.6 Tools and supporting environments
§5.6.2 Development environment
selection
o §6.2 Requirements applicable to all software
engineering processes
§6.2.3 Handling of critical software
o §6.3 Requirements applicable to individual
processes or activities
§6.3.4 Coding
72
Benjamin M. Brosgol & Jean-Paul Blanquart
73
AdaCore Technologies for Space Systems Software
74
Benjamin M. Brosgol & Jean-Paul Blanquart
• ECSS-E-ST-40C
o §5.5 Software design and implementation
engineering process
§5.5.2 Design of software items
o §5.6 Software validation process
§5.6.3 Validation activities with respect
to the technical specification
§5.6.4 Validation activities with respect
to the requirements baseline
o §5.8 Software verification process
§5.8.3 Verification activities
75
AdaCore Technologies for Space Systems Software
• ECSS-Q-ST-80C
o §5.6. Tools and supporting environment
5.6.1 Methods and tools
§5.6.2 Development environment
selection
o §6.2 Requirements applicable to all software
engineering processes
§6.2.3 Handling of critical software
3.7.1 GNATtest
The GNATtest tool helps create and maintain a complete unit
testing infrastructure for projects of any size / complexity. It is
based on the concept that each visible subprogram should have
at least one corresponding unit test. GNATtest produces two
outputs:
76
Benjamin M. Brosgol & Jean-Paul Blanquart
3.7.2 GNATcoverage
GNATcoverage is a dynamic analysis tool that analyzes and
reports program coverage. It computes its results from trace
files that show which program constructs have been exercised
by a given test campaign. With source code instrumentation,
the tool produces these files by executing an alternative version
of the program, built from source code instrumented to
populate coverage-related data structures. Through an option
to GNATcoverage, the user can specify the granularity of the
analysis by choosing statement coverage, decision coverage, or
Modified Condition / Decision Coverage (MC/DC).
• ECSS-E-ST-40C
o §5.5 Software design and implementation
engineering process
§5.5.3 Coding and testing
§5.5.4 Integration
o §5.6 Software validation process
77
AdaCore Technologies for Space Systems Software
78
Benjamin M. Brosgol & Jean-Paul Blanquart
79
Benjamin M. Brosgol & Jean-Paul Blanquart
This chapter explains how Ada and SPARK, together with the
relevant AdaCore development and verification tools, can help a
space software supplier meet many of the requirements
presented in ECSS-E-ST-40C. The section numbers in braces
refer to the associated content in ECSS-E-ST-40C.
81
AdaCore Technologies for Space Systems Software
82
Benjamin M. Brosgol & Jean-Paul Blanquart
83
AdaCore Technologies for Space Systems Software
84
Benjamin M. Brosgol & Jean-Paul Blanquart
85
AdaCore Technologies for Space Systems Software
86
Benjamin M. Brosgol & Jean-Paul Blanquart
87
AdaCore Technologies for Space Systems Software
88
Benjamin M. Brosgol & Jean-Paul Blanquart
89
AdaCore Technologies for Space Systems Software
90
Benjamin M. Brosgol & Jean-Paul Blanquart
91
AdaCore Technologies for Space Systems Software
92
Benjamin M. Brosgol & Jean-Paul Blanquart
Code coverage
versus criticality A B C D
category
Source code
100% 100% AM AM
statement coverage
Source code
100% 100% AM AM
decision coverage
Source code
modified condition
100% AM AM AM
and decision
coverage
Note: ‘AM’ means that the value is agreed with the
customer and measured as per ECSS-Q-ST-80C clause
6.3.5.2.” {§5.8.3.5b}
o GNATcoverage can help meet this requirement.
• “Code coverage shall be measured by analysis of the
results of the execution of tests.” {§5.8.3.5c}
o GNATcoverage can help meet this requirement.
• “In case the traceability between source code and
object code cannot be verified (e.g. use of compiler
93
AdaCore Technologies for Space Systems Software
94
Benjamin M. Brosgol & Jean-Paul Blanquart
95
AdaCore Technologies for Space Systems Software
96
Benjamin M. Brosgol & Jean-Paul Blanquart
97
AdaCore Technologies for Space Systems Software
98
Benjamin M. Brosgol & Jean-Paul Blanquart
99
AdaCore Technologies for Space Systems Software
100
Benjamin M. Brosgol & Jean-Paul Blanquart
101
AdaCore Technologies for Space Systems Software
102
Benjamin M. Brosgol & Jean-Paul Blanquart
103
AdaCore Technologies for Space Systems Software
104
Benjamin M. Brosgol & Jean-Paul Blanquart
105
AdaCore Technologies for Space Systems Software
106
Benjamin M. Brosgol & Jean-Paul Blanquart
107
AdaCore Technologies for Space Systems Software
108
Benjamin M. Brosgol & Jean-Paul Blanquart
6 Abbreviations
Abbreviation Expansion
API Application Program Interface
AR Acceptance Review
CDR Critical Design Review
DDF Design Definition File
DJF Design Justification File
DRD Document Requirements Definition
DRL Document Requirements List
EAL Evaluation Assurance Level
European Cooperation for Space
ECSS
Standardization
ESA European Space Agency
GCC GNU Compiler Collection
GUI Graphical User Interface
IDE Integrated Development Environment
Language Server Protocol
LSP
Liskov Substitution Principle
MF Maintenance File
MGT Management File
OP Operational Plan
ORR Operational Readiness Review
PAF Product Assurance File
PDR Preliminary Design Review
QR Qualification Review
RB Requirements Baseline
RTOS Real-Time Operating Systems
SRR System Requirements Review
TQL Tool Qualification Level
TS Technical Specification
109
Benjamin M. Brosgol & Jean-Paul Blanquart
7 References
Please note that the links below are valid at the time of writing
but cannot be guaranteed for the future.
111
AdaCore Technologies for Space Systems Software
112
Benjamin M. Brosgol & Jean-Paul Blanquart
113
AdaCore Technologies for Space Systems Software
114
Benjamin M. Brosgol & Jean-Paul Blanquart
115
Benjamin M. Brosgol & Jean-Paul Blanquart
Index
Ada language ............................ 27 Type / subtype predicates ... 33
Abstract data types .............. 35 Type invariants ..................... 33
Assertion_Error exception Usage ................................... 31
........................................ 33 AdaCore
Buffer overrun prevention ... 37 CodePeer ........... See CodePeer
Child units ...................... 34, 98 GNAT Pro Assurance See GNAT
Concurrent programming Pro Assurance
(tasks) .............................. 36 GNAT Pro Enterprise .See GNAT
Contract-based programming Pro Enterprise
............................ 30, 32, 37 GNAT Studio .. See GNAT Studio
Dynamic memory GNATbench ..... See GNATbench
management ................... 87 GNATcheck ...... See GNATcheck
Encapsulation ....................... 98 GNATcoverage .................... See
Generic templates .......... 34, 84 GNATcoverage
High-integrity systems ......... 37 GNATdashboard ..................See
History and overview ........... 30 GNATdashboard
Memory management ......... 93 GNATemulator .................... See
Object-Oriented Programming GNAtemulator
(OOP)......................... 35, 98 GNATmetric ... See GNATmetric
Overview .............................. 28 GNATprove...... See GNATprove
Portability .................... 29, 108 GNATstack........ See GNATstack
Postconditions ..................... 32 GNATtest ............ See GNATtest
pragma Profile 38, 101, 103 GPS ................ See GNAT Studio
pragma Restrictions ... 38, QGen .........................See QGen
70, 87, 101, 103 SPARK Pro ......... See SPARK Pro
Preconditions ....................... 32 Support and expertise.......... 78
Programming in the large .... 34 Tools and the software life
Real-Time Systems Annex .... 36 cycle ................................ 49
Scalar ranges ........................ 31
Separate compilation ........... 84 Babbage, Charles ...................... 30
Support for ECSS standards . 39 Buffer overrun .......................... 37
Systems Programming Annex Byron, (Lord) George Gordon ... 30
........................................ 36
117
AdaCore Technologies for Space Systems Software
118
Benjamin M. Brosgol & Jean-Paul Blanquart
119
AdaCore Technologies for Space Systems Software
120