李 程
(中國船舶重工集團公司第七一五研究所 杭州 310023)
近年來,隨著計算機軟件規模的不斷擴大,用戶對軟件的可靠性要求越來越高。軟件復用技術能夠在一定程度上解決軟件危機,軟件復用先后經歷了代碼復用、對象復用和構件復用[1]。如今,構件技術已經成為研究熱點,基于構件的軟件工程正改變著軟件開發模式。但是很多研究都放在了如何開發性能良好的構件以及設計構件系統結構上面,對于構件軟件的可靠性模型分析研究很少。而軟件可靠性是計算機系統的重要內容,也是保障計算機系統正常運行的重要指標。因此,針對構件軟件系統,建立相應的可靠性模型,研究其可靠性,是很有必要的。
基于構件體系結構的軟件可靠性分析方法主要有三類,基于狀態的方法、基于路徑的方法和基于操作剖面的方法。對構件軟件的可靠性模型研究,國內主要有:毛曉光等提出了構件軟件可靠性通用模型[2]。支小莉等針對Web services系統提出了Moniecarfo模擬方法進行可靠性研究[3]。金光等提出了基于Petri網的可靠性分析方法[4]。國外主要有:Cheung提出的面向用戶模型,即Cheung模型[5]。Yacoub 提出的基于場景的風險分析方法[6]。Yewu等提出的基于體系結構的模型[7]。Gokhale提出的構件級容錯分析方法[8]。Katerina等提出的體系結構中加入UML進行風險分析方法[9]。這些研究方法主要是對整個軟件系統進行可靠性建模分析,而對于軟件運行流程的狀態分析考慮得較少。本文運用馬爾可夫隨機過程理論,綜合考慮了構件占用率、復雜度和重要度對軟件可靠性的影響,提出了一種新的基于構件的軟件可靠性評估模型,并給出了相應的實例化研究。該模型具有較廣的覆蓋面和較強的兼容性。
馬爾可夫鏈,因俄國數學家安德烈·馬爾可夫得名,是指數學中具有馬爾可夫性質的離散事件隨機過程[10]。馬爾可夫鏈是理論上和實際應用中都十分重要的一類隨機過程。在工程系統中的噪聲和信號分析,通訊網絡和輸送現象的模擬,統計物理學、生物學、數字計算方法、經濟管理和市場預測等領域中都有十分重要的作用和廣泛應用。
定義1 設{Xn,n=0,1,2,···}為隨機序列,狀態空間為E={0 ,1,2,···}。如果對于任意非負整數 k , l 及 0≤n1<n2<···<nl<m 以 及成立,則稱{Xn,n=0,1,2,···}為馬爾可夫鏈,簡稱馬氏鏈。
特別地,k=1時,記

稱為一步轉移概率,簡稱轉移概率。
定義3 稱矩陣

為馬氏鏈{ }Xn,n=0,1,2,···在時刻 m 時的 k 步轉移概率矩陣。
性 質 設 Xn的 概 率 分 布 向 量為馬氏鏈的絕對分布,X0的概率分布向量為馬氏鏈的初始分布。馬氏鏈的絕對分布可由初始分布和一步轉移概率確定,且滿足
在基于構件的軟件開發中,軟件系統由構件級和系統級組成,則構件軟件的可靠性模型可分為兩級:構件可靠性模型和軟件系統可靠性模型。
在軟件系統可靠性建模中,將軟件的運行過程可看作不同的構件間狀態轉移的隨機過程,建立軟件系統的馬爾可夫鏈,以此實現軟件系統的可靠性評估和預測。
軟件開發流程中需要借助構件失效率考查系統中不同構件的運行狀態來研究軟件系統的可靠性特征。一般來講,運行中的構件存在正常和失效兩種狀態,由于發生失效帶有隨機性,故可將構件的運行看作一個狀態隨時間變化的隨機過程。因此構件的運行可看作是兩態的馬爾可夫鏈[11]。
設正常狀態為1,失效狀態為2,其中某一構件在一個周期時間內從正常狀態轉移到失效狀態的概率是λ,而從失效狀態經過故障修復轉移到正常狀態的概率為1。可得對應的馬爾可夫鏈如圖1所示。

圖1 構件的馬爾可夫鏈狀態轉移圖
如要預測該構件n周期后的狀態,可先求出構件的n步狀態轉移概率矩陣為


于是便可預測構件在第n+1周期處于正常狀態的概率和處于失效狀態的概率。
定義復雜度為

其中 βj為構件 j包含的函數體數量,πj表示構件j的復雜程度,n=0,1,2,···。
定義重要度為

其中levj表示構件 j的危害等級,為量化值。μj是構件 j對整個軟件系統的重要度系數。n=0,1,2,···??梢娢:Φ燃壟c重要度系數成正比。構件重要度分配如表1所示。

表1 構件重要度
根據可靠性的定義,對于一個有n個構件的軟件系統,系統的可靠性函數可以表示為

式中:bi表示系統經測試統計執行構件i的概率;pij表示系統在下一項操作中由構件i執行到構件j的概率;λj表示構件 j的失效率;πj表示構件 j的復雜度;μj表示構件 j的重要度;t表示構件運行時間。
在這里定義占用率為

它表示模塊 j在任務時間中所占有的比例。由分析得知長期的γj將趨向穩定狀態,它表示了構件 j在系統完成其任務中所占的重要程度。
假設軟件系統由n個結構和功能互相獨立的構件組成,構件的執行狀態相對獨立且無后效性,則軟件系統的運行過程可看作一個n態的馬爾可夫隨機過程。
根據可靠性的定義,軟件系統的可靠性等于各構件可靠性乘積值[12],故建立軟件系統的可靠性模型:

某大型物流軟件系統,根據功能和軟件架構劃分為6個構件。對系統進行可靠性測試實驗,實驗結果如表2所示。其中SN表示構件編號,LOS表示實驗操作數,FS表示操作失效數,RS表示失效修復數,ET表示構件的任務運行時間(任務時間為計算機時鐘時間,單位為小時)。

表2 實驗原始數據
由表2計算可得在當前一個周期內各構件在系統中的任務時間占有率為

將軟件系統運行過程看作馬爾可夫隨機過程,各構件之間的狀態轉移相互獨立且無后效性,由實驗統計分析可得狀態轉移概率矩陣P為

其中所有 pij>0,可知該馬氏鏈具有遍歷性,當轉移步數n充分大時,長期的系統分布將趨向穩定狀態,即系統具有平穩性。
由此可預測n周期后系統各構件的占有率為

根據軟件可靠性實驗的結果,得出了該軟件系統6個構件的故障過程狀態轉移概率矩陣Y,由表3給出。

表3 構件故障過程狀態轉移概率矩陣Y
軟件運行之初,可以認為模塊的初始狀態為正常狀態,即初始狀態向量,根據馬爾可夫遍歷性原理可以得出當n周后各模塊進入穩定狀態時各個構件的失效率

由復雜度定義可得軟件系統復雜度為

由重要度定義可得軟件系統重要度為

由于馬爾可夫鏈模型對構件重要度的度量采用的是構件在系統各階段任務時間中的比值,所以可設定各階段軟件系統完成其任務的時間t=1,則結合上述參數,根據軟件系統的可靠性函數可得系統可靠度為

將該軟件系統用文獻[13~15]提出的模型進行估算,所得可靠性與本文的方法估算結果相同,但采用這些模型估算的過程中,需計算的狀態矩陣相比本文成數量級增加。因此本文提出的基于馬爾可夫鏈的構件軟件可靠性估算方法更為優化。
本文將馬爾可夫鏈理論應用到軟件可靠性建模中,提出了一種新的構件軟件可靠性計算模型,可以在軟件開發流程的各個階段對軟件進行可靠性分析。與其他可靠性建模方法相比,本模型充分考慮了構件的復雜度和重要度對軟件系統可靠性的影響,因此所得到的可靠性預測函數具有一定的綜合性,可以更精確地估算基于構件的軟件可靠性,并且拓寬了模型應用范圍。實際的工程實例進一步驗證了該方法的有效性和合理性。