"Data coupling" and "control coupling" (collectively “DCCC”) refer to the way software components interact with each other in an integrated system to perform a higher-level function. Understanding software DCCC and analyzing DCCC coverage during integration testing can help reduce development costs and risks, and DCCC analysis is required for DO-178C certification of critical avionics.
This is the first in a series of blogs in which we explore Data Coupling and Control Coupling (DCCC) and DCCC analysis. In this first blog, we cover what DCCC is at a high level and the DO-178C certification objectives relating to it.
DCCC at a glance
Embedded software typically comprises multiple components designed to achieve specific functionality, which are integrated with other components to perform more complex function overall. The components in a system and the expected functionality of each should be derivable from the software design, including architecture and low-level requirements.
The functionality of each component in a system is typically tested by requirements-based testing to ensure that it meets its requirements, and structural coverage analysis (usually statement coverage, decision coverage and MC/DC) ensures the sufficiency of testing within each component.
Data Coupling and Control Coupling refer to the way integrated components interact with each other. Data Coupling relates to how data is transferred between one component and another, while Control Coupling relates to how one component can affect the flow of control in another component.
We’ll cover what Data Coupling and Control Coupling are in more detail in later blogs, including more detailed examples of couplings.
As Data Coupling and Control Coupling relate to interactions between components, couplings can only be observed and verified on an integrated system. Integrated components are tested by high-level requirements-based testing, and DCCC analysis can act as a measure of the sufficiency of testing over inter-component interfaces.
Understanding DCCC and analyzing DCCC coverage during integration testing can drive project efficiency. While low-level testing can identify issues in low-level components early during the development life cycle, issues across component interfaces can only be tested after software-software or hardware-software integration. Measuring DCCC coverage during integration testing can identify potential interface issues before more expensive later stages of a project, such as flight testing.
DCCC in DO-178C
The main DO-178C objective relating to DCCC analysis is 6.4.4.d “Test coverage of software structure (data coupling and control coupling) is achieved”. This is required for DAL A-C software and required with independence for DAL A and B software.
“Data Coupling is the dependence of a software component on data not exclusively under the control of the software component.”
“Control Coupling is the manner, or degree, by which one software component influences the execution of another software component.”
CAST-19 definitions of Data Coupling and Control Coupling
The description of this objective is very similar to the objectives requiring statement and decision coverage and MC/DC to be analyzed; only the content in brackets differs between the descriptions for all of these objectives. However, while approaches for statement and decision coverage and MC/DC across the avionics industry are generally similar with minor differences, this is not the case for DCCC coverage analysis, as we’ll see in our next blog.
DO-178C includes several objectives that may relate or overlap with the DCCC coverage analysis objective. Examples include 6.3.3.b “Software Architecture is consistent” (A4-9), 6.3.4.b “Source Code complies with Architecture” (A5-2) and 6.3.4.f “Source Code is accurate and consistent” (A5-6).
Wanting to learn more about DCCC? Sign up for our mailing list below or download our DCCC Solutions for DO-178C Product brief.