軟件工程-第14章第2-3節(jié)_第1頁
軟件工程-第14章第2-3節(jié)_第2頁
軟件工程-第14章第2-3節(jié)_第3頁
軟件工程-第14章第2-3節(jié)_第4頁
軟件工程-第14章第2-3節(jié)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

14.2質(zhì)量度量模型

14.2.1McCall質(zhì)量度量模型McCall質(zhì)量度量模型是McCall等人于1979年提出的軟件質(zhì)量模型,如圖14.2所示。圖14.2McCall軟件質(zhì)量度量模型14.2.1McCall質(zhì)量度量模型針對面向軟件產(chǎn)品的運行、修正和轉(zhuǎn)移,軟件質(zhì)量概念包括如下11個特性。1)面向軟件產(chǎn)品運行面向軟件產(chǎn)品運行的定義如下:(1)正確性:指軟件滿足設(shè)計說明及用戶預(yù)期目標的程度。(2)可靠性:指軟件按照設(shè)計要求,在規(guī)定時間和條件下不出故障,持續(xù)運行的程度。(3)效率:為了完成預(yù)定功能,軟件系統(tǒng)所需的計算機資源和程序代碼數(shù)量的程度。(4)完整性:對非授權(quán)人訪問軟件或數(shù)據(jù)行為的控制程度。(5)可用性:用戶熟悉、使用及準備輸入和解釋輸出所需工作量的大小。14.2.1McCall質(zhì)量度量模型2)面向軟件產(chǎn)品修正面向軟件產(chǎn)品修正的定義如下:(1)可維護性:指找到并改正程序中的一個錯誤所需代價的程度。(2)可測試性:指測試軟件以確保其能夠執(zhí)行預(yù)定功能所需工作量的程度。(3)適應(yīng)性:指修改或改進一個已投入運行的軟件所需工作量的程度。14.2.1McCall質(zhì)量度量模型3)面向軟件產(chǎn)品轉(zhuǎn)移面向軟件產(chǎn)品轉(zhuǎn)移的定義如下:(1)可移植性:指將一個軟件系統(tǒng)從一個計算機系統(tǒng)或環(huán)境移植到另一個計算機系統(tǒng)或環(huán)境中運行時所需的工作量。(2)可重用性:指一個軟件(或軟件的部件)能再次用于其他相關(guān)應(yīng)用的程度。(3)互操作性:指將一個系統(tǒng)耦合到另一個系統(tǒng)所需的工作量。14.2.1McCall質(zhì)量度量模型通常,對以上各個質(zhì)量特性直接進行度量是很困難的,在有些情況下甚至是不可能的。因此,McCall定義了一些評價準則,這些準則可對反映質(zhì)量特性的軟件屬性分級,并以此來估計軟件質(zhì)量特性的值。軟件屬性一般分級范圍為0(最低)~10(最高)。主要評價準則定義如下:(1)可跟蹤性:指跟蹤一個設(shè)計說明或一個實際程序部件返回到需求的能力(可追溯)。(2)完備性:指所需功能實現(xiàn)的程度。14.2.1McCall質(zhì)量度量模型(3)一致性:指在整個軟件開發(fā)項目中使用統(tǒng)一的設(shè)計和文檔編制技術(shù)的程度。(4)安全性:指防止軟件受到意外的或蓄意的存取、使用、修改及毀壞,或防止失密的程度。(5)容錯性:指在系統(tǒng)出錯時,能以某種預(yù)定方式做出適當處理,得以繼續(xù)執(zhí)行和恢復(fù)系統(tǒng)的能力,容錯性又稱為健壯性。(6)準確性:指能達到的計算或控制精度,又稱為精確性。(7)可審查性:指檢查與標準是否符合的難易程度。(8)可操作性:指軟件操作的難易程度。(9)可訓(xùn)練性:指軟件使新用戶使用該系統(tǒng)的輔助程度。14.2.1McCall質(zhì)量度量模型(10)簡潔性:指在不復(fù)雜、可理解的方式下,定義和實現(xiàn)軟件功能的程度。(11)簡明性:又稱可理解性,指軟件易讀的程度。(12)模塊性:指軟件系統(tǒng)內(nèi)部接口達到的高內(nèi)聚、低耦合的程度。(13)自描述性:指對軟件功能進行自身說明的程度。(14)通用性:指軟件功能覆蓋面寬廣的程度。(15)可擴充性:指軟件的體系結(jié)構(gòu)、數(shù)據(jù)設(shè)計和過程設(shè)計的可擴充的程度。(16)硬件獨立性:指不依賴于某個特定設(shè)備及計算機而能工作的程度。(17)通信共用性:指使用標準接口、協(xié)議和帶寬的程度。(18)數(shù)據(jù)共用性:指使用標準數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型的程度。14.2.2ISO的軟件質(zhì)量評價模型按照ISO/TC97/SC7/WG3/1985-1-30/N382,軟件質(zhì)量度量模型由三層組成,如圖14.3所示。高層是軟件質(zhì)量需求評價準則(SQRC)。中層是軟件質(zhì)量設(shè)計評價準則(SQDC)。低層是軟件質(zhì)量度量評價準則(SQMC)。14.2.2ISO的軟件質(zhì)量評價模型14.2.2ISO的軟件質(zhì)量評價模型ISO認為,應(yīng)對高層和中層建立國際標準,在國際范圍內(nèi)推廣軟件質(zhì)量管理(SQM)技術(shù),而低層可由各使用單位視實際情況制定。ISO的三層次模型來自McCall等人的模型。高層、中層和低層分別對應(yīng)于McCall模型中的特性、度量準則和度量。其中SQRC由8個元素組成。按1991年ISO發(fā)布的ISO/IEC9126質(zhì)量特性國際標準,SQRC已降為6個。在這個標準中,三層次中的第一層稱為質(zhì)量特性,第二層稱為質(zhì)量子特性,第三層稱為度量。14.3軟件復(fù)雜性14.3.1軟件復(fù)雜性的基本概念

軟件度量的一個重要分支就是軟件復(fù)雜性度量。對于軟件復(fù)雜性,至今尚無一種公認的精確定義。軟件復(fù)雜性與質(zhì)量屬性有著密切的關(guān)系,從某些方面反映了軟件的可維護性、可靠性等質(zhì)量要素。軟件復(fù)雜性度量的參數(shù)很多,主要有如下幾種:14.3.1軟件復(fù)雜性的基本概念(1)規(guī)模:即總共的指令數(shù),或源程序行數(shù)。(2)難度:通常由程序中出現(xiàn)的操作數(shù)的數(shù)目所決定的量來表示。(3)結(jié)構(gòu):通常用與程序結(jié)構(gòu)有關(guān)的度量來表示。(4)智能度:即算法的難易程度。軟件復(fù)雜性主要表現(xiàn)在程序的復(fù)雜性。程序的復(fù)雜性主要指模塊內(nèi)程序的復(fù)雜性,它直接關(guān)聯(lián)到軟件開發(fā)費用的多少、開發(fā)周期長短和軟件內(nèi)部潛伏錯誤的多少,同時它也是軟件可理解性的另一種度量。14.3.1軟件復(fù)雜性的基本概念減少程序復(fù)雜性,可提高軟件的簡單性和可理解性,并使軟件開發(fā)費用減少,開發(fā)周期縮短,軟件內(nèi)部潛藏錯誤減少。為了度量程序復(fù)雜性,要求復(fù)雜性度量滿足以下假設(shè):(1)它可以用來計算任何一個程序的復(fù)雜性。(2)對于不合理的程序,例如對于長度動態(tài)增長的程序,或者對于原則上無法排錯的程序,不應(yīng)當使用它進行復(fù)雜性計算。(3)如果程序中指令條數(shù)、附加存儲量及計算時間增多,不會減少程序的復(fù)雜性。14.3.2軟件復(fù)雜性的度量方法1.代碼行度量法度量程序的復(fù)雜性,最簡單的方法就是統(tǒng)計程序的源代碼行數(shù)。此方法的基本考慮是統(tǒng)計一個程序的源代碼行數(shù),并以源代碼行數(shù)作為程序復(fù)雜性的度量。若設(shè)每行代碼的出錯率為每100行源程序中可能的錯誤數(shù)目,例如每行代碼的出錯率為1%,則是指每100行源程序中可能有一個錯誤。Thayer曾指出,程序出錯率的估算范圍是0.04%~7%,即每100行源程序中可能存在0.04~7個錯誤。他還指出,每行代碼的出錯率與源程序行數(shù)之間不存在簡單的線性關(guān)系。14.3.2軟件復(fù)雜性的度量方法Lipow進一步指出,對于小程序,每行代碼的出錯率為1.3%~1.8%;對于大程序,每行代碼的出錯率增加到2.7%~3.2%。但這只是考慮了程序的可執(zhí)行部分,沒有包括程序中的說明部分。Lipow及其他研究者得出一個結(jié)論:對于少于100個語句的小程序,源代碼行數(shù)與出錯率是線性相關(guān)的;隨著程序的增大,出錯率以非線性方式增長。所以,代碼行度量法只是一個簡單的,估計得很粗糙的方法。14.3.2軟件復(fù)雜性的度量方法2.

McCabe度量法McCabe度量法是一種基于程序控制流的復(fù)雜性度量方法。McCabe復(fù)雜性度量又稱環(huán)路度量,它認為程序的復(fù)雜性很大程度上取決于控制的復(fù)雜性,單一的順序程序結(jié)構(gòu)最為簡單,循環(huán)和選擇所構(gòu)成的環(huán)路越多,程序就越復(fù)雜。這種方法以圖論為工具,先畫出程序圖,然后用該圖的環(huán)路數(shù)作為程序復(fù)雜性的度量值。程序圖是退化的程序流程圖,即把程序流程圖中每個處理符號都退化成一個結(jié)點,原來連接不同處理符號的流線變成連接不同結(jié)點的有向弧,得到的有向圖就叫做程序圖(或叫控制流圖)。14.3.2軟件復(fù)雜性的度量方法程序圖僅描述程序內(nèi)部的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具體操作以及分支和循環(huán)的具體條件。因此,它往往把一個簡單的IF語句與循環(huán)語句的復(fù)雜性看成是一樣的,把嵌套的IF語句與CASE語句的復(fù)雜性看成是一樣的。下面給出計算環(huán)路復(fù)雜性(或稱圈復(fù)雜度)的方法。(1)利用弧邊和結(jié)點數(shù)計算。根據(jù)圖論,在一個強連通的有向圖G中,環(huán)的個數(shù)V(G)由以下公式給出:V(G)?=

m

-

n

+

2p14.3.2軟件復(fù)雜性的度量方法其中,V(G)是有向圖G中的環(huán)路數(shù),m是圖G中的弧數(shù)(邊數(shù)),n是圖G中的結(jié)點數(shù),p是圖G中的強連通分量個數(shù)。在一個程序中,從程序圖的入口點總能到達圖中任何一個結(jié)點,因此,程序總是連通的,但不是強連通的。為了使圖成為強連通圖,從圖的入口點到出口點加一條用虛線表示的有向邊,使圖成為強連通圖。這樣就可以使用上式來計算環(huán)路復(fù)雜性了。14.3.2軟件復(fù)雜性的度量方法在圖14.4所給出的示例中,結(jié)點數(shù)n

=

6,弧數(shù)m

=

9,p

=

1,則有V(G)?=

m

-

n

+

2p

=

9

-

6

+

2

=

5即McCabe環(huán)路復(fù)雜度度量值為5。(2)利用區(qū)域數(shù)計算。這種方法是利用程序圖的拓撲結(jié)構(gòu)把平面劃分為封閉區(qū)域和開放區(qū)域的個數(shù)進行計算。在圖14.4中,有4個封閉區(qū)域和1個開放區(qū)域(封閉區(qū)域外面的區(qū)域),共5個區(qū)域,則V(G)

=

5。14.3.2軟件復(fù)雜性的度量方法圖14.4程序圖的復(fù)雜性14.3.2軟件復(fù)雜性的度量方法(3)利用判定結(jié)點數(shù)進行結(jié)算。這種方法是找出控制流圖中有多少個分支結(jié)點(IF個數(shù)),這個結(jié)點數(shù)加1就是圈復(fù)雜度。當分支或循環(huán)的數(shù)目增加時,程序中的環(huán)路也隨之增加,因此McCabe環(huán)路復(fù)雜度量值實際上是為軟件測試的難易程序提供了一個定量度量的方法,同時也間接地表示了軟件的可靠性。實驗表明,源程序中存在的錯誤數(shù)以及為了診斷和糾正這些錯誤所需的時間與McCabe環(huán)路復(fù)雜度度量值有明顯的關(guān)系。14.3.2軟件復(fù)雜性的度量方法利用McCabe環(huán)路復(fù)雜度度量時,有以下幾點說明:(1)環(huán)路復(fù)雜度取決于程序控制結(jié)構(gòu)的復(fù)雜度。當程序的分支數(shù)目或循環(huán)數(shù)目增加時其復(fù)雜度也增加。環(huán)路復(fù)雜度與程序中覆蓋的路徑條數(shù)有關(guān)。(2)環(huán)路復(fù)雜度是可加的。例如,模塊A的復(fù)雜度為3,模塊B的復(fù)雜度為4,則模塊A與模塊B的復(fù)雜度是7。(3)

McCabe建議,對于復(fù)雜度超過10的程序,應(yīng)分成幾個小程序,以減少程序中的錯誤。14.3.2軟件復(fù)雜性的度量方法M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論