




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1,軟件質(zhì)量,與結(jié)構(gòu)化測(cè)試,2,內(nèi)容提要,什么是軟件質(zhì)量 軟件質(zhì)量特性與質(zhì)量模型 軟件質(zhì)量的度量 常用軟件度量方法 McCabe復(fù)雜度 結(jié)構(gòu)化測(cè)試技術(shù),3,軟件開(kāi)發(fā),4,Maintenance,軟件開(kāi)發(fā)的工作分配,Design,Coding,Testing,5,什么是軟件質(zhì)量,“The totality of features and characteristics of a product or service that bear on its ability to satisfy stated or implied needs” (ISO 8402) 與軟件產(chǎn)品滿足規(guī)定的和隱含的需求的能力
2、有關(guān)的特征或特性的全體,The degree of excellence 軟件的優(yōu)秀程度,“The ability of a software product to satisfy its specified requirements” (DoD-STD-2168) 軟件產(chǎn)品滿足其規(guī)定的需求的能力,6,什么是軟件質(zhì)量,“The degree to which a system, component, or process meets specified requirements.” (IEEE standard 610.12-1990) 一個(gè)系統(tǒng)、組件或過(guò)程滿足規(guī)定的需求的程度,“The de
3、gree to which a system, component, or process meets customer or user needs or expectations.” (IEEE standard 610.12-1990) 一個(gè)系統(tǒng)、組件或過(guò)程滿足客戶或用戶的需求的程度,或滿足期望值的程度,7,ISO 9126,Software Quality:軟件質(zhì)量 The totality of features and characteristics of a software product that bear on its ability to satisfy stated or
4、 implied needs. 與軟件產(chǎn)品滿足規(guī)定的和隱含的需求的能力有關(guān)的特征或特性的全體,Software Quality Characteristics:軟件質(zhì)量特性 A set of attributes of a software product by which its ability is described and evaluated. A software quality characteristic may be refined into multiple levels of sub-characteristics.軟件質(zhì)量特性是軟件產(chǎn)品的一組屬性,用來(lái)對(duì)軟件的能力進(jìn)行描述
5、和評(píng)估。軟件質(zhì)量特性可細(xì)分為多層次的子特性。,Software Quality Metric:軟件質(zhì)量度量 A quantitative scale and method which can be used to determine the value a feature takes for a specific software product.用于確定軟件產(chǎn)品質(zhì)量特性的定量的衡量和分析方法,8,Quality in Software,9,縮短時(shí)間表,“Quality does not happen by mistake!”,為什么質(zhì)量差?,壓縮的預(yù)算,人員的變化,用戶需求的改變,提高或增加
6、功能或性能,Bug Fixing,無(wú)效的測(cè)試,10,軟件質(zhì)量保證(QA),原則 質(zhì)量不必是“最好”的 質(zhì)量是用戶想要的和愿意購(gòu)買的,范圍 QA is more than testing QA not only at the end of the project QA of product and process,格言 Moving from quality controlling (ex post) to prevention by quality service.通過(guò)質(zhì)量服務(wù)把質(zhì)量控制變換到預(yù)防,11,Quality Characteristics質(zhì)量特征,12,Software Compl
7、exity,A software product is a solution of a problem. The complexity of the solution generally depends on the complexity of the problem.,13,Quality Models,分配用戶需求 Quality Factors(質(zhì)量因素),到開(kāi)發(fā)標(biāo)準(zhǔn) Quality Criteria(質(zhì)量標(biāo)準(zhǔn)),到可證明的和測(cè)量的值 Metrics(度量),14,軟件質(zhì)量的因子-標(biāo)準(zhǔn)-度量關(guān)系,15,可維護(hù)性,16,Boehm 質(zhì)量模型,17,McCall Model,18,質(zhì)量與質(zhì)量
8、管理,質(zhì)量要用需求,可接受性和它們達(dá)到的證據(jù)來(lái)衡量,質(zhì)量是通過(guò)解決問(wèn)題實(shí)現(xiàn)的,質(zhì)量管理確保前面解決過(guò)的問(wèn)題不再出現(xiàn),沒(méi)有質(zhì)量測(cè)量來(lái)做質(zhì)量管理只能是幻想,19,測(cè)量工具的好處,支持質(zhì)量管理系統(tǒng),開(kāi)發(fā)工程師可以自己檢查,支持代碼評(píng)審,評(píng)價(jià)外部軟件,支持測(cè)試,20,Software,Metrics,21,什么是度量( Metric )?,任何測(cè)量的單位 e.g. Cm, Litre, Ohm, Second, Color,描述一個(gè)實(shí)體的屬性,度量的類型: 和項(xiàng)目相關(guān) 時(shí)間表/開(kāi)支 估算測(cè)量 功能點(diǎn) 軟件度量,22,You cant control what you cant measure.,De
9、Marco, 1982,軟件質(zhì)量度量,23,測(cè)量非常有用,但我們必須先解決如下問(wèn)題:,5.1o-1s,測(cè)量,What do we want to measure?測(cè)量什么,How do we measure?如何測(cè),What do the measurements mea 測(cè)量的意義何在,24,5.2o-2s,What to Measure?,25,直觀的,Good Metrics should:,和錯(cuò)誤出現(xiàn)有直接關(guān)系,好的度量,客觀的,語(yǔ)言獨(dú)立,和測(cè)試努力直接有關(guān),自動(dòng)化,簡(jiǎn)單,26,提高質(zhì)量,4.1s,確定質(zhì)量,防止質(zhì)量退化,輔助做出決策,提高生產(chǎn)力,確定變更的影響,風(fēng)險(xiǎn)分析,確保質(zhì)量,提
10、高測(cè)試效率,27,Metrics+,Halstead Metrics 霍爾斯特德度量,可用的軟件度量包括:,Function Point 功能點(diǎn),Line Count Metrics 線計(jì)數(shù)度量,McCabe Metrics 圈復(fù)雜度,Data Metrics,System Level Metrics,OO Metrics,Derived Metrics,28,Halstead Metrics,起源:,1977年,由Maurice Halstead 開(kāi)發(fā)介紹,計(jì)算模塊的操作數(shù)和操作符,直接得出模塊的復(fù)雜程度的一種定量測(cè)試方法,通過(guò)源代碼測(cè)量模塊的復(fù)雜度,重點(diǎn)是復(fù)雜性的計(jì)算,應(yīng)用于代碼,經(jīng)常作為
11、一種維護(hù)性度量,自誕生之日起,就充滿爭(zhēng)議,29,技術(shù),Halstead度量主要基于以下四層源自程序代碼的統(tǒng)計(jì)數(shù)值:,n1 = the number of distinct(獨(dú)立的 )operators 操作符 n2 = the number of distinct operands 操作數(shù) N1 = the total number of operators N2 =the total number of operands,Measure Symbol Formula Program length長(zhǎng)度 N N= N1 + N2 Program vocabulary詞匯量 n n= n1 + n
12、2 Volume 容量V V= N * (LOG2 n) Difficulty難度 D D= (n1/2) * (N2/n2) Effort 工作量E E= D * V,from the above, five measures are derived.,Halstead Metrics,30,Halstead Metrics,優(yōu)勢(shì):,不必深入分析程序的結(jié)構(gòu),預(yù)測(cè)錯(cuò)誤的數(shù)目,預(yù)測(cè)維護(hù)的工作量,對(duì)報(bào)告和計(jì)劃項(xiàng)目的健康程度有幫助,對(duì)整個(gè)程序有幫助,計(jì)算簡(jiǎn)單,適合任何編程語(yǔ)言,經(jīng)過(guò)很多工業(yè)研究,都支持使用Halstead 來(lái)預(yù)測(cè)開(kāi)發(fā)工作量和平均bugs,31,Function Points,起源:,
13、1977 由 A.J.Albrecht 開(kāi)發(fā)設(shè)計(jì),測(cè)量軟件的大小和生產(chǎn)力,技術(shù):,將基本功能點(diǎn)分為5組: outputs輸出 inquiries查詢 inputs輸入 files文件 interfaces接口 功能點(diǎn)就是最終用戶的業(yè)務(wù)功能,比如對(duì)輸入的查詢.,和軟件完成的功能緊密相關(guān),32,Function Points,優(yōu)勢(shì):,對(duì)以下情況,通常被公認(rèn)為是一種有效方法:,較大的用戶群;International Function Point Group (IFPG) 多于 1,200 會(huì)員公司,建立每小時(shí)功能點(diǎn)的生產(chǎn)率,評(píng)估對(duì)需求的支持,評(píng)估軟件工程的大小 (以及周期),軟件模塊比較的標(biāo)準(zhǔn)化,
14、評(píng)估系統(tǒng)變更的開(kāi)銷,IFPG提供功能點(diǎn)實(shí)踐手冊(cè),以及標(biāo)準(zhǔn)化的實(shí)踐活動(dòng),Source: Software Engineering Institute Carnegie Mellon,33,Line Count Metrics,表明每個(gè)模塊的行數(shù), 包括代碼,注釋, 空白行, 混合代碼和注釋.,技術(shù),LOC 可分為以下幾類:,Lines-of-Code (LOC) metrics 提供代碼的總額, 但是對(duì)內(nèi)容的測(cè)量不太好,blanks - Lines with only space (eg. space and tabs) or no text comment,code - Source line
15、s of code that contain only code and white space,comments - Source lines of code that are purely comments,Mixed - Lines that contain both code and comments,34,Line Count Metrics,優(yōu)勢(shì):,測(cè)量軟件的物理尺寸,鑒別特殊行, 如注釋行和空行,幫助查明難以理解的模塊. (Comment lines often increase readability, although an unusually large number of
16、 comments can indicate that the module is difficult to understand.),35,McCabe Metrics,起源:,圈復(fù)雜度(Cyclomatic Complexity)由Thomas McCabe于1976提出,測(cè)量貫穿程序模塊的獨(dú)立線性路徑數(shù),提供了比較兩個(gè)程序復(fù)雜度的一種簡(jiǎn)單的指標(biāo),通常被稱為程序復(fù)雜度或McCabe復(fù)雜度,36,McCabe Metrics,優(yōu)勢(shì):,廣泛應(yīng)用的靜態(tài)軟件度量,和其他度量互補(bǔ),獨(dú)立于開(kāi)發(fā)語(yǔ)言,擴(kuò)展到可以包括設(shè)計(jì)和結(jié)構(gòu)復(fù)雜度,基于軟件結(jié)構(gòu)的嚴(yán)格的數(shù)學(xué)分析,37,McCabe Metrics,優(yōu)勢(shì):
17、,可以應(yīng)用到幾個(gè)領(lǐng)域:,維護(hù)的風(fēng)險(xiǎn)分析 Code complexity tends to increase through maintenance over time. By measuring before and after complexity can be monitored, managed and minimise the risk of change.,代碼開(kāi)發(fā)的風(fēng)險(xiǎn)分析: while under development, complexity can be measured for inherent risk and risk buildup.,測(cè)試的計(jì)劃 Cyclomatic
18、 complexity gives the exact number of tests needed to test every decision point. This aids in test planning. Highly complex modules require a prohibitive number of test steps, that number can be reduced to a more pragmatic size by breaking the module into smaller less complex sub modules.,再工程 Cyclom
19、atic complexity analysis provides insight to the structure of code. Reengineering risk is related to the code complexity. This insight helps with cost and risk analysis.,38,McCabe Metrics,McCabe 度量包括.,Cyclomatic complexity (v(G),Essential complexity (ev(G),Module design complexity (iv(G),Design comp
20、lexity (S0),Integration complexity (S1),Data complexity,Global data complexity (gdv(G),Specified data complexity (sdv(G),39,Is constructed from written code,分析一個(gè)模塊,結(jié)構(gòu)流圖.,一種描述軟件模塊邏輯的結(jié)構(gòu)圖,Is a visualization of the modules decision logic,40,分析一個(gè)模塊,流圖符號(hào) (箭頭)稱為“邊”(edge),代表控制流 (圓圈)稱為“節(jié)點(diǎn)”(node),代表一個(gè)或多個(gè)語(yǔ)句動(dòng)作
21、由節(jié)點(diǎn)和邊圍成的范圍稱為“域”(region),在計(jì)算域時(shí),圖形外的區(qū)域也應(yīng)算做一個(gè)“域” 判定節(jié)點(diǎn),指包含條件的節(jié)點(diǎn),41,If . then,If . then . else,If . and . then,If . or . then,Do . While,While . Do,Switch,分析一個(gè)模塊,C語(yǔ)言流圖符號(hào),42,分析一個(gè)模塊,FlowgraphsC程序舉例,function_test(y) 0 x=3;,1if ( y 4) 2x=sin(y); else 3x=cos(y);,4x=x*x; 5,43,分析一個(gè)模塊,FlowgraphsC程序舉例,0,function_
22、test(y) 0 x=3;,1if ( y 4) 2x=sin(y); else 3x=cos(y);,4x=x*x; 5,44,分析一個(gè)模塊,FlowgraphsC程序舉例,0,1,3,2,function_test(y) 0 x=3;,1if ( y 4) 2x=sin(y); else 3x=cos(y);,4x=x*x; 5,45,分析一個(gè)模塊,FlowgraphsC程序舉例,0,1,3,4,5,2,function_test(y) 0 x=3;,1if ( y 4) 2x=sin(y); else 3x=cos(y);,4x=x*x; 5,46,分析一個(gè)模塊,Exercise on
23、 Flowgraphs,1IF condition 2statement 3ENDIF 4statement 5WHILE condition 6DO SWITCH 7Label1 8statement 9Label 2 10statement 11Default 12statement 13END SWITCH 14END WHILE,47,分析一個(gè)模塊,圈復(fù)雜度 (v(G).,是模塊結(jié)構(gòu)復(fù)雜程度的一種度量。定義為貫穿模塊的獨(dú)立線行路徑數(shù),因此,它也是預(yù)防錯(cuò)誤所需的最小測(cè)試路徑數(shù),縮寫為 v(G),圈復(fù)雜度過(guò)高,表明模塊的質(zhì)量較差,且難于理解與維護(hù),經(jīng)驗(yàn)研究表明,在模塊錯(cuò)誤與圈復(fù)雜度之間存在
24、較強(qiáng)的關(guān)聯(lián)性,48,三種方法:,All methods provide same result,公式,斷言(判定節(jié)點(diǎn)),區(qū)域,分析一個(gè)模塊,圈復(fù)雜度的計(jì)算.,49,公式法,分析一個(gè)模塊,圈復(fù)雜度的計(jì)算.,計(jì)算所有的邊(e)和節(jié)點(diǎn)(n),使用公式 V(G) = e - n + 2,Example,V(G) = e - n + 2,50,分析一個(gè)模塊,圈復(fù)雜度的計(jì)算.,公式法,計(jì)算所有的邊(e)和節(jié)點(diǎn)(n),使用公式 V(G) = e - n + 2,Example,e=15,51,分析一個(gè)模塊,圈復(fù)雜度的計(jì)算.,公式法,計(jì)算所有的邊(e)和節(jié)點(diǎn)(n),使用公式 V(G) = e - n + 2,
25、Example,n=12,52,分析一個(gè)模塊,圈復(fù)雜度的計(jì)算.,公式法,計(jì)算所有的邊(e)和節(jié)點(diǎn)(n),使用公式 V(G) = e - n + 2,Example,V(G) = 15 - 12 + 2,V(G) = 5,53,斷言(判定節(jié)點(diǎn))法,分析一個(gè)模塊,圈復(fù)雜度的計(jì)算.,計(jì)算所有的斷言(P),使用 V(G) = P + 1,Example,V(G) = 4 + 1,V(G) = 5,V(G) = P + 1,54,區(qū)域法,分析一個(gè)模塊,圈復(fù)雜度的計(jì)算.,計(jì)算所有的由邊和節(jié)點(diǎn)所圍成的區(qū)域(R),注意最外圍也算一個(gè)區(qū)域,使用 V(G) = R,Example,V(G) = R,V(G) =
26、5,1,4,3,2,5,如果線條有交叉時(shí)會(huì)發(fā)生錯(cuò)誤,55,分析一個(gè)模塊,v(G) = e - n +2 v(G) = 22 - 18 +2 v(G) = 6,練習(xí):Cyclomatic Complexity (v(G),56,圈復(fù)雜度度量法的優(yōu)勢(shì),預(yù)測(cè)軟件潛在錯(cuò)誤的比率,指出過(guò)于復(fù)雜需要分解的模塊,通過(guò)限制程序的邏輯量來(lái)指導(dǎo)測(cè)試過(guò)程,幫助管理測(cè)試和維護(hù)的資源 (基于復(fù)雜度),分析一個(gè)模塊,應(yīng)用任何語(yǔ)言和易于應(yīng)用,使程序易于理解,易于測(cè)試,57,分析一個(gè)模塊,基本復(fù)雜度Essential Complexity (ev(G).,一個(gè)模塊包含“非結(jié)構(gòu)化結(jié)構(gòu)”的程度,縮寫為 (ev(G),基本復(fù)雜度高
27、,表明模塊的結(jié)構(gòu)“不夠良好”,降低代碼的質(zhì)量,維護(hù)工作加重,很難分割模塊,在維護(hù)時(shí)修改一個(gè)錯(cuò)誤經(jīng)常引入其他錯(cuò)誤,58,分析一個(gè)模塊,基本復(fù)雜度的計(jì)算方法.,將模塊結(jié)構(gòu)流圖按結(jié)構(gòu)化方法進(jìn)行簡(jiǎn)化(去除結(jié)構(gòu)良好的部分),再計(jì)算簡(jiǎn)化后的圈復(fù)雜度就得到基本復(fù)雜度ev(G),59,Cyclomatic Complexity = 4,McCabes Essential Complexity ev(G) Remove structured elements and recalculate the complexity,Essential Complexity = 1,分析一個(gè)模塊,流圖的簡(jiǎn)化.,60,分析一個(gè)
28、模塊,非結(jié)構(gòu)化邏輯舉例.,分支出來(lái)的一個(gè)循環(huán),分支為一個(gè)循環(huán),分支出來(lái)的判定,分支內(nèi)的判定,61,v(G) = 5,分析一個(gè)模塊,基本復(fù)雜度: 流圖簡(jiǎn)化.,簡(jiǎn)化后流圖 v(G) = 3,因此 ev(G) = 3,有層次的流圖 v(G) = 5 ev(G) = 3,62,好的設(shè)計(jì),可以迅速惡化,v(G) = 10 ev(G) = 1,v(G) = 11 ev(G) = 10,分析一個(gè)模塊,基本復(fù)雜度可以幫助我們發(fā)現(xiàn)非結(jié)構(gòu)化代碼,63,基本復(fù)雜度的優(yōu)勢(shì):,揭示代碼的質(zhì)量,預(yù)測(cè)維護(hù)代碼和分接代碼所需的工作量,適用于任何編程語(yǔ)言,分析一個(gè)模塊,測(cè)量程序邏輯非結(jié)構(gòu)化程度,64,Analysing a M
29、odule,分析一個(gè)模塊,模塊設(shè)計(jì)復(fù)雜度Module Design Complexity (iv(G).,模塊不會(huì)孤立存在,測(cè)試模塊是如何“管理”的,測(cè)量將模塊集成到系統(tǒng)中需要多少測(cè)試工作量?,模塊通常要調(diào)用子模塊,模塊依賴于其他模塊所提供的服務(wù),模塊間相互調(diào)用,我們知道.,那么我們能否.,65,分析一個(gè)模塊,模塊設(shè)計(jì)復(fù)雜度(iv(G).,模塊設(shè)計(jì)復(fù)雜度是一個(gè)模塊與調(diào)用其他模塊相關(guān)的結(jié)構(gòu)復(fù)雜程度,縮寫為 iv(G),量化了一個(gè)模塊和相關(guān)模塊集成的測(cè)試工作量,模塊設(shè)計(jì)復(fù)雜度高意味著:,控制耦合程度高。對(duì)以下情況來(lái)說(shuō),困難程度加大:,隔離,維護(hù),重用,66,分析一個(gè)模塊,模塊設(shè)計(jì)復(fù)雜度的計(jì)算方法.
30、,模塊設(shè)計(jì)復(fù)雜度是程序流圖按下述方法簡(jiǎn)化后的圈復(fù)雜度. 簡(jiǎn)化方法是去除那些不影響子模塊調(diào)用控制的判定、循環(huán)、和節(jié)點(diǎn)(直接子模塊),67,所以,iv(G) = 3,v(G) = 3,iv(G) = 3,main() if (a = b) progd(); if (m = n) proge(); switch(expression) case value_1: statement1; break; case value_2: statement2; break; case value_3: statement3; ,v(G) = 5,分析一個(gè)模塊,Example.,68,模塊設(shè)計(jì)復(fù)雜度的優(yōu)勢(shì),度量
31、一個(gè)模塊對(duì)其子模塊的管理任務(wù),評(píng)估一個(gè)模塊與其直接子模塊之間的最小的集成測(cè)試量,區(qū)別兩個(gè)模塊,分析一個(gè)模塊,適用于任何編程語(yǔ)言,且使用簡(jiǎn)單,通過(guò)復(fù)雜的計(jì)算邏輯 ,以及使程序設(shè)計(jì)真正復(fù)雜化的因素,作為程序設(shè)計(jì)和集成復(fù)雜度計(jì)算的基礎(chǔ),69,分析一個(gè)模塊,低復(fù)雜度模塊舉例.,Cyclomatic 7 Essential 1 Design 4,可靠,Simple logic,Not error-prone,Easy to test,可維護(hù),Good structure,Easy to understand,Easy to modify,70,分析一個(gè)模塊,適度復(fù)雜度模塊舉例.,Cyclomatic 1
32、6 Essential 1 Design 3,不可靠,Complicated logic,Error-prone,Hard to test,可維護(hù),Can be understood,Can be modified,Complexity can be reduced,71,分析一個(gè)模塊,高復(fù)雜度模塊舉例.,Cyclomatic 22 Essential 22 Design 6,不可靠,Error-prone,Very hard to test,不可維護(hù),Hard to understand,Hard to modify,Hard to reduce complexity,72,分析一個(gè)模塊,C
33、yclomatic192 Essential 151 Design 36,Problem: 大小和復(fù)雜度遠(yuǎn)在限定邊界之外的軟件沒(méi)有希望,To error-prone to use,Too complex to fix,Solution: 在開(kāi)發(fā)和維護(hù)過(guò)程中控制復(fù)雜度,遠(yuǎn)離限定邊界,Too large to redevelope,73,程序級(jí)度量,測(cè)量程序設(shè)計(jì)的復(fù)雜性,確定最少的、有效的集成測(cè)試量,幫助評(píng)估變更的影響,74,設(shè)計(jì)復(fù)雜度Design Complexity (S0),定量評(píng)估程序中模塊間的相互影響,縮寫為 S0,系統(tǒng)各組成部分模塊設(shè)計(jì)復(fù)雜度的匯總,程序級(jí)度量,評(píng)估自底向上集成測(cè)試所需
34、的工作量,全面評(píng)測(cè)程序設(shè)計(jì)復(fù)雜度和程序大小,不考慮單個(gè)模塊的內(nèi)部計(jì)算結(jié)果,設(shè)計(jì)復(fù)雜度高的系統(tǒng)經(jīng)常:,Have complex interactions between components,Tend to be difficult to maintain,75,設(shè)計(jì)復(fù)雜度的計(jì)算方法,S0 是系統(tǒng)中各模塊設(shè)計(jì)復(fù)雜度的綜合,用下式計(jì)算,程序級(jí)度量,S0 = iv(G),76,程序級(jí)度量,How can we assess the complexity of this design ?,S0計(jì)算舉例:.,77,程序級(jí)度量,System Design Complexity S0 = Module De
35、sign Complexity (iv(G),S0 = iv(G),S0 = 2 + 3 + 2 + 1 + 1,S0 = 9,S0計(jì)算舉例:.,78,設(shè)計(jì)復(fù)雜度的優(yōu)勢(shì):,適用于整個(gè)程序,包括子系統(tǒng),說(shuō)明總的設(shè)計(jì)復(fù)雜度, 反映每個(gè)模塊和所有內(nèi)部模塊的控制的復(fù)雜性,揭示代碼的質(zhì)量,揭示程序中模塊調(diào)用的復(fù)雜度,方便計(jì)算集成復(fù)雜度integration complexity (S1 ),程序級(jí)度量,79,集成復(fù)雜度Integration Complexity (S1),衡量必須的集成測(cè)試量。換句話說(shuō),集成復(fù)雜度就是程序中獨(dú)立的線性子樹(shù)的數(shù)目。 所謂子樹(shù), 是調(diào)用子模塊和從子模塊返回的順序,縮寫為 S
36、1,程序級(jí)度量,80,集成復(fù)雜度的計(jì)算方法.,集成復(fù)雜度的計(jì)算類似于模塊圈復(fù)雜度的計(jì)算. 先計(jì)算好完全測(cè)試所需的集成測(cè)試數(shù)n, S1 由下式計(jì)算:,程序級(jí)度量,S1 = S0 - n + 1,81,程序級(jí)度量,What is required to test the integration of this system?,What is the minimum number of tests to exercise the interaction of each of these modules?,集成復(fù)雜度計(jì)算舉例.,82,程序級(jí)度量,S0 = iv(G),S0 = 2 + 3 + 2 +
37、1 + 1,S0 = 9,集成復(fù)雜度計(jì)算舉例.,83,程序級(jí)度量,S1 = S0 - n + 1,S1 = 9 - 5 + 1,S0 = 9,S1 = 5,集成復(fù)雜度計(jì)算舉例.,84,集成復(fù)雜度的優(yōu)勢(shì):,作為集成測(cè)試的基礎(chǔ),量化了集成測(cè)試的工作量,描述了系統(tǒng)設(shè)計(jì)的復(fù)雜度,從總量中分離出系統(tǒng)復(fù)雜度,無(wú)判定邏輯的模塊對(duì) S1不產(chǎn)生影響,程序級(jí)度量,85,全局?jǐn)?shù)據(jù)復(fù)雜度Global Data Complexity (gdv(G).,模塊中與全局?jǐn)?shù)據(jù)、參量相關(guān)聯(lián)的結(jié)構(gòu)復(fù)雜性的一種定量描述。全局?jǐn)?shù)據(jù)指可以被多個(gè)模塊訪問(wèn)的數(shù)據(jù),縮寫為 gdv(G),表明模塊對(duì)外部數(shù)據(jù)的依賴程度,數(shù)據(jù)度量,評(píng)估與全局?jǐn)?shù)據(jù)有
38、關(guān)的測(cè)試工作量,也可衡量每個(gè)模塊對(duì)系統(tǒng)數(shù)據(jù)耦合的影響,因此可以查出潛在的維護(hù)問(wèn)題,86,全局?jǐn)?shù)據(jù)復(fù)雜度的計(jì)算方法.,將所有不包含全局變量和參數(shù)的判定和循環(huán)都視為直線代碼,再計(jì)算此時(shí)的圈復(fù)雜度就得到全局?jǐn)?shù)據(jù)復(fù)雜度,數(shù)據(jù)度量,不大于原流圖的圈復(fù)雜度,典型值都很小,87,數(shù)據(jù)度量,subroutine(x) if (c1) if (c2) x = y + n; if (c3) z = y + m; else printf (message1); if (z 10) printf (message2); flaga = 1; if (c5) moda(x); else printf (message3
39、); ,gdv(G)x = 3,全局?jǐn)?shù)據(jù)復(fù)雜度計(jì)算舉例.,88,全局?jǐn)?shù)據(jù)復(fù)雜度的優(yōu)勢(shì).,分離出具有最高外部數(shù)據(jù)耦合的模塊,揭示代碼的質(zhì)量,結(jié)合控制流和數(shù)據(jù)分析給出軟件的全面評(píng)價(jià),數(shù)據(jù)度量,89,指定數(shù)據(jù)復(fù)雜度Specified Data Complexity (sdv(G).,模塊中與用戶數(shù)據(jù)相關(guān)聯(lián)的結(jié)構(gòu)復(fù)雜度的一種定量描述,縮寫為 sdv(G),數(shù)據(jù)度量,90,指定數(shù)據(jù)復(fù)雜度的計(jì)算方法.,將所有不包含指定數(shù)據(jù)元素的判定和循環(huán)都視為直線代碼,再計(jì)算此時(shí)的圈復(fù)雜度就得到指定數(shù)據(jù)復(fù)雜度,數(shù)據(jù)度量,指定數(shù)據(jù)復(fù)雜度就是簡(jiǎn)化后流圖的圈復(fù)雜度,91,指定數(shù)據(jù)復(fù)雜度計(jì)算舉例,數(shù)據(jù)度量,sdvz = 3,ma
40、in() if (c1) if (c2) x = y + n; if (c3) z = y + m; else pritf (message1); if (z 10) printf (message2) flaga = 1; if (c5) moda(x); else printf (message3); ,92,指定數(shù)據(jù)復(fù)雜度的優(yōu)勢(shì).,表明一個(gè)模塊與指定數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù)復(fù)雜程度,等于(用來(lái)測(cè)試指定數(shù)據(jù)所有應(yīng)用的)基本測(cè)試路徑數(shù),可分析數(shù)據(jù)結(jié)構(gòu)變化對(duì)軟件的影響,數(shù)據(jù)度量,93,其他復(fù)雜度度量.,Henry and Kafura metrics,模塊之間的耦合(parameters, global variables, calls),其他度量,模塊和系統(tǒng)復(fù)雜性; 通過(guò)參數(shù)和全局變量的耦合程度,模塊性或耦合; 結(jié)構(gòu)的復(fù)雜度 (結(jié)構(gòu)圖的最大深度); 調(diào)用,結(jié)構(gòu)流圖的模塊性,Bowles metrics,Troy and Zweben metrics,Ligier metrics,Source: Software Engineering Institute Carnegie Mellon,94,McCabe 度量,McCabe度量標(biāo)準(zhǔn)與軟件質(zhì)量.,Cyclomatic Complexity v(G),易理解,測(cè)試工作量,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 化妝培訓(xùn)課件
- 護(hù)理人員行為規(guī)范與職業(yè)素養(yǎng)
- 中醫(yī)院遷建項(xiàng)目運(yùn)營(yíng)管理方案
- 扶貧互助社培訓(xùn)
- 2025年益陽(yáng)網(wǎng)絡(luò)預(yù)約出租車考試題庫(kù)
- 肩關(guān)節(jié)半脫位護(hù)理措施
- 護(hù)理沙龍活動(dòng)分享策劃案
- 老舊小區(qū)建設(shè)項(xiàng)目運(yùn)營(yíng)管理方案
- 2025年新疆貨運(yùn)從業(yè)資格證考試題目和答案解析
- 喂出來(lái)教學(xué)課件
- 2024年馬鞍山含山縣招聘高中教師筆試真題
- 高中數(shù)學(xué)第九、十章統(tǒng)計(jì)與概率章節(jié)測(cè)試卷-2024-2025學(xué)年高一下學(xué)期數(shù)學(xué)人教A版(2019)必修第二冊(cè)
- 【真題】五年級(jí)下學(xué)期數(shù)學(xué)期末試卷(含解析)四川省成都市高新技術(shù)產(chǎn)業(yè)開(kāi)發(fā)區(qū)2023-2024學(xué)年
- 種植質(zhì)量安全管理制度
- 2025至2030中國(guó)大型發(fā)電機(jī)行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 中國(guó)歌劇舞劇院管理制度
- 2025年?duì)t外精煉工職業(yè)技能理論知識(shí)考試題庫(kù)(含答案)
- 外墻真石漆修補(bǔ)方案(3篇)
- 2025至2030中國(guó)海洋石油行業(yè)市場(chǎng)發(fā)展分析及競(jìng)爭(zhēng)格局與投資發(fā)展報(bào)告
- 2025年安徽省中考數(shù)學(xué)試卷真題(含標(biāo)準(zhǔn)答案)
- 2025至2030年中國(guó)高純氧化鎂行業(yè)市場(chǎng)運(yùn)行格局及前景戰(zhàn)略分析報(bào)告
評(píng)論
0/150
提交評(píng)論