FTA tree is generated from functional component structure, i.e. considering function parts, required functions as well as impairing failure modes. The generated FTA includes only AND and OR gates due to the modeling constructs used to describe system behaviors. The algorithm implemented in this tool is described by recursive function GENERATE_FTA which represents root node and some inner nodes of FTA tree as fault events. Each node that is represented by fault event is attached to OR gate or AND gate within the tree. Gate type is inferred from type of provided behaviour (function/failure mode/AND behaviour/OR behaviour). GET_DEPENDENT_BEHAVIOUR function returns all dependencies of given behaviour, i.e. required/impairing behaviours or child behaviours (in case of AND/OR behaviour type).
GENERATE_FTA(behaviour: Behavior)
BEGIN
fault-event = Create FaultEvent with GATE(behaviour)
for each b in GET_DEPENDENT_BEHAVIOUR(behaviour);
fault-event.add(GENERATE_FTA(b))
)
return fault-event
END
GATE(behaviour: Behaviour):
BEGIN
if (
(behaviour instanceOf Function) && (behaviour instanceOf OrBehaviour)
|| (behaviour instanceOf FailureMode && (behaviour instanceOf AndBehaviour)
)
return AND gate
else
return OR gate
END
GET_DEPENDENT_BEHAVIOUR(behaviour: Behavior)
BEGIN
return UNION_OF(behavior.child_behaviors, behavior.required_behaviors, behavior.impairing_behaviors)
END