Recent from talks
Contribute something
Nothing was collected or created yet.
Avionics software
View on WikipediaThis article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
Avionics software is embedded software with legally mandated safety and reliability concerns used in avionics. The main difference between avionic software and conventional embedded software is that the development process is required by law and is optimized for safety. It is claimed that the process described below is only slightly slower and more costly (perhaps 15 percent) than the normal ad hoc processes used for commercial software. Since most software fails because of mistakes, eliminating the mistakes at the earliest possible step is also a relatively inexpensive and reliable way to produce software. In some projects however, mistakes in the specifications may not be detected until deployment. At that point, they can be very expensive to fix.
The basic idea of any software development model is that each step of the design process has outputs called "deliverables."[1] If the deliverables are tested for correctness and fixed, then normal human mistakes can not easily grow into dangerous or expensive problems. Most manufacturers[2] follow the waterfall model to coordinate the design product,[3] but almost all explicitly permit earlier work to be revised. The result is more often closer to a spiral model.
For an overview of embedded software see embedded system and software development models. The rest of this article assumes familiarity with that information, and discusses differences between commercial embedded systems and commercial development models.
General overview
[edit]Since most avionics manufacturers see software as a way to add value without adding weight, the importance of embedded software in avionic systems is increasing.
Most modern commercial aircraft with auto-pilots use flight computers and so called flight management systems (FMS) that can fly the aircraft without the pilot's active intervention during certain phases of flight. Also under development or in production are unmanned vehicles: missiles and drones which can take off, cruise and land without airborne pilot intervention.
In many of these systems, failure is unacceptable. The reliability of the software running in airborne vehicles (civil or military) is shown by the fact that most airborne accidents occur due to manual errors. Unfortunately reliable software is not necessarily easy to use or intuitive, poor user interface design has been a contributing cause of many aerospace accidents and deaths.[citation needed]
Regulatory issues
[edit]Due to safety requirements, most nations regulate avionics, or at least adopt standards in use by a group of allies or a customs union. The three regulatory organizations that most affect international aviation development are the U.S, the E.U. and Russia.
In the U.S., avionic and other aircraft components have safety and reliability standards mandated by the Federal Aviation Regulations, Part 25 for Transport Airplanes, Part 23 for Small Airplanes, and Parts 27 and 29 for Rotorcraft. These standards are enforced by "designated engineering representatives" of the FAA who are usually paid by a manufacturer and certified by the FAA.
In the European Union the IEC describes "recommended" requirements for safety-critical systems, which are usually adopted without change by governments. A safe, reliable piece of avionics has a "CE Mark." The regulatory arrangement is remarkably similar to fire safety in the U.S. and Canada. The government certifies testing laboratories, and the laboratories certify both manufactured items and organizations. Essentially, the oversight of the engineering is outsourced from the government and manufacturer to the testing laboratory.
To assure safety and reliability, national regulatory authorities (e.g. the FAA, CAA, or DOD) require software development standards. Some representative standards include MIL-STD-2167 for military systems, or RTCA DO-178B and its successor DO-178C for civil aircraft.
The regulatory requirements for this software can be expensive compared to other software, but they are usually the minimum that is required to produce the necessary safety.
Development process
[edit]The main difference between avionics software and other embedded systems is that the actual standards are often far more detailed and rigorous than commercial standards, usually described by documents with hundreds of pages. It is usually run on a real time operating system.
Since the process is legally required, most processes have documents or software to trace requirements from numbered paragraphs in the specifications and designs to exact pieces of code, with exact tests for each, and a box on the final certification checklist. This is specifically to prove conformance to the legally mandated standard.
Deviations from a specific project to the processes described here can occur due to usage of alternative methods or low safety level requirements.
Almost all software development standards describe how to perform and improve specifications, designs, coding, and testing (See software development model). However avionics software development standards add some steps to the development for safety and certification:
Human interfaces
[edit]Projects with substantial human interfaces are usually prototyped or simulated. The videotape is usually retained, but the prototype retired immediately after testing, because otherwise senior management and customers can believe the system is complete. A major goal is to find human-interface issues that can affect safety and usability.
Hazard analysis
[edit]Safety-critical avionics usually have a hazard analysis. The early stages of the project, already have at least a vague idea of the main parts of the project. An engineer then takes each block of a block diagram and considers the things that could go wrong with that block, and how they affect the system as a whole. Subsequently, the severity and probability of the hazards are estimated. The problems then become requirements that feed into the design's specifications.
Projects involving military cryptographic security usually include a security analysis, using methods very like the hazard analysis.
Maintenance manual
[edit]As soon as the engineering specification is complete, writing the maintenance manual can start. A maintenance manual is essential to repairs, and of course, if the system can't be fixed, it will not be safe.
There are several levels to most standards. A low-safety product such as an in-flight entertainment unit (a flying TV) may escape with a schematic and procedures for installation and adjustment. A navigation system, autopilot or engine may have thousands of pages of procedures, inspections and rigging instructions. Documents are now (2003) routinely delivered on CD-ROM, in standard formats that include text and pictures.
One of the odder documentation requirements is that most commercial contracts require an assurance that system documentation will be available indefinitely. The normal commercial method of providing this assurance is to form and fund a small foundation or trust. The trust then maintains a mailbox and deposits copies (usually in ultrafiche) in a secure location, such as rented space in a university's library (managed as a special collection), or (more rarely now) buried in a cave or a desert location.[4]
Design and specification documents
[edit]These are usually much like those in other software development models. A crucial difference is that requirements are usually traced as described above. In large projects, requirements-traceability is such a large expensive task that it requires large, expensive computer programs to manage it.
Code production and review
[edit]The code is written, then usually reviewed by a programmer (or group of programmers, usually independently) that did not write it originally (another legal requirement). Special organizations also usually conduct code reviews with a checklist of possible mistakes. When a new type of mistake is found it is added to the checklist, and fixed throughout the code.
The code is also often examined by special programs that analyze correctness (Static code analysis), such as SPARK examiner for the SPARK (a subset of the Ada programming language) or lint for the C-family of programming languages (primarily C, though). The compilers or special checking programs like "lint" check to see if types of data are compatible with the operations on them, also such tools are regularly used to enforce strict usage of valid programming language subsets and programming styles. Another set of programs measure software metrics, to look for parts of the code that are likely to have mistakes. All the problems are fixed, or at least understood and double-checked.
Some code, such as digital filters, graphical user interfaces and inertial navigation systems, are so well understood that software tools have been developed to write the software. In these cases, specifications are developed and reliable software is produced automatically.
Unit testing
[edit]"Unit test" code is written to exercise every instruction of the code at least once to get 100% code coverage. A "coverage" tool is often used to verify that every instruction is executed, and then the test coverage is documented as well, for legal reasons.
This test is among the most powerful. It forces detailed review of the program logic, and detects most coding, compiler and some design errors. Some organizations write the unit tests before writing the code, using the software design as a module specification. The unit test code is executed, and all the problems are fixed.
Integration testing
[edit]As pieces of code become available, they are added to a skeleton of code, and tested in place to make sure each interface works. Usually the built-in-tests of the electronics should be finished first, to begin burn-in and radio emissions tests of the electronics.
Next, the most valuable features of the software are integrated. It is very convenient for the integrators to have a way to run small selected pieces of code, perhaps from a simple menu system.
Some program managers try to arrange this integration process so that after some minimal level of function is achieved, the system becomes deliverable at any following date, with increasing numbers of features as time passes.
Black box and acceptance testing
[edit]Meanwhile, the test engineers usually begin assembling a test rig, and releasing preliminary tests for use by the software engineers. At some point, the tests cover all of the functions of the engineering specification. At this point, testing of the entire avionic unit begins. The object of the acceptance testing is to prove that the unit is safe and reliable in operation.
The first test of the software, and one of the most difficult to meet in a tight schedule, is a realistic test of the unit's radio emissions. This usually must be started early in the project to assure that there is time to make any necessary changes to the design of the electronics. The software is also subjected to a structural coverage analysis, where tests are run and code coverage is collected and analyzed.
Certification
[edit]Each step produces a deliverable, either a document, code, or a test report. When the software passes all of its tests (or enough to be sold safely), these are bound into a certification report, that can literally have thousands of pages. The designated engineering representative, who has been striving for completion, then decides if the result is acceptable. If it is, he signs it, and the avionic software is certified.
See also
[edit]References
[edit]- ^ "Software models". www.cs.uct.ac.za. Retrieved 2024-01-28.
- ^ "What is the Waterfall Model? - Definition and Guide". Software Quality. Retrieved 2023-12-01.
- ^ "Software models". www.cs.uct.ac.za. Retrieved 2024-01-28.
- ^ Personal Information, Robert Yablonsky, Engineering manager, B.E. Aerospace, Irvine, CA, 1993
External links
[edit]Avionics software
View on GrokipediaIntroduction
Definition and Scope
Avionics software refers to the specialized embedded programs that control, monitor, and integrate electronic systems within aircraft, spacecraft, and associated vehicles. These systems manage critical functions including flight management, navigation, communication, and instrumentation, forming the computational backbone of modern aerospace operations. According to the FAA's Advanced Avionics Handbook, avionics software operates within integrated cockpit technologies such as flight management systems (FMS) and area navigation (RNAV) units, processing real-time data from sensors like GPS and air data computers to support safe flight execution.[6] In spacecraft contexts, NASA's definitions describe flight software (FSW) as embedded code running on avionics processors to handle onboard activities, data processing, and command execution.[7] The scope of avionics software is confined to onboard, embedded real-time systems in airborne and space vehicles, explicitly excluding ground-based aviation software used for tasks like air traffic management or simulation. It encompasses hardware-software integrations that enable precise vehicle control, such as the flight control laws in fly-by-wire systems, where software algorithms interpret pilot commands and adjust control surfaces for stability and maneuverability.[8] This boundary emphasizes vehicle-centric applications, as outlined in RTCA DO-178 standards, which focus on airborne software assurance rather than terrestrial systems.[9] NASA's Small Spacecraft Avionics overview further delineates this scope by positioning avionics software as the foundational layer integrating all spacecraft functions, from propulsion to telemetry.[10] Key characteristics of avionics software include deterministic behavior, ensuring predictable and repeatable execution times essential for real-time responsiveness in dynamic flight environments.[11] It incorporates fault tolerance mechanisms, such as redundancy and error detection, to sustain operations despite component failures, thereby enhancing overall system resilience.[12] Due to its safety-critical nature, avionics software demands exceptionally high reliability, with failure probabilities often required to be below 10^{-9} per hour for catastrophic events, as governed by certification objectives in standards like DO-178C.[9] Avionics software differs from general embedded software through its stringent adherence to aviation-specific constraints, including operations at extreme altitudes up to 60,000 feet, supersonic speeds exceeding Mach 2, and harsh environmental conditions like temperature fluctuations from -55°C to +70°C, intense vibration, and electromagnetic interference.[13] These factors necessitate robust design for uninterrupted performance in isolation from ground support, contrasting with general embedded systems that may tolerate less rigorous environmental and timing demands.[13] Such differentiation underscores the optimized focus on safety and certifiability unique to aerospace applications.[1]Historical Evolution
The origins of avionics software trace back to the 1940s, when the aviation industry began transitioning from purely analog instrumentation to hybrid systems incorporating early digital computation for navigation and control. During World War II, rudimentary digital aids like the Norden bombsight relied on mechanical analogs, but post-war advancements in vacuum-tube computers enabled initial software experiments for trajectory calculations in military aircraft. A pivotal milestone occurred in the 1960s with the development of the Apollo Guidance Computer (AGC), deployed in 1969 for NASA's Apollo 11 mission; this onboard system used assembly language programmed on a custom core-rope memory to provide real-time guidance, navigation, and control during the first manned lunar landing. The 1970s and 1980s marked the maturation of avionics software through standardized communication protocols and the advent of digital fly-by-wire (FBW) systems. In 1978, the Aeronautical Radio, Incorporated (ARINC) introduced the ARINC 429 standard, which defined a single-ended, shielded twisted-pair data bus for reliable avionics data exchange at speeds up to 100 kbit/s, becoming the de facto protocol for commercial aircraft until the 2000s. The U.S. Air Force's F-16 Fighting Falcon, entering service in 1978, pioneered fly-by-wire (FBW) technology starting with its 1974 prototype, where the analog flight control system processed sensor inputs to manage flight controls without mechanical backups, enhancing maneuverability and reducing weight. This innovation extended to civil aviation with the Airbus A320, certified in 1988 as the first commercial jetliner with primary FBW controls, relying on software to interpret pilot inputs and protect against stall conditions. From the 1990s to the 2000s, avionics software evolved toward rigorous certification and architectural integration to support increasingly complex aircraft. The RTCA DO-178 standard, first published in 1981 and revised as DO-178A in 1985 and DO-178B in 1992, established objectives for software assurance levels in safety-critical systems, mandating structured development processes that were adopted globally for certification under FAA and EASA regulations. The Boeing 777, introduced in 1995, implemented Integrated Modular Avionics (IMA), a partitioned software architecture running multiple applications on common computing hardware, which improved resource efficiency and maintainability compared to federated systems. During this era, the shift to object-oriented languages like Ada (standardized in 1983 and mandated for U.S. military projects in 1987) facilitated safer, more modular code for real-time embedded applications. In the 2010s to the present, avionics software has incorporated advanced methodologies and addressed emerging threats, driven by the rise of unmanned aerial vehicles (UAVs) and networked systems. Model-based development (MBD) gained traction around 2010, enabling automatic code generation from high-level models using tools compliant with DO-178C (issued in 2011), which reduced development time while maintaining verifiability; for instance, MathWorks' Simulink has been widely used for such applications in modern aircraft like the Boeing 787. Cybersecurity integration became imperative following demonstrations of vulnerabilities, such as the 2015 University of Michigan hack of a small UAV, leading to standards like DO-326A (2010, Airworthiness Security Process Specification) that embed security in the software lifecycle. The proliferation of UAVs, exemplified by the U.S. military's MQ-9 Reaper program since 2007, has accelerated autonomous software evolution, incorporating AI for decision-making under RTCA DO-365 guidelines. Key incidents underscore this progression: the 1988 Air France Flight 296Q crash during a low-altitude demonstration, which highlighted challenges with flight envelope protection modes and prompted enhanced simulation and testing requirements; in contrast, the 2009 US Airways Flight 1549 "Miracle on the Hudson" ditching highlighted the robustness of FBW software in the Airbus A320, which maintained control post-engine failure without pilot override. In the 2020s, advancements include AI and machine learning integration for enhanced autonomy in urban air mobility vehicles, such as eVTOLs, with initial FAA type certifications achieved in 2024 under updated DO-178C guidelines for software assurance in adaptive systems.[14]Importance and Applications
Role in Aircraft Systems
Avionics software serves as the central nervous system of aircraft, interfacing directly with hardware components such as sensors, actuators, and displays to enable real-time data processing and control. For instance, autopilot software integrates with inertial navigation systems to acquire and analyze sensor data from gyroscopes and accelerometers, allowing for precise trajectory corrections during flight by commanding actuators to adjust control surfaces like ailerons and elevators. This hardware-software synergy is critical in integrated modular avionics (IMA) platforms, where core software modules, including real-time operating systems and board support packages, combine with hardware to form robust, partitioned environments that support multiple functions without interference.[15][16][17] In various flight phases, avionics software contributes essential functionalities, such as navigation during cruise and collision avoidance during takeoff and landing. During cruise, navigation software processes global positioning system (GPS) and inertial data to maintain optimal flight paths, integrating with flight management systems to automate altitude and speed adjustments for efficiency. In high-risk phases like takeoff and landing, the Traffic Collision Avoidance System (TCAS) software monitors transponder replies from nearby aircraft, issuing Traffic Advisories (TAs) 20-48 seconds before the closest point of approach and Resolution Advisories (RAs) 15-35 seconds prior, directing pilots to perform vertical maneuvers at rates of 1,500-2,500 feet per minute to ensure safe separation. These capabilities extend autopilot integration, enabling automated control throughout climb, descent, and approach, including glide path tracking for precision landings.[17][18] Avionics software significantly enhances aircraft safety by reducing pilot workload and providing envelope protection features that prevent excursions beyond safe operational limits. By automating routine tasks like heading and altitude maintenance, it allows pilots to focus on monitoring and decision-making, while systems like flight envelope protection actively intervene to avoid stalls by limiting excessive angles of attack through software-controlled actuator limits. Safety is further assured through adherence to Design Assurance Levels (DALs) under RTCA DO-178C, with DAL A targeting catastrophic failure probabilities below 10^{-9} per flight hour for critical functions, achieved via rigorous verification and fault-tolerant partitioning. TCAS software, for example, maintains a system failure probability of ≤10^{-3} per flight hour and limits false or missed RAs to ≤10^{-4} or ≤10^{-5} per flight hour depending on airspace, serving as a vital backup to air traffic control.[19][20][18] Beyond safety, avionics software delivers economic and operational benefits by optimizing resource use, particularly fuel efficiency through advanced path planning and real-time adjustments. In commercial applications like the Boeing 787 Dreamliner, avionics-integrated flight management software exploits aerodynamic margins to select optimal cruise altitudes and trajectories, contributing to overall fuel savings of up to 20% compared to predecessors by minimizing drag and excess fuel carriage. In military contexts, such as the F-35 Lightning II, mission systems software fuses sensor data for enhanced situational awareness and automated targeting, enabling efficient execution of air superiority and strike missions while reducing operational costs through agile updates that extend aircraft lifespan and minimize maintenance downtime. These optimizations not only lower fuel consumption but also enhance mission effectiveness and lifecycle economics across diverse aircraft ecosystems.[21][22][23]Types of Avionics Software
Avionics software encompasses a range of specialized categories designed to support critical aircraft functions, broadly classified by their primary roles in flight operations and system architectures. These categories include software for flight control, navigation and communication, display and management, as well as emerging types addressing autonomy and security. Architecturally, avionics software can be monolithic, where functions are tightly integrated within dedicated hardware units, or distributed, leveraging networked and partitioned systems for resource efficiency and modularity.[24][15] Flight control software forms the core of real-time systems responsible for aircraft stability augmentation and maneuverability, often implemented in primary flight control computers (PFCCs) that process sensor inputs to execute control laws. These systems employ proportional-integral-derivative (PID) algorithms to minimize errors between desired and actual flight parameters, with the control output calculated aswhere represents the error signal, and , , are tunable gains ensuring precise adjustments in pitch, roll, and yaw. Such software operates under stringent real-time constraints to prevent instability, as demonstrated in launch vehicle applications where PID laws handle varying dynamics during ascent.[25][26] Navigation and communication software integrates data from multiple sensors to provide accurate positioning and air traffic coordination. GPS/INS fusion algorithms combine global positioning system signals with inertial navigation system outputs to enhance reliability in GPS-denied environments, using Kalman filtering to estimate position, velocity, and attitude with reduced drift errors over time. Communication modules, such as those supporting Controller-Pilot Data Link Communications (CPDLC), enable text-based exchanges with air traffic control, reducing voice channel congestion and supporting strategic messaging for route clearances in oceanic or remote airspace.[27] Display and management software handles user interfaces and monitoring tasks in the cockpit, rendering critical data for pilot decision-making. Cockpit display systems (CDS) software generates synthetic vision imagery by processing terrain databases and flight path data to create 3D representations of the external environment, improving situational awareness during low-visibility operations like instrument approaches. Engine monitoring is managed through Full Authority Digital Engine Control (FADEC) software, which autonomously adjusts fuel flow, thrust, and other parameters based on real-time sensor feedback, optimizing performance while protecting against overstress conditions without manual intervention.[28][29] Emerging types of avionics software address the demands of advanced operations, particularly in unmanned systems and connected environments. Autonomous software for drones incorporates sense-and-avoid algorithms that fuse sensor data from radar, LIDAR, and cameras to detect potential collisions, classify threats, and execute evasive maneuvers in real-time, enabling beyond-visual-line-of-sight flights while complying with airspace integration rules. Cybersecurity layers in networked avionics provide intrusion detection and encryption for data buses like ARINC 664, mitigating risks from spoofing or unauthorized access in increasingly interconnected aircraft systems.[30][31][32] Architecturally, avionics software contrasts monolithic designs, characteristic of federated systems where each function runs on dedicated line-replaceable units (LRUs) with minimal interdependencies, against distributed approaches that share computing resources across networked modules. The ARINC 653 standard exemplifies partitioned distributed systems, enforcing time and space isolation to allow multiple applications of varying criticality to coexist on shared hardware, thereby reducing weight, power consumption, and maintenance costs in integrated modular avionics (IMA) platforms. This partitioning uses fixed time slots and memory boundaries to prevent faults in one module from propagating, supporting deterministic real-time execution essential for safety-critical operations.[24][33][34]
