摘 要:隨著軟件發(fā)展的不斷進步,軟件的規(guī)模越來越大,軟件缺陷成為阻礙軟件質(zhì)量不可忽視的問題,而傳統(tǒng)的軟件缺陷分析如捕獲-再捕獲模型等基于統(tǒng)計方法顯露出明顯的不足。通過引入分形理論,利用其分形的自相似性對軟件缺陷數(shù)進行估計,分析軟件中的小模塊就能夠預測出整個軟件中的缺陷數(shù)。
關(guān)鍵詞:軟件缺陷;分形理論;自相似性
中圖分類號:TP13文獻標識碼:A文章編號:1672-3198(2008)03-0277-02
1 引言
軟件質(zhì)量是軟件工程的三大目標之一,軟件質(zhì)量的好壞將直接影響到用戶的滿意度,然而,如何提高軟件質(zhì)量一直是軟件工程中的一個難題。
目前來看,對于軟件缺陷的研究主要是通過在軟件開發(fā)的過程中,利用測試的統(tǒng)計數(shù)據(jù),估算軟件的可靠性,以控制軟件的質(zhì)量。
2 分形理論基本原理
分形的概念的是1975年美國數(shù)學家曼德布羅特(Benoit.B.Mandelbrot)首先提出的。它描述了自然界中傳統(tǒng)歐幾里德幾何學所不能描述的一大類復雜無規(guī)則的幾何對象。曼德布羅特把這些部分與整體以某種方式相似的形體稱為分形。在此基礎(chǔ)上,形成了研究分形性質(zhì)及其應(yīng)用的科學,稱為分形理論。
分形理論中最有意義的性質(zhì)就是自相似性。一個系統(tǒng)的自相似性是指某種結(jié)構(gòu)或過程的特征從不同的空間和時間尺度來看都是相似的,或者某系統(tǒng)或結(jié)構(gòu)的局域性質(zhì)或局域結(jié)構(gòu)與整體類似。
由于分形的概念是從幾何學中提出的,因此將分形應(yīng)用在其它領(lǐng)域需要擴展其定義內(nèi)容,在1986年Mandelbrot提出了一個實用了定義:組成部分以某種方式與整體相似的形體叫分形。這里的“某種方式”是指“自相似”。它突出反映了分形的自相似性,反映了自然界中廣泛存在的一類物質(zhì)的基本屬性:局部與局部,局部與整體在心態(tài)、功能、信息、時間與空間等方面具有統(tǒng)計意義上的自相似性。正是由于分形的這種由小見大的特征,為從軟件的局部研究整個軟件系統(tǒng)提供了行之有效的分析方法,使對軟件部分模塊缺陷的研究可以得到整個軟件的缺陷預測值。
3 軟件缺陷的分形
隨著對軟件缺陷研究的深入,人們開始認識到人的因素對于軟件缺陷產(chǎn)生至關(guān)重要。人是軟件的創(chuàng)造者,然而一個程序員或者是一個團隊都具有自己的特點及傾向,因此他們所開發(fā)的軟件也會體現(xiàn)出相似的性質(zhì)。小到軟件中的每個模塊,大到整個軟件系統(tǒng),處處體現(xiàn)者開發(fā)者的風格和習慣,當然也包括蘊含在其中的軟件缺陷。這就為我們研究軟件缺陷提供了一個基本的出發(fā)點:將研究范圍限定于同一個開發(fā)者或團隊所開發(fā)的軟件上,就一個軟件來說不同的模塊也可以體現(xiàn)出同一種風格,表現(xiàn)出內(nèi)在的自相似性,這是應(yīng)用分形理論的基本前提。
軟件系統(tǒng)中,樹狀的分層模型是最常見的結(jié)構(gòu)之一,由一個根系統(tǒng),下面分成多個子系統(tǒng),一個子系統(tǒng)下面又分成了更多的子模塊,這種結(jié)構(gòu)本身也體現(xiàn)出了自相似性。
軟件系統(tǒng)結(jié)構(gòu)圖
從軟件開發(fā)的過程來看,都是自上而下,逐步細化的過程,一個開發(fā)者在設(shè)計好方案后,軟件的結(jié)構(gòu)就被確定下來了,那么開發(fā)者的習慣和思想中包含的那部分軟件缺陷的因素也就被繼承下來了。通過一個實例我們看到這種缺陷分形擴散效應(yīng)。
在“電信CRM管理系統(tǒng)”的開發(fā)過程中,設(shè)計該系統(tǒng)包含5個子系統(tǒng)模塊,除了數(shù)據(jù)處理模塊沒有界面以外,其余4個子系統(tǒng)都包含一些類似的操作界面。由于在需求分析與概要設(shè)計時開發(fā)者未考慮界面的自適應(yīng)問題,導致軟件運行在不同分辨率下界面的大小不能統(tǒng)一。按照設(shè)計說明書進行編寫的過程中,那么每個子系統(tǒng)(數(shù)據(jù)處理除外)的操作界面都存在這一缺陷,按子系統(tǒng)來細分的話,則細分數(shù)為5,這一功能的缺陷數(shù)為5-1=4,再擴散到子模塊的層次上,假設(shè)每個子模塊都有3個顯示界面,那么這個缺陷的擴散數(shù)為3×4=12,由此可見如果是對于較大規(guī)模的系統(tǒng),則對于整個軟件來說缺陷的數(shù)目將隨著規(guī)模的擴大而成倍增長。
下面我們來看如何利用軟件自相似性來對軟件缺陷做出預測。首先我們通過開發(fā)者的角度假定了軟件缺陷在軟件開發(fā)的過程中,不同模塊及不同層次之間存在著自相似性。我們從軟件系統(tǒng)結(jié)構(gòu)圖分析,由頂向下,可以發(fā)現(xiàn)無論多么復雜的軟件在結(jié)構(gòu)上總是以樹形結(jié)構(gòu)為處理構(gòu)成,對其中的某個處理單元再進行放大,仍然是表現(xiàn)出這種結(jié)構(gòu),直到分解至基本模塊為止。同時從軟件的頂端至基本模塊之間都會表現(xiàn)出這種一致性,這意味這可以滿足分形的標度不變性。這里再引入分形中Hausdorff維數(shù),其測定原理是:
把一個對象的線度放大L倍,若它本身成為原來的K倍,則該對象的維數(shù)是
D=lnK/lnL
或者,按相反的方式,把一個對象劃分為N個大小和形態(tài)完全相同的小對象,每個小對象的線度是原對象的r倍,此時維數(shù)為
D=lnN(r)/ln(1/r)
根據(jù)上面的分形維數(shù)的原理,通過之前的那個例子來說明軟件缺陷的維數(shù)。在上述的“電信CRM管理系統(tǒng)”中包含5個子系統(tǒng)模塊,我們進一步假定某個子系統(tǒng)中有4個子模塊,通過對這個子系統(tǒng)的分析,得出具有某個特定缺陷的子模塊數(shù)為3個,即對于這個缺陷來說,它的線度是相對于子模塊的1/3,應(yīng)用②式可以得出該子系統(tǒng)缺陷的維數(shù)為:
DH=ln4/ln3=1.2618
根據(jù)分形理論的比例性質(zhì),當比例放大λ倍時,s維的Hausdorff測度放大λs倍,則可以預測出這個子系統(tǒng)中包含這中軟件缺陷的個數(shù)。
軟件缺陷的結(jié)構(gòu)圖軟件缺陷的分形模擬圖
當然我們這里舉出了例子是在理想狀態(tài)下的比較簡單的情況,對于軟件缺陷的不同細分可以沿著不同的路徑得出結(jié)果,由于軟件過程是一個非常復雜的過程,其每一次的細分過程也不可能絕對一樣,因此,可以統(tǒng)計此類軟件中個子系統(tǒng)所占比重給它們確定一個權(quán)值xi,每個子系統(tǒng)的相似的缺陷模塊給出分形維數(shù)aij,子系統(tǒng)模塊的缺陷數(shù)為r,從而得出該軟件子系統(tǒng)缺陷的分形維數(shù)D:
D=A1A2…An=r
a11…a1n
a21a2n
……
an1ann
x1x2…xn
參考文獻
[1]周之英.現(xiàn)代軟件工程[M].北京:科學出版社,2000.
[2]張凱.軟件復雜性與質(zhì)量控制[M].北京:中國財政經(jīng)濟出版社,2005(11).
[3]H.E. Dunsmore 《An Analysis of Several Software Defect Models》.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。