# Architecting an Agent-Based Fault Diagnosis Engine for IEC 61499 Industrial Cyber-Physical Systems
## 3 Architecting the Engine  
RQ3 asks how a fault diagnostic engine can best be architected. Attribute-Driven Design is a systematic methodology for designing the architecture of software-intensive systems [11]. It relies on having sufficient, well-defined functional requirements before the architectural design phase can proceed. IEEE Standard 610 defines a requirement as a \"_condition or capability needed by a user to achieve an objective_\" ([60], p. 65). However, requirements for software-intensive systems such as the engine quickly become highly-detailed. This can lead to ambiguity when multiple interpretations of the same need are possible [61; 62; 63]. Architects address this by identifying and focusing on those functional requirements that are Architecturally-Significant Requirements (ASRs) [10]. ASRs describe the functionality that will have a significant influence on or constrain the architectural design choices that can be made [64]. [PERSON] et al. outline an approach for identifying ASRs among the requirements [65]. Table 1 details two of the ASRs for the engine categorized using their criteria. ASRs often affect multiple parts of the system rather than just the functionality they are describing. A characteristic that makes them significant is the high cost of changing that feature later [66]. Requirements that are _Strict_ limit the architectural choices available while _Trade-offs_ are the compromises that the designer must make to balance one desired property or quality against another. _Trade-off Points_ occur where no single architectural approach satisfies all the requirements of that feature. [PERSON] et al. give the example of a functional requirement for an application to display temperatures in both Fahrenheit and Celsius. In contrast, the quality requirement for the uptime of the system to be \"99.999 percent\" embodies the ISO 25010 Quality Attribute of Availability [67]. Fulfilling the requirement for displaying a reading in degrees Fahrenheit and Celsius requires additional software functions to be written. In contrast, achieving the quality characteristic of High Application Availability requires architectural decisions regarding fail-over to alternative hardware or the choice of different sensors with higher reliability. Neither of the two examples break assumptions made during the original requirements' elicitation. However, the requirement to be able to interact with multiple, distributed IEC 61499 applications has a wide impact on how information is exchanged and collated from different parts of the application. It also requires trade-offs that are related to the design of the DPs and how they gather telemetry. This requirement is also deemed to be difficult to achieve, leading to the decision that this requirement is an ASR. In contrast, the performance of the DPs is critical, but does not have a wide-impact; the DPs are self \begin{table}
\begin{tabular}{c c c c c c c} \hline \hline
**ID** & **Requirement** & **Wide Impact?** & \begin{tabular}{c} **Requires** \\ **Trade-Offs?** \\ \end{tabular} & **Strict?** & \begin{tabular}{c} **Breaks** \\ **Assumptions?** \\ \end{tabular} & \
\begin{tabular}{c} **Diffult to** \\ **Achieve?** \\ \end{tabular} &
\begin{tabular}{c} **Architecturally** \\ **Significant?** \\ \end{tabular} \\ \hline
1 & The agents must be able to interact with multiple, distributed parts of the system that is under diagnosis. & Yes & Yes & No & No & Yes & Yes \\
2 & The operation of the Diagnostic Points shall not degrade the performance of the system under diagnosis by more than 5\%. & No & Yes & No & Yes & Yes \\ \hline \hline \end{tabular}
\end{table} 
Table 1: [PERSON] et al. criteria for being architecturally significant. contained. However their development is complex, leading to them also being classified as an ASR. While functional requirements are goals that define what a feature must do, _quality attributes_ describe qualities the feature must possess. They specify characteristics such as how suitable, how modifiable, or how reliable that feature must be.