(The postscript version of this report is Here.)
A design pattern[1,5,8] is an encapsulated set of solutions, alternatives, rules that lead to solutions, and/or process guidelines for dealing with a design problem arising in a particular context. Each design pattern relies on, results in, and/or interacts with other contexts, problems, and solutions addressed in other patterns.
The patterns in this document combine observations, reinterpretations, rational reconstructions, and redesigns of Avionics Control Systems within the realm of the DSSA ADAGE project. An Avionics Control System (ACS) is the main navigation system of an aircraft. An ACS continuously collects sensor data to estimate actual state of an aircraft, computes desired aircraft state with respect to guidance modes, and performs actions that advise pilots and/or directly manipulate aircraft effectors in ways that bring actual and desired state in closer agreement.
These patterns describe domain-specific architecture concerns and steps in the construction of an ACS using a minimal vocabulary (e.g., ``components'', ``interfaces'', ``functions'', ``attributes''), and with minimal commitment to how these should be expressed within any particular design method, notation, engineering tool, or development process. However, because of the critical impact of Avionics Control Systems on human safety, it is essential to capture the resulting designs into appropriate formalisms and semi-formalisms that can be analyzed and reasoned about.
Most patterns address only the architectural forms of components, interfaces, connections, and protocols, delving into details only when they impact overall design. These patterns may be used to generate instances of a family of concrete architectures and designs that may be implemented using a number of different languages, tools, and systems. Because of the diversity of platforms and programming languages used in avionics systems, implementation details are notably absent. This collection of patterns also omits sufficient description of signal processing and control algorithms, device characteristics of radar systems and other navigation hardware, pilot instrument and user interface design, and mechanical effector systems necessary to actually construct an ACS from scratch. Information and guidance on such matters must be obtained from other sources (e.g., [6,13,12]). Given the extensive history of avionics system design, the most likely users of this set of design patterns include people learning about the design space leading to different avionics architectures, developers redesigning existing systems, and those building new families of components.
Most entries take a simple form. They start with a description of the context, problem-space, and constraints, and then describe associated Design Steps, normally in a prescriptive manner, and sometimes subdivided into sets of related steps and concerns. Each pattern references others through hypertext links (or cross-references in the paper version of this document).
A Glossary provides definitions of many of the terms used in this document.