何睿,張力生
(重慶郵電大學軟件工程學院,重慶 400065)
隨著科技、經濟的高速發展,我們早已進入大數據時代,軟件已是人們生活不可或缺的技術。現在,人們的需求相較于以往更加豐富而多樣,使得軟件開發的規模更加龐大而復雜,以開發出滿足需求的軟件。軟件質量保證[1]是評判軟件開發的重要標準,與客戶滿意度直接相關,決定軟件項目是否成功[2]。軟件質量保證的主要方式是排除軟件缺陷。
IEEE 729-1983對軟件缺陷有一個標準的定義:從產品內部看,缺陷是軟件產品開發或維護過程中存在的錯誤等各種問題;從產品外部看,缺陷是系統所需要實現的某種功能的失效或違背。錯誤是人為錯誤,指軟件開發人員在開發軟件的過程中無意間犯下的技術錯誤,失效是軟件運行時不能完成規定功能[3]。正是錯誤導致軟件工作產品的失效。
從廣義來說,軟件的本質是軟件開發過程的所有結果,即文檔、程序、數據;從狹義的軟件運行的角度而言,軟件是可以在圖靈機等計算模型上可以運行的計算機語言(程序),是計算機模型可運行的操作序列。按照圖靈機理論,每一個操作序列對應著圖靈機的一個格局。當圖靈機的一個格局出錯時,軟件的運行就無法得到正確的輸出結果,則沒有達到用戶對軟件系統的期望,表現為軟件缺陷。
本文首先將軟件抽象為一棵函數樹,并討論函數樹的葉子結點、操作序列,以及操作序列對應圖靈機格局,建立了軟件缺陷的傳播概率模型,通過穩定性理論求解出系統的平衡點,并分析了平衡點的局部穩定性和全局穩定性。
結合軟件開發方法中抽象與分解的思想,軟件開發過程是對軟件不斷細化的過程。每一次的細化抽象為一個函數,函數之間的關系為細化的邏輯關系。函數為頂點,函數與函數之間的關聯為邊,構建了一棵描述軟件本質的函數樹。根據軟件的生命周期理論,將軟件的生命周期分為需求、分析、設計、實現、測試、維護6個階段,圖1表示了6個階段與函數樹的大致對應關系。
需求分析階段,主要任務是使用恰當的工具,分析獲取用戶對系統將提供的服務要求,即是對復雜而大型軟件系統進行高粒度地抽象與分解的過程。
分析設計階段,主要任務是根據需求階段的結果,采用不同的方法與恰當的工具,分析和設計出軟件邏輯構成。有很多分析設計工具,但面向對象分析設計方法及UML工具已成為主流。

圖1 函數樹軟件生命周期的劃分示例
實現階段,編碼實現階段的主要任務是基于分析設計的結果,使用計算機語言編寫程序,從本質上講,定義在計算機上能夠運行的操作序列,以實現預期的功能。多采用面向對象程序語言作為工具,而面向對象程序語言仍然可分為面向對象和過程式編程兩部分,最終都要使用過程式編程部分定義操作序列。
軟件缺陷改變在函數樹上葉子結點,操作序列所對應的格局狀態的過程如下:
根據上述格局狀態的改變過程,結合文獻[4-5]的建模思想、思路及方法,以一個格局為一個結點,構建了軟件缺陷傳播概率模型。模型將結點狀態劃分為三個狀態:無缺陷狀態S(沒有缺陷的結點),缺陷潛伏狀態L(有缺陷但是還未被發現的結點)和缺陷暴露狀態A(有缺陷且已被發現的結點)。在任意時刻t,每個結點只能處于上述狀態中的任意一種。分別用S(t),L(t)和A(t)表示t時刻處于S狀態,L狀態和A狀態的結點密度,為方便起見,分別簡寫為:S,L,A。
根據實際軟件開發過程中軟件缺陷的傳播過程,為建立結點函數缺陷狀態傳播模型,給出如下假設:
①大型復雜軟件系統的軟件函數結點數量是恒定;
②在開發過程之初,開發人員未進行任何開發活動,沒有錯誤產生,結點初始狀態為無缺陷狀態S;
③在開發過程的迭代中,S狀態結點通過每個成員失誤變為L狀態的概率相等為ε()t;
④在開發過程的迭代中,由不同成員之間協作時失誤的影響,S狀態結點變為L狀態的概率相等為 θ(t);
⑤在測試階段,假設測試人員發現缺陷的概率為α,即L狀態結點轉變為A狀態結點的概率為α;
⑥測試人員發現軟件缺陷后,假設開發人員消除缺陷使得軟件變為無缺陷狀態的概率相等為γ,即為γ;
⑦測試人員發現軟件缺陷后,開發人員修復有缺陷狀態結點時因錯誤而產生新潛在缺陷狀態的概率相等為δ,即A狀態結點轉變為L狀態結點的概率相等為δ。
根據上述假設,如圖2所示。其中,狀態S轉換成狀態L的概率:


圖2 軟件缺陷狀態傳播模型
微分方程為:

設Anew為可以傳遞缺陷的節點數,r為傳遞對象的平均數。根據軟件缺陷與開發過程的關系可得,時間間隔Δt內,節點由S狀態轉變為L狀態的數目是:

根據狀態模型有:在時間間隔Δt內,節點由S狀態轉變為L狀態的數目是:

其中,N是節點總數。
將方程(1)和(2)結合起來計算可得:

同時,根據狀態模型,可以傳遞缺陷的節點數Anew為:

結合方程(3)和(4)計算,可以得到V(t)的表達式:

根據假設(1)可知:

將方程(6)和(7)代入系統(1)中,系統(1)可化簡為:

由于L代表了t時刻處于L狀態的節點密度,A代表了t時刻處于A狀態的節點密度,由公式(7)可知系統(7)的正向不變集Ω為:

定理1:系統有唯一的有缺陷平衡點E*=(L*,A*),其中:

證明:為了獲得系統(8)的平衡點,系統(8)必須滿足如下方程:

整理方程組(12),可得:

顯然,方程組恒有如下解:

因為E0中L0和A0均為0,所以平衡點E0是無缺陷平衡點,且系統始終存在無缺陷平衡點E0。這意味著S0=1-L0-A0=1,代表系統(8)在無缺陷的情況下各節點的存在狀態。
通過計算,方程組另有一非零解:

在無缺陷平衡點E0=(L0,A0)處線性化系統對應的特征方程為:

其中:
通 過 公 式(17)可 以 看 出 a>0 ,c>0 ,且根據一元二次方程根與系數的關系可知公式(16)必有一根大于0,方程即該線性系統的特征根不全具有負實部,根據Lyapunov定理[6],平衡點E0不穩定。根據穩定性理論可知,系統只有唯一的有缺陷平衡點E*。
定理2:有缺陷平衡點E*局部漸進穩定。
證明:系統在平衡點E*處的Jacobian矩陣為:
其所對應的特征方程為:

其中:

將 S*=1-L*-A*代入方程(4.3)的 L˙=0 中,可得:

于是,將等式(21)代入b1,b2中,則:

定理3:有缺陷平衡點E*是全局漸近穩定的。
證明:考慮如下函數[7]:

根據系統(8)計算可得:

本文給出了描述軟件本質的數學模型、函數樹。以函數樹的葉子結點對應圖靈機的格局,以一個格局為討論對象,構建了軟件傳播概率模型。軟件最開始是沒有缺陷的,隨著軟件開發工作的進行,格局狀態變為有缺陷的狀態,通過測試工作軟件缺陷會被消除,也會產生新的缺陷。
基于軟件缺陷概率傳播模型,使用微分動力系統理論其進行分析,推導出軟件缺陷概率傳播模型存在唯一的有缺陷平衡點,同時分析證明該平衡點不僅局部穩定,而且全局穩定,從理論上證明了這意味著開發過程中的軟件缺陷將無法根除。