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

下載本文檔

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

文檔簡介

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

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

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

4、項、制定工作計劃等2.1軟件度量 度量、測量和估算 軟件具有外部屬性和內(nèi)部屬性外部屬性 軟件產(chǎn)品、過程、資源與環(huán)境的關(guān)系,如,成本、效益、勞動生產(chǎn)率、可靠性、可維護性內(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)品的外部屬性程序的可靠性、可用性、可維護性、件的可理解性、有效性、可移植性 2.1軟件度量 度量、測量和估算過程的內(nèi)部屬性 工作量 計劃和進度 一段時間內(nèi)某類事件發(fā)生的次數(shù)過程的外部屬性 成本 可控制性 可觀察性 穩(wěn)定性2.1軟件度量 度量、測量和估算資源的內(nèi)部屬性 人 軟硬件環(huán)境 方法 經(jīng)驗資源的外部屬性 成本 時間2.1軟件度量2.1.2 規(guī)模度量是一種直接度量方法。代碼行數(shù) LOC或KLOC生產(chǎn)率 Pl=L/E 其中 L 軟件項目代碼行數(shù) E 軟件項目工作量(人月 PM) Pl 軟件項目生產(chǎn)率(LOC/PM)2.1軟件度量 規(guī)模度量代碼出錯率

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

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

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

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

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

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

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

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

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

15、軟件開發(fā)項目 規(guī)模為 33360 LOC 成本為 656680 $ 工作量為 144.5 PM。2.2軟件項目估算 估算計算機輔助設(shè)計軟件項目再用第二種方法和第三種方法分別估算軟件開發(fā)子項目在軟件工程各個階段的工作量,估算結(jié)果列入表2.8。兩種方法估算的工作量分別為144.5PM和152.5PM,相差5%左右。估算的成本分別為656680$和708075$,相差7%左右。 兩種方法估算的工作量和成本基本一致。 2.2軟件項目估算表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è)計分析 6600 8500 9800 8400 18 300 151200 28.0總計 33360

17、 656680 144.52.2軟件項目估算 表2.8 工作量估算 功能 需求分析 設(shè)計 編碼 測試 總計用戶界面控制 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計算機圖形顯示 1.5 11.0 4.0 10.5 27外設(shè)控制 1.5 6.0 3.5 5.0 16設(shè)計分析 4.0 14.0 5.0 7.0 30總計(人月) 14.5 61 26.5 50.5 152.5 每人月成本 5200 4800 4250 4500成本() 75400 29

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

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

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

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

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

23、間CoCoMo模型可以估算開發(fā)軟件產(chǎn)品的工作量,比較各種開發(fā)方案的工作量。2.2軟件項目估算 例2.3 用基本CoCoMo模型估算例2.2工作量、開發(fā)時間和項目開發(fā)人數(shù)在例2.2中,目標代碼行數(shù)為 33.3 KLOCCAD軟件開發(fā)屬于中等規(guī)模、半獨立型從表2.9中查到a=3.0,b=1.12。代入公式(2-11) E = 3.0L1.12 = 3.033.31.12 = 152 PM2.2軟件項目估算例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 建議參加項目開發(fā)的人

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

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

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

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

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軟件項目估算 Putnam模型 由(2-18) 3 3 4 E L / (CK*td) (2-19)td對應(yīng)于Rayleigh-Norden曲線的最大值,表示軟件交付時工作量最大,參與軟件項目的人最多。當工作量估算出來之后,利用每人年的開銷($/PY)可以估算成本。公式(2-19)表明,開發(fā)軟件項目的工作量與交貨時間的4次方成反比,將0.9td代替(2-19)式的td計算E發(fā)現(xiàn),提前10%

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

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

31、質(zhì)量度量軟件質(zhì)量度量管理人員關(guān)心軟件開發(fā)標準,在經(jīng)費和時間允許的情況下,如何實現(xiàn)軟件需求規(guī)格說明中定義的功能維護人員重視軟件的正確性,可理解性和可修改性用戶更關(guān)心軟件的性能和可靠性等等 應(yīng)該對軟件質(zhì)量給出一個客觀的、科學的定義并盡量予以量化。這對統(tǒng)一人們對軟件產(chǎn)品質(zhì)量的認識,在軟件產(chǎn)品開發(fā)與維護過程中評價和控制軟件產(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ì)量進行度量,必須對影響軟件質(zhì)量的要素進行度量,并建立實用的軟件質(zhì)量度量體系或模型1968年Rubey和Hartwick提出了軟件某些屬性的度量方法1976年Boehm提出了定量評價軟件質(zhì)量的概念,給出了60個軟件質(zhì)量度量公式和軟件質(zhì)量度量的層次模型2.3軟件質(zhì)量度量軟件質(zhì)量度量1978年Walters和McCall提出了包括質(zhì)量要素(factor)、準則(criteria)和度量(metric)的三層次軟件質(zhì)量度量模型G.Murine又提出了軟件質(zhì)量度量技術(shù)SQM用于

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

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

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

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

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

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

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

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

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

42、 其中 Cjk0 當質(zhì)量要素Fj與k項評價準則無關(guān)時, Cjk=0McCall評價準則項數(shù) L=212.3軟件質(zhì)量度量軟件質(zhì)量的FURPS度量 國內(nèi)外許多軟件工程組織和專家在軟件質(zhì)量要素和評價準則的選取度量方面做了大量的工作,用于軟件開發(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)查報告/規(guī)格說明、設(shè)計、實現(xiàn)、測試、支撐為行,以上述要素為列的5行5列矩陣,通過對矩陣元素的度量導(dǎo)出軟件開發(fā)過程和軟件產(chǎn)品質(zhì)量要素的FURPS度量。2.3軟件質(zhì)量度量FURPS軟件貭量要素 要素 關(guān)系 準則功能性可用性可靠性性能可支撐性 論證報告/ 規(guī)格說明 設(shè)計 實現(xiàn) 測試 支撐環(huán)境2.3軟件質(zhì)量度量 ISO 軟件質(zhì)量度量模型 1985年國際標準化組織(ISO)建議,軟件質(zhì)量度量模型由三層組成。高層稱軟件質(zhì)量需求評價準則(SQRC);中層稱軟件質(zhì)量設(shè)計評價準則(SQDC);低層稱軟件質(zhì)量度量評價準則(SQMC)。 分別對應(yīng)McCall等人的要素、評價準則和度量。ISO

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

45、培訓(xùn)性V通信性V軟件獨立性V硬件獨立性V通信通用性V數(shù)據(jù)通用性V簡明性V2.3軟件質(zhì)量度量2.4 軟件復(fù)雜性度量軟件復(fù)雜性及度量原則控制結(jié)構(gòu)的復(fù)雜性度量文本復(fù)雜性度量第二章 軟件項目管理2.4.1 軟件復(fù)雜性及度量原則軟件復(fù)雜性度量 開發(fā)規(guī)模相同、復(fù)雜性不同的軟件,花費的時間和成本會有很大差異。 K.Magel從六個方面描述軟件復(fù)雜性理解程序的難度;糾錯、維護程序的難度;向他人解釋程序的難度;按指定方法修改程序的難度;根據(jù)設(shè)計文件編寫程序的工作量;執(zhí)行程序時需要資源的程度。它反映了軟件的可理解性、模塊性、簡潔性等屬性。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)向語句使用不當?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.全程變量、非局部變量較多時,程序較復(fù)雜;8.參數(shù)按地址調(diào)用比按值調(diào)用復(fù)雜;9.函數(shù)副作用比顯式參數(shù)傳遞難于理解;10.具有不同作用的變量共用一個名字時較難理解;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)于有一個入口結(jié)點和一個出口結(jié)點的有向圖圖中每個結(jié)點對應(yīng)一個語句或一個順序流程的程序代碼塊弧對應(yīng)于程序中的轉(zhuǎn)移由入口結(jié)點可以到達圖中每個結(jié)點,并且從圖中每個結(jié)點都可以到達出口結(jié)點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é)點數(shù) 可以證明 V(G)等于結(jié)構(gòu)圖中有界或無界的封閉區(qū)域個數(shù)2.4軟件復(fù)雜性度量控制結(jié)構(gòu)的復(fù)雜性度量例2.4 計算如圖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ù)增加時,控制結(jié)構(gòu)圖的區(qū)域數(shù)增加,V(G)的值增大,程序的結(jié)構(gòu)會變得更復(fù)雜。結(jié)構(gòu)化程序設(shè)計控制流力求從高層指向低層,從低層指向高層的流向,會增加封閉區(qū)域的個數(shù),反方向的控制流向越多V(G)越大,程序結(jié)構(gòu)越復(fù)雜。2.4軟件復(fù)雜性度量例2.5 計算程序控制結(jié)構(gòu)的V(G)值E = 1 E = 3N = 2 N = 3V = 1 V =

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

50、AN語言中的、*、IF、THEN、DO、END 等操作數(shù)是操作對象,由程序定義并引用,可以是變量、常量、數(shù)組、記錄、指針等2.4軟件復(fù)雜性度量 程序語言符號長度估算 設(shè) n1 為程序中不同操作符的個數(shù) n2 為程序中不同操作數(shù)的個數(shù) N1 為程序中操作符的個數(shù) N2 為程序中操作數(shù)的個數(shù) 當程序員十分熟悉他所使用的程序設(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個輸入和m2個輸出的程序理解為,將m1個變元映照成m2個變元的函數(shù) Y=F(x) 其中 x=(x1,x2,.,xm1),Y=(y1,y2,.ym2) 程序的操作符只有函數(shù)和賦值兩個,n1*=2 操作數(shù)的個數(shù)是輸入和輸出變元個數(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è)計語言的程序級令 L=V*/V

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

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

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

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

56、概率Ps(t),用R(t) 標記 R(t) = Ps(t)= 1- Pf(t)= 1 - F(t) = 1 -f(t) dt 當軟件殘留錯誤數(shù)量一定時,程序運行時間越長,程序發(fā)生故障的次數(shù)越多,軟件可靠性越小。2.5軟件可靠性度量 軟件可靠性故障率函數(shù)Z(t) 比較程序在不同的時期,或若干個程序在同一時期軟件的可靠性, 假設(shè)tt1, t1+t,系統(tǒng)一直成功運行至時刻t, P(t1tt1+t,tt1)是系統(tǒng)在t1,t1+t出現(xiàn)故障的概率,于是t1時刻故障率函數(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軟件可靠性度量幾個常用的故障模型(1) 故障率為常數(shù)的可靠性模型 Z(t)= 表示單位時間內(nèi)程序運行的故障率函數(shù)為常數(shù)代入 (231)式 R(t)=exp(-t ) (232)它的可靠性隨t的增加呈指數(shù)衰減。2.5軟件可靠性度量幾個常用的故障模型(2) Z(t)=kt,其中k是常數(shù),t0當耗損或退化存在時,故障率將隨時間的流逝而線性增加,這種模型一般不適用于軟件產(chǎn)品。代

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

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

60、R(t) 系統(tǒng)在0,t時間間隔正常運行的概率,用R(t)表記。R(250) = 0.95 表示100個相同的系統(tǒng)運行250小時,有 95 個無故障,5個發(fā)生故障。R(250) =0.95 的要求比A(250) = 0.95 的要求嚴格得多。對于不可修復(fù)系統(tǒng)或沒有修理能力的部門,A(t)=R(t),對于允許修理并有一定修理能力的部門,A(t)R(t)。2.5軟件可靠性度量軟件有效性測量(1)用n臺相同的計算機軟硬件系統(tǒng)處理若干組相同或不同的輸入數(shù)據(jù),如果發(fā)現(xiàn)某個計算機系統(tǒng)發(fā)生故障,則可以停機檢修,待修復(fù)后重新啟動。t時刻觀測n臺計算機的工作狀態(tài),如果有m(t)臺出現(xiàn)故障,則系統(tǒng)的有效性估計為 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論