250 likes | 571 Views
軟體工程. 第 3 章 關鍵系統. 學習目標. 瞭解關鍵系統的故障將對人員或經濟會發生嚴重影響 瞭解可信賴度的四個方面,包括可用性、可靠性、安全性和保全性 瞭解為了達成可信賴度,在系統開發時必須避免發生錯誤、當系統在使用時必須偵測和移除錯誤,以及降低作業錯誤所造成的損害. 關鍵系統( critical system ). 有些系統若發生故障卻可能導致嚴重的經濟損失、實體損失或威脅到人們的生命,這類系統被稱為關鍵系統。
E N D
軟體工程 第3章 關鍵系統
學習目標 • 瞭解關鍵系統的故障將對人員或經濟會發生嚴重影響 • 瞭解可信賴度的四個方面,包括可用性、可靠性、安全性和保全性 • 瞭解為了達成可信賴度,在系統開發時必須避免發生錯誤、當系統在使用時必須偵測和移除錯誤,以及降低作業錯誤所造成的損害
關鍵系統(critical system) • 有些系統若發生故障卻可能導致嚴重的經濟損失、實體損失或威脅到人們的生命,這類系統被稱為關鍵系統。 • 關鍵系統主要分為三類:安全關鍵系統(safety-critical system)、任務關鍵系統(mission-critical system)、企業關鍵系統(business-critical system)。 • 關鍵系統最重要的一個外顯性質是它的可信賴度。可信賴度(dependabi- lity)這個術語是由Laprie(Laprie 1995)所提出的,它涵蓋可用性、可靠性、安全性和保全性這些系統特性。
關鍵系統的故障可能出現在下列3種系統元件中: • 系統硬體:可能是因為硬體元件設計不良、製造錯誤或是元件壽命已到。 • 系統軟體:可能是規格、設計或實作上的錯誤所造成。 • 人為操作:可能是因為系統的人員操作錯誤所造成。近年來隨著軟硬體越來越可靠,現在人為失誤可能是導致系統故障最常見的原因。
3.1一個簡易的安全關鍵系統 • 關鍵系統的種類很多,從機器設備的控制系統,到資訊或電子商務系統都有可能。 • 而本書各章是使用一個簡易的醫療用安全關鍵系統為例。 • 這個系統是一個模擬人體內胰腺運作的系統,目的是監控糖尿病所需的胰島素傳遞。這類系統的安全性和可靠性非常重要
這個胰島素給藥系統有2個可信賴度上的需求:這個胰島素給藥系統有2個可信賴度上的需求: • 在病患需要時,系統必須能夠傳送胰島素給病患。 • 系統必須根據目前的血糖程度可靠的傳送正確劑量的胰島素給病患。 • 這類系統如果發生故障,可能會造成連續注射胰島素而危害到病人生命。這種情況的故障是絕對不能發生的。
3.2系統的可信賴度 • 電腦系統的可信賴度(dependability)是系統的一項特性,等於電腦值得信任的程度。可信賴度是指使用者對系統會如預期操作,以及系統在正常使用情況下不會當機的信心。這項特性無法用數字表達,但是可以用「不可靠」、「很可靠」以及「非常可靠」這3個術語來表示對系統不同程度的信任。
可信賴度可分成4個主要方面 • 可用性(availability):非正式的說,可用性是代表系統在任何時間點都能夠運作且提供有用服務的機率。 • 可靠性(reliability):非正式的說,可靠性是代表經過一段時間後,系統仍然能夠提供使用者預期之正確服務的機率。 • 安全性(safety):非正式的說,安全性是代表系統對使用者或環境造成損害的可能性評估。 • 保全性(security):非正式的說,保全性是代表系統對防止意外或有意的入侵動作的可能性評估。
除了這4個主要方面之外,可信賴度還涵蓋一些其他的系統性質: • 易修復性(repairability):系統會發生故障是無可避免的,但是如果能將系統儘快修復,就可以將因為故障所導致的損害降到最低。 • 易維護性(maintainability):隨著系統使用越久,新的需求就會逐漸出現。 • 存活能力(survivability):網際網路(Internet)系統的重要特性之一是它的存活能力,它與保全性和可用性息息相關(Ellison, et al., 1999)。存活能力是指系統在遭受攻擊而且有部分功能無法運作時,還能持續提供服務的能力。 • 容錯能力(error tolerance):這個性質可被視為易使用性(usability)的一部分,它代表的是系統應該如何設計才能避免和容忍使用者的錯誤輸入。
3.3可用性與可靠性 • 系統的可用性與可靠性是關係密切的性質,而且兩者都可以用數值機率來表示。系統的可靠性(reliability)是指系統能正確提供預期服務的機率,而可用性(availability)是指當使用者向系統要求服務時,系統能對使用者提供服務的機率。
系統的可靠性和可用性的精確定義如下 • 可靠性:在某段時間內,在某個限定環境中,針對特定目的而執行的動作不發生錯誤的機率。 • 可用性:系統在某個時間點能夠運作和提供所要求服務的機率。
3個改善系統可靠性的辦法: • 避免錯誤:利用開發技術減少錯誤發生的可能性,且(或)在這些錯誤引發系統故障之前找出錯誤所在。 • 錯誤偵測和移除:使用確認與驗證技術提高發現錯誤的機會,並且在系統使用前移除這些錯誤。有系統的執行系統測試與除錯是一種錯誤偵測技術。 • 容錯:使用一些技術以確保這些缺陷不會讓系統出錯,或是確保系統錯誤不會造成系統故障。例如,在系統中納入自我檢查功能,以及使用重複的系統模組都是有用的容錯技術。
3.4安全性 • 安全關鍵系統是指這類系統的運作必須絕對安全;也就是說,無論在任何情況下,即使系統故障也不能危害到人們或系統環境。 • 安全關鍵軟體可分為兩類: • 主要的安全關鍵軟體:這類軟體通常是被當作控制器內嵌於系統中。這類軟體若發生故障將導致硬體故障,進而造成人員傷亡或環境破壞。 • 次要的安全關鍵軟體:這類軟體會間接造成傷害。
確保安全性的關鍵在於確保系統不會發生意外,或是降低意外所造成的後果,有下列3個方法可以達成 : • 避免危險:設計可以避開危險的系統。例如裁切系統最好設計成同時按下兩個不同按鈕才運作,以避免使用者不小心將手放在刀片下而發生危險。 • 偵測與移除危險:設計可以偵測與移除危險的系統。例如,化工廠的系統應該要能夠偵測過高的壓力,並且能夠在發生爆炸之前打開閥門以降低壓力。 • 限制損害範圍:系統可以包含一些防護功能,以降低意外所造成的損害。例如,飛機的引擎通常會含有自動滅火裝置,若引擎起火,必須在造成機體危險前將火勢控制。
3.5保全性 • 系統的保全性(security)是一種系統保護自己免於受到外來攻擊的系統能力。由於有愈來愈多系統連線到網際網路,所以系統的保全性變得愈來愈重要。 • 保全性對所有的關鍵系統都很重要,若沒有一定程度的保全措施,當系統遭受外來攻擊時,它的可用性、可靠性和安全性都可能都會受到影響。 • 這是因為確保系統可用性、可靠性和安全性的所有方法,都必須依賴運作中的系統要跟安裝時的原來系統一模一樣才行。
外來攻擊可能會造成下列3種損害: • 阻絕服務(Denial of service):系統可能會被迫進入一個無法提供正常服務的狀態,顯然這將影響到系統的可用性。 • 程式或資料毀損:系統的軟體元件可能遭到未經授權的修改,這會影響到系統的行為,進而影響到它的可靠性和安全性。如果毀損程度非常大,那麼連系統的可用性也會受到影響。 • 機密資料外洩:若系統所管理的資料為機密的資料,外來的攻擊可能會將這些資料外洩給其他人知道。
確保系統保全性的方法 : • 避免弱點:設計沒有該項弱點的系統。例如,如果系統不和外界的網路相連,那麼就絕對不會遭受到公開的攻擊。 • 偵測與移除弱點:設計可以偵測弱點,並能在弱點導致暴露前移除此弱點的系統。例如病毒檢查程式就是弱點偵測與移除的範例,它會分析傳進來的檔案是否中毒,若有的話則修改檔案將病毒移除。 • 限制暴露範圍:讓受到攻擊所造成的損害減到最小。