故障樹分析（英語：Fault tree analysis，簡稱 FTA）是由上往下的演繹式失效分析法，利用布林邏輯組合低階事件，分析系統中不希望出現的狀態。故障樹分析主要用在安全工程以及可靠度工程的領域，用來了解系統失效的原因，並且找到最好的方式降低風險，或是確認某一安全事故或是特定系統失效的發生率。故障樹分析也用在航空航天、核動力、化工製程、製藥、石化業及其他高風險產業，也會用在其他領域的風險識別，例如社會服務系統的失效。故障樹分析也用在軟體工程，在偵錯時使用，和消除錯誤原因的技術很有關係。

在航空航天領域中，更廣泛的詞語「系統失效狀態」用在描述從底層不希望出現的狀態到最頂層失效事件之間的故障樹。這些狀態會依其結果的嚴重性來分類。結果最嚴重的狀態需要最廣泛的故障樹分析來處理。這類的「系統失效狀態」及其分類以往會由機能性的危害分析來處理。



用途

故障樹分析可以用於：


* 瞭解最上方事件和下方不希望出現狀態之間的關係。

* 顯示系統對於系統安全 / 可靠度規範的符合程度。

* 針對造成最上方事件的各原因列出優先次序：針對不同重要性的量測方式建立關鍵設備 / 零件 / 事件的列表。

* 監控及控制複雜系統的安全性能（例如：特定某飛機在油料閥 _x_ 異常動作時是否可以安全飛行？此情形下飛機可以飛行多久？）

* 最小化及最佳化資源需求。

* 協助設計系統。故障樹分析可以作為設計工具，創建輸出或較低層模組的需求。

* 診斷工具，可以用來識別及修正會造成最上方事件的原因，有助於創建診斷手冊或是診斷程序。



方法論

許多工業及政府的技術標準中都有提到故障樹分析的方法論，包括核能產業的 NRC NUREG–0492 、美國國家航空暨太空總署針對航天修改的 NUREG–0492 版本、汽車工程師協會（SAE）針對民用航空器的 ARP4761、軍用的 MIL–HDBK–338、IEC 標會 IEC 61025，故障樹分析已用成許多產業中，也被採納為歐盟標準 EN 61025。

系統複雜到一個程度，就可能會因為一個或是多個子系統失效而讓整個系統失效。不過整體失效的可能性可以透過系統設計的提昇來降低。故障樹分析利用建置整個系統的邏輯圖示，來找到失效、子系統以及冗餘安全設計元件之間的關係。

不想出現的結果會放在失效樹的根（最上方事件），例如金屬沖壓程序中不想要出現的結果是工人的肢體受到沖壓。在最上方事件進行分析後，可以確認有上述事件可能會以二種不同的方式出現：正常操作時以及維修時。這二個在邏輯上的關係是 OR。在正常操作的分析可能也可能確認出二種不同的情形：沖壓行程中，傷害到操作員，另一個是沖壓行程中，傷害到其他人。這二個在邏輯上的關係也是 OR。可以在設計上改善此一情形，例如修改程式，讓操作員需要用雙手同時按二個按鈕才能啟動沖壓程序，這二個在邏輯上的關係是 AND。按鈕本身也有其固有的失效率，這個變成一個可以分析的失效來源。若故障樹上標示了每個失效的實際機率值，可以用電腦程式計算故障樹的失效可能率。

若有某個特定事件有出現在結果事件中，也就會它會影響多個子事統，這個稱為共因（common cause）或共同模式（common mode）。若用圖的角度來說，就是一個事件會在故障樹中多次出現。共因會帶來事件之間的相依關係，這種故障樹的機率計算會比所有事件都獨立時的故障樹機率計算要複雜。市面也不是所有故障樹分析的軟體都能進行這類的計算。

故障樹一般會用傳統的邏輯閘符號表示，故障樹中從初始事件（initiator）到事件之間的路徑稱為分割集合（cut set）。從初始事件到事件之間的最短可能路徑稱為最小分割集合（Minimal Cut Set）。

有些產業會同時用故障樹及事件樹（參考概率風險評估及事件樹分析）。事件樹從不希望出現的初始事件（initiator）（例如停電、元件失效等）開始，根據可能的系統事件而到一系列的最終結果。每多考慮一個新事件，就要在樹上增加一個節點，再列出各分枝的機率。「最上方事件」的機率就會由各初始事件的機率計算而得。

標準的故障樹分析程式包括電力研究所（EPRI）的 CAFTA 軟體，美國有許多核電廠使用，美國政府評估核反應爐、太空梭及國際太空站的安全性及可靠則是利用愛達荷國家實驗室的 SAPHIRE 軟體。美國以外的地區，RiskSpectrum 是常用的故障樹及事件樹分析工具，世界上幾乎有半數核電廠為了概率安全評估的需求而註冊此軟體使用。



符號

故障樹分析的符號可以分為事件、閘以及轉移符號。不同的故障樹分析可能會有一些差異。

事件符號

事件符號用來表示主要事件（primary events）以及中間事件（intermediate events）。主要事件在故障樹上不會繼續展開，中間事件會在閘的輸出端出現。其符號如下：


* 
* 
* 
* *

主要事件的符號的規則如下：


* 基本事件：系統元件或是單元的失效或是錯誤（例如：開關卡在打開的位置）

* 外部事件：一般預期事件會發生（本身不是一個失效）

* 未發展事件：事件的相關資訊不明，或是沒有後續影響

* 條件式事件：一些會影響或是限制邏輯閘的條件（例如：目前運作的模式）

中間事件的閘可以直接接在主要事件的上面，可以保留更多空間作事件的描述。

閘符號

閘符號描述輸入及輸出事件的關係，這些符號是衍生自布林邏輯符號。


* 
* 
* 
* *

閘運作的方式如下：


* 或閘：若發生任何一個輸入事件，輸出事件也會發生

* 及閘：若發生所有的輸入事件，輸出事件才會發生

* 互斥或閘：若輸入事件中恰好有一個發生，輸出事件就會發生

* 優先及閘：若輸入依照條件式事件指定的順序出現，輸出事件就會發生

* 禁止閘：若在某條件式事件指示有效時，發生輸入事件，輸出事件就會發生

轉移符號

轉移符號用來連接相關故障樹的輸入及輸出，像是子系統的故障樹及系統的故障樹。


* *



基本數學基礎

故障樹分析中的事件和統計學的概率論有關。例如元件失效一般會有固定的失效率 λ（危害函數為定值）。在這個最簡單的例子中，失效機率跟失效率 λ 和持續時間 t 有關：

　
: P = 1 - exp(-λt)

　
: P ≈ λt, λt < 0.1

故障樹分析會根據特定的時間區間來正規化，例如飛行時數或是平均發射時間。事件機率和這段時間內的危害函數有關。

傳統的邏輯閘，其輸入及輸出都是二進制，不是真（1）就是偽（0），但故障樹中的閘輸出機率和邏輯代數中的集合代數有關，閘輸出事件的機率和閘輸入事件的機率有關。

及閘表示是獨立事件的組合。及閘中任何一個輸入事件的機率不受其他輸入事件的影響。在集合論的術語中，這等效於輸入事件集合的交集，及閘輸出的機率是：

　
: P (A and B) = P (A ∩ B) = P(A) P(B)

相反的，或閘表示是兩個輸入事件集合的聯集：

　
: P (A or B) = P (A ∪ B) = P(A) + P(B) - P (A ∩ B)

因為故障樹分析中的失效機率一般都很小（小於 0.01），P (A ∩ B) 多半會變成非常小的項次，而或閘一般會假設兩個輸入可以近似為互斥事件，因此輸出機率會比較簡單：

　
: P (A or B) ≈ P(A) + P(B), P (A ∩ B) ≈ 0

二個輸入的互斥或閘表示其中只有一個成立的機率：

　
: P (A xor B) = P(A) + P(B) - 2P (A ∩ B)

因為 P (A ∩ B) 數值多半很小，互斥或閘近似於或閘，在故障樹分析中不常用到。



分析方式

故障樹分析有許多不同進行的方式，不過最常見也最多人使用的方式可以整理成幾個步驟。一個故障樹可以分析一個不想要的事件（或是最上方事件），也只能分析一個。其結果可以連接到其他的故障樹去，成為基本事件。雖然不想要事件的本質可能有很大的差異，事件可能是發電系統晚了 0.25ms 發電，未檢測到的貨艙失火，或是洲際飛彈隨機的意外發射等，但其故障樹分析的程序都相同。因為人力成本的考量，一般只會對不想要事件中最嚴重的進行故障樹分析。

故障樹分析可以分為五個步驟：

1. 定義要探討的不想要事件
  
* 不想要事件的定義可能非常困難，不過也有些事件很容易分析及進行觀察。充分了解系統設計的工程師或是有工程背景的系統分析師最適合定義及列舉不想要的事件。不想要的事件可以用來進行故障樹分析，一個故障樹分析只能對應一個不想要的事件。
2. 獲得系統的相關資訊
  
* 若選擇了不想要的事件，所有影響不想要事件的原因及其發生機率都要研究並且分析。要得知確切的機率需要很高的成本及時間，多半是不可能的。電腦軟體可以用來研究相關機率，可以進行成本較低的系統分析。系統分析師可以了解整個系統。系統設計者知道有關系統的所有知識，這些知識相當重要，可以避免遺漏任何一個會造成不想要事件的原因。最後要將所有事件及機率列出，以便繪製故障樹。
3. 繪製故障樹
  
* 在選擇了不想要的事件，並且分析系統，知道所有會造成此事件的原因（可能也包括發生機率），就可以繪製故障樹了。故障樹是以或閘及及閘構成，定義故障樹的主要特性。
4. 評估故障樹
  
* 在針對不想要的事件繪製故障樹後，需評估及分析所有可能的改善方式，換一個方式來說，是進行風險管理，並且設法改善系統。這個步驟會導入下一個步驟，也就是控制所識別的風險。簡單來說，此一步驟會設法找出降低不想要的事件發生機率的方式。
5. 控制所識別的風險
  
* 此步驟會隨系統而不同，但主要重點是在識別所有風險後，確認有使用所有可行的方來降低事件的發生率。



和其他分析方式的比較

故障樹分析是演繹推理，是從上到下的方式，分析複雜系統初始失效及事件的影響。故障樹分析恰好和失效模式與影響分析（FMEA）相反，FMEA 是歸納推理，是從下到上的方式，分析設備或是子系統的單一元件失效或是機能失效的影響。故障樹分析若用來分析系統如何避免單一般（或是多重）初始故障發生，是很好的工具，但無法用故障樹分析找到所有可能的初始故障。FMEA 可以用窮舉的方式列出所有的初始故障，並識別其局部的影響，不適合用來檢驗多重失效，或是他們對系統層級的影響。故障樹分析會考慮外部事件，而 FMEA 不會在民航機產業常會同時使用故障樹分析及失效模式與影響分析，並且用故障模式效應概述（failure mode effects summary, FMES）作為兩者的介面。

其他可以取代故障樹分析的分析方式有可靠度方塊圖（RBD，也稱為相依圖 dependence diagram，簡稱 DD）及馬爾可夫鏈。可靠度方塊圖等效於成功樹分析（STA），在邏輯上恰好和故障樹分析相反，而且用路徑來代替閘。相依圖和成功樹分析成功（避免不想要事件）的機率，而不是不想要事件發生的機率。



歷史

故障樹分析（FTA）一開始是由貝爾實驗室的 H.A. Watson 所發展的，一開始是因為美國空軍第 526 ICBM 系統群的委託，要評估義勇兵一型洲際彈道飛彈（ICBM）的發射控制系統。之後故障樹分析開始成為可靠度分析者進行失效分析的工具。1962 年義勇兵一型洲際彈道飛彈的發射控制安全研究，第一次公佈使用故障樹分析技術，之後波音及 Avco 在 1963 年至 1964 年開始將故障樹分析用在義勇兵二型的完全系統上。在 1965 年由波音及華盛頓大學贊助，在西雅圖進行系統安全研討會中，廣泛的報導了故障樹分析的相關技術。波音公司在 1966 年開始將故障樹分析用在民航機的設計上。

之後，美國軍方的皮卡汀尼・阿森納在 1960 及 1970 年代開始將故障樹分析用在引線的應用上。美國陸軍裝備司令部在 1976 年代開始將故障樹分析整合到可靠度設計工程設計手冊（Engineering Design Handbook on Design for Reliability）中。羅馬實驗室的可靠度分析中心以及後續在美國國防技術資訊中心下的組織自 1960 年代起出版了故障樹分析及可靠度方塊圖的文件
。MIL-HDBK-338B 中有更近期的參考資料。

美國聯邦航空管理局（FAA）在 1970 年在聯邦公報 35 FR 5665（
1970-04-08）中發佈了 14 CFR 25.1309 的修訂，是針對運輸類航空器適航性的規定。這項修訂採用了飛機系統及設備的失效機率準則，因此民航機業者開始普遍使用故障樹分析。FAA 在 1998 年發行了 Order 8040.4，建了包括危害分析在內的風險管理政策，包括了在飛機通過認證之後的許多關鍵活動，包括航空交通管制及美國國家空域系統的現代化，後來美國聯邦航空管理局也出版了 FAA 系統安全手冊（FAA System Safety Handbook），其中描述了許多正式危害分析的方式，其中也包括了 FTA 的使用。

在美國的阿波羅計劃初期，就已經針對將太空人送到月球，並且平安返回地球的可能機率進行分析。根據一些風險（或可靠度）計算的結果，任務成功的機率低到無法讓人接受。因此 NASA 就不進行後續的定量分析或是可靠度分析，只依靠失效模式與影響分析及其他定性的系統安全評估工具，一直到發生挑戰者號事件為止。之後 NASA 體驗到故障樹分析及概率風險評估（PRA）在系統安全及可靠度分析上的重要性，開始廣為使用，後來故障樹分析變成最重要的系統可靠度及安全分析技術之一。

在核能產業中，美國核能管理委員會在 1975 年開始使用包括故障樹分析在內的概率風險評估（PRA），在 1979 年的三哩島核泄漏事故後，大幅擴展了概率風險評估的相關研究。最後美國核能管理委員會在 1981 年出版了 NRC Fault Tree Handbook NUREG–0492，也在核能管理委員會管轄的範圍內強制使用概率風險評估技術。

在 1984 年博帕爾事件及 1988 年阿爾法鑽井平台爆炸等工安事件後，美國勞工部職業安全與健康管理局 (OSHA) 在 1992 年在發佈了聯邦公報 57 FR 6356（1992-02-24），其中提到 19 CFR 1910.119 中的流程安全管理（PSM）標準職業安全與健康管理局的程序安全管理系統將故障樹分析視為是流程危害分析（PHA）的一種可行作法。

目前在系統安全及可靠度分析中廣為使用故障樹分析，故障樹分析也應用在所有主要的工程領域中。



參考資料



相關條目


* 根本原因分析

* 石川圖（魚骨圖）

* Why-Because 分析

* 失效模式與影響分析（FMEA）

* 可靠度

* 安全工程

* 系統安全

* 五問法

* 事件樹分析

* 攻擊樹