軟件項(xiàng)目管理的認(rèn)識_第1頁
軟件項(xiàng)目管理的認(rèn)識_第2頁
軟件項(xiàng)目管理的認(rèn)識_第3頁
軟件項(xiàng)目管理的認(rèn)識_第4頁
軟件項(xiàng)目管理的認(rèn)識_第5頁
已閱讀5頁,還剩254頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 軟件項(xiàng)目管理軟件項(xiàng)目管理的背景軟件項(xiàng)目管理的概念、原則和技術(shù)項(xiàng)目管理計(jì)劃、組織、監(jiān)管和控制軟件開發(fā)過程的度量和定量分析軟件過程及軟件成熟度模型CMM軟件項(xiàng)目管理管理的背景軟件產(chǎn)品是邏輯的,其開發(fā)是多人小組集體的智力勞動(dòng)。其過程具有長期性和涉及活動(dòng)復(fù)雜;大量的技術(shù)被使用。參與人員要求協(xié)同工作。重要的是人之間的智力差異巨大。管理象在其它工程項(xiàng)目中一樣十分重要,必須對成本、人員、進(jìn)度、質(zhì)量、風(fēng)險(xiǎn)等進(jìn)行分析和管理。項(xiàng)目管理貫穿于整個(gè)軟件生存期。軟件很多屬性無法直接度量為軟件定量分析和項(xiàng)目管理增加困難。第二章 軟件項(xiàng)目管理軟件項(xiàng)目管理目的 為了使軟件項(xiàng)目能夠在預(yù)定成本、進(jìn)度、質(zhì)量的前提下順利完成,必須

2、對軟件工程項(xiàng)目進(jìn)行計(jì)劃、組織、監(jiān)控和管理 。 第二章 軟件項(xiàng)目管理 軟件項(xiàng)目管理 任務(wù)制定軟件項(xiàng)目的實(shí)施計(jì)劃和方案;對人員進(jìn)行組織和分工;按照計(jì)劃進(jìn)度,以及成本管理、風(fēng)險(xiǎn)管理、質(zhì)量管理的要求進(jìn)行軟件開發(fā),完成軟件項(xiàng)目的各項(xiàng)要求和任務(wù)。 第二章 軟件項(xiàng)目管理軟件項(xiàng)目管理內(nèi)容軟件度量軟件項(xiàng)目估算軟件質(zhì)量度量軟件復(fù)雜性度量軟件可靠性度量軟件開發(fā)過程的管理軟件項(xiàng)目管理中的CASE工具第二章 軟件項(xiàng)目管理2.1 軟件度量軟件度量的意義軟件度量的概念軟件規(guī)模度量軟件功能度量第二章 軟件項(xiàng)目管理2.1.1 度量、測量和估算 (1/3)度量 (metrics),是有效管理的前提,無法估算其成本、時(shí)間、工作量的

3、項(xiàng)目則無法進(jìn)行有效管理。度量具有數(shù)字特征,軟件工程范圍的度量是軟件開發(fā)過程、軟件資源或軟件產(chǎn)品簡單屬性的定量描述。如,程序規(guī)模、操作符個(gè)數(shù)、程序中錯(cuò)誤的個(gè)數(shù)等。2.1軟件度量 度量、測量和估算 (2/3)測量 (measure)對軟件開發(fā)過程、產(chǎn)品和資源進(jìn)行實(shí)時(shí)和事后的定量描述,涉及測量的要素、方法、過程、工具和數(shù)值結(jié)果。直接測量和間接測量 直接測量用于不依賴于其它屬性的簡單屬性; 間接測量用于依賴于若干其它屬性的要素、準(zhǔn)則和屬性。2.1軟件度量 度量、測量和估算 (3/3)估算 (estimation)對軟件產(chǎn)品、過程、資源進(jìn)行預(yù)測估算可以采用經(jīng)驗(yàn)公式、或參考?xì)v史資料估算用于事前簽訂合同、立

4、項(xiàng)、制定工作計(jì)劃等2.1軟件度量 度量、測量和估算 軟件具有外部屬性和內(nèi)部屬性外部屬性 軟件產(chǎn)品、過程、資源與環(huán)境的關(guān)系,如,成本、效益、勞動(dòng)生產(chǎn)率、可靠性、可維護(hù)性內(nèi)部屬性 軟件產(chǎn)品、過程、資源、環(huán)境自身的屬性,如,產(chǎn)品結(jié)構(gòu)、模塊化程度、復(fù)雜性、程序長度等。2.1軟件度量 度量、測量和估算用戶和管理者關(guān)心外部屬性,但在開發(fā)過程中無法直接管理和控制。外部屬性往往和人的智力因素關(guān)系密切,而人的智力差異巨大。由于外部屬性是由內(nèi)部屬性決定的,因此必須建立外部屬性與內(nèi)部屬性的關(guān)系。通過內(nèi)部屬性的度量去度量外部屬性。2.1軟件度量 度量、測量和估算產(chǎn)品的內(nèi)部屬性程序代碼長度 、 程序功能 、模塊化、重用

5、性、控制流 、數(shù)據(jù)流、模塊耦合度與內(nèi)聚度 產(chǎn)品的外部屬性程序的可靠性、可用性、可維護(hù)性、件的可理解性、有效性、可移植性 2.1軟件度量 度量、測量和估算過程的內(nèi)部屬性 工作量 計(jì)劃和進(jìn)度 一段時(shí)間內(nèi)某類事件發(fā)生的次數(shù)過程的外部屬性 成本 可控制性 可觀察性 穩(wěn)定性2.1軟件度量 度量、測量和估算資源的內(nèi)部屬性 人 軟硬件環(huán)境 方法 經(jīng)驗(yàn)資源的外部屬性 成本 時(shí)間2.1軟件度量2.1.2 規(guī)模度量是一種直接度量方法。代碼行數(shù) LOC或KLOC生產(chǎn)率 Pl=L/E 其中 L 軟件項(xiàng)目代碼行數(shù) E 軟件項(xiàng)目工作量(人月 PM) Pl 軟件項(xiàng)目生產(chǎn)率(LOC/PM)2.1軟件度量 規(guī)模度量代碼出錯(cuò)率

6、EQRl=Ne/L 其中 Ne 軟件項(xiàng)目的代碼錯(cuò)誤數(shù) EQRl 每千行代碼的錯(cuò)誤數(shù)2.1軟件度量例 軟件項(xiàng)目記錄項(xiàng)目工作量 PM成本萬美元代碼行kLOC文檔頁數(shù) Pd錯(cuò)誤數(shù) Ne人數(shù) MAaa-012416.812.1365293Ccc-046244.027.21224865Fff-034331.420.210506462.1軟件度量 規(guī)模度量每行代碼平均成本 Cl=S/L 其中 S 軟件項(xiàng)目總開銷(元美元) Cl軟件項(xiàng)目每行代碼的平均成本文檔與代碼比 Dl=Pd/L 其中 Pd 軟件項(xiàng)目文檔頁數(shù) Dl 每千行代碼的平均文檔數(shù)2.1軟件度量 規(guī)模度量用軟件代碼行數(shù)估算軟件規(guī)模簡單易行。缺點(diǎn)代碼

7、行數(shù)的估算依賴于程序設(shè)計(jì)語言的功能和表達(dá)能力;采用代碼行估算方法會對設(shè)計(jì)精巧的軟件項(xiàng)目產(chǎn)生不利的影響;在軟件項(xiàng)目開發(fā)前或開發(fā)初期估算它的代碼行數(shù)十分困難;代碼行估算只適用于過程式程序設(shè)計(jì)語言,對非過程式的程序設(shè)計(jì)語言不太適用等等。2.1軟件度量涉及多因素的間接度量方法,在歐共體使用較多。 FP=CT*0.65+0.01*Fi (2-5) 其中:CT按表2.3計(jì)算 Fi 是復(fù)雜性調(diào)節(jié)值 Fi 取值 0,1,.,5 當(dāng) Fi = 0 時(shí),表示 Fi 不起作用 Fi = 5 時(shí),表示 Fi 作用最大2.1.3 面向功能的度量2.1軟件度量 表2.3 功能點(diǎn)度量測量參數(shù) 值 權(quán)值用戶輸入數(shù) *4 用戶

8、輸出數(shù) *5 用戶查詢數(shù) *4 文件數(shù) *7 外部界面數(shù) *7 CT 2.1軟件度量 面向功能的度量 表2.3中的五個(gè)信息量按下列方式取值用戶輸入數(shù) 用戶為軟件提供的輸入?yún)?shù)個(gè)數(shù)用戶輸出數(shù) 軟件系統(tǒng)為用戶提供的輸出參數(shù)個(gè)數(shù)用戶查詢數(shù) 一個(gè)聯(lián)機(jī)輸入確定一次查詢,軟件以 聯(lián)機(jī)輸出的形式,實(shí)時(shí)地產(chǎn)生一個(gè)響應(yīng)文件數(shù) 統(tǒng)計(jì)邏輯的主文件個(gè)數(shù)外部界面數(shù) 統(tǒng)計(jì)所有機(jī)器可讀的界面,利用這些 界面可以將信息從一個(gè)系統(tǒng)傳送到另一個(gè) 系統(tǒng)2.1軟件度量 面向功能的度量用功能點(diǎn)定義的概念生產(chǎn)率 Pf=FP/E (2-6) 其中 Pf表示每人月完成的功能點(diǎn)數(shù)2.1軟件度量 面向功能的度量軟件規(guī)模的功能點(diǎn)度量沒有直接涉及軟

9、件系統(tǒng)本身的算法復(fù)雜性。1986年Jones把軟件項(xiàng)目中的算法復(fù)雜性因素引入到功能點(diǎn)計(jì)算中來,為了避免混淆,我們把Albrecht定義的功能點(diǎn)稱為簡單功能點(diǎn),用FPs表示,把Jones推廣的功能點(diǎn)稱為功能點(diǎn),用FP表示。推廣的功能點(diǎn)包括計(jì)算機(jī)程序中用于各類問題求解的算法因素,如求解線性代數(shù)方程組、遍歷二叉樹的各個(gè)結(jié)點(diǎn)、處理中斷等等。功能點(diǎn)計(jì)算仍用公式(25),其中CT按表2.5計(jì)算。2.1軟件度量 表2.5 功能點(diǎn)度量 測量參數(shù) 值 權(quán)值用戶輸入數(shù) *4 用戶輸出數(shù) *5 用戶查詢數(shù) *4 文件數(shù) *7 外部界面數(shù) *7 算法 *3 CT 2.1軟件度量 面向功能的度量對一般的工程計(jì)算或事務(wù)處

10、理軟件,用表2.3和表2.5兩種方法計(jì)算出來的FP值應(yīng)該基本上相同對于比較復(fù)雜的軟件系統(tǒng) FP比FPs的值高20%35%2.1軟件度量 面向功能的度量優(yōu)點(diǎn)與程序設(shè)計(jì)語言無關(guān),它不僅適用于過程式語言,也適用于非過程式的語言;軟件項(xiàng)目開發(fā)初期就能基本上確定系統(tǒng)的輸入、輸出等參數(shù),功能點(diǎn)度量能用于軟件項(xiàng)目的開發(fā)初期。2.1軟件度量面向功能的度量缺點(diǎn)它涉及到的主觀因素比較多,如各種權(quán)函數(shù)的取值;信息領(lǐng)域中的某些數(shù)據(jù)有時(shí)不容易采集;FP的值沒有直觀的物理意義。2.1軟件度量2.1.4 代碼行度量與功能點(diǎn)度量的比較代碼行度量依賴于程序設(shè)計(jì)語言,而功能點(diǎn)度量不依賴于程序設(shè)計(jì)語言。Albrecht和Jones

11、等人對若干軟件采用事后處理的方式分別統(tǒng)計(jì)出不同程序設(shè)計(jì)語言每個(gè)功能點(diǎn)與代碼行數(shù)的關(guān)系,用LOC/FP的平均值表示。表2.6表明,一行Ada語言代碼的“功能”平均是一行FORTRAN語言代碼“功能”的1.4倍。一行四代語言代碼的“功能”平均是一行傳統(tǒng)程序設(shè)計(jì)語言代碼“功能”的3至5倍。2.1軟件度量 表2.6 各種語言的LOC/FP(平均值)程序設(shè)計(jì)語言 LOC/FP(平均值)匯編語言 300COBOL 100FORTRAN 100Pascal 90Ada 70面向?qū)ο蟮恼Z言 30四代語言(4GL) 20代碼生成器 152.1軟件度量2.2 軟件項(xiàng)目估算當(dāng)前在基于計(jì)算機(jī)的系統(tǒng)中,軟件開發(fā)成本占總

12、成本的比例很大。在軟件項(xiàng)目立項(xiàng)和軟件項(xiàng)目管理工作中,客戶和項(xiàng)目管理人員都十分重視軟件項(xiàng)目的成本估算。軟件是邏輯產(chǎn)品,成本估算涉及人、技術(shù)、環(huán)境、政策等多種因素,在項(xiàng)目完成之前,很難精確地估算出項(xiàng)目的開銷。 第二章 軟件項(xiàng)目管理軟件項(xiàng)目估算常用的估算方法參照已經(jīng)完成的類似項(xiàng)目估算待開發(fā)項(xiàng)目的成本和工作量。將大的項(xiàng)目分解成若干子項(xiàng)目,在估算出每個(gè)子項(xiàng)目成本和工作量之后,再估算整個(gè)項(xiàng)目。將軟件項(xiàng)目按軟件生存周期分解,分別估算出軟件項(xiàng)目在軟件開發(fā)各個(gè)階段的工作量和成本,然后再把這些工作量和成本匯總估算整個(gè)項(xiàng)目。根據(jù)實(shí)驗(yàn)或歷史數(shù)據(jù)給出軟件項(xiàng)目工作量或成本的經(jīng)驗(yàn)估算公式。2.2軟件項(xiàng)目估算2.2.1代碼行

13、、功能點(diǎn)和工作量估算軟件項(xiàng)目的規(guī)模是影響軟件項(xiàng)目成本和工作量的重要因素。軟件項(xiàng)目代碼行和功能點(diǎn)估算是成本和工作量估算的基礎(chǔ)。采用上述四種估算方法可以估算出LOC或FP的樂觀值a,悲觀值b和一般值m,然后根據(jù)下列加權(quán)公式計(jì)算出期望值 e=(a4mb)6 (2-10) 希望LOC或FP的值落在區(qū)間a,b之外的概率極小 2.2軟件項(xiàng)目估算代碼行、功能點(diǎn)和工作量估算當(dāng)LOC或FP的期望值估算出來之后,根據(jù)以前軟件項(xiàng)目開發(fā)的平均生產(chǎn)率LOC/PM或FP/PM就可以計(jì)算出工作量。如,軟件項(xiàng)目的規(guī)模估算為310FP,以前完成的軟件項(xiàng)目的生產(chǎn)率為5.5FP/PM,于是工作量估算為E=310/5.5=56PM。

14、如果當(dāng)前估算的軟件子項(xiàng)目比以前完成的項(xiàng)目復(fù)雜,那么所用的生產(chǎn)率值可以低于平均生產(chǎn)率,反之也可以高于平均生產(chǎn)率。2.2軟件項(xiàng)目估算例 2.2 估算計(jì)算機(jī)輔助設(shè)計(jì)軟件項(xiàng)目將CAD項(xiàng)目按功能分解為七個(gè)子項(xiàng)目用戶界面和控制;二維幾何分析;三維幾何分析;數(shù)據(jù)庫管理;計(jì)算機(jī)圖形顯示;外設(shè)控制;設(shè)計(jì)分析。表2.8 給出七個(gè)子項(xiàng)目代碼行的樂觀估計(jì)、悲觀計(jì)和一般估計(jì)值,然后計(jì)算出加權(quán)平均值。 2.2軟件項(xiàng)目估算估算計(jì)算機(jī)輔助設(shè)計(jì)軟件項(xiàng)目 分析七個(gè)子項(xiàng)目的規(guī)模復(fù)雜性和難度,參照以前開發(fā)類似項(xiàng)目的經(jīng)驗(yàn)給出開發(fā)每行代碼的平均成本,每月開發(fā)的代碼行數(shù)。 用這兩組數(shù)據(jù)計(jì)算出七個(gè)子項(xiàng)目的開發(fā)成本和工作量。 最后匯總的CAD

15、軟件開發(fā)項(xiàng)目 規(guī)模為 33360 LOC 成本為 656680 $ 工作量為 144.5 PM。2.2軟件項(xiàng)目估算 估算計(jì)算機(jī)輔助設(shè)計(jì)軟件項(xiàng)目再用第二種方法和第三種方法分別估算軟件開發(fā)子項(xiàng)目在軟件工程各個(gè)階段的工作量,估算結(jié)果列入表2.8。兩種方法估算的工作量分別為144.5PM和152.5PM,相差5%左右。估算的成本分別為656680$和708075$,相差7%左右。 兩種方法估算的工作量和成本基本一致。 2.2軟件項(xiàng)目估算表2.8 代碼行和成本、工作量估算 功能 樂觀 一般 悲觀 加權(quán) $ LOC 成本 工作量 LOC LOC LOC 平均 /LOC /PM (人月)用戶界面控制1790

16、 2400 2650 2340 14 315 32760 7.4 二維幾何分析4080 5200 7400 5380 20 220 107600 24.4三維幾何分析4600 6900 8600 6800 20 220 136000 30.9數(shù)據(jù)庫管理 2900 3400 3600 3350 18 240 60300 13.9圖形顯示 3900 4900 6200 4950 22 200 108900 24.7外設(shè)控制 1990 2100 2450 2140 28 140 59920 15.2設(shè)計(jì)分析 6600 8500 9800 8400 18 300 151200 28.0總計(jì) 33360

17、 656680 144.52.2軟件項(xiàng)目估算 表2.8 工作量估算 功能 需求分析 設(shè)計(jì) 編碼 測試 總計(jì)用戶界面控制 1.0 2.0 0.5 3.5 7二維幾何分析 2.0 10.0 4.5 9.5 26三維幾何分析 2.5 12.0 6.0 11.0 31.5數(shù)據(jù)庫管理 2.0 6.0 3.0 4.0 15計(jì)算機(jī)圖形顯示 1.5 11.0 4.0 10.5 27外設(shè)控制 1.5 6.0 3.5 5.0 16設(shè)計(jì)分析 4.0 14.0 5.0 7.0 30總計(jì)(人月) 14.5 61 26.5 50.5 152.5 每人月成本 5200 4800 4250 4500成本() 75400 29

18、2800 112625 227250 708075 2.2軟件項(xiàng)目估算2.2.2 經(jīng)驗(yàn)估算模型之一 CoCoMo模型計(jì)算機(jī)軟件的估算模型是根據(jù)以前完成項(xiàng)目的實(shí)際數(shù)據(jù)導(dǎo)出的,用于軟件項(xiàng)目的計(jì)劃階段。 模型是根據(jù)“從前的”,“局部的”數(shù)據(jù)得出的,估算模型不可能完全適用于當(dāng)前所有的軟件項(xiàng)目和全部開發(fā)環(huán)境。這些模型的計(jì)算結(jié)果僅供參考。 兩個(gè)常用的估算模型 CoCoMo模型 Putnam模型2.2軟件項(xiàng)目估算 CoCoMo模型1981年Boehm提出“構(gòu)造性成本模型”(Constructive Cost Model),簡稱CoCoMo模型。它是在靜態(tài)、單變量模型的基礎(chǔ)上構(gòu)造出來的。 CoCoMo模型分為

19、基本、中間、詳細(xì)三個(gè)層次,分別用于軟件開發(fā)的三個(gè)不同階段。 2.2軟件項(xiàng)目估算 CoCoMo模型 基本CoCoMo模型 用于系統(tǒng)開發(fā)的初期,估算整個(gè)系統(tǒng)的工作量(包括軟件維護(hù))和軟件開發(fā)所需要的時(shí)間。 中間CoCoMo模型 用于估算各個(gè)子系統(tǒng)的工作量和開發(fā)時(shí)間。 詳細(xì)CoCoMo模型 用于估算獨(dú)立的軟部件,如子系統(tǒng)內(nèi)部的各個(gè)模塊。2.2軟件項(xiàng)目估算 1 基本CoCoMo模型靜態(tài)、單變量模型 E = aLb (2-11) D = cEd (2-12)其中:E表示工作量,單位是人月(PM)。 D表示開發(fā)時(shí)間,單位是月(M)。 L是項(xiàng)目的代碼行估計(jì)值,單位是千行代碼 a,b,c,d是常數(shù),取值如表2

20、.9所示。 Boehm把軟件劃分為組織型、半獨(dú)立型和嵌入型三類,允許不同應(yīng)用領(lǐng)域和復(fù)雜程度的軟件按照三類軟件的適用范圍選取相應(yīng)的參數(shù)a,b,c,d。2.2軟件項(xiàng)目估算 表2.9 簡單CoCoMo模型參數(shù)軟件類型 a b c d 適用范圍組織型 2.4 1.05 2.5 0.38 各類應(yīng)用程序半獨(dú)立型 3.0 1.12 2.5 0.35 各類實(shí)用程序、 編譯程序等嵌入型 3.6 1.20 2.5 0.32 實(shí)時(shí)處理、 控制程序、 操作系統(tǒng)2.2軟件項(xiàng)目估算 2 中間CoCoMo模型中間CoCoMo模型 以基本CoCoMo模型為基礎(chǔ),在工作量估計(jì)公式中乘以工作量調(diào)節(jié)因子 EAF E = aLb *

21、EAF (2-13)其中:L是軟件產(chǎn)品的目標(biāo)代碼行數(shù) a,b是常數(shù),取值如表2.10所示。2.2軟件項(xiàng)目估算中間 CoCoMo模型表2.10 中間CoCoMo模型參數(shù) 軟件類型 a b 組織型 3.2 1.05 半獨(dú)立型 3.0 1.12 嵌入型 2.8 1.202.2軟件項(xiàng)目估算 CoCoMo模型 工作量調(diào)節(jié)因子與軟件產(chǎn)品屬性、計(jì)算機(jī)屬性、人員屬性、項(xiàng)目屬性有關(guān)軟件產(chǎn)品屬性 軟件可靠性、軟件復(fù)雜性、數(shù)據(jù)庫的規(guī)模。計(jì)算機(jī)屬性 程序執(zhí)行時(shí)間、程序占用內(nèi)存的大小、軟件開發(fā)環(huán)境的變化、軟件開發(fā)環(huán)境的響應(yīng)速度。人員屬性 分析員的能力、程序員的能力、有關(guān)應(yīng)用領(lǐng)域的經(jīng)驗(yàn)、開發(fā)環(huán)境的經(jīng)驗(yàn)、程序設(shè)計(jì)語言的經(jīng)驗(yàn)

22、項(xiàng)目屬性 軟件開發(fā)方法的能力,軟件工具的質(zhì)量和數(shù)量、軟件開發(fā)的進(jìn)度要求。2.2軟件項(xiàng)目估算 CoCoMo 模型四種屬性共15個(gè)要素。每個(gè)要素調(diào)節(jié)因子 Fi, i=1,2,.,15,的值分為: 很低、低、正常、高、很高、極高,共六級。正常情況下 Fi=1。Boehm推薦的Fi值范圍 (0.70, 0.85, 1.00, 1.15, 1.30, 1.65) 當(dāng)15個(gè)Fi的值選定后,EAF的計(jì)算如下 EAFF1*F2*F15 2.2軟件項(xiàng)目估算 CoCoMo 模型 調(diào)節(jié)因子集的定義和調(diào)節(jié)因子定值是由統(tǒng)計(jì)結(jié)果和經(jīng)驗(yàn)決定的。不同的軟件開發(fā)組織,在不同的歷史時(shí)期,隨著環(huán)境的變化,這些數(shù)據(jù)可能改變。 使用中

23、間CoCoMo模型可以估算開發(fā)軟件產(chǎn)品的工作量,比較各種開發(fā)方案的工作量。2.2軟件項(xiàng)目估算 例2.3 用基本CoCoMo模型估算例2.2工作量、開發(fā)時(shí)間和項(xiàng)目開發(fā)人數(shù)在例2.2中,目標(biāo)代碼行數(shù)為 33.3 KLOCCAD軟件開發(fā)屬于中等規(guī)模、半獨(dú)立型從表2.9中查到a=3.0,b=1.12。代入公式(2-11) E = 3.0L1.12 = 3.033.31.12 = 152 PM2.2軟件項(xiàng)目估算例2.3 用基本CoCoMo模型估算例2.2 將E的估算值代入公式 (2-12) 取 C=2.5 d=0.35 D=2.5E0.35 =2.5*1520.35 =14.5 M 建議參加項(xiàng)目開發(fā)的人

24、數(shù) N=E/D=152/14.5112.2軟件項(xiàng)目估算 CoCoMo模型 例中計(jì)算出來的11人是粗略估計(jì)在軟件項(xiàng)目開發(fā)過程中,11個(gè)人不可能都有相同的能力和個(gè)性,相同的經(jīng)驗(yàn)和知識結(jié)構(gòu),并且在軟件開發(fā)的各個(gè)階段對人的要求也不同。2.2軟件項(xiàng)目估算人員和工作量之間的關(guān)系十個(gè)人年工作量的項(xiàng)目不可能由一個(gè)人干十年,但十個(gè)人干一年也無法完成任務(wù),因?yàn)槭畟€(gè)人的任務(wù)組需要交流的開銷;項(xiàng)目后期增加人員還需要增加培訓(xùn)的工作量,可能會使項(xiàng)目的交付日期一托再托;項(xiàng)目工作人員的數(shù)量和項(xiàng)目整體生產(chǎn)率之間的關(guān)系不是線性的。2.2軟件項(xiàng)目估算 CoCoMo模型 若干人共同開發(fā)一個(gè)軟件項(xiàng)目還應(yīng)該增加他們之間相互通信和交換意見

25、的額外工作量。 設(shè) N個(gè)程序員組成小組,實(shí)現(xiàn)相同規(guī)模的程序,相互通信數(shù)為 C=N(N-1)/2 每次通信和交換意見的平均工作量為 則 增加的通信開銷為 EcN(N-1)/2 (2-14)2.2軟件項(xiàng)目估算例2.4 計(jì)算一個(gè)程序的通信開銷 3人和5人開發(fā)一個(gè)程序相互通信和交換意見的關(guān)系如圖2.2所示 將N=3和N=5分別代入公式(2-14) Ec(3)3(3-1)/23 Ec(5)5(5-1)/2102.2軟件項(xiàng)目估算 CoCoMo模型 由N個(gè)程序員組成的小組共同開發(fā)一個(gè)程序總的工作量ET滿足 ET=E+Ec (2-15)程序員小組的生產(chǎn)率是 PG=LOC/(E+Ec) (2-16)程序員小組生

26、產(chǎn)率和單個(gè)程序員生產(chǎn)率的比為 Rp=E/(E+Ec) (2-17) 隨著程序員小組人數(shù)的增加EcN*2/2,程序員小組的生產(chǎn)率將會下降。 模型表明 盲目增加程序員人數(shù)會推遲軟件完成的日期2.2軟件項(xiàng)目估算 CoCoMo模型 以靜態(tài)單變量CoCoMo模型為基礎(chǔ),還可以定義估算資源R的靜態(tài)多變量模型 Rai*ei*bi 其中:ei 表示軟件第i個(gè)特性 ai, bi 是與軟件第i個(gè)特性有關(guān)的常數(shù),通常由實(shí)驗(yàn)數(shù)據(jù)確定。2.2軟件項(xiàng)目估算 2.2.3 經(jīng)驗(yàn)估算模型之二:Putnam模型 1978年,Putnam提出了大型軟件項(xiàng)目工作量(一般在30人年以上)估算模型。它是一個(gè)動(dòng)態(tài)多變量模型,適用于軟件開發(fā)

27、的各個(gè)階段,估算模型以大型軟件項(xiàng)目的實(shí)測數(shù)據(jù)為基礎(chǔ),導(dǎo)出如圖2.3所示的工作量分布曲線。該曲線與著名的Rayleigh-Norden (R-N)曲線相似,它描述了開發(fā)工作量,開發(fā)時(shí)間和軟件代碼行數(shù)之間的關(guān)系。2.2軟件項(xiàng)目估算 Putnam模型方程 L = CK E1/3 td4/3 (2-18)其中:L 表示源程序代碼行數(shù) td 表示開發(fā)時(shí)間 Ck 表示技術(shù)狀態(tài)常數(shù) E 表示工作量 (以人年記,包括維護(hù))2.2軟件項(xiàng)目估算Putnam模型2.2軟件項(xiàng)目估算 Putnam模型差的軟件開發(fā)環(huán)境 軟件開發(fā)沒有方法學(xué)的支持,缺乏對文檔的評審,采用批處理方式。一般的軟件開發(fā)環(huán)境 應(yīng)有軟件開發(fā)方法學(xué)的支

28、持,有適宜的文檔和評審,采用交互處理方式。好的軟件開發(fā)環(huán)境 應(yīng)采用CASE工具和集成化CASE環(huán)境。 CK= 2000 比較差的軟件開發(fā)環(huán)境 8000 一般的軟件開發(fā)環(huán)境 11000 比較好的軟件開發(fā)環(huán)2.2軟件項(xiàng)目估算 Putnam模型 由(2-18) 3 3 4 E L / (CK*td) (2-19)td對應(yīng)于Rayleigh-Norden曲線的最大值,表示軟件交付時(shí)工作量最大,參與軟件項(xiàng)目的人最多。當(dāng)工作量估算出來之后,利用每人年的開銷($/PY)可以估算成本。公式(2-19)表明,開發(fā)軟件項(xiàng)目的工作量與交貨時(shí)間的4次方成反比,將0.9td代替(2-19)式的td計(jì)算E發(fā)現(xiàn),提前10%

29、的時(shí)間要增加52%的工作量,降低了軟件開發(fā)生產(chǎn)率。軟件開發(fā)過程中人員與時(shí)間的折衷是一個(gè)十分重要的問題。2.2軟件項(xiàng)目估算軟件開發(fā)過程人員與時(shí)間的關(guān)系2.2軟件項(xiàng)目估算Putnam模型軟件開發(fā)項(xiàng)目的工作量隨著時(shí)間t的增長并不呈線性增長趨勢。參加軟件項(xiàng)目開發(fā)的人員數(shù)目不應(yīng)該是一成不變的。如果按照線性分布方案配備人員,即每年的人數(shù)是常數(shù)。那么起始段一部分人力是多余的,而峰值段人力又不夠,到項(xiàng)目后期再增加人力為時(shí)已晚,造成浪費(fèi)。由于人力調(diào)度的不合理,不得不延長項(xiàng)目開發(fā)時(shí)間,增加一部分額外工作量。 2.2軟件項(xiàng)目估算Putnam模型Putnam模型揭示了軟件項(xiàng)目的工作量、軟件開發(fā)時(shí)間和程序代碼長度三者之

30、間的關(guān)系它沒有反映軟件產(chǎn)品屬性,軟件項(xiàng)目屬性、軟件開發(fā)人員屬性,計(jì)算機(jī)軟硬件資源屬性等用Putnam模型進(jìn)行軟件項(xiàng)目的成本估算是十分粗糙的2.2軟件項(xiàng)目估算 2.3 軟件質(zhì)量度量1)軟件質(zhì)量定義及三層次度量模型2)軟件質(zhì)量要素3)軟件質(zhì)量要素評價(jià)準(zhǔn)則第二章 軟件項(xiàng)目管理2.3.1 軟件質(zhì)量定義及三層次度量模型軟件質(zhì)量是軟件的生命,它直接影響軟件的使用與維護(hù)。質(zhì)量低下的軟件不但影響基于計(jì)算機(jī)系統(tǒng)的工作效率,而且還可能給用戶帶來災(zāi)難性的后果。提高軟件產(chǎn)品質(zhì)量是軟件工程的首要任務(wù)。軟件開發(fā)人員、管理人員、維護(hù)人員和用戶在軟件開發(fā)、維護(hù)、使用過程中所處地位不同,對軟件質(zhì)量的理解和要求也不同。2.3軟件

31、質(zhì)量度量軟件質(zhì)量度量管理人員關(guān)心軟件開發(fā)標(biāo)準(zhǔn),在經(jīng)費(fèi)和時(shí)間允許的情況下,如何實(shí)現(xiàn)軟件需求規(guī)格說明中定義的功能維護(hù)人員重視軟件的正確性,可理解性和可修改性用戶更關(guān)心軟件的性能和可靠性等等 應(yīng)該對軟件質(zhì)量給出一個(gè)客觀的、科學(xué)的定義并盡量予以量化。這對統(tǒng)一人們對軟件產(chǎn)品質(zhì)量的認(rèn)識,在軟件產(chǎn)品開發(fā)與維護(hù)過程中評價(jià)和控制軟件產(chǎn)品質(zhì)量都是十分必要的2.3軟件質(zhì)量度量軟件質(zhì)量度量 軟件質(zhì)量 1983年 ANSI/IEEEstd729 軟件產(chǎn)品滿足規(guī)定的和隱含的與需求能力有關(guān)的全部特征和特性,包括 1.軟件產(chǎn)品品質(zhì)滿足用戶要求的程度; 2.軟件各種屬性的組合程度; 3.用戶對軟件產(chǎn)品的綜合反映程度; 4.軟件

32、在使用過程中滿足用戶要求的程度。 上述定義表明,軟件質(zhì)量依賴于軟件的內(nèi)部特性及其組合。2.3軟件質(zhì)量度量軟件質(zhì)量度量為了對軟件質(zhì)量進(jìn)行度量,必須對影響軟件質(zhì)量的要素進(jìn)行度量,并建立實(shí)用的軟件質(zhì)量度量體系或模型1968年Rubey和Hartwick提出了軟件某些屬性的度量方法1976年Boehm提出了定量評價(jià)軟件質(zhì)量的概念,給出了60個(gè)軟件質(zhì)量度量公式和軟件質(zhì)量度量的層次模型2.3軟件質(zhì)量度量軟件質(zhì)量度量1978年Walters和McCall提出了包括質(zhì)量要素(factor)、準(zhǔn)則(criteria)和度量(metric)的三層次軟件質(zhì)量度量模型G.Murine又提出了軟件質(zhì)量度量技術(shù)SQM用于

33、定量地評價(jià)軟件質(zhì)量1985年國際標(biāo)準(zhǔn)化組織(ISO)提出了軟件質(zhì)量度量(SQM)工作報(bào)告2.3軟件質(zhì)量度量 三層次軟件質(zhì)量度量模型質(zhì)量要素 (factor) 面向管理者的軟件質(zhì)量。評價(jià)準(zhǔn)則 (criteria) 面向技術(shù)、決定產(chǎn)品質(zhì)量的軟件屬性。度量(metric) 可以量化度量的軟件屬性。 2.3軟件質(zhì)量度量2.3.2 軟件質(zhì)量要素軟件質(zhì)量要素直接影響軟件開發(fā)過程各個(gè)階段的產(chǎn)品質(zhì)量由于對軟件質(zhì)量理解的不斷深化,軟件質(zhì)量要素不是一成不變的McCall等人給出的軟件質(zhì)量要素共11個(gè),分為三類。2.3軟件質(zhì)量度量 McCall的軟件質(zhì)量要素軟件的運(yùn)行特征 正確性 可靠性 有效性完整性 可用性軟件承

34、受修改的能力 可維護(hù)性 靈活性 可測試性軟件對新環(huán)境的適應(yīng)程度 可移植性 可重用性 連接性 2.3軟件質(zhì)量度量軟件的屬性(續(xù))正確性(Correctness)程序滿足規(guī)格說明及完成用戶目標(biāo)的程度。完整性(Integrity)控制未被授權(quán)人員訪問程序和數(shù)據(jù)的程度。可用性(Usability)學(xué)習(xí)使用軟件的難易程度。包括:操作軟件、為軟件準(zhǔn)備輸入數(shù)據(jù),解釋軟件輸出結(jié)果。2.3軟件質(zhì)量度量軟件的屬性(續(xù))靈活性(Flexibility) 改變一個(gè)操作程序所需的工作量??蓽y試性(Testability) 測試程序使之具有預(yù)定功能所需的工作量。連接性(Interoperability) 兩個(gè)或多個(gè)系統(tǒng)交

35、換信息并相互使用已交換信息的能力。2.3軟件質(zhì)量度量 軟件質(zhì)量要素之間的關(guān)系軟件質(zhì)量要素之間有正相關(guān),也有負(fù)相關(guān)。系統(tǒng)設(shè)計(jì)過程中應(yīng)根據(jù)具體情況對各種要素的要求進(jìn)行折衷,以便得到在總體上用戶和系統(tǒng)開發(fā)人員都滿意的質(zhì)量標(biāo)準(zhǔn)。有效性不是影響系統(tǒng)成敗的關(guān)鍵要素。實(shí)時(shí)控制系統(tǒng)的可靠性、有效性是決定系統(tǒng)成敗的關(guān)鍵要素,必須全力保證,而軟件的可移植性、可重用性就不是主要的了。通用軟件工具對可維護(hù)性、可移植性、可重用性應(yīng)該給予更多的注意2.3軟件質(zhì)量度量表2.11 質(zhì)量要素之間的關(guān)系 要 正 可 有 完 可 可 可 靈 可 可 互 素 確 靠 效 整 用 維 測 活 移 重 操 性 性 性 性 性 護(hù) 試 性

36、 植 用 作正確性可靠性 有效性 完整性 -可用性 - 可維護(hù)性 - 可測試性 - 靈活性 - - 可移植性 - 可重用性 - - - 互操作性 - - 2.3軟件質(zhì)量度量 2.3.3 軟件質(zhì)量要素評價(jià)準(zhǔn)則 直接測量軟件質(zhì)量要素十分困難,甚至是不可能的,McCall等人定義了一組比較容易度量的軟件質(zhì)量要素評價(jià)準(zhǔn)則,通過評價(jià)準(zhǔn)則間接測量軟件質(zhì)量要素。 定義評價(jià)準(zhǔn)則的關(guān)鍵是確定影響軟件質(zhì)量要素的屬性。這些屬性必須滿足 比較完整、準(zhǔn)確的描述軟件質(zhì)量要素; 比較容易量化和測量,能夠反映軟件質(zhì)量的優(yōu)劣。2.3軟件質(zhì)量度量 McCall軟件質(zhì)量要素評價(jià)準(zhǔn)則(1/6)可審查性(Auditability) 檢

37、查軟件需求、規(guī)格說明、標(biāo)準(zhǔn)、過程、指令、代碼及合同是否一致的難易程度。準(zhǔn)確性(Accuracy) 計(jì)算和控制的精度,最好表示成相對誤差的函數(shù),值越大表示精度越高。通信通用性(Communication Commonality) 使用標(biāo)準(zhǔn)接口、協(xié)議和頻帶的程度。2.3軟件質(zhì)量度量 McCall軟件質(zhì)量要素評價(jià)準(zhǔn)則(2/6)完全性(Completeness) 見1.2簡明性(Conciseness) 程序源代碼的緊湊性。一致性(Consistency) 見1.2數(shù)據(jù)通用性(Data Commonality) 在程序中使用標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu)和類型。2.3軟件質(zhì)量度量 McCall軟件質(zhì)量要素評價(jià)準(zhǔn)則(3

38、/6)容錯(cuò)性(Errortolerance) 系統(tǒng)在各種異常條件下提供繼續(xù)操作的能力執(zhí)行效率(Execution Efficiency) 程序運(yùn)行效率可擴(kuò)充性(Expandability) 能夠?qū)Y(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)和過程設(shè)計(jì)進(jìn)行擴(kuò)充的程度通用性(Generality) 程序部件潛在的應(yīng)用范圍的廣泛性2.3軟件質(zhì)量度量McCall軟件質(zhì)量要素評價(jià)準(zhǔn)則(4/6)硬件獨(dú)立性(Hardware Independence) 軟件同支持它運(yùn)行的硬件系統(tǒng)不相關(guān)的程度。檢測性(Instrumentation) 監(jiān)視程序的運(yùn)行,一旦發(fā)生錯(cuò)誤時(shí),標(biāo)識錯(cuò)誤的程度。模塊化(Modularity) 見1.2可操作性(O

39、perability) 操作一個(gè)軟件的難易程度。2.3軟件質(zhì)量度量 McCall軟件質(zhì)量要素評價(jià)準(zhǔn)則(5/6)安全性(Security) 控制或保護(hù)程序和數(shù)據(jù)不受破壞的機(jī)制,以防止程序和數(shù)據(jù)受到意外的或蓄意的存取、使用、修改、毀壞或泄密。自文檔化(Self-documentation) 源代碼提供有意義文檔的程度。簡單性(Simplicity) 理解程序的難易程度。2.3軟件質(zhì)量度量McCall軟件質(zhì)量要素評價(jià)準(zhǔn)則(6/6)軟件系統(tǒng)獨(dú)立性(Software System Independence) 程序與非標(biāo)準(zhǔn)的程序設(shè)計(jì)語言特征、操作系統(tǒng)特征、以及其他環(huán)境約束無關(guān)的程度??勺粉櫺?Traceb

40、ility) 見1.2易培訓(xùn)性(Training) 軟件支持新用戶使用該系統(tǒng)的能力。2.3軟件質(zhì)量度量 計(jì)算軟件質(zhì)量要素軟件質(zhì)量要素Fj的值可用下式計(jì)算 L FjCjkMk j=1,2,.,11. k=1其中 Mk是軟件質(zhì)量要素Fj對第k種評價(jià)準(zhǔn)則的測量值 Cjk是相應(yīng)的加權(quán)系數(shù) McCall定義的評價(jià)準(zhǔn)則多數(shù)都沒有客觀的測量方法,只能憑主觀印象為評價(jià)準(zhǔn)則定值。 McCall將評價(jià)準(zhǔn)則分為0-10級。 0級最低,10級最高。 Mk的取值是 0 ,0.1 ,0.2 , 1.02.3軟件質(zhì)量度量 表2.12 質(zhì)量要素與評價(jià)準(zhǔn)則 (1/2) 要素 關(guān)系 準(zhǔn)則正確性可靠性有效性完整性可維護(hù)可測試可移植

41、可重用互操作可用性靈活性可審查性VV準(zhǔn)確性V通信通用性V完全性V簡明性VVV一致性VVVV數(shù)據(jù)通用性V容錯(cuò)性V執(zhí)行效率V可擴(kuò)充性V通用性VVVV2.3軟件質(zhì)量度量 表2.12 質(zhì)量要素與評價(jià)準(zhǔn)則 (1/2) 要 素 關(guān) 系 準(zhǔn) 則正確性可靠性有效性完整性可維護(hù)可測試可移植可重用互操作可用性靈活性硬件獨(dú)立性VVVV檢測性VVV模塊化VVVVVVV可操作性VV安全性V自文擋化VVVVV簡單性VVVV軟件獨(dú)立性VV可追蹤性V易培訓(xùn)性V2.3軟件質(zhì)量度量 McCall等人提出的軟件質(zhì)量度量模型McCall軟件質(zhì)量度量模型為軟件質(zhì)量管理奠定了基礎(chǔ)模型由軟件質(zhì)量要素和評價(jià)準(zhǔn)則組成加權(quán)系數(shù)Cjk滿足Cjk1

42、 其中 Cjk0 當(dāng)質(zhì)量要素Fj與k項(xiàng)評價(jià)準(zhǔn)則無關(guān)時(shí), Cjk=0McCall評價(jià)準(zhǔn)則項(xiàng)數(shù) L=212.3軟件質(zhì)量度量軟件質(zhì)量的FURPS度量 國內(nèi)外許多軟件工程組織和專家在軟件質(zhì)量要素和評價(jià)準(zhǔn)則的選取度量方面做了大量的工作,用于軟件開發(fā)過程的質(zhì)量控制和軟件產(chǎn)品的質(zhì)量度量。 1987年Hewlett-Packard提出一組被稱之為FURPS的軟件質(zhì)量要素。2.3軟件質(zhì)量度量軟件質(zhì)量的FURPS度量這組要素由功能性(Functionality)、可用性(Usability)、可靠性(Reliability)、性能(Performance)和可支撐性(Supportability)組成。Grad和

43、Caswell給出了以調(diào)查報(bào)告/規(guī)格說明、設(shè)計(jì)、實(shí)現(xiàn)、測試、支撐為行,以上述要素為列的5行5列矩陣,通過對矩陣元素的度量導(dǎo)出軟件開發(fā)過程和軟件產(chǎn)品質(zhì)量要素的FURPS度量。2.3軟件質(zhì)量度量FURPS軟件貭量要素 要素 關(guān)系 準(zhǔn)則功能性可用性可靠性性能可支撐性 論證報(bào)告/ 規(guī)格說明 設(shè)計(jì) 實(shí)現(xiàn) 測試 支撐環(huán)境2.3軟件質(zhì)量度量 ISO 軟件質(zhì)量度量模型 1985年國際標(biāo)準(zhǔn)化組織(ISO)建議,軟件質(zhì)量度量模型由三層組成。高層稱軟件質(zhì)量需求評價(jià)準(zhǔn)則(SQRC);中層稱軟件質(zhì)量設(shè)計(jì)評價(jià)準(zhǔn)則(SQDC);低層稱軟件質(zhì)量度量評價(jià)準(zhǔn)則(SQMC)。 分別對應(yīng)McCall等人的要素、評價(jià)準(zhǔn)則和度量。ISO

44、認(rèn)為應(yīng)對高層和中層建立國際標(biāo)準(zhǔn),以便在國際范圍內(nèi)推廣軟件質(zhì)量管理,而低層可由各單位自行制定。ISO高層由8個(gè)要素組成、中層由23個(gè)評價(jià)準(zhǔn)則組成。它們之間的關(guān)系如表2.13所示。 2.3軟件質(zhì)量度量表2.13 ISO的質(zhì)量要素與評價(jià)準(zhǔn)則(1/2) 要素 關(guān)系 準(zhǔn)則正確性可容性有效性安全性可用性可維護(hù)靈活性互操作可追蹤性V完全性V一致性VVV準(zhǔn)確性V容錯(cuò)性V簡單性VV模塊化VV通用性V可擴(kuò)充性V檢測性V自描述性VV2.3軟件質(zhì)量度量表2.13 ISO的質(zhì)量要素與評價(jià)準(zhǔn)則 (2/2) 要素 關(guān)系 準(zhǔn)則正確性可容性有效性安全性可用性可維護(hù)靈活性互操作執(zhí)行效率V存儲效率V存取控制V存取審查V可操作性V易

45、培訓(xùn)性V通信性V軟件獨(dú)立性V硬件獨(dú)立性V通信通用性V數(shù)據(jù)通用性V簡明性V2.3軟件質(zhì)量度量2.4 軟件復(fù)雜性度量軟件復(fù)雜性及度量原則控制結(jié)構(gòu)的復(fù)雜性度量文本復(fù)雜性度量第二章 軟件項(xiàng)目管理2.4.1 軟件復(fù)雜性及度量原則軟件復(fù)雜性度量 開發(fā)規(guī)模相同、復(fù)雜性不同的軟件,花費(fèi)的時(shí)間和成本會有很大差異。 K.Magel從六個(gè)方面描述軟件復(fù)雜性理解程序的難度;糾錯(cuò)、維護(hù)程序的難度;向他人解釋程序的難度;按指定方法修改程序的難度;根據(jù)設(shè)計(jì)文件編寫程序的工作量;執(zhí)行程序時(shí)需要資源的程度。它反映了軟件的可理解性、模塊性、簡潔性等屬性。2.4軟件復(fù)雜性度量軟件復(fù)雜性度量的原則 (1/2)1.軟件復(fù)雜性與程序大小

46、的關(guān)系不是線性的;2.控制結(jié)構(gòu)復(fù)雜的程序較復(fù)雜;3.數(shù)據(jù)結(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ù)、子程序和模塊在程序中的次序?qū)?fù)雜性有影響;2.4軟件復(fù)雜性度量 軟件復(fù)雜性度量的原則(2/2)7.全程變量、非局部變量較多時(shí),程序較復(fù)雜;8.參數(shù)按地址調(diào)用比按值調(diào)用復(fù)雜;9.函數(shù)副作用比顯式參數(shù)傳遞難于理解;10.具有不同作用的變量共用一個(gè)名字時(shí)較難理解;11.模塊間、過程間聯(lián)系密切的程序比較復(fù)雜;12.嵌套越深程序越復(fù)雜。2.4軟件復(fù)雜性度量2.4.2 控制結(jié)構(gòu)的復(fù)雜性度量 1976年 T.J.McCabe 基

47、于程序控制結(jié)構(gòu)的軟件復(fù)雜性度量模型。 2.4軟件復(fù)雜性度量控制結(jié)構(gòu)的復(fù)雜性度量程序控制結(jié)構(gòu)圖 程序結(jié)構(gòu)對應(yīng)于有一個(gè)入口結(jié)點(diǎn)和一個(gè)出口結(jié)點(diǎn)的有向圖圖中每個(gè)結(jié)點(diǎn)對應(yīng)一個(gè)語句或一個(gè)順序流程的程序代碼塊弧對應(yīng)于程序中的轉(zhuǎn)移由入口結(jié)點(diǎn)可以到達(dá)圖中每個(gè)結(jié)點(diǎn),并且從圖中每個(gè)結(jié)點(diǎn)都可以到達(dá)出口結(jié)點(diǎn)2.4軟件復(fù)雜性度量控制結(jié)構(gòu)的復(fù)雜性度量 McCabe 用程序控制結(jié)構(gòu)圖的巡回秩數(shù)V(G)作為程序結(jié)構(gòu)復(fù)雜性的度量 V(G) = e-n+2 (220) 其中:e為結(jié)構(gòu)圖的邊數(shù) n為結(jié)構(gòu)圖的結(jié)點(diǎn)數(shù) 可以證明 V(G)等于結(jié)構(gòu)圖中有界或無界的封閉區(qū)域個(gè)數(shù)2.4軟件復(fù)雜性度量控制結(jié)構(gòu)的復(fù)雜性度量例2.4 計(jì)算如圖2.8所

48、示程序控制結(jié)構(gòu)圖的V(G)值。 (a) e=1,n=2,v=1; (b) e=3,n=3,v=2; (c) e=4,n=4,v=2; (d) e=3,n=3,v=2; (e) e=6,n=5,v=3.2.4軟件復(fù)雜性度量 控制結(jié)構(gòu)的復(fù)雜性度量程序中分枝結(jié)構(gòu)數(shù)和循環(huán)結(jié)構(gòu)數(shù)增加時(shí),控制結(jié)構(gòu)圖的區(qū)域數(shù)增加,V(G)的值增大,程序的結(jié)構(gòu)會變得更復(fù)雜。結(jié)構(gòu)化程序設(shè)計(jì)控制流力求從高層指向低層,從低層指向高層的流向,會增加封閉區(qū)域的個(gè)數(shù),反方向的控制流向越多V(G)越大,程序結(jié)構(gòu)越復(fù)雜。2.4軟件復(fù)雜性度量例2.5 計(jì)算程序控制結(jié)構(gòu)的V(G)值E = 1 E = 3N = 2 N = 3V = 1 V =

49、22.4軟件復(fù)雜性度量計(jì)算程序控制結(jié)構(gòu)的V(G)值E = 4 E = 3N = 4 N = 3V = 2 V = 22.4軟件復(fù)雜性度量計(jì)算程序控制結(jié)構(gòu)的V(G)值E = 6N = 5V = 32.4軟件復(fù)雜性度量控制結(jié)構(gòu)的復(fù)雜性度量McCabe建議把V(G)作為模塊規(guī)模的定量指標(biāo),一個(gè)模塊V(G)的值不要大于10 當(dāng)V(G)10時(shí),模塊內(nèi)部結(jié)構(gòu)就會變得復(fù)雜,給編碼和測試帶來困難。2.4軟件復(fù)雜性度量2.4.3 文本復(fù)雜性度量七十年代初 M.Halstead從統(tǒng)計(jì)學(xué)和心理學(xué)的角度研究軟件復(fù)雜性問題程序是由操作符和操作數(shù)組成的符號序列操作符是程序設(shè)計(jì)語言定義并在程序中出現(xiàn)的語法符號,如FORTR

50、AN語言中的、*、IF、THEN、DO、END 等操作數(shù)是操作對象,由程序定義并引用,可以是變量、常量、數(shù)組、記錄、指針等2.4軟件復(fù)雜性度量 程序語言符號長度估算 設(shè) n1 為程序中不同操作符的個(gè)數(shù) n2 為程序中不同操作數(shù)的個(gè)數(shù) N1 為程序中操作符的個(gè)數(shù) N2 為程序中操作數(shù)的個(gè)數(shù) 當(dāng)程序員十分熟悉他所使用的程序設(shè)計(jì)語言和程序涉及的算法時(shí),編寫程序的過程僅僅是從長度為n的符號表中(其中,n=n1+n2)選擇操作符和操作數(shù)的過程則 程序語言符號長度 N=N1+N2 可用下式估算 N=n1log2n1+n2log2n2 (2-21)2.4軟件復(fù)雜性度量文本復(fù)雜性度量M.Halstead 用下

51、式定義程序量 V = N log2(n1+n2) (2-22) 它反映了程序在“詞匯”上的復(fù)雜性。 如果我們把具有m1個(gè)輸入和m2個(gè)輸出的程序理解為,將m1個(gè)變元映照成m2個(gè)變元的函數(shù) Y=F(x) 其中 x=(x1,x2,.,xm1),Y=(y1,y2,.ym2) 程序的操作符只有函數(shù)和賦值兩個(gè),n1*=2 操作數(shù)的個(gè)數(shù)是輸入和輸出變元個(gè)數(shù)的和 n2*=m1+m2 故 n1*=min n1=N1, n2*=min n2=N2 將n1*,n2* 代入(2-22)得最小程序量 V* V*=(2+n2*)log2(2+n2*) (2-23)2.4軟件復(fù)雜性度量 程序設(shè)計(jì)語言的程序級令 L=V*/V

52、,其值取決于具體的程序設(shè)計(jì)語言和程序。對某個(gè)程序,選用多種程序設(shè)計(jì)語言,計(jì)算并統(tǒng)計(jì)L的期望值 I = E(L) Lk/mM.Halstead將I定義為程序設(shè)計(jì)語言的程序級它反映了用這種語言求解問題時(shí)程序的效率 1I0 1IADAIFORTRANIASSEMBLE0I與程序設(shè)計(jì)語言的表達(dá)能力和程序員的水平有關(guān)2.4軟件復(fù)雜性度量2.4.3文本復(fù)雜性度量當(dāng)n比較大時(shí),Shooman給出程序語言符號長度N的類似估算 N=(n1+n2)0.5772+ln(n1+n2) (2-24)統(tǒng)計(jì)試驗(yàn)和分析得出某種程序設(shè)計(jì)語言千行代碼(KLOC)或每個(gè)功能點(diǎn)(FP)包含的操作符和操作數(shù)個(gè)數(shù)CN或CF程序語言符號長

53、度N可以折合成相應(yīng)的代碼行數(shù)和功能點(diǎn)數(shù)2.4軟件復(fù)雜性度量文本復(fù)雜性度量n1,n2,N1,N2相同的程序在控制結(jié)構(gòu)和數(shù)據(jù)復(fù)雜性等方面可能存在相當(dāng)大的差異程序員使用程序設(shè)計(jì)語言描述算法的水平和熟練程度區(qū)別很大, Halstead的估算方法有一定的局限性。2.4軟件復(fù)雜性度量 2.5 軟件可靠性度量軟件可靠性是影響軟件質(zhì)量的要素。對于重要的計(jì)算機(jī)應(yīng)用系統(tǒng),特別是實(shí)時(shí)、嵌入式計(jì)算機(jī)應(yīng)用系統(tǒng),軟件可靠性關(guān)系到整個(gè)系統(tǒng)的成敗。在軟件開發(fā)階段,軟件可靠性度量用于估算和測量軟件產(chǎn)品的可靠性。可靠性分析和可靠性測試是衡量軟件質(zhì)量的重要手段。本節(jié)研究軟件可靠性、軟件修復(fù)和有效性、度量、軟件可靠性估算模型和方法。

54、第二章 軟件項(xiàng)目管理 2.5.1 軟件可靠性的概念制造問題、設(shè)計(jì)錯(cuò)誤、元器件過載、機(jī)械磨損等原因會導(dǎo)致硬件故障。這些故障有些是確定的,有些是隨機(jī)的。硬件故障可以追查到某一個(gè)元器件的失效或選用不當(dāng)。軟件除了磨損故障外,其他幾種類似的故障都有可能出現(xiàn)。在系統(tǒng)測試過程中,一旦發(fā)現(xiàn)故障必須查明原因,采取相應(yīng)措施將其排除。大型軟件是復(fù)雜的邏輯產(chǎn)品,采用枚舉技術(shù)不可能對程序運(yùn)行的所有路徑逐個(gè)進(jìn)行測試。投入使用的軟件很可能殘留一定數(shù)量的錯(cuò)誤。某些初始條件和輸入數(shù)據(jù)可能導(dǎo)致程序運(yùn)行失效,出現(xiàn)所謂“軟件故障”。2.5軟件可靠性度量軟件可靠性 軟件可靠性 在某個(gè)給定時(shí)間間隔內(nèi),程序按照規(guī)格說明成功運(yùn)行的概率令 隨

55、機(jī)變量 t 表示程序發(fā)生故障的時(shí)刻 t0,) f(t)表示t的概率密度函數(shù) F(t)表示分布函數(shù),P(0tt1)表示從初始時(shí)刻到t1時(shí)刻程序發(fā)生故障的概率。 設(shè)初始時(shí)刻程序工作正常,F(xiàn)(0)=0于是,F(xiàn)(t), f(t) 滿足 (225) f(t)=dF(t)/dt (226)從0時(shí)刻開始,到t1時(shí)刻為止程序發(fā)生故障的概率 Pf(t1)=P(0tt1)F(t1)-F(0)=F(t1)2.5軟件可靠性度量 軟件可靠性 同一時(shí)刻程序成功運(yùn)行和發(fā)生故障是兩個(gè)互斥事件,0, t區(qū)間程序成功運(yùn)行的概率Ps(t)和發(fā)生故障的概率Pf(t) 滿足 Ps(t)+Pf(t)=1 (227)可靠性 程序成功運(yùn)行的

56、概率Ps(t),用R(t) 標(biāo)記 R(t) = Ps(t)= 1- Pf(t)= 1 - F(t) = 1 -f(t) dt 當(dāng)軟件殘留錯(cuò)誤數(shù)量一定時(shí),程序運(yùn)行時(shí)間越長,程序發(fā)生故障的次數(shù)越多,軟件可靠性越小。2.5軟件可靠性度量 軟件可靠性故障率函數(shù)Z(t) 比較程序在不同的時(shí)期,或若干個(gè)程序在同一時(shí)期軟件的可靠性, 假設(shè)tt1, t1+t,系統(tǒng)一直成功運(yùn)行至?xí)r刻t, P(t1tt1+t,tt1)是系統(tǒng)在t1,t1+t出現(xiàn)故障的概率,于是t1時(shí)刻故障率函數(shù)的值定義為 Z(t1)lim P(t1tt1+t, tt1)/t (228) t 0可以證明 Z(t)=1/R(t) dF(t)/dt (

57、229)將 dF(t)/dt=-dR(t)/dt 代入上式 dR(t)/R(t) -Z(t)dt (230)對上式兩邊積分并利用初始條件 R(0)=1,得可靠性和故障率的基本方程 R(t)=exp-Z(x)dx (231)2.5軟件可靠性度量幾個(gè)常用的故障模型(1) 故障率為常數(shù)的可靠性模型 Z(t)= 表示單位時(shí)間內(nèi)程序運(yùn)行的故障率函數(shù)為常數(shù)代入 (231)式 R(t)=exp(-t ) (232)它的可靠性隨t的增加呈指數(shù)衰減。2.5軟件可靠性度量幾個(gè)常用的故障模型(2) Z(t)=kt,其中k是常數(shù),t0當(dāng)耗損或退化存在時(shí),故障率將隨時(shí)間的流逝而線性增加,這種模型一般不適用于軟件產(chǎn)品。代

58、入(231)式得 R(t)=exp(-kt*2)/2 (233) 硬件和軟件產(chǎn)品的故障率函數(shù)不會如此簡單。 2.5軟件可靠性度量軟/硬件系統(tǒng)的故障率硬件 系統(tǒng)的故障率函數(shù)曲線呈浴盆狀 曲線分下降(早期故障)、穩(wěn)定運(yùn)行(故障明顯減少)和上升(耗損型故障增加)三部分。 軟件 系統(tǒng)的故障率函數(shù)曲線呈指數(shù)下降趨勢 軟件沒有耗損型故障,人的設(shè)計(jì)錯(cuò)誤導(dǎo)至計(jì)算機(jī)系統(tǒng)某些數(shù)據(jù)或某些指令的組合引發(fā)程序邏輯錯(cuò)誤。2.5軟件可靠性度量 2. 軟件修復(fù)和軟件有效性軟件修復(fù) 排除軟件代碼中的錯(cuò)誤可修復(fù)與不可修復(fù)系統(tǒng) 在基于計(jì)算機(jī)的系統(tǒng)中,不允許程序停止運(yùn)行的系統(tǒng),稱為不可修復(fù)系統(tǒng)。如空中交通管理系統(tǒng)。反之稱為可修復(fù)系統(tǒng)

59、,如軟件開發(fā)環(huán)境中各種軟件工具。 為了保證不可修復(fù)系統(tǒng)的可靠性,應(yīng)該建立一個(gè)軟硬件的雙機(jī)系統(tǒng)。2.5軟件可靠性度量軟件修復(fù)和軟件有效性軟件修復(fù)步驟發(fā)現(xiàn)故障 糾正錯(cuò)誤 測試 系統(tǒng)重新啟動(dòng)軟件修復(fù)能夠降低系統(tǒng)的故障率,提高系統(tǒng)的可靠性。軟件修復(fù)時(shí)間是一個(gè)隨機(jī)變量,在可靠性分析過程中,為了簡單經(jīng)常使用平均修復(fù)時(shí)間(MTTR)的概念。2.5軟件可靠性度量系統(tǒng)有效性和可靠性度量系統(tǒng)有效性函數(shù) 系統(tǒng)在時(shí)刻t正常運(yùn)行的概率,用A(t)表記。 如,A(250)0.95表示100個(gè)相同的系統(tǒng)當(dāng)運(yùn)行了250小時(shí)時(shí),有95個(gè)處于正常運(yùn)行狀態(tài),5個(gè)出現(xiàn)故障等待修理。2.5軟件可靠性度量系統(tǒng)有效性和可靠性度量可靠性函數(shù)

60、R(t) 系統(tǒng)在0,t時(shí)間間隔正常運(yùn)行的概率,用R(t)表記。R(250) = 0.95 表示100個(gè)相同的系統(tǒng)運(yùn)行250小時(shí),有 95 個(gè)無故障,5個(gè)發(fā)生故障。R(250) =0.95 的要求比A(250) = 0.95 的要求嚴(yán)格得多。對于不可修復(fù)系統(tǒng)或沒有修理能力的部門,A(t)=R(t),對于允許修理并有一定修理能力的部門,A(t)R(t)。2.5軟件可靠性度量軟件有效性測量(1)用n臺相同的計(jì)算機(jī)軟硬件系統(tǒng)處理若干組相同或不同的輸入數(shù)據(jù),如果發(fā)現(xiàn)某個(gè)計(jì)算機(jī)系統(tǒng)發(fā)生故障,則可以停機(jī)檢修,待修復(fù)后重新啟動(dòng)。t時(shí)刻觀測n臺計(jì)算機(jī)的工作狀態(tài),如果有m(t)臺出現(xiàn)故障,則系統(tǒng)的有效性估計(jì)為 A

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論