第七章項(xiàng)目的計(jì)劃和管理_第1頁
第七章項(xiàng)目的計(jì)劃和管理_第2頁
第七章項(xiàng)目的計(jì)劃和管理_第3頁
第七章項(xiàng)目的計(jì)劃和管理_第4頁
第七章項(xiàng)目的計(jì)劃和管理_第5頁
已閱讀5頁,還剩86頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件工程第七章項(xiàng)目的計(jì)劃和管理7.1軟件度量

7.2軟件項(xiàng)目估算 7.3軟件質(zhì)量度量 7.4軟件復(fù)雜性度量

7.5軟件可靠性度量

7.6軟件開發(fā)過程的管理

7.7軟件過程能力評(píng)估

7.8項(xiàng)目管理計(jì)劃的組成

7.9小結(jié)本章重點(diǎn)軟件度量軟件項(xiàng)目管理風(fēng)險(xiǎn)管理項(xiàng)目計(jì)劃的制定

7.1軟件度量軟件開發(fā)不同于其他產(chǎn)品的設(shè)計(jì)、制造過程,軟件的整個(gè)過程都是設(shè)計(jì)過程而沒有制造過程。軟件開發(fā)不需要使用大量的物質(zhì)資源,而主要是人力資源,并且,軟件開發(fā)的產(chǎn)品只是程序代碼和技術(shù)文件,并沒有其他的物質(zhì)結(jié)果。7.1.1軟件度量的基本概念1.測量、度量、估算(1)測量(measure):對(duì)產(chǎn)品或過程的某個(gè)屬性的范圍、數(shù)量、維度、容量或大小提供一個(gè)定量的指示。(2)度量(metric):對(duì)系統(tǒng)、部件或過程的某一特性所具有的程度進(jìn)行的量化測量。如軟件質(zhì)量度量等。(3)估算(estimation):對(duì)軟件產(chǎn)品、過程、資源等使用歷史資料或經(jīng)驗(yàn)公式等進(jìn)行預(yù)測。如工作量、成本、完成期限等。估算一般用于立項(xiàng)、簽訂合同、制定工作計(jì)劃等。2.軟件項(xiàng)目管理的對(duì)象及其屬性:軟件項(xiàng)目管理的對(duì)象主要包括產(chǎn)品、過程和資源等。(1)產(chǎn)品(product)是指軟件開發(fā)過程得到的文檔和程序,如:需求規(guī)格說明、設(shè)計(jì)規(guī)格說明、源代碼、測試報(bào)告等。(2)過程(process)是指與軟件項(xiàng)目有關(guān)的活動(dòng),如軟件項(xiàng)目計(jì)劃、開發(fā)活動(dòng)、維護(hù)活動(dòng)、管理活動(dòng)等。(3)資源(resource)是指進(jìn)行軟件項(xiàng)目所需要的各種支持,如人力、經(jīng)費(fèi)、方法、工具、軟硬件環(huán)境等。

3.對(duì)象的屬性內(nèi)部屬性是指對(duì)象本身的屬性,如軟件產(chǎn)品的代碼長度、模塊化的程度、復(fù)雜性等。

項(xiàng)目管理員和用戶都十分關(guān)心產(chǎn)品、過程、資源的外部屬性,于是可將外部屬性看成是面向管理員和用戶的屬性。4.軟件度量的分類??煞譃橹苯佣攘亢烷g接度量兩類:(1)直接度量。即對(duì)不依賴于其他屬性的簡單屬性的測量。如軟件的模塊數(shù)、程序的代碼行數(shù)、操作符的個(gè)數(shù),工作量、成本等。(2)間接度量。即對(duì)涉及若干個(gè)其他屬性的軟件要素、準(zhǔn)則或?qū)傩缘亩攘?。因?yàn)樗鼈儽仨毻ㄟ^建立一定的度量方法或模型才能間接推斷而獲得。如軟件的功能性、復(fù)雜性、可靠性、可維護(hù)性等等。7.1.2面向規(guī)模的度量通面向規(guī)模的度量是以軟件的代碼行(LOC,LineofCode)數(shù)為基礎(chǔ)的直接度量。一般的軟件開發(fā)組織對(duì)開發(fā)過的每個(gè)軟件項(xiàng)目都有如代碼行、工作量、成本、錯(cuò)誤、人數(shù)、文檔頁數(shù)等的統(tǒng)計(jì)記錄。利用代碼行數(shù)可以度量軟件規(guī)模、生產(chǎn)率、平均成本、出錯(cuò)率、文檔率等參考量。若設(shè):L表示軟件的代碼行數(shù),單位為KLOC(千行代碼)或LOC;E表示開發(fā)軟件所需工作量,單位為人月(PM)或人年(PY);S表示軟件成本,單位為美元或元;Ne表示錯(cuò)誤個(gè)數(shù);Pd表示軟件文檔頁數(shù);M表示開發(fā)所用的人數(shù)。則有:1.軟件開發(fā)的生產(chǎn)率Pl(即平均每人月開發(fā)的代碼行數(shù),以LOC/PM為單位)為:

Pl=L/E2.開發(fā)每行代碼的平均成本Cl(以美元/LOC或元/LOC為單位)為:

Cl=S/L3.代碼出錯(cuò)率EQRl(即每千行代碼的平均錯(cuò)誤數(shù),以個(gè)/KLOC為單位)為:

EQRl=Ne/L4.軟件的文檔率Dl(即平均每千行代碼的文檔頁數(shù),以頁/KLOC為單位)為:

Dl=Pd/L

例:已知有一個(gè)國外典型的軟件項(xiàng)目的記錄,開發(fā)人員M=6人,其代碼行數(shù)=20.2KLOC,工作量E=43PM,成本S=314000美元,錯(cuò)誤數(shù)N=64,文檔頁數(shù)Pd=1050頁。試計(jì)算開發(fā)該軟件項(xiàng)目的生產(chǎn)率Pl、平均成本Cl、代碼出錯(cuò)率EQRl和文檔率Dl。解:根據(jù)給出的已知數(shù)據(jù),可得:

Pl=L/E=20.2KLOC/43PM=0.47KLOC/PM=470LOC/PMCl=S/L=314000美元/20.2KLOC=15.54美元/LOC

EQRl=Ne/L=64個(gè)/20.2KLOC=3.17個(gè)/KLOCDl=Pd/L=1050頁/20.2KLOC=51.98頁/KLOC1.簡單功能點(diǎn)度量1979年,Albrecht首先提出了功能點(diǎn)度量方法。這是一種面向功能的間接度量方法,即從軟件定義的基本功能出發(fā),來估算軟件系統(tǒng)的規(guī)模。因此,該方法可以在軟件開發(fā)項(xiàng)目的初期,在軟件定義過程中即可預(yù)測待開發(fā)軟件的規(guī)模。Albrecht用5個(gè)信息量的“加權(quán)和”CT和14個(gè)因素的“復(fù)雜性調(diào)節(jié)值”Fi(i=1,2,……14)來計(jì)算功能點(diǎn)FP。7.1.3面向功能的度量功能點(diǎn)FP的度量公式如下:FP=CT×TCF=CT[0.65+0.01Fi]在FP度量公式中:基本功能點(diǎn)的CT計(jì)算方法,如表7.1所示。

表7.1基本功能點(diǎn)的CT計(jì)算方法測量參數(shù)值簡單權(quán)值一般權(quán)值復(fù)雜權(quán)值用戶輸入數(shù)□*3*4*6=□用戶輸出數(shù)□*4*5*7=□用戶查詢數(shù)□*3*4*6=□文件數(shù)□*7*10*15=□外部界面數(shù)□*5*7*10=□CT=□TCF是技術(shù)復(fù)雜性調(diào)節(jié)因子。0.65和0.01為經(jīng)驗(yàn)數(shù)據(jù)。Fi(i=1,2,…,14):復(fù)雜性調(diào)節(jié)值。Fi所代表的因素,每個(gè)Fi可根據(jù)實(shí)際情況取0、1、2、3、4、5中的一個(gè)值。其中:0—沒有影響、1—偶然的、2—適中、3—普通、4—重要、5—極重要的影響。TCF取值范圍:0.65~1.35。2.功能點(diǎn)度量簡單功能點(diǎn)度量方法沒有直接考慮軟件本身的算法的復(fù)雜性問題。所以它僅適用于度量算法簡單的事務(wù)處理等系統(tǒng)。1986年Jones對(duì)簡單功能點(diǎn)度量進(jìn)行了推廣,在計(jì)算軟件系統(tǒng)的基本功能點(diǎn)CT時(shí),引入了算法復(fù)雜性因素,我們稱這種推廣的度量方法為功能點(diǎn)度量。推廣功能點(diǎn)的CT計(jì)算方法,如表7.2所示。表7.2推廣功能點(diǎn)的CT計(jì)算方法測量參數(shù)值權(quán)值用戶輸入數(shù)□*4=□用戶輸出數(shù)□*5=□用戶查詢數(shù)□*4=□文件數(shù)□*7=□外部界面數(shù)□*7=□算法□*3=□CT=□這兩種方法對(duì)一般的事務(wù)處理系統(tǒng)等算法簡單的軟件系統(tǒng)計(jì)算出來的FP值基本相同,但對(duì)于較復(fù)雜的軟件系統(tǒng),功能點(diǎn)度量方法比簡單功能點(diǎn)度量方法計(jì)算出來的FP值要高20%~35%。用功能點(diǎn)計(jì)算軟件項(xiàng)目的有關(guān)參考量:(1)生產(chǎn)率Pf(平均每人月開發(fā)的功能點(diǎn)數(shù),以功能點(diǎn)/PM為單位):

Pf=FP/E(2)平均成本Cf(以美元/功能點(diǎn)或元/功能點(diǎn)為單位):

Cf=Sf/FP(3)代碼出錯(cuò)率EQR(即每功能點(diǎn)的平均錯(cuò)誤數(shù),以個(gè)/功能點(diǎn)為單位)為:

EQRf=Ne/FP(4)軟件的文檔率Df(即平均每功能點(diǎn)的文檔頁數(shù),以頁/功能點(diǎn)為單位)為:

Df=Pd/FP3.功能點(diǎn)度量方法的優(yōu)點(diǎn):(1)可用于軟件項(xiàng)目開發(fā)的初期階段的項(xiàng)目估算。因?yàn)樵诳尚行匝芯亢托枨蠓治鲭A段已能基本確定輸入、輸出等各個(gè)參考量;(2)與程序設(shè)計(jì)語言無關(guān)。適合于過程或非過程式語言。4.功能點(diǎn)度量方法的缺點(diǎn):(1)某些參考量的收集有一定困難;(2)度量值的主觀因素較多,如Fi取值;(3)功能點(diǎn)FP本身沒有直觀的物理意義。軟件的功能點(diǎn)數(shù)與選用的程序設(shè)計(jì)語言無關(guān),但對(duì)于同一個(gè)軟件(功能點(diǎn)數(shù)已定),如用不同的程序設(shè)計(jì)語言來實(shí)現(xiàn),所得到的軟件的代碼行數(shù)可能會(huì)有較大差別。Albrecht等人通過多個(gè)軟件統(tǒng)計(jì)出了用不同程序設(shè)計(jì)語言實(shí)現(xiàn)每個(gè)功能點(diǎn)所需代碼行數(shù),即計(jì)算出各語言的。各種語言的LOC/FP(平均值)如表7.3所示。

7.1.4代碼行與功能點(diǎn)度量的比較程序設(shè)計(jì)語言LOC/FP(平均值)匯編語言320COBOL105FORTRAN105Pascal90Ada70面向?qū)ο蟮恼Z言30四代語言(4GL)20代碼生成器157.2軟件項(xiàng)目估算常用的軟件項(xiàng)目的估算方法主要有以下4種:1.根據(jù)已完成項(xiàng)目的總成本或總工作量來推算待開發(fā)軟件的總成本或總工作量,然后再按比例將其分配到各開發(fā)任務(wù)中去。即從整體到局部。 優(yōu)點(diǎn):估算工作量小、速度快。缺點(diǎn):對(duì)項(xiàng)目中的特殊困難估計(jì)不足,有可能產(chǎn)生遺漏,估算出的值盲目性較大。2.把待開發(fā)軟件細(xì)分,直到每一個(gè)子任務(wù)或階段都已經(jīng)明確所需要的開發(fā)工作量或成本,然后再把它們累加起來,得到待開發(fā)軟件的總工作量或總成本。需要指出,在對(duì)軟件進(jìn)行細(xì)分時(shí),一種是按照功能將大的軟件項(xiàng)目劃分為若干個(gè)子項(xiàng)目;另一種是按照軟件生命周期分解為各個(gè)階段。當(dāng)然,也可以兩者同時(shí)進(jìn)行。 優(yōu)點(diǎn):計(jì)算各個(gè)部分的準(zhǔn)確性較高。缺點(diǎn):缺少各個(gè)子任務(wù)之間相互聯(lián)系的工作量和系統(tǒng)工作量(如項(xiàng)目管理、配置管理、質(zhì)量管理),估算值往往偏低,必須用其他方法進(jìn)行校正。3.用待開發(fā)的軟件項(xiàng)目與過去完成的軟件項(xiàng)目進(jìn)行比較,從各子任務(wù)中區(qū)分出類似的和不同的部分。類似的部分按已知的實(shí)際量計(jì)算,不同的部分則采用某種方法進(jìn)行估算。差別估算法綜合了以上兩種方法的優(yōu)點(diǎn)。 優(yōu)點(diǎn):估算的準(zhǔn)確程度高。缺點(diǎn):不容易劃分相似的界限。4.根據(jù)經(jīng)驗(yàn)估算公式,通過眾多實(shí)際軟件項(xiàng)目的經(jīng)驗(yàn),總結(jié)出一些有價(jià)值的軟件成本和工作量估算的經(jīng)驗(yàn)?zāi)P汀\浖?xiàng)目的規(guī)模是影響軟件項(xiàng)目成本和工作量的重要因素。軟件項(xiàng)目代碼行和功能點(diǎn)估算是成本和工作量估算的基礎(chǔ)。采用上述四種估算方法可以估算出LOC或FP的樂觀值a,悲觀值b和一般值m,然后根據(jù)下列加權(quán)公式計(jì)算出期望值,公式如下所示:

E=(a+4m+b)/6軟件的LOC或FP的期望值估算出來后,就可以根據(jù)已有的標(biāo)準(zhǔn)生產(chǎn)率對(duì)成本和工作量等進(jìn)行估算了。7.2.1工作量估算1.IBM模型IBM模型是根據(jù)已估算出的源代碼行數(shù)來估算其他資源的需要量的,因此該模型是面向LOC的靜態(tài)單變量估算模型。還有一些面向FP的靜態(tài)單變量估算模型。由于這些模型的準(zhǔn)確度不高,在實(shí)際應(yīng)用中必須對(duì)公式中的參數(shù)進(jìn)行調(diào)整,以適應(yīng)目前情況。2.COCOMO模型7.2.2經(jīng)驗(yàn)估算模型CoCoMo模型按其詳細(xì)程度分三個(gè)層次:基本CoCoMo模型;中間CoCoMo模型;詳細(xì)CoCoMo模型。軟件估算模型使用由經(jīng)驗(yàn)導(dǎo)出的公式來預(yù)測軟件開發(fā)工作量,其中,工作量是軟件規(guī)模(LOC或FP)的函數(shù),工作量的單位通常是人月(PM)。支持大多數(shù)估算模型的經(jīng)驗(yàn)數(shù)據(jù),都是從有限個(gè)項(xiàng)目的樣本集中總結(jié)出來的,因此,沒有一個(gè)估算模型可以適應(yīng)所有類型的軟件和開發(fā)環(huán)境。(1)基本CoCoMo模型基本CoCoMo模型是靜態(tài)的、單變量的模型,其工作量和開發(fā)時(shí)間的估算公式如下:

E=a(L)bD=cEd

其中:L——軟件代碼行的估算值(以KLOC計(jì));E——工作量(以PM計(jì));D——開發(fā)時(shí)間(以月計(jì));a、b、c、d——經(jīng)驗(yàn)常數(shù)。(2)中間CoCoMo模型中間CoCoMo模型在估算工作量時(shí),在基本CoCoMo模型的基礎(chǔ)上再乘以由15個(gè)因素組成的工作量調(diào)節(jié)因子EAF,于是有:E=a(L)bEAF=a(L)bFi其中:

L——軟件的代碼行數(shù)(以KLOC計(jì));

E——工作量(以PM計(jì));

a、b——經(jīng)驗(yàn)常數(shù)

(3)詳細(xì)CoCoMo模型簡介詳細(xì)CoCoMo模型的基本工作量(指EAF=1時(shí)的工作量)公式、開發(fā)時(shí)間公式與中間CoCoMo模型相同。所不同的是詳細(xì)CoCoMo模型在計(jì)算EAF時(shí)針對(duì)每個(gè)影響因素,分層次(系統(tǒng)層、子系統(tǒng)層、模塊層)并按軟件生存周期分階段給出工作量因素的分級(jí)表。詳細(xì)CoCoMo模型可以更準(zhǔn)確地估算軟件項(xiàng)目的工作量。詳細(xì)CoCoMo模型這里就不詳細(xì)介紹了,感興趣的同學(xué)可以查閱相關(guān)的參考資料。

軟件質(zhì)量是軟件的生命。它作為軟件工程的一部分,貫穿于整個(gè)軟件生存周期之中。生產(chǎn)高質(zhì)量的軟件產(chǎn)品是軟件工程的首要目標(biāo)。由于軟件是邏輯產(chǎn)品,軟件質(zhì)量很難直接度量。因此,應(yīng)當(dāng)給出軟件質(zhì)量的科學(xué)的、實(shí)用的定義,并通過一定的度量模型進(jìn)行度量,以便在整個(gè)軟件生存周期中對(duì)其進(jìn)行評(píng)價(jià)和控制。7.3軟件質(zhì)量度量7.3.1軟件質(zhì)量定義1.軟件質(zhì)量的定義:1983年,ANSI/IEEEstd729標(biāo)準(zhǔn)給出了軟件質(zhì)量的定義如下:軟件質(zhì)量是軟件產(chǎn)品滿足規(guī)定的和隱含的與需求能力有關(guān)的全部特征和特性,包括:(1)軟件產(chǎn)品滿足用戶要求的程度;(2)軟件擁有所期望的各種屬性的組合程度;(3)用戶對(duì)軟件產(chǎn)品的綜合反映程度;(4)軟件在使用過程中滿足用戶需求的程度。2.McCall等人的軟件質(zhì)量度量模型McCall等人提出了由軟件質(zhì)量要素、評(píng)價(jià)準(zhǔn)則、定量度量三個(gè)層次組成的三層次度量模型。其中:第一層是將對(duì)軟件質(zhì)量的度量歸結(jié)為對(duì)直接影響軟件質(zhì)量的若干個(gè)軟件質(zhì)量要素的度量;第二層是用若干個(gè)可度量的評(píng)價(jià)準(zhǔn)則來間接度量軟件質(zhì)量要素;第三層是對(duì)相應(yīng)評(píng)價(jià)準(zhǔn)則的直接度量。3.ISO三層次軟件質(zhì)量度量模型。1985年,國際標(biāo)準(zhǔn)化組織也提出了三層次軟件質(zhì)量度量模型。其中:高層稱為軟件質(zhì)量需求評(píng)價(jià)準(zhǔn)則(SQRC),并由正確性、可容性、有效性、安全性、可用性、可維護(hù)性、靈活性、可互操作性等8個(gè)要素組成;中層稱為軟件質(zhì)量設(shè)計(jì)評(píng)價(jià)準(zhǔn)則(SQDC),并由可追蹤性、完全性等共23個(gè)評(píng)價(jià)準(zhǔn)則組成;低層稱作軟件質(zhì)量度量評(píng)價(jià)準(zhǔn)則(SQMC)。ISO認(rèn)為,應(yīng)對(duì)高層和中層建立國際標(biāo)準(zhǔn),而低層可由各使用單位自行制定。軟件質(zhì)量要素(factor)是指直接影響軟件質(zhì)量的軟件質(zhì)量特性。隨著對(duì)軟件質(zhì)量的認(rèn)識(shí)的逐步提高,軟件質(zhì)量要素也可能有所變化。當(dāng)時(shí)McCall等人認(rèn)為,軟件質(zhì)量由11個(gè)軟件質(zhì)量要素來衡量。這11個(gè)質(zhì)量要素可劃分為三類:它們之間的關(guān)心如圖7.1所示(1)面向運(yùn)行特征的軟件質(zhì)量要素有正確性、可靠性、有效性、完整性和可用性;(2)面向軟件承受修改的質(zhì)量要素有可維護(hù)性、靈活性、可測試性;(3)面向轉(zhuǎn)移的軟件質(zhì)量要素有可移植性、可重用性、可互操作性。7.3.2軟件質(zhì)量要素圖7.1McCall軟件質(zhì)量要素1.質(zhì)量要素概念:(1)正確性(correctness):指程序滿足需求規(guī)格說明及用戶目標(biāo)的程度;(2)完整性(integrity):指對(duì)未授權(quán)人員訪問程序或數(shù)據(jù)加以控制的程度;(3)可用性(usability):指學(xué)習(xí)使用軟件(即操作軟件、準(zhǔn)備輸入數(shù)據(jù)、解釋輸出結(jié)果等)的難易程度;(4)靈活性(flexibility):指改變一個(gè)操作的順序所需工作量的多少;(5)可測試性(testability):指測試軟件以便使其具有預(yù)定功能所需工作量的多少;(6)可互操作性(interoperability):指程序與其他系統(tǒng)相互交換并使用信息的能力。

1.評(píng)價(jià)準(zhǔn)則概念(1)可審查性(audit-ability):檢查軟件需求、文檔、過程、標(biāo)準(zhǔn)等是否一致的難易程度;(2)準(zhǔn)確性(accuracy):計(jì)算和控制的精確程度;(3)簡明性(conciseness):程序源代碼的緊湊程度;(4)通信通用性(communicationcommonality):使用標(biāo)準(zhǔn)接口、協(xié)議和帶寬的程度;(5)數(shù)據(jù)通用性(datacommonality):在程序中使用標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)和類型的程度;7.3.3軟件質(zhì)量要素評(píng)價(jià)準(zhǔn)則(6)容錯(cuò)性(error-tolerance):在各種異常情況下軟件能繼續(xù)提供操作的能力;(7)執(zhí)行效率(executionefficiency):軟件運(yùn)行效率;(8)可擴(kuò)充性(expandability):結(jié)構(gòu)、數(shù)據(jù)、過程等設(shè)計(jì)可以擴(kuò)充的程度;(9)通用性(generality):程序潛在應(yīng)用領(lǐng)域的多少;(10)硬件獨(dú)立性(hardwareindependence):軟件與其運(yùn)行的硬件環(huán)境無關(guān)的程度;(11)檢測性(instrumentation):程序監(jiān)視自身運(yùn)行并標(biāo)識(shí)錯(cuò)誤的程度;(12)可操作性(operability):操作該軟件的難易程度;(13)安全性(security):控制或保護(hù)程序和數(shù)據(jù)不被破壞、非法訪問等機(jī)制的能力;(14)自文檔化(self-documentation):源代碼提供自身說明文檔的程度;(15)簡單性(simplicity):程序易于理解的程度;(16)軟件獨(dú)立性(softwareindependence):軟件與非標(biāo)準(zhǔn)編程語言特征、操作系統(tǒng)特征等軟件環(huán)境約束無關(guān)的程度;(17)易培訓(xùn)性(training):軟件對(duì)使用它的新用戶的支持程度。(18)完全性(Completeness)整個(gè)軟件系統(tǒng)不丟失任何重要的成分,軟件完全實(shí)現(xiàn)系統(tǒng)所需的功能、行為和性能(19)一致性(Consistency)整個(gè)軟件系統(tǒng)均使用統(tǒng)一的符號(hào)、概念和術(shù)語(20)模塊化(Modularity)模塊是程序中一個(gè)邏輯上相對(duì)獨(dú)立、具有良好的接口定義的編程單位:過程、函數(shù)、類、程序包等(21)可追蹤性(Tracebility)對(duì)軟件進(jìn)行正向和反向追蹤的能力2.軟件質(zhì)量要素Fj的值可用下式計(jì)算:

Fj=CjkMkj=1,2,...,11.其中Mk是軟件質(zhì)量要素Fj對(duì)第k種評(píng)價(jià)準(zhǔn)則的測量值,Cjk是相應(yīng)的加權(quán)系數(shù)。加權(quán)系數(shù)Cjk滿足Cjk=1。7.4軟件復(fù)雜性度量

通過軟件的復(fù)雜性度量值可以估算出軟件中故障的數(shù)量,也能估算出軟件開發(fā)所需的工作量;定量度量的結(jié)果還可以用于比較不同設(shè)計(jì)方案的優(yōu)劣。同時(shí),軟件的復(fù)雜性也能從某些方面影響軟件的可維護(hù)性、可靠性等軟件質(zhì)量要素。因此,軟件復(fù)雜性度量是軟件度量的一個(gè)重要組成部分。7.4.1軟件復(fù)雜性及度量原則

1.軟件復(fù)雜性的概念 一個(gè)軟件系統(tǒng)由于開發(fā)規(guī)模相同、復(fù)雜性不同的軟件,花費(fèi)的時(shí)間和成本會(huì)有很大差異。K.Magel

從6個(gè)方面來描述軟件復(fù)雜性:(1)理解程序的難度;(2)維護(hù)程序的難度;(3)向其他人解釋程序的難度;(4)按指定方法修改程序的難度;(5)根據(jù)設(shè)計(jì)文件編寫程序的工作量;(6)執(zhí)行程序時(shí)需要資源的多少。 軟件復(fù)雜性反映了軟件的可理解性、模塊化、簡單性等屬性。2.軟件復(fù)雜性度量的原則(1)軟件的復(fù)雜性與其規(guī)模的關(guān)系不是線性的;(2)數(shù)據(jù)結(jié)構(gòu)復(fù)雜的程序較復(fù)雜;(3)控制結(jié)構(gòu)復(fù)雜的程序較復(fù)雜;(4)轉(zhuǎn)向語句使用不當(dāng)?shù)某绦蜉^復(fù)雜;(5)循環(huán)結(jié)構(gòu)比選擇結(jié)構(gòu)復(fù)雜、選擇結(jié)構(gòu)比順序結(jié)構(gòu)復(fù)雜;(6)語句、數(shù)據(jù)、子程序模塊等出現(xiàn)的順序?qū)?fù)雜性有影響;(7)非局部變量較多的程序較復(fù)雜;(8)參數(shù)按地址調(diào)用(Callbyreference)比按值調(diào)用(Callbyvalue)復(fù)雜;(9)函數(shù)副作用比顯式參數(shù)傳遞難理解;(10)作用不同的變量同名時(shí)較難理解;(11)模塊、過程間聯(lián)系密切的程序較復(fù)雜;(12)程序嵌套層數(shù)越多越復(fù)雜。以上這些基本原則是指導(dǎo)我們進(jìn)一步研究定量度量軟件復(fù)雜性的基礎(chǔ)。7.4.2控制結(jié)構(gòu)的復(fù)雜性度量

McCabe度量模型:1976年,McCabe提出了基于程序拓?fù)浣Y(jié)構(gòu)的軟件復(fù)雜性度量模型。該方法是把程序流程圖轉(zhuǎn)化為程序圖:即把程序看成是有一個(gè)入口結(jié)點(diǎn)和一個(gè)出口結(jié)點(diǎn)的有向圖,圖中每個(gè)結(jié)點(diǎn)對(duì)應(yīng)一個(gè)語句、一個(gè)簡單判斷或一個(gè)順序流程的代碼塊,原來程序流程圖中的箭頭變成連接各結(jié)點(diǎn)的有向?。ɑ蚍Q為邊)。一般地,可以假設(shè)從程序圖中的開始結(jié)點(diǎn)可以到達(dá)圖中的任一結(jié)點(diǎn),而從圖中的任一結(jié)點(diǎn)都可以到達(dá)出口結(jié)點(diǎn)。程序圖又稱為程序控制結(jié)構(gòu)圖或程序流圖,如圖7.2所示。McCabe給出了程序控制結(jié)構(gòu)圖G的巡回秩數(shù)V(G)作為程序控制結(jié)構(gòu)復(fù)雜性的度量,其度量模型為:

V(G)=e–n+2其中:e——程序圖G中邊的總數(shù);n——程序圖中結(jié)點(diǎn)的總數(shù)。V(G)又稱為圖G的環(huán)形復(fù)雜度。7.4.3文本復(fù)雜性度量

在20世紀(jì)70年代初,Halstead給出了稱為文本復(fù)雜性度量的模型也叫Halstead度量模型。它是根據(jù)統(tǒng)計(jì)程序中的操作符和操作數(shù)的個(gè)數(shù)來度量程序的復(fù)雜程度。程序可以看成是由操作符和操作數(shù)組成的符號(hào)序列。操作符是指程序中出現(xiàn)的語法符號(hào),如+、–、if-then-else、while等。操作數(shù)是操作對(duì)象,如程序中定義或使用的變量、常量、數(shù)組、指針等。7.5軟件可靠性度量

計(jì)算機(jī)程序的可靠性無疑是軟件整體質(zhì)量的一個(gè)重要因素。如果程序在執(zhí)行時(shí)總是頻繁地、重復(fù)地失敗,那么其他軟件質(zhì)量因素是否可以接受也就無從談起。軟件可靠性可以通過對(duì)歷史數(shù)據(jù)和開發(fā)數(shù)據(jù)來測量、標(biāo)示和估算出來。7.5.l軟件可靠性的概念1.軟件可靠性一些軟件投入使用后會(huì)逐漸暴露出一定數(shù)量的錯(cuò)誤。當(dāng)某些操作或輸入數(shù)據(jù)導(dǎo)致遇到這些錯(cuò)誤時(shí),就會(huì)使程序失效,從而出現(xiàn)軟件故障。軟件可靠性定義為在某個(gè)給定時(shí)間間隔內(nèi),程序按照規(guī)格說明成功運(yùn)行的概率。7.5.2軟件的有效性軟件的有效性函數(shù)A(t)定義為軟件系統(tǒng)在時(shí)刻t按照規(guī)格說明成功運(yùn)行的概率??煽啃耘c有效性之間的差別是,可靠性強(qiáng)調(diào)軟件系統(tǒng)在0~t這段時(shí)間間隔內(nèi)都有效,而有效性強(qiáng)調(diào)軟件系統(tǒng)在時(shí)刻t這一時(shí)間點(diǎn)有效。7.6軟件開發(fā)過程的管理為達(dá)到軟件工程的目標(biāo),必須對(duì)軟件開發(fā)項(xiàng)目的工作范圍、所需的工作量和成本、必需的人力和軟硬件資源、可能遇到風(fēng)險(xiǎn)、進(jìn)度的安排、待實(shí)現(xiàn)的任務(wù)、經(jīng)歷的里程碑等進(jìn)行管理。軟件開發(fā)過程的管理應(yīng)在所有技術(shù)工作開始之前啟動(dòng),直至軟件工程過程的結(jié)束。軟件開發(fā)項(xiàng)目管理過程主要包括以下幾個(gè)方面:1.啟動(dòng)一個(gè)軟件項(xiàng)目2.成本估算3.風(fēng)險(xiǎn)分析4.進(jìn)度安排5.追蹤和控制7.6.1風(fēng)險(xiǎn)分析軟件開發(fā)中的風(fēng)險(xiǎn)是指軟件開發(fā)過程中及軟件產(chǎn)品本身可能造成的傷害或損失。風(fēng)險(xiǎn)關(guān)注未來的事情,這意味著,風(fēng)險(xiǎn)涉及選擇及選擇本身包含的不確定性,軟件開發(fā)過程及軟件產(chǎn)品都要面臨各種決策的選擇。風(fēng)險(xiǎn)是介于確定性和不確定性之間的狀態(tài),是處于無知和完整知識(shí)之間的狀態(tài)。另一方面,風(fēng)險(xiǎn)將涉及思想、觀念、行為、地點(diǎn)等因素的改變。1.風(fēng)險(xiǎn)的特點(diǎn):(1)具有不確定性,某項(xiàng)風(fēng)險(xiǎn)可能發(fā)生也可能不發(fā)生;(2)一旦某項(xiàng)風(fēng)險(xiǎn)變成了現(xiàn)實(shí),就必然會(huì)給項(xiàng)目帶來不良的影響和損失,甚至災(zāi)難性后果。風(fēng)險(xiǎn)分析有四個(gè)主要活動(dòng),分別為有風(fēng)險(xiǎn)標(biāo)識(shí)、風(fēng)險(xiǎn)估算、風(fēng)險(xiǎn)評(píng)價(jià)和風(fēng)險(xiǎn)駕馭和監(jiān)控。2.風(fēng)險(xiǎn)標(biāo)識(shí)風(fēng)險(xiǎn)按影響的范圍,可分為三類:(1)項(xiàng)目風(fēng)險(xiǎn)是指項(xiàng)目在預(yù)算、進(jìn)度、人力等資源、客戶和需求等方面可能存在的問題。這些問題一旦發(fā)生將對(duì)軟件開發(fā)項(xiàng)目產(chǎn)生不利影響。(2)技術(shù)風(fēng)險(xiǎn)是指在需求、設(shè)計(jì)、實(shí)現(xiàn)、接口、驗(yàn)證和維護(hù)等方面的潛在問題。如果技術(shù)風(fēng)險(xiǎn)發(fā)生了,將直接威脅軟件產(chǎn)品的質(zhì)量和交付日期。(3)商業(yè)風(fēng)險(xiǎn)是指開發(fā)一個(gè)沒人需要的優(yōu)質(zhì)軟件產(chǎn)品、開發(fā)一個(gè)銷售部門不知道如何銷售的軟件產(chǎn)品、或開發(fā)一個(gè)不再符合整體商業(yè)策略的產(chǎn)品等等。3.風(fēng)險(xiǎn)估算——風(fēng)險(xiǎn)預(yù)測軟件項(xiàng)目管理人員主要從影響風(fēng)險(xiǎn)的因素和風(fēng)險(xiǎn)發(fā)生后帶來的損失來度量風(fēng)險(xiǎn)。要對(duì)風(fēng)險(xiǎn)進(jìn)行估算,首先應(yīng)建立風(fēng)險(xiǎn)度量指標(biāo)體系、指明風(fēng)險(xiǎn)帶來的影響和損失,確定影響風(fēng)險(xiǎn)的因素,估計(jì)風(fēng)險(xiǎn)出現(xiàn)的可能性或概率,即進(jìn)行定量的估算。4.風(fēng)險(xiǎn)評(píng)價(jià)常采用三元組[ri,pi,xi]來描述風(fēng)險(xiǎn)。其中ri代表第i種風(fēng)險(xiǎn),pi表示第i種風(fēng)險(xiǎn)發(fā)生的概率,xi代表該風(fēng)險(xiǎn)帶來的影響,i=1,2,…,l,表示軟件開發(fā)項(xiàng)目共有l(wèi)種風(fēng)險(xiǎn),i為風(fēng)險(xiǎn)序號(hào)。5.風(fēng)險(xiǎn)駕馭和監(jiān)控風(fēng)險(xiǎn)分析的目的是建立處理風(fēng)險(xiǎn)的策略,監(jiān)控、駕馭風(fēng)險(xiǎn)。駕馭風(fēng)險(xiǎn)是利用原型化、軟件自動(dòng)化、可靠性工程學(xué)等技術(shù)和軟件項(xiàng)目管理方法設(shè)法避開或轉(zhuǎn)移風(fēng)險(xiǎn)。描述風(fēng)險(xiǎn)的三元組[ri,pi,xi]是駕馭風(fēng)險(xiǎn)的基礎(chǔ)。7.6.2進(jìn)度安排進(jìn)度安排可能是如下兩種方式之一:(1)軟件產(chǎn)品最終交付日期已經(jīng)確定,開發(fā)方只能根據(jù)最終交付日期安排進(jìn)度;(2)最后交付日期主要由軟件開發(fā)方來確定。圖7.3軟件開發(fā)各個(gè)階段工作量分布常用的項(xiàng)目進(jìn)度1.甘特圖(Ganttchart)中,每一任務(wù)完成的標(biāo)準(zhǔn),不是以能否繼續(xù)下一階段任務(wù)為標(biāo)準(zhǔn),而是必須交付應(yīng)交付的文檔與通過評(píng)審為標(biāo)準(zhǔn)。甘特圖形象地描繪了任務(wù)的分解,及每個(gè)作業(yè)的開始和結(jié)束時(shí)間,優(yōu)點(diǎn)是直觀簡明、容易掌握和繪制,但有三個(gè)缺點(diǎn):(1)不能顯示地描繪各項(xiàng)作業(yè)間的依賴關(guān)系;(2)進(jìn)度的關(guān)鍵部分不明確,難以判斷哪些部分是主攻和主控的對(duì)象;(3)計(jì)劃中有潛力的部分及潛力的大小不明確,往往造成潛力的浪費(fèi)。使用Gantt圖描述軟件開發(fā)進(jìn)度

2.軟件項(xiàng)目的進(jìn)度安排的另外兩種比較常用的方法是程序評(píng)估與審查技術(shù)(PERT,ProgramEvaluationandReviewTechnique)和關(guān)鍵路徑法(CPM,CriticalPathMethod),這兩種方法都生成描述項(xiàng)目進(jìn)展?fàn)顟B(tài)的工程網(wǎng)絡(luò)圖,PERT圖如圖7.5所示。圖7.5PERT圖圖7.6關(guān)鍵路徑網(wǎng)絡(luò)圖7.6.3軟件質(zhì)量保證1.軟件質(zhì)量保證活動(dòng)的內(nèi)容為了開發(fā)出高質(zhì)量的軟件,達(dá)到軟件工程的目標(biāo),必須有計(jì)劃地、系統(tǒng)地進(jìn)行軟件質(zhì)量保證(SQA,SoftwareQualityAssurance)活動(dòng)。2.軟件工程的正式技術(shù)評(píng)審(1)正式技術(shù)評(píng)審是保證軟件質(zhì)量的重要措施。(2)正式的技術(shù)評(píng)審是降低軟件成本的重要措施。7.6.4人員的組織與分工

1.組織原則建立一個(gè)好的軟件項(xiàng)目組織是保證軟件開發(fā)能夠順利進(jìn)行的必要條件之一。2.組織結(jié)構(gòu)常用的3種模式:(1)按課題劃分的模式(ProjectFormat)(2)按職能劃分的模式(FunctionalFormat)(3)矩陣模式(MatrixFormat)3.程序設(shè)計(jì)小組的組織形式程序設(shè)計(jì)小組的組織和小組內(nèi)部人員的組織形式對(duì)生產(chǎn)率都會(huì)產(chǎn)生影響。常采用的組織形式有主程序員制小組、民主制小組、層次式小組3種。4.人員配備實(shí)踐表明,軟件開發(fā)各個(gè)階段所需要的技術(shù)人員的類型、層次和數(shù)量是不同的。在軟件項(xiàng)目的計(jì)劃和分析階段,只需要少數(shù)人,主要是系統(tǒng)分析員、從事軟件系統(tǒng)論證和概要設(shè)計(jì)的軟件高級(jí)工程師和項(xiàng)目高級(jí)管理人員,人數(shù)雖不多,但都是高層次人員。概要設(shè)計(jì)階段要增加幾個(gè)高級(jí)程序員。詳細(xì)設(shè)計(jì)階段要增加軟件工程師和程序員。7.7軟件過程能力評(píng)估軟件過程能力描述了一個(gè)開發(fā)組織開發(fā)軟件開發(fā)高質(zhì)量軟件產(chǎn)品的能力。現(xiàn)行的國際標(biāo)準(zhǔn)主要有兩個(gè):ISO9000.3和CMM。ISO9000.3是ISO9000質(zhì)量體系認(rèn)證中關(guān)于計(jì)算機(jī)軟件質(zhì)量管理和質(zhì)量保證標(biāo)準(zhǔn)部分。CMM(能力成熟度模型)是美國卡納基梅隆大學(xué)軟件工程研究所(CMU/SEI)于1987年提出的評(píng)估和指導(dǎo)軟件研發(fā)項(xiàng)目管理的一系列方法,用5個(gè)不斷進(jìn)化的層次來描述軟件過程能力?,F(xiàn)在CMM是2.0版本。ISO9000和CMM的共同點(diǎn)是二者都強(qiáng)調(diào)了軟件產(chǎn)品的質(zhì)量。所不同的是,ISO9000強(qiáng)調(diào)的是衡量的準(zhǔn)則,但沒有告訴軟件開發(fā)人員如何達(dá)到好的目標(biāo),如何避免差錯(cuò)。CMM則提供了一整套完善的軟件研發(fā)項(xiàng)目管理的方法。它可告訴軟件開發(fā)組織,如果要在原有的水平上提高一個(gè)等級(jí),應(yīng)該關(guān)注哪些問題,而這正是改進(jìn)軟件過程的工作。7.8項(xiàng)目管理計(jì)劃的組成軟件項(xiàng)目計(jì)劃(SoftwareProjectPlanning)是一個(gè)軟件項(xiàng)目進(jìn)入系統(tǒng)實(shí)施的啟動(dòng)階段,主要進(jìn)行的工作包括:確定詳細(xì)的項(xiàng)目實(shí)施范圍、定義遞交的工作成果、評(píng)估實(shí)施過程中主要的風(fēng)險(xiǎn)、制定項(xiàng)目實(shí)施的時(shí)間計(jì)劃、成本和預(yù)算計(jì)劃、人力資源計(jì)劃等。7.8.1項(xiàng)目計(jì)劃的內(nèi)容軟件項(xiàng)目計(jì)劃通常包括3個(gè)方面的內(nèi)容,內(nèi)容如下:1.范圍。對(duì)該軟件項(xiàng)目的綜合描述,定義起所要做的工作以及性能限制,它包括:(1)項(xiàng)目目標(biāo)。(2)主要功能。(3)性能限制。(4)系統(tǒng)接口。(5)特殊要求。(6)開發(fā)概述。2.資源。資源計(jì)劃就是決定在項(xiàng)目中的每一項(xiàng)工作中用什么樣的資源(人、材料、設(shè)備、信息、資金等等),在各個(gè)階段使用多少資源。項(xiàng)目費(fèi)用計(jì)劃包括資源計(jì)劃、費(fèi)用估算、費(fèi)用預(yù)算。(1)人員資源。(2)硬件資源。(3)軟件資源。(4)其他。3.進(jìn)度安排。進(jìn)度安排的好壞往往會(huì)影響整個(gè)項(xiàng)目的按期完成,因此這一環(huán)節(jié)是十分重要的。制定軟件進(jìn)度與其他工程沒有很大的區(qū)別,其方法主要有:(1)工程網(wǎng)絡(luò)圖。(2)Gantt圖。(3)任務(wù)資源表。(4)成本估算。(5)培訓(xùn)計(jì)劃。7.8.2項(xiàng)目計(jì)劃的制定項(xiàng)目計(jì)劃詳細(xì)說明了所需軟件工作及如何實(shí)現(xiàn)。它定義了每一個(gè)主要任務(wù),并估算其所需時(shí)間和資源,同時(shí)為管理層的評(píng)估和控制提供了一個(gè)框架。項(xiàng)目計(jì)劃也提供了一種很有效的學(xué)習(xí)途徑。如果能合理建檔,它便是一個(gè)與實(shí)際運(yùn)行效能比較的基準(zhǔn)。這種比較可以使計(jì)劃者看到他們的估算誤差,從而提高其估算精確度。1.制訂軟件項(xiàng)目計(jì)劃的方法與策略(1)注重項(xiàng)目計(jì)劃的層次性(2)重視與客戶的溝通(3)繁簡得當(dāng)(4)制訂的項(xiàng)目計(jì)劃要現(xiàn)實(shí)2.運(yùn)用過程化的思想指導(dǎo)開發(fā)軟件的需求管理、軟件項(xiàng)目計(jì)劃、項(xiàng)目跟蹤和監(jiān)控、軟件轉(zhuǎn)包合同管理、軟件質(zhì)量保證、軟件配置管理就構(gòu)成了軟件項(xiàng)目的過程管理內(nèi)容。通常需要根據(jù)項(xiàng)目的進(jìn)展情況對(duì)項(xiàng)目計(jì)劃進(jìn)行修改,以便應(yīng)付需求和承諾的變更、不夠準(zhǔn)確的估計(jì)、糾正措施和過程更改等。在策劃和重新策劃中涉及的活動(dòng),都包含在這個(gè)過程方面里。3.利用成熟的項(xiàng)目管理工具很多軟件產(chǎn)品都提供項(xiàng)目管理的功能,如MicrosoftProject、Visio等,它們是都可以用于項(xiàng)目管理。它們自帶了一個(gè)叫做“軟件”的模板,可以用它來生成大體的框架,再作細(xì)節(jié)方面的改動(dòng),也可以自己制作一個(gè)符合自己公司軟件項(xiàng)目運(yùn)作流程的模板。4.軟件項(xiàng)目計(jì)劃編制方針軟件項(xiàng)目計(jì)劃編制的目的

溫馨提示

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

評(píng)論

0/150

提交評(píng)論