Developing Safety Critical SW - Leanna Rierson
Developing Safety Critical SW - Leanna Rierson
SAFETY-CRITICAL
SOFTWARE
A Practical Guide for Aviation Software and D0178C Compliance
LEANNA RIERSON
Preface xxiii
Acknowledgments xxv
Author xxvii
Part I Introduction
References 9
Acronyms 13
2.1 Overview of System Development 13
16
2.2 System Requirements
2.2.1 Importance of System Requirements 16
2.2.2 Types of System Requirements 16
2.2.3 Characteristics of Good Requirements 17
19
2.2.4 System Requirements Considerations
2.2.4.1 Integrity and Availability Considerations 19
vii
viii Contents
Acronyms 33
3.1 Overview of the Aircraft and System Safety
Assessment Process 33
Assurance Levels 41
3.2.1 Development
3.3 How Does Software Fit into the Safety Process? 43
3.3.1 Software's Uniqueness 43
Software 43
3.3.2 Development Assurance
3.3.3 Other Views 44
Objectives Tables 62
4.3 DO-330: Software Tool Qualification Considerations 67
5. Software Planning 73
73
Acronyms
5.1 Introduction 73
5.2 General Planning Recommendations 74
Contents ix
6. Software Requirements 97
Acronyms 97
6.1 Introduction 97
6.2 Defining Requirement 98
6.3 Importance of Good Software Requirements 99
6.3.1 Reason 1: Requirements Are the Foundation
for the Software Development 99
6.3.2 Reason 2: Good Requirements Save Time
and Money 101
6.3.3 Reason 3: Good Requirements Are Essential
to Safety 102
6.3.4 Reason 4: Good Requirements Are Necessary
to Meet the Customer Needs 102
6.3.5 Reason 5: Good Requirements Are Important
for Testing 102
6.4 The Software Requirements Engineer 103
6.5 Overview of Software Requirements Development 104
6.6 Gathering and Analyzing Input to the Software Requirements.... 107
6.6.1 Requirements Gathering Activities 107
6.6.2 Requirements Analyzing Activities 108
6.7 Writing the Software Requirements 109
6.7.1 Task 1: Determine the Methodology 109
6.7.2 Task 2: Determine the Software Requirements
Document Layout Ill
6.7.3 Task 3: Divide Software Functionality
into Subsystems and/or Features 112
6.7.4 Task 4: Determine Requirements Priorities 112
X Contents
Quickly 113
Requirements 121
References 138
Recommended Readings 139
7. Software 141
Design
Acronyms 141
7.1 Overview of Software Design 141
7.1.1 Software Architecture 142
7.1.2 Software Low-Level Requirements 142
7.1.3 Design Packaging 145
7.2 Approaches to Design 145
7.2.1 Structure-Based Design (Traditional) 145
7.2.2 Object-Oriented Design 147
7.3 Characteristics of Good Design 148
7.4 Design Verification 153
References 154
Contents xi
Acronyms 239
10.1 Introduction 239
10.1.1 What Is Software Configuration Management? 239
10.1.2 Why Is Software Configuration Management
Needed? 240
10.1.3 Who Is Responsible for Implementing Software
Configuration Management? 242
10.1.4 What Does Software Configuration Management
Involve? 242
10.2 SCM Activities 243
10.2.1 Configuration Identification 243
10.2.2 Baselines 244
10.2.3 Traceability 244
10.2.4 Problem Reporting 245
10.2.4.1 Problem Report Management with Multiple
Stakeholders 245
10.2.4.2 Managing Open/Deferred Problem Reports... 248
10.2.5 Change Control and Review 249
10.2.6 Configuration Status Accounting 250
10.2.7 Release 251
10.2.8 Archival and Retrieval 252
10.2.9 Data Control Categories 253
10.2.10 Load Control 253
10.2.11 Software Life Cycle Environment Control 255
xiv Contents
References 265
Acronyms 267
11.1 Introduction: Software Quality and Software Quality
Assurance (SQA) 267
11.1.1 Defining Software Quality 267
11.1.2 Characteristics of High-Quality Software 268
References 278
Acronyms 281
12.1 What Is Certification Liaison? 282
References 314
Acronyms 317
13.1 Introduction 317
Acronyms 343
References 358
Techniques 359
Acronyms 359
Acronyms 383
17.1 Introduction 383
17.2 Extraneous and Dead Code 383
17.2.1 Avoiding Late Discoveries of Extraneous
and Dead Code 385
17.2.2 Evaluating Extraneous or Dead Code 386
17.3 Deactivated Code 388
17.3.1 Planning 390
Contents xvii
Acronyms 411
20.1 Introduction 412
20.2 WhatlsanRTOS? 412
20.3 Why Use an RTOS? 413
20.4 RTOS Kernel and Its Supporting Software 414
20.4.1 RTOS Kernel 415
20.4.2 Application Program Interface 415
20.4.3 Board Support Package 416
20.4.4 Device Driver 416
20.4.5 Support Libraries 418
20.5 Characteristics of an RTOS Used in Safety-Critical Systems 418
20.5.1 Deterministic 418
20.5.2 Reliable Performance 418
20.5.3 Compatible with the Hardware 419
20.5.4 Compatible with the Environment 419
20.5.5 Fault Tolerant 419
xviii Contents
Acronyms 443
21.1 Introduction to Partitioning 443
21.1.1 Partitioning: A Subset of Protection 444
21.1.2 DO-178C and Partitioning 445
21.1.3 Robust Partitioning 446
21.2 Shared Memory (Spatial Partitioning) 448
21.3 Shared Central Processing Unit (Temporal Partitioning) 449
21.4 Shared Input/Output 450
21.5 Some Partitioning-Related Challenges 451
21.5.1 Direct Memory Access 451
21.5.2 Cache Memory 451
21.5.3 Interrupts 452
21.5.4 Interpartition Communication 453
21.6 Recommendations for Partitioning 453
References 459
Acronyms 461
22.1 Introduction 461
22.2 Terminology and Examples 462
22.3 Summary of DO-178C Guidance on Parameter Data 464
22.4 Recommendations 465
References 470
Acronyms 519
26.1 Introduction 519
26.2 Reasons for Outsourcing 521
26.3 Challenges and Risks in Outsourcing 522
26.4 Recommendations to Overcome the Challenges and Risks 526
26.5 Summary 536
References 536
Contents xxi
Index 567