某軟件公司開發(fā)一項基于數(shù)據(jù)流的軟件,其系統(tǒng)的主要功能是對輸入的數(shù)據(jù)進行多次分析、處理和加工,生成需要的輸出數(shù)據(jù)。需求方對該系統(tǒng)的軟件可靠性要求很高,要求系統(tǒng)能夠長時間無故障運行。該公司將該系統(tǒng)設計交給王工負責。王工給出該系統(tǒng)的模塊示意圖如圖12-18所示。王工解釋:只要各個模塊的可靠度足夠高,失效率足夠低,則整個軟件系統(tǒng)的可靠性是有保證的。
李工對王工的方案提出了異議。李工認為王工的說法有兩個問題:第一,即使每個模塊的可靠度足夠高,假設各個模塊的可靠度均為0.99,但是整個軟件系統(tǒng)模塊之間全部采用串聯(lián),則整個軟件系統(tǒng)的可靠度為0.99=0.96,即整個軟件系統(tǒng)的可靠度下降明顯;第二,軟件系統(tǒng)模塊全部采用串聯(lián)結構,一旦某個模塊失效,則意味著整個軟件系統(tǒng)失效。
李工認為,應該在軟件系統(tǒng)中采用冗余技術中的動態(tài)冗余或者軟件容錯的N版本程序設計技術,對容易失效或者非常重要的模塊進行冗余設計,將模塊之間的串聯(lián)結構部分變?yōu)椴⒙?lián)結構,來提高整個軟件系統(tǒng)的可靠性。同時,李工給出了采用動態(tài)冗余技術后的軟件系統(tǒng)模塊示意圖,如圖12-19所示。
劉工建議,李工方案中M1和M4模塊沒有采用容錯設計,但M1和M4發(fā)生故障有可能導致嚴重后果。因此,可以在M1和M4模塊設計上采用檢錯技術,在軟件出現(xiàn)故障后能及時發(fā)現(xiàn)并報警,提醒維護人員進行處理。
注:假設各個模塊的可靠度均為0.99