Modeling Replacement Functions to Mitigate Failures

Back to Intro

Until now, we have been able to model and reason about hardware failures as well as reconfigure the resulting functional analysis architecture in response to these failures. Now, we want to cover one more possibility which is common in fault tolerant architectures; that is, to replace a function with another. This replacement function is usually limited and not fully functional or provides results with a lesser degree of accuracy. We will capture this through the degradation level.

In our example, if the front radar fails we could use the front camera for obstacle detection and feed its input into the dynamic object detection controller. For the purposes of this example and to keep it short we only model the camera sensor and not the control that goes with it.

All we need to do to add this replacement function is to define the function and give it cardinality 0..1 as with the others. We also write the same input and output constraints for what constitutes a failure of the front camera. Then we need to write a replacement constraint which states if the front radar function is missing then we should have the front camera instead in the architecture. The resulting architecture is as follows:

Figure 1: All functions optional, camera a replacement for the radar
AutoPilot : System
AP_FAA : FunctionalAnalysis
frontDriverLidar : FunctionalDevice ?
[ degradation = 1 ]
[ one output ]
frontPassengerLidar : FunctionalDevice ?
[ degradation = 1 ]
[ one output ]
lidarProcessing : AnalysisFunction ?
[ degradation = if # input = 2 then 1 else 2 ]
[ some input && one output ]
pointCloudClustering : AnalysisFunction ?
[ degradation = 1 ]
[ some input && one output ]
frontRadar : FunctionalDevice ?
[ degradation = 1 ]
[ one output ]
frontCamera : FunctionalDevice ?
[ degradation = 1 ]
[ one output ]
dynamicObjectDetection : AnalysisFunction ?
[ some input && one output ]
trajectoryPlanningAP : AnalysisFunction ?
[ degradation = 1 ]
[ some input && one output ]
speedControl : AnalysisFunction ?
[ degradation = 1 ]
[ some input ]
// Function Connectors
frontPassengerLidarVal : FunctionConnector ?
// Replacement constraints
AP_HA : HardwareArchitecture
dn -> AP_DN
AP_DN : DeviceNodeClassification
visionProcessor1 : DeviceNode ?
visionProcessor2 : DeviceNode ?
algorithmProcessor1 : DeviceNode ?
algorithmProcessor2 : DeviceNode ?
frontDriverLidarSensor : DeviceNode ?
frontPassengerLidarSensor : DeviceNode ?
frontRadarSensor : DeviceNode ?
frontCameraSensor : DeviceNode ?

Now, using Clafer’s assertions we can assert that there are no single points of failure for our system. We capture this by noting we have 8 device nodes in our architecture so we constrain to have only 7 (i.e. only one has failed). Then we can assert that the trajectory planning AP and speed control are always present; which we do find.

Module Downloads: | [.cfr] | [.html] |


next Modeling communication topology

Back to Modeling FAA Re-configurations

Back to Intro

The reference remains unchanged.

abstract System
abstract FunctionalAnalysis
abstract HardwareArchitecture
abstract DeviceNodeClassification
abstract Deployment
abstract FunctionalAnalysisComponent
deployedTo -> DeviceNode 1..2
xor implementation
software
input -> FunctionConnector *
[ this.receiver = parent ]
output -> FunctionConnector *
[ this.sender = parent ]
degradation -> integer
[ this > 0 && this <= 3 ]
resultingDegradation -> integer = max input.sender.resultingDegradation.dref, degradation.dref
abstract AnalysisFunction : FunctionalAnalysisComponent
abstract FunctionalDevice : FunctionalAnalysisComponent
abstract FunctionConnector
sender -> FunctionalAnalysisComponent
[ parent in this.output ]
receiver -> FunctionalAnalysisComponent
[ parent in this.input ]
enum DeviceNodeType = SmartDeviceNode | EEDeviceNode | PowerDeviceNode
abstract DeviceNode
[ some fac : FunctionalAnalysisComponent | this in fac.deployedTo ]