Therac-25事件是在軟體工程界被大量引用的案例。Therac-25是加拿大原子能有限公司(AECL)所生產的放射線療法機器,在Therac-6和Therac-20之後推出(以往的Therac-6和Therac-20是加拿大原子能有限公司和法國的CGL公司合作開發)。在1985年到1987年之間,在美國及加拿大至少有六起和Therac-25相關的醫療事故,因為軟體設計時的瑕疵,使病人受到了過量的輻射。軟體的瑕疵是因為競爭危害(二個同時進行程式之間時序衝突造成的問題),有瑕疵時會使病患接受到比正常劑量高一百倍的輻射,因此造成患者死亡或重傷。
此一事故突顯了安全關鍵系統若使用軟體控制時的潛在危險性,也是軟體工程及医学信息学的經典案例。另外因為工程師的過度自信。幾天後病人開始出現,病人也開始出現辐射過量的症狀,其中有三個病患後來因為辐射過量而死亡。
根本原因
調查委員會調查後的結論是此一系列事故的主因是不良的軟體設計及開發實務,沒有明確的將主因歸因到所找到的軟體編程錯誤。而軟體的設計方式也讓軟體在實務上不可能以自動化測試進行測試。
研究這系列事故的研究者發現了幾個造成此事件的主因,包括了以下的組織層面原因:
- AECL沒有將程式碼由第三方來進行审查。
- AECL在軟體設計評估時,沒有考慮設備產生預期結果的方式,以及會有哪些已知的失效模式,這些形成了可靠度建模及风险管理的通用技巧。
- 系統在運作時,有發現有元件異常,中止了X光束,但是其顯示只顯示了"MALFUNCTION"(機能異常),後面配合了1到64的數字,而使用手冊沒有說明這些異常訊息,甚至連訊息都沒有列出。因此操作員按了P鍵,跳過了警告訊息,繼續運作。
- AECL的人員,以及機器的操作者一開始不相信使用者的抱怨,這可能是因為過度的自信。
参见
*
- 软件工程主题列表
- 工程倫理
- 游離輻射
*
- 核能及輻射事故
*
- 程序错误
參考資料
延伸閱讀
- (short summary of the Therac-25 Accidents)
评论 (0)