![軟件質(zhì)量與結(jié)構(gòu)化測試已讀版修正版課件_第1頁](http://file4.renrendoc.com/view/fa3c36787c322d3556381d5ae48447f0/fa3c36787c322d3556381d5ae48447f01.gif)
![軟件質(zhì)量與結(jié)構(gòu)化測試已讀版修正版課件_第2頁](http://file4.renrendoc.com/view/fa3c36787c322d3556381d5ae48447f0/fa3c36787c322d3556381d5ae48447f02.gif)
![軟件質(zhì)量與結(jié)構(gòu)化測試已讀版修正版課件_第3頁](http://file4.renrendoc.com/view/fa3c36787c322d3556381d5ae48447f0/fa3c36787c322d3556381d5ae48447f03.gif)
![軟件質(zhì)量與結(jié)構(gòu)化測試已讀版修正版課件_第4頁](http://file4.renrendoc.com/view/fa3c36787c322d3556381d5ae48447f0/fa3c36787c322d3556381d5ae48447f04.gif)
![軟件質(zhì)量與結(jié)構(gòu)化測試已讀版修正版課件_第5頁](http://file4.renrendoc.com/view/fa3c36787c322d3556381d5ae48447f0/fa3c36787c322d3556381d5ae48447f05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ualitySoftware軟件質(zhì)量與結(jié)構(gòu)化測試1ualitySoftware軟件質(zhì)量與結(jié)構(gòu)化測試1內(nèi)容提要什么是軟件質(zhì)量軟件質(zhì)量特性與質(zhì)量模型軟件質(zhì)量的度量常用軟件度量方法McCabe復(fù)雜度結(jié)構(gòu)化測試技術(shù)2內(nèi)容提要什么是軟件質(zhì)量2TestingMaintenanceDesignCoding軟件開發(fā)3TestingMaintenanceDesignCodingMaintenance軟件開發(fā)的工作分配DesignCodingTesting4Maintenance軟件開發(fā)的工作分配DesignCodi什么是軟件質(zhì)量“Thetotalityoffeaturesandcharacteristicsofaproductorservicethatbearonitsabilitytosatisfystatedorimpliedneeds”(ISO8402) 與軟件產(chǎn)品滿足規(guī)定的和隱含的需求的能力有關(guān)的特征或特性的全體Thedegreeofexcellence 軟件的優(yōu)秀程度“Theabilityofasoftwareproducttosatisfyitsspecifiedrequirements”(DoD-STD-2168) 軟件產(chǎn)品滿足其規(guī)定的需求的能力5什么是軟件質(zhì)量“Thetotalityoffeatur什么是軟件質(zhì)量“Thedegreetowhichasystem,component,orprocessmeetsspecifiedrequirements.”(IEEEstandard610.12-1990)
一個(gè)系統(tǒng)、組件或過程滿足規(guī)定的需求的程度“Thedegreetowhichasystem,component,orprocessmeetscustomeroruserneedsorexpectations.”(IEEEstandard610.12-1990)
一個(gè)系統(tǒng)、組件或過程滿足客戶或用戶的需求的程度,或滿足期望值的程度6什么是軟件質(zhì)量“ThedegreetowhichaISO9126SoftwareQuality:軟件質(zhì)量
Thetotalityoffeaturesandcharacteristicsofasoftwareproductthatbearonitsabilitytosatisfystatedorimpliedneeds.
與軟件產(chǎn)品滿足規(guī)定的和隱含的需求的能力有關(guān)的特征或特性的全體SoftwareQualityCharacteristics:軟件質(zhì)量特性
Asetofattributesofasoftwareproductbywhichitsabilityisdescribedandevaluated.Asoftwarequalitycharacteristicmayberefinedintomultiplelevelsofsub-characteristics.軟件質(zhì)量特性是軟件產(chǎn)品的一組屬性,用來對(duì)軟件的能力進(jìn)行描述和評(píng)估。軟件質(zhì)量特性可細(xì)分為多層次的子特性。SoftwareQualityMetric:軟件質(zhì)量度量
Aquantitativescaleandmethodwhichcanbeusedtodeterminethevalueafeaturetakesforaspecificsoftwareproduct.用于確定軟件產(chǎn)品質(zhì)量特性的定量的衡量和分析方法7ISO9126SoftwareQuality:軟件質(zhì)量S用戶角度供應(yīng)商的角度QualityinSoftware軟件過程商業(yè)價(jià)值易于修改可實(shí)現(xiàn)性可靠性更少的bug多功能性特征的多少8用戶角度供應(yīng)商的角度QualityinSoftware軟縮短時(shí)間表“Qualitydoesnothappenbymistake!”為什么質(zhì)量差?壓縮的預(yù)算人員的變化用戶需求的改變提高或增加功能或性能BugFixing無效的測試9縮短時(shí)間表“Qualitydoesnothappen軟件質(zhì)量保證(QA)原則
質(zhì)量不必是“最好”的質(zhì)量是用戶想要的和愿意購買的
范圍QAismorethantestingQAnotonlyattheendoftheprojectQAofproductandprocess
格言
Movingfromqualitycontrolling(expost)topreventionbyqualityservice. 通過質(zhì)量服務(wù)把質(zhì)量控制變換到預(yù)防
10軟件質(zhì)量保證(QA)原則范圍格言10QualityCharacteristics
質(zhì)量特征可靠性性能可維護(hù)性健壯性用戶友好性ISO912611QualityCharacteristics
質(zhì)量特征可靠SoftwareComplexity軟件產(chǎn)品系統(tǒng)體系復(fù)雜性模塊文本復(fù)雜性模塊的結(jié)構(gòu)復(fù)雜Asoftwareproductisasolutionofaproblem.Thecomplexityofthesolutiongenerallydependsonthecomplexityoftheproblem.12SoftwareComplexity軟件產(chǎn)品系統(tǒng)體系復(fù)雜性QualityModels分配用戶需求
QualityFactors(質(zhì)量因素)到開發(fā)標(biāo)準(zhǔn)
QualityCriteria(質(zhì)量標(biāo)準(zhǔn))到可證明的和測量的值
Metrics(度量)13QualityModels分配用戶需求到開發(fā)標(biāo)準(zhǔn)到可證明的軟件質(zhì)量的因子-標(biāo)準(zhǔn)-度量關(guān)系質(zhì)量樹的概念QUALITYFACTOR1FACTORIFACTORLCRITERIA1CRITERIAJCRITERIAMMETRICKMETRIC1METRICN14軟件質(zhì)量的因子-標(biāo)準(zhǔn)-度量關(guān)系質(zhì)量樹的概念QUALITYFATheMetricsFACTORSCRITERIAMETRICS可維護(hù)性自描述性簡單性簡明性模塊化嵌套級(jí)別數(shù)行數(shù)可執(zhí)行語句數(shù)操作數(shù)頻率語句平均長度組件級(jí)別注釋率-----------------15TheMetricsFACTORSCRITERIAMETRBoehm質(zhì)量模型16Boehm質(zhì)量模型16McCallModel17McCallModel17質(zhì)量與質(zhì)量管理質(zhì)量要用需求,可接受性和它們達(dá)到的證據(jù)來衡量質(zhì)量是通過解決問題實(shí)現(xiàn)的質(zhì)量管理確保前面解決過的問題不再出現(xiàn)沒有質(zhì)量測量來做質(zhì)量管理只能是幻想18質(zhì)量與質(zhì)量管理質(zhì)量要用需求,可接受性和它們達(dá)到的證據(jù)來衡量質(zhì)測量工具的好處支持質(zhì)量管理系統(tǒng)開發(fā)工程師可以自己檢查支持代碼評(píng)審評(píng)價(jià)外部軟件支持測試19測量工具的好處支持質(zhì)量管理系統(tǒng)開發(fā)工程師可以自己檢查支持代碼ualitySoftwareMetrics20ualitySoftwareMetrics20什么是度量(Metric)?任何測量的單位e.g.Cm,Litre,Ohm,Second,Color描述一個(gè)實(shí)體的屬性度量的類型:和項(xiàng)目相關(guān)時(shí)間表/開支估算測量功能點(diǎn)軟件度量21什么是度量(Metric)?任何測量的單位描述一個(gè)實(shí)體的′只有當(dāng)你對(duì)你所談到的東西進(jìn)行測量,并用數(shù)量表示出來時(shí),你就對(duì)它有了一定了解,反之,你對(duì)它并沒有真正的了解.′LordKelvin,1889′Youcan‘tcontrolwhatyoucan‘tmeasure.′DeMarco,1982軟件質(zhì)量度量22′只有當(dāng)你對(duì)你所談到的東西進(jìn)行測量,并用數(shù)量表示出來時(shí),你就測量非常有用,但我們必須先解決如下問題:5.1o-1s測量Whatdowewanttomeasure?測量什么Howdowemeasure?如何測n?Whatdothemeasurementsmea
測量的意義何在23測量非常有用,但我們必須先解決如下問題:5.1o-1s測量W復(fù)雜性尺寸測試路徑冗余結(jié)構(gòu)模塊性可維護(hù)性可靠性可復(fù)用性可測量的不可測量的5.2o-2sWhattoMeasure?24復(fù)雜性尺寸測試路徑冗余結(jié)構(gòu)模塊性可維護(hù)性可靠性可復(fù)用性直觀的GoodMetricsshould:和錯(cuò)誤出現(xiàn)有直接關(guān)系好的度量GoodMetricsmust:客觀的語言獨(dú)立和測試努力直接有關(guān)自動(dòng)化簡單25直觀的GoodMetricsshould:和錯(cuò)誤出現(xiàn)有直提高質(zhì)量4.1s測量確定質(zhì)量TimeQuality防止質(zhì)量退化輔助做出決策理解提高生產(chǎn)力確定變更的影響風(fēng)險(xiǎn)分析測試確保質(zhì)量提高測試效率26提高質(zhì)量4.1s測量確定質(zhì)量TimeQuality防止質(zhì)量退Metrics++HalsteadMetrics霍爾斯特德度量可用的軟件度量包括:FunctionPoint功能點(diǎn)
LineCountMetrics線計(jì)數(shù)度量McCabeMetrics圈復(fù)雜度DataMetricsSystemLevelMetricsOOMetricsDerivedMetrics27Metrics++HalsteadMetricsHalsteadMetrics起源:1977年,由MauriceHalstead開發(fā)介紹計(jì)算模塊的操作數(shù)和操作符,直接得出模塊的復(fù)雜程度的一種定量測試方法通過源代碼測量模塊的復(fù)雜度,重點(diǎn)是復(fù)雜性的計(jì)算應(yīng)用于代碼,經(jīng)常作為一種維護(hù)性度量自誕生之日起,就充滿爭議28HalsteadMetrics起源:1977年,由Maur技術(shù)Halstead度量主要基于以下四層源自程序代碼的統(tǒng)計(jì)數(shù)值:n1=thenumberofdistinct(獨(dú)立的)operators操作符 n2=thenumberofdistinctoperands操作數(shù) N1=thetotalnumberofoperators N2=thetotalnumberofoperands Measure
Symbol
Formula
Programlength長度 N N=N1+N2Programvocabulary詞匯量 n n=n1+n2Volume容量 V V=N*(LOG2n)Difficulty難度 D D=(n1/2)*(N2/n2)Effort工作量 E E=D*Vfromtheabove,fivemeasuresarederived...HalsteadMetrics29技術(shù)Halstead度量主要基于以下四層源自程序代碼的統(tǒng)計(jì)數(shù)HalsteadMetrics優(yōu)勢(shì):不必深入分析程序的結(jié)構(gòu)預(yù)測錯(cuò)誤的數(shù)目預(yù)測維護(hù)的工作量對(duì)報(bào)告和計(jì)劃項(xiàng)目的健康程度有幫助對(duì)整個(gè)程序有幫助計(jì)算簡單適合任何編程語言
經(jīng)過很多工業(yè)研究,都支持使用Halstead來預(yù)測開發(fā)工作量和平均bugs
30HalsteadMetrics優(yōu)勢(shì):不必深入分析程序的結(jié)構(gòu)FunctionPoints起源:1977由A.J.Albrecht開發(fā)設(shè)計(jì)測量軟件的大小和生產(chǎn)力技術(shù):將基本功能點(diǎn)分為5組:outputs輸出inquiries查詢inputs輸入files文件interfaces接口功能點(diǎn)就是最終用戶的業(yè)務(wù)功能,比如對(duì)輸入的查詢.和軟件完成的功能緊密相關(guān)31FunctionPoints起源:1977由A.J.AFunctionPoints優(yōu)勢(shì):對(duì)以下情況,通常被公認(rèn)為是一種有效方法:較大的用戶群;InternationalFunctionPointGroup(IFPG)多于1,200會(huì)員公司
建立每小時(shí)功能點(diǎn)的生產(chǎn)率評(píng)估對(duì)需求的支持評(píng)估軟件工程的大小(以及周期)軟件模塊比較的標(biāo)準(zhǔn)化評(píng)估系統(tǒng)變更的開銷IFPG提供功能點(diǎn)實(shí)踐手冊(cè),以及標(biāo)準(zhǔn)化的實(shí)踐活動(dòng)Source:SoftwareEngineeringInstituteCarnegieMellon32FunctionPoints優(yōu)勢(shì):對(duì)以下情況,通常被公認(rèn)為LineCountMetrics表明每個(gè)模塊的行數(shù),包括代碼,注釋,空白行,混合代碼和注釋.技術(shù)LOC可分為以下幾類:Lines-of-Code(LOC)metrics提供代碼的總額,但是對(duì)內(nèi)容的測量不太好blanks- Lineswithonlyspace(eg.spaceandtabs)ornotextcommentcode- Sourcelinesofcodethatcontainonlycodeandwhitespacecomments- SourcelinesofcodethatarepurelycommentsMixed- Linesthatcontainbothcodeandcomments33LineCountMetrics表明每個(gè)模塊的行數(shù),包LineCountMetrics優(yōu)勢(shì):測量軟件的物理尺寸鑒別特殊行,如注釋行和空行幫助查明難以理解的模塊.(Commentlinesoftenincreasereadability,althoughanunusuallylargenumberofcommentscanindicatethatthemoduleisdifficulttounderstand.)34LineCountMetrics優(yōu)勢(shì):測量軟件的物理尺寸McCabeMetrics起源:圈復(fù)雜度(CyclomaticComplexity)由ThomasMcCabe于1976提出測量貫穿程序模塊的獨(dú)立線性路徑數(shù)提供了比較兩個(gè)程序復(fù)雜度的一種簡單的指標(biāo)通常被稱為程序復(fù)雜度或McCabe復(fù)雜度35McCabeMetrics起源:圈復(fù)雜度(CyclomatMcCabeMetrics優(yōu)勢(shì):廣泛應(yīng)用的靜態(tài)軟件度量
和其他度量互補(bǔ)
獨(dú)立于開發(fā)語言擴(kuò)展到可以包括設(shè)計(jì)和結(jié)構(gòu)復(fù)雜度
基于軟件結(jié)構(gòu)的嚴(yán)格的數(shù)學(xué)分析36McCabeMetrics優(yōu)勢(shì):廣泛應(yīng)用的靜態(tài)軟件度量和McCabeMetrics優(yōu)勢(shì):可以應(yīng)用到幾個(gè)領(lǐng)域:維護(hù)的風(fēng)險(xiǎn)分析Codecomplexitytendstoincreasethroughmaintenanceovertime.Bymeasuringbeforeandaftercomplexitycanbemonitored,managedandminimisetheriskofchange.代碼開發(fā)的風(fēng)險(xiǎn)分析:whileunderdevelopment,complexitycanbemeasuredforinherentriskandriskbuildup.測試的計(jì)劃Cyclomaticcomplexitygivestheexactnumberoftestsneededtotesteverydecisionpoint.Thisaidsintestplanning.Highlycomplexmodulesrequireaprohibitivenumberofteststeps,thatnumbercanbereducedtoamorepragmaticsizebybreakingthemoduleintosmallerlesscomplexsubmodules.再工程Cyclomaticcomplexityanalysisprovidesinsighttothestructureofcode.Reengineeringriskisrelatedtothecodecomplexity.Thisinsighthelpswithcostandriskanalysis.37McCabeMetrics優(yōu)勢(shì):可以應(yīng)用到幾個(gè)領(lǐng)域:維護(hù)McCabeMetricsMcCabe度量包括...Cyclomaticcomplexity(v(G))Essentialcomplexity(ev(G))Moduledesigncomplexity(iv(G))Designcomplexity(S0)Integrationcomplexity(S1)DatacomplexityGlobaldatacomplexity(gdv(G))Specifieddatacomplexity(sdv(G))38McCabeMetricsMcCabe度量包括...CyIsconstructedfromwrittencode分析一個(gè)模塊結(jié)構(gòu)流圖...一種描述軟件模塊邏輯的結(jié)構(gòu)圖Isavisualizationofthemodule’sdecisionlogic39Isconstructedfromwrittenco分析一個(gè)模塊流圖符號(hào)
(箭頭)稱為“邊”(edge),代表控制流(圓圈)稱為“節(jié)點(diǎn)”(node),代表一個(gè)或多個(gè)語句動(dòng)作由節(jié)點(diǎn)和邊圍成的范圍稱為“域”(region),在計(jì)算域時(shí),圖形外的區(qū)域也應(yīng)算做一個(gè)“域”判定節(jié)點(diǎn),指包含條件的節(jié)點(diǎn)40分析一個(gè)模塊流圖符號(hào)40If..thenIf..then..elseIf..and..thenIf..or..thenDo..WhileWhile..DoSwitch分析一個(gè)模塊C語言流圖符號(hào)41If..thenIf..then..elseIf分析一個(gè)模塊Flowgraphs…C程序舉例
function_test(y)0 { x=3;1 if(y<4)2 x=sin(y); else3 x=cos(y);4 x=x*x;5 }42分析一個(gè)模塊Flowgraphs…C程序舉例 functio分析一個(gè)模塊Flowgraphs…C程序舉例0
function_test(y)0 { x=3;1 if(y<4)2 x=sin(y); else3 x=cos(y);4 x=x*x;5 }43分析一個(gè)模塊Flowgraphs…C程序舉例0 functi分析一個(gè)模塊Flowgraphs…C程序舉例0132
function_test(y)0 { x=3;1 if(y<4)2 x=sin(y); else3 x=cos(y);4 x=x*x;5 }44分析一個(gè)模塊Flowgraphs…C程序舉例0132 fun分析一個(gè)模塊Flowgraphs…C程序舉例013452
function_test(y)0 { x=3;1 if(y<4)2 x=sin(y); else3 x=cos(y);4 x=x*x;5 }45分析一個(gè)模塊Flowgraphs…C程序舉例013452 f分析一個(gè)模塊ExerciseonFlowgraphs1
IF condition2 statement3 ENDIF4 statement5 WHILEcondition6 DOSWITCH7 Label18 statement9 Label210 statement11 Default12 statement13 ENDSWITCH14 ENDWHILE46分析一個(gè)模塊ExerciseonFlowgraphs1 分析一個(gè)模塊圈復(fù)雜度(v(G))...是模塊結(jié)構(gòu)復(fù)雜程度的一種度量。定義為貫穿模塊的獨(dú)立線行路徑數(shù),因此,它也是預(yù)防錯(cuò)誤所需的最小測試路徑數(shù)縮寫為v(G)圈復(fù)雜度過高,表明模塊的質(zhì)量較差,且難于理解與維護(hù)經(jīng)驗(yàn)研究表明,在模塊錯(cuò)誤與圈復(fù)雜度之間存在較強(qiáng)的關(guān)聯(lián)性47分析一個(gè)模塊圈復(fù)雜度(v(G))...是模塊結(jié)構(gòu)復(fù)雜程度的三種方法:
Allmethodsprovidesameresult公式斷言(判定節(jié)點(diǎn))區(qū)域分析一個(gè)模塊圈復(fù)雜度的計(jì)算...48三種方法:
Allmethodsprovidesame公式法
分析一個(gè)模塊圈復(fù)雜度的計(jì)算...計(jì)算所有的邊(e)和節(jié)點(diǎn)(n)使用公式V(G)=e-n+2ExampleV(G)=e-n+249公式法
分析一個(gè)模塊圈復(fù)雜度的計(jì)算...計(jì)算所有的邊(e)和分析一個(gè)模塊圈復(fù)雜度的計(jì)算...123456147815910111213公式法
計(jì)算所有的邊(e)和節(jié)點(diǎn)(n)使用公式V(G)=e-n+2Examplee=1550分析一個(gè)模塊圈復(fù)雜度的計(jì)算...12345614781591分析一個(gè)模塊圈復(fù)雜度的計(jì)算...132546710121198公式法
計(jì)算所有的邊(e)和節(jié)點(diǎn)(n)使用公式V(G)=e-n+2Examplen=1251分析一個(gè)模塊圈復(fù)雜度的計(jì)算...13254671012119分析一個(gè)模塊圈復(fù)雜度的計(jì)算...公式法
計(jì)算所有的邊(e)和節(jié)點(diǎn)(n)使用公式V(G)=e-n+2ExampleV(G)=15-12+2V(G)=552分析一個(gè)模塊圈復(fù)雜度的計(jì)算...公式法
計(jì)算所有的邊(e)和斷言(判定節(jié)點(diǎn))法
分析一個(gè)模塊圈復(fù)雜度的計(jì)算...計(jì)算所有的斷言(P)使用V(G)=P+1ExampleV(G)=4+1V(G)=5V(G)=P+153斷言(判定節(jié)點(diǎn))法
分析一個(gè)模塊圈復(fù)雜度的計(jì)算...計(jì)算所有區(qū)域法
分析一個(gè)模塊圈復(fù)雜度的計(jì)算...計(jì)算所有的由邊和節(jié)點(diǎn)所圍成的區(qū)域(R),注意最外圍也算一個(gè)區(qū)域使用V(G)=RExampleV(G)=RV(G)=514325如果線條有交叉時(shí)會(huì)發(fā)生錯(cuò)誤54區(qū)域法
分析一個(gè)模塊圈復(fù)雜度的計(jì)算...計(jì)算所有的由邊和節(jié)點(diǎn)分析一個(gè)模塊v(G)=e-n+2v(G)=22-18+2v(G)=6練習(xí):CyclomaticComplexity(v(G))55分析一個(gè)模塊v(G)=e-n+2練習(xí):Cyclom圈復(fù)雜度度量法的優(yōu)勢(shì)預(yù)測軟件潛在錯(cuò)誤的比率指出過于復(fù)雜需要分解的模塊通過限制程序的邏輯量來指導(dǎo)測試過程幫助管理測試和維護(hù)的資源(基于復(fù)雜度)分析一個(gè)模塊應(yīng)用任何語言和易于應(yīng)用使程序易于理解易于測試56圈復(fù)雜度度量法的優(yōu)勢(shì)預(yù)測軟件潛在錯(cuò)誤的比率指出過于復(fù)雜需要分析一個(gè)模塊基本復(fù)雜度EssentialComplexity(ev(G))...一個(gè)模塊包含“非結(jié)構(gòu)化結(jié)構(gòu)”的程度縮寫為(ev(G))基本復(fù)雜度高,表明模塊的結(jié)構(gòu)“不夠良好”降低代碼的質(zhì)量維護(hù)工作加重很難分割模塊在維護(hù)時(shí)修改一個(gè)錯(cuò)誤經(jīng)常引入其他錯(cuò)誤57分析一個(gè)模塊基本復(fù)雜度EssentialComplexit分析一個(gè)模塊基本復(fù)雜度的計(jì)算方法...將模塊結(jié)構(gòu)流圖按結(jié)構(gòu)化方法進(jìn)行簡化(去除結(jié)構(gòu)良好的部分),再計(jì)算簡化后的圈復(fù)雜度就得到基本復(fù)雜度ev(G)58分析一個(gè)模塊基本復(fù)雜度的計(jì)算方法...將模塊結(jié)構(gòu)流圖按結(jié)構(gòu)化CyclomaticComplexity=4McCabe’sEssentialComplexityev(G)RemovestructuredelementsandrecalculatethecomplexityEssentialComplexity=1分析一個(gè)模塊流圖的簡化...ReducedReduced59CyclomaticMcCabe’sEssentialCBranchingoutofaloopBranchingintoaloopBranchingintoadecisionBranchingoutofadecision分析一個(gè)模塊非結(jié)構(gòu)化邏輯舉例...分支出來的一個(gè)循環(huán)分支為一個(gè)循環(huán)分支出來的判定分支內(nèi)的判定60BranchingoutofaloopBranchiv(G)=5分析一個(gè)模塊基本復(fù)雜度:流圖簡化...簡化后流圖v(G)=3因此ev(G)=3有層次的流圖v(G)=5ev(G)=361v(G)=5分析一個(gè)模塊基本復(fù)雜度:流圖簡化...簡化好的設(shè)計(jì)可以迅速惡化
v(G)=10ev(G)=1
v(G)=11ev(G)=10分析一個(gè)模塊基本復(fù)雜度可以幫助我們發(fā)現(xiàn)非結(jié)構(gòu)化代碼62好的設(shè)計(jì)可以迅速惡化v(G)=10v(G)=基本復(fù)雜度的優(yōu)勢(shì):揭示代碼的質(zhì)量預(yù)測維護(hù)代碼和分接代碼所需的工作量適用于任何編程語言分析一個(gè)模塊測量程序邏輯非結(jié)構(gòu)化程度63基本復(fù)雜度的優(yōu)勢(shì):揭示代碼的質(zhì)量預(yù)測維護(hù)代碼和分接代碼所需的AnalysingaModule分析一個(gè)模塊模塊設(shè)計(jì)復(fù)雜度ModuleDesignComplexity(iv(G))...模塊不會(huì)孤立存在測試模塊是如何“管理”的測量將模塊集成到系統(tǒng)中需要多少測試工作量?模塊通常要調(diào)用子模塊模塊依賴于其他模塊所提供的服務(wù)模塊間相互調(diào)用我們知道….那么我們能否...64AnalysingaModule分析一個(gè)模塊模塊設(shè)計(jì)復(fù)雜分析一個(gè)模塊模塊設(shè)計(jì)復(fù)雜度(iv(G))...模塊設(shè)計(jì)復(fù)雜度是一個(gè)模塊與調(diào)用其他模塊相關(guān)的結(jié)構(gòu)復(fù)雜程度縮寫為iv(G)量化了一個(gè)模塊和相關(guān)模塊集成的測試工作量模塊設(shè)計(jì)復(fù)雜度高意味著:控制耦合程度高。對(duì)以下情況來說,困難程度加大:隔離維護(hù)重用65分析一個(gè)模塊模塊設(shè)計(jì)復(fù)雜度(iv(G))...模塊設(shè)計(jì)復(fù)雜度分析一個(gè)模塊模塊設(shè)計(jì)復(fù)雜度的計(jì)算方法...模塊設(shè)計(jì)復(fù)雜度是程序流圖按下述方法簡化后的圈復(fù)雜度.簡化方法是去除那些不影響子模塊調(diào)用控制的判定、循環(huán)、和節(jié)點(diǎn)(直接子模塊)66分析一個(gè)模塊模塊設(shè)計(jì)復(fù)雜度的計(jì)算方法...模塊設(shè)計(jì)復(fù)雜度是程Main結(jié)構(gòu)流圖proge()progd()所以,
iv(G)=3
v(G)=3iv(G)=3mainprogeprogdmain(){ if(a==b)progd(); if(m==n)proge(); switch(expression) { casevalue_1: statement1; break; casevalue_2: statement2; break; casevalue_3: statement3; }}
v(G)=5分析一個(gè)模塊Example...簡化后流圖proge()progd()Reduced67Main結(jié)構(gòu)流圖proge()progd()所以,i模塊設(shè)計(jì)復(fù)雜度的優(yōu)勢(shì)度量一個(gè)模塊對(duì)其子模塊的管理任務(wù)評(píng)估一個(gè)模塊與其直接子模塊之間的最小的集成測試量區(qū)別兩個(gè)模塊分析一個(gè)模塊適用于任何編程語言,且使用簡單通過復(fù)雜的計(jì)算邏輯,以及使程序設(shè)計(jì)真正復(fù)雜化的因素作為程序設(shè)計(jì)和集成復(fù)雜度計(jì)算的基礎(chǔ)68模塊設(shè)計(jì)復(fù)雜度的優(yōu)勢(shì)度量一個(gè)模塊對(duì)其子模塊的管理任務(wù)評(píng)估一個(gè)分析一個(gè)模塊低復(fù)雜度模塊舉例...Cyclomatic7Essential1Design4可靠SimplelogicNoterror-proneEasytotest可維護(hù)GoodstructureEasytounderstandEasytomodify69分析一個(gè)模塊低復(fù)雜度模塊舉例...Cyclomatic7分析一個(gè)模塊適度復(fù)雜度模塊舉例...Cyclomatic16Essential1Design3不可靠ComplicatedlogicError-proneHardtotest可維護(hù)CanbeunderstoodCanbemodifiedComplexitycanbereduced70分析一個(gè)模塊適度復(fù)雜度模塊舉例...Cyclomatic1分析一個(gè)模塊高復(fù)雜度模塊舉例...Cyclomatic22Essential22Design6不可靠Error-proneVeryhardtotest不可維護(hù)HardtounderstandHardtomodifyHardtoreducecomplexity71分析一個(gè)模塊高復(fù)雜度模塊舉例...Cyclomatic22分析一個(gè)模塊Cyclomatic192Essential151Design36Problem:大小和復(fù)雜度遠(yuǎn)在限定邊界之外的軟件沒有希望Toerror-pronetouseToocomplextofixSolution:在開發(fā)和維護(hù)過程中控制復(fù)雜度遠(yuǎn)離限定邊界Toolargetoredevelope72分析一個(gè)模塊Cyclomatic192Essential程序級(jí)度量測量程序設(shè)計(jì)的復(fù)雜性確定最少的、有效的集成測試量幫助評(píng)估變更的影響73程序級(jí)度量測量程序設(shè)計(jì)的復(fù)雜性確定最少的、有效的集成測試量幫設(shè)計(jì)復(fù)雜度DesignComplexity(S0)定量評(píng)估程序中模塊間的相互影響縮寫為S0系統(tǒng)各組成部分模塊設(shè)計(jì)復(fù)雜度的匯總程序級(jí)度量評(píng)估自底向上集成測試所需的工作量全面評(píng)測程序設(shè)計(jì)復(fù)雜度和程序大小不考慮單個(gè)模塊的內(nèi)部計(jì)算結(jié)果設(shè)計(jì)復(fù)雜度高的系統(tǒng)經(jīng)常:HavecomplexinteractionsbetweencomponentsTendtobedifficulttomaintain74設(shè)計(jì)復(fù)雜度DesignComplexity(S0)定量設(shè)計(jì)復(fù)雜度的計(jì)算方法S0
是系統(tǒng)中各模塊設(shè)計(jì)復(fù)雜度的綜合,用下式計(jì)算…程序級(jí)度量S0=iv(G)75設(shè)計(jì)復(fù)雜度的計(jì)算方法S0是系統(tǒng)中各模塊設(shè)計(jì)復(fù)雜度的綜合,用程序級(jí)度量Howcanweassessthecomplexityofthisdesign?MarketingDevelopmentRevenueSupportMaintenanceS0計(jì)算舉例:...76程序級(jí)度量Howcanweassessthecom程序級(jí)度量SystemDesignComplexityS0=ModuleDesignComplexity(iv(G))
DevelopmentMarketingRevenueSupportMaintenanceIv(G)=2Iv(G)=2Iv(G)=1Iv(G)=3Iv(G)=1S0=iv(G)S0=2+3+2+1+1S0=9S0計(jì)算舉例:...77程序級(jí)度量SystemDesignComplexity設(shè)計(jì)復(fù)雜度的優(yōu)勢(shì):適用于整個(gè)程序,包括子系統(tǒng)說明總的設(shè)計(jì)復(fù)雜度,反映每個(gè)模塊和所有內(nèi)部模塊的控制的復(fù)雜性揭示代碼的質(zhì)量揭示程序中模塊調(diào)用的復(fù)雜度方便計(jì)算集成復(fù)雜度integrationcomplexity(S1)
程序級(jí)度量78設(shè)計(jì)復(fù)雜度的優(yōu)勢(shì):適用于整個(gè)程序,包括子系統(tǒng)說明總的設(shè)計(jì)復(fù)雜集成復(fù)雜度IntegrationComplexity(S1)衡量必須的集成測試量。換句話說,集成復(fù)雜度就是程序中獨(dú)立的線性子樹的數(shù)目。所謂子樹,是調(diào)用子模塊和從子模塊返回的順序縮寫為S1程序級(jí)度量79集成復(fù)雜度IntegrationComplexity(S集成復(fù)雜度的計(jì)算方法.集成復(fù)雜度的計(jì)算類似于模塊圈復(fù)雜度的計(jì)算.先計(jì)算好完全測試所需的集成測試數(shù)n,S1
由下式計(jì)算:程序級(jí)度量S1=S0-n+180集成復(fù)雜度的計(jì)算方法.集成復(fù)雜度的計(jì)算類似于模塊圈復(fù)雜度的計(jì)程序級(jí)度量Whatisrequiredtotesttheintegrationofthissystem?MarketingDevelopmentRevenueSupportMaintenanceWhatistheminimumnumberofteststoexercisetheinteractionofeachofthesemodules?集成復(fù)雜度計(jì)算舉例...81程序級(jí)度量Whatisrequiredtotest程序級(jí)度量DevelopmentMarketingRevenueSupportMaintenanceIv(G)=2Iv(G)=2Iv(G)=1Iv(G)=3Iv(G)=1S0=iv(G)S0=2+3+2+1+1S0=9集成復(fù)雜度計(jì)算舉例...82程序級(jí)度量DevelopmentMarketingReven程序級(jí)度量DevelopmentMarketingRevenueSupportMaintenanceS1=S0
-n+1S1=9-5+1S0=9S1=5集成復(fù)雜度計(jì)算舉例...83程序級(jí)度量DevelopmentMarketingReven集成復(fù)雜度的優(yōu)勢(shì):作為集成測試的基礎(chǔ)量化了集成測試的工作量,描述了系統(tǒng)設(shè)計(jì)的復(fù)雜度從總量中分離出系統(tǒng)復(fù)雜度無判定邏輯的模塊對(duì)S1不產(chǎn)生影響程序級(jí)度量84集成復(fù)雜度的優(yōu)勢(shì):作為集成測試的基礎(chǔ)量化了集成測試的工作量全局?jǐn)?shù)據(jù)復(fù)雜度GlobalDataComplexity(gdv(G))...模塊中與全局?jǐn)?shù)據(jù)、參量相關(guān)聯(lián)的結(jié)構(gòu)復(fù)雜性的一種定量描述。全局?jǐn)?shù)據(jù)指可以被多個(gè)模塊訪問的數(shù)據(jù)縮寫為gdv(G)表明模塊對(duì)外部數(shù)據(jù)的依賴程度數(shù)據(jù)度量評(píng)估與全局?jǐn)?shù)據(jù)有關(guān)的測試工作量也可衡量每個(gè)模塊對(duì)系統(tǒng)數(shù)據(jù)耦合的影響因此可以查出潛在的維護(hù)問題85全局?jǐn)?shù)據(jù)復(fù)雜度GlobalDataComplexity全局?jǐn)?shù)據(jù)復(fù)雜度的計(jì)算方法...將所有不包含全局變量和參數(shù)的判定和循環(huán)都視為直線代碼,再計(jì)算此時(shí)的圈復(fù)雜度就得到全局?jǐn)?shù)據(jù)復(fù)雜度數(shù)據(jù)度量
不大于原流圖的圈復(fù)雜度
典型值都很小86全局?jǐn)?shù)據(jù)復(fù)雜度的計(jì)算方法...將所有不包含全局變量和參數(shù)的判數(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); }}
gdv(G)x=3全局?jǐn)?shù)據(jù)復(fù)雜度計(jì)算舉例...CALLmoda(x)C1C4C5x=y+nC2C3C1C4C5x=y+nCALLmoda(x)C2C3Reduced87數(shù)據(jù)度量subroutine(x)gdv(G)x=3全局?jǐn)?shù)據(jù)復(fù)雜度的優(yōu)勢(shì)...分離出具有最高外部數(shù)據(jù)耦合的模塊揭示代碼的質(zhì)量結(jié)合控制流和數(shù)據(jù)分析給出軟件的全面評(píng)價(jià)數(shù)據(jù)度量88全局?jǐn)?shù)據(jù)復(fù)雜度的優(yōu)勢(shì)...分離出具有最高外部數(shù)據(jù)耦合的模塊指定數(shù)據(jù)復(fù)雜度SpecifiedDataComplexity(sdv(G))...模塊中與用戶數(shù)據(jù)相關(guān)聯(lián)的結(jié)構(gòu)復(fù)雜度的一種定量描述縮寫為sdv(G)數(shù)據(jù)度量89指定數(shù)據(jù)復(fù)雜度SpecifiedDataComplexi指定數(shù)據(jù)復(fù)雜度的計(jì)算方法...將所有不包含指定數(shù)據(jù)元素的判定和循環(huán)都視為直線代碼,再計(jì)算此時(shí)的圈復(fù)雜度就得到指定數(shù)據(jù)復(fù)雜度數(shù)據(jù)度量
指定數(shù)據(jù)復(fù)雜度就是簡化后流圖的圈復(fù)雜度90指定數(shù)據(jù)復(fù)雜度的計(jì)算方法...將所有不包含指定數(shù)據(jù)元素的判定指定數(shù)據(jù)復(fù)雜度計(jì)算舉例數(shù)據(jù)度量
sdvz=3main(){ 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); }}C1C4C5z=y+mC2C3z>10ReducedC2C5C3C4z=y+mC1z>1091指定數(shù)據(jù)復(fù)雜度計(jì)算舉例數(shù)據(jù)度量sdvz=3main(指定數(shù)據(jù)復(fù)雜度的優(yōu)勢(shì)...表明一個(gè)模塊與指定數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù)復(fù)雜程度等于(用來測試指定數(shù)據(jù)所有應(yīng)用的)基本測試路徑數(shù)可分析數(shù)據(jù)結(jié)構(gòu)變化對(duì)軟件的影響數(shù)據(jù)度量92指定數(shù)據(jù)復(fù)雜度的優(yōu)勢(shì)...表明一個(gè)模塊與指定數(shù)據(jù)相關(guān)聯(lián)的數(shù)其他復(fù)雜度度量...HenryandKafurametrics模塊之間的耦合(parameters,globalvariables,calls)其他度量模塊和系統(tǒng)復(fù)雜性;通過參數(shù)和全局變量的耦合程度模塊性或耦合;結(jié)構(gòu)的復(fù)雜度(結(jié)構(gòu)圖的最大深度);調(diào)用結(jié)構(gòu)流圖的模塊性BowlesmetricsTroyandZwebenmetricsLigiermetricsSource:SoftwareEngineeringInstituteCarnegieMellon93其他復(fù)雜度度量...HenryandKafurameMcCabe度量McCabe度量標(biāo)準(zhǔn)與軟件質(zhì)量...CyclomaticComplexityv(G)易理解測試工作量可靠性EssentialComplexityev(G)結(jié)構(gòu)化特性可維護(hù)性再工程的工作量ModuleDesignComplexityiv(G)集成的工作量94McCabe度量McCabe度量標(biāo)準(zhǔn)與軟件質(zhì)量...CycMcCabe度量McCabe度量標(biāo)準(zhǔn)與軟件質(zhì)量...DesignComplexityS0設(shè)計(jì)的復(fù)雜程度模塊調(diào)用的復(fù)雜性IntegrationComplexityS1量化集成工作GlobalComplexity(gdv(G))模塊與外部數(shù)據(jù)的耦合控制流與數(shù)據(jù)分析SpecifiedComplexity(sdv(G))數(shù)據(jù)結(jié)構(gòu)變化的影響95McCabe度量McCabe度量標(biāo)準(zhǔn)與軟件質(zhì)量...DesiMcCabe度量其他McCabe度量...NumberofLines(nl)NormalisedComplexity(nv)PathologicalComplexity(pv(G))GlobalDataDensity(global_data_density)SpecifiedDataReference(sdr)SpecifiedDataComplexityDecisionSeverity(sdv_severity)SpecifiedDataReferenceDecisionSeverity(sdr_severity)96McCabe度量其他McCabe度量...Numberof結(jié)構(gòu)化測試TestingTechniques….代碼覆蓋率Flowgraph‘A’Flowgraph‘B’哪個(gè)函數(shù)更復(fù)雜?2TestsRequired2TestsRequired代碼覆蓋與復(fù)雜度不成比例97結(jié)構(gòu)化測試TestingTechniques….代碼覆蓋率結(jié)構(gòu)化測試TestingTechniques….分支覆蓋需要多少個(gè)測試可以做到100%覆蓋?BranchTest#1BranchTest#2BranchTest#3BranchTest#498結(jié)構(gòu)化測試TestingTechniques….分支覆蓋需結(jié)構(gòu)化測試TestingTechniques….基本路徑覆蓋(TRUEandFALSE)(FALSEandTRUE)(TRUEandTRUE)Anyotherpath(eg.FALSEandFALSE)exerciseacombinationoftheabovepaths+-=(FALSEandFALSE)99結(jié)構(gòu)化測試TestingTechniques….基本路徑覆結(jié)構(gòu)化測試TestingTechniques….基本路徑測試基本路徑數(shù)等于模塊的McCabe圈復(fù)雜度v(G)100結(jié)構(gòu)化測試TestingTechniques….基本路徑測結(jié)構(gòu)化測試TestingTechniques….基本路徑覆蓋“簡單地說,結(jié)構(gòu)化測試要求貫穿模塊的一組基本路徑必須測試,以保證測試的充分性結(jié)構(gòu)化測試的原理貫穿模塊流圖的基本路徑是線性獨(dú)立的因此,任何其他路徑都可以有基本路徑組合而來基本路徑數(shù)等于McCabe圈復(fù)雜度101結(jié)構(gòu)化測試TestingTechniques….基本路徑覆CaseStudies以下機(jī)構(gòu)獨(dú)立研究證明:美國國防部海軍武器系統(tǒng)通用電子結(jié)論...SoftwareQuality,Complexity&Testing圈復(fù)雜度能很好地預(yù)測:出錯(cuò)的可能性理解的容易性變更的工作量調(diào)試的容易性
McCabe圈復(fù)雜度被證明與錯(cuò)誤的發(fā)生有極強(qiáng)的相關(guān)性,相關(guān)系數(shù)達(dá)到0.96.102CaseStudies以下機(jī)構(gòu)獨(dú)立研究證明:結(jié)論...ualitySoftware軟件質(zhì)量與結(jié)構(gòu)化測試103ualitySoftware軟件質(zhì)量與結(jié)構(gòu)化測試1內(nèi)容提要什么是軟件質(zhì)量軟件質(zhì)量特性與質(zhì)量模型軟件質(zhì)量的度量常用軟件度量方法McCabe復(fù)雜度結(jié)構(gòu)化測試技術(shù)104內(nèi)容提要什么是軟件質(zhì)量2TestingMaintenanceDesignCoding軟件開發(fā)105TestingMaintenanceDesignCodingMaintenance軟件開發(fā)的工作分配DesignCodingTesting106Maintenance軟件開發(fā)的工作分配DesignCodi什么是軟件質(zhì)量“Thetotalityoffeaturesandcharacteristicsofaproductorservicethatbearonitsabilitytosatisfystatedorimpliedneeds”(ISO8402) 與軟件產(chǎn)品滿足規(guī)定的和隱含的需求的能力有關(guān)的特征或特性的全體Thedegreeofexcellence 軟件的優(yōu)秀程度“Theabilityofasoftwareproducttosatisfyitsspecifiedrequirements”(DoD-STD-2168) 軟件產(chǎn)品滿足其規(guī)定的需求的能力107什么是軟件質(zhì)量“Thetotalityoffeatur什么是軟件質(zhì)量“Thedegreetowhichasystem,component,orprocessmeetsspecifiedrequirements.”(IEEEstandard610.12-1990)
一個(gè)系統(tǒng)、組件或過程滿足規(guī)定的需求的程度“Thedegreetowhichasystem,component,orprocessmeetscustomeroruserneedsorexpectations.”(IEEEstandard610.12-1990)
一個(gè)系統(tǒng)、組件或過程滿足客戶或用戶的需求的程度,或滿足期望值的程度108什么是軟件質(zhì)量“ThedegreetowhichaISO9126SoftwareQuality:軟件質(zhì)量
Thetotalityoffeaturesandcharacteristicsofasoftwareproductthatbearonitsabilitytosatisfystatedorimpliedneeds.
與軟件產(chǎn)品滿足規(guī)定的和隱含的需求的能力有關(guān)的特征或特性的全體SoftwareQualityCharacteristics:軟件質(zhì)量特性
Asetofattributesofasoftwareproductbywhichitsabilityisdescribedandevaluated.Asoftwarequalitycharacteristicmayberefinedintomultiplelevelsofsub-characteristics.軟件質(zhì)量特性是軟件產(chǎn)品的一組屬性,用來對(duì)軟件的能力進(jìn)行描述和評(píng)估。軟件質(zhì)量特性可細(xì)分為多層次的子特性。SoftwareQualityMetric:軟件質(zhì)量度量
Aquantitativescaleandmethodwhichcanbeusedtodeterminethevalueafeaturetakesforaspecificsoftwareproduct.用于確定軟件產(chǎn)品質(zhì)量特性的定量的衡量和分析方法109ISO9126SoftwareQuality:軟件質(zhì)量S用戶角度供應(yīng)商的角度QualityinSoftware軟件過程商業(yè)價(jià)值易于修改可實(shí)現(xiàn)性可靠性更少的bug多功能性特征的多少110用戶角度供應(yīng)商的角度QualityinSoftware軟縮短時(shí)間表“Qualitydoesnothappenbymistake!”為什么質(zhì)量差?壓縮的預(yù)算人員的變化用戶需求的改變提高或增加功能或性能BugFixing無效的測試111縮短時(shí)間表“Qualitydoesnothappen軟件質(zhì)量保證(QA)原則
質(zhì)量不必是“最好”的質(zhì)量是用戶想要的和愿意購買的
范圍QAismorethantestingQAnotonlyattheendoftheprojectQAofproductandprocess
格言
Movingfromqualitycontrolling(expost)topreventionbyqualityservice. 通過質(zhì)量服務(wù)把質(zhì)量控制變換到預(yù)防
112軟件質(zhì)量保證(QA)原則范圍格言10QualityCharacteristics
質(zhì)量特征可靠性性能可維護(hù)性健壯性用戶友好性ISO9126113QualityCharacteristics
質(zhì)量特征可靠SoftwareComplexity軟件產(chǎn)品系統(tǒng)體系復(fù)雜性模塊文本復(fù)雜性模塊的結(jié)構(gòu)復(fù)雜Asoftwareproductisasolutionofaproblem.Thecomplexityofthesolutiongenerallydependsonthecomplexityoftheproblem.114SoftwareComplexity軟件產(chǎn)品系統(tǒng)體系復(fù)雜性QualityModels分配用戶需求
QualityFactors(質(zhì)量因素)到開發(fā)標(biāo)準(zhǔn)
QualityCriteria(質(zhì)量標(biāo)準(zhǔn))到可證明的和測量的值
Metrics(度量)115QualityModels分配用戶需求到開發(fā)標(biāo)準(zhǔn)到可證明的軟件質(zhì)量的因子-標(biāo)準(zhǔn)-度量關(guān)系質(zhì)量樹的概念QUALITYFACTOR1FACTORIFACTORLCRITERIA1CRITERIAJCRITERIAMMETRICKMETRIC1METRICN116軟件質(zhì)量的因子-標(biāo)準(zhǔn)-度量關(guān)系質(zhì)量樹的概念QUALITYFATheMetricsFACTORSCRITERIAMETRICS可維護(hù)性自描述性簡單性簡明性模塊化嵌套級(jí)別數(shù)行數(shù)可執(zhí)行語句數(shù)操作數(shù)頻率語句平均長度組件級(jí)別注釋率-----------------117TheMetricsFACTORSCRITERIAMETRBoehm質(zhì)量模型118Boehm質(zhì)量模型16McCallModel119McCallModel17質(zhì)量與質(zhì)量管理質(zhì)量要用需求,可接受性和它們達(dá)到的證據(jù)來衡量質(zhì)量是通過解決問題實(shí)現(xiàn)的質(zhì)量管理確保前面解決過的問題不再出現(xiàn)沒有質(zhì)量測量來做質(zhì)量管理只能是幻想120質(zhì)量與質(zhì)量管理質(zhì)量要用需求,可接受性和它們達(dá)到的證據(jù)來衡量質(zhì)測量工具的好處支持質(zhì)量管理系統(tǒng)開發(fā)工程師可以自己檢查支持代碼評(píng)審評(píng)價(jià)外部軟件支持測試121測量工具的好處支持質(zhì)量管理系統(tǒng)開發(fā)工程師可以自己檢查支持代碼ualitySoftwareMetrics122ualitySoftwareMetrics20什么是度量(Metric)?任何測量的單位e.g.Cm,Litre,Ohm,Second,Color描述一個(gè)實(shí)體的屬性度量的類型:和項(xiàng)目相關(guān)時(shí)間表/開支估算測量功能點(diǎn)軟件度量123什么是度量(Metric)?任何測量的單位描述一個(gè)實(shí)體的′只有當(dāng)你對(duì)你所談到的東西進(jìn)行測量,并用數(shù)量表示出來時(shí),你就對(duì)它有了一定了解,反之,你對(duì)它并沒有真正的了解.′LordKelvin,1889′Youcan‘tcontrolwhatyoucan‘tmeasure.′DeMarco,1982軟件質(zhì)量度量124′只有當(dāng)你對(duì)你所談到的東西進(jìn)行測量,并用數(shù)量表示出來時(shí),你就測量非常有用,但我們必須先解決如下問題:5.1o-1s測量Whatdowewanttomeasure?測量什么Howdowemeasure?如何測n?Whatdothemeasurementsmea
測量的意義何在125測量非常有用,但我們必須先解決如下問題:5.1o-1s測量W復(fù)雜性尺寸測試路徑冗余結(jié)構(gòu)模塊性可維護(hù)性可靠性可復(fù)用性可測量的不可測量的5.2o-2sWhattoMeasure?126復(fù)雜性尺寸測試路徑冗余結(jié)構(gòu)模塊性可維護(hù)性可靠性可復(fù)用性直觀的GoodMetricsshould:和錯(cuò)誤出現(xiàn)有直接關(guān)系好的度量GoodMetricsmust:客觀的語言獨(dú)立和測試努力直接有關(guān)自動(dòng)化簡單127直觀的GoodMetricsshould:和錯(cuò)誤出現(xiàn)有直提高質(zhì)量4.1s測量確定質(zhì)量TimeQuality防止質(zhì)量退化輔助做出決策理解提高生產(chǎn)力確定變更的影響風(fēng)險(xiǎn)分析測試確保質(zhì)量提高測試效率128提高質(zhì)量4.1s測量確定質(zhì)量TimeQuality防止質(zhì)量退Metrics++HalsteadMetrics霍爾斯特德度量可用的軟件度量包括:FunctionPoint功能點(diǎn)
LineCountMetrics線計(jì)數(shù)度量McCabeMetrics圈復(fù)雜度DataMetricsSystemLevelMetricsOOMetricsDerivedMetrics129Metrics++HalsteadMetricsHalsteadMetrics起源:1977年,由MauriceHalstead開發(fā)介紹計(jì)算模塊的操作數(shù)和操作符,直接得出模塊的復(fù)雜程度的一種定量測試方法通過源代碼測量模塊的復(fù)雜度,重點(diǎn)是復(fù)雜性的計(jì)算應(yīng)用于代碼,經(jīng)常作為一種維護(hù)性度量自誕生之日起,就充滿爭議130HalsteadMetrics起源:1977年,由Maur技術(shù)Halstead度量主要基于以下四層源自程序代碼的統(tǒng)計(jì)數(shù)值:n1=thenumberofdistinct(獨(dú)立的)operators操作符 n2=thenumberofdistinctoperands操作數(shù) N1=thetotalnumberofoperators N2=thetotalnumberofoperands Measure
Symbol
Formula
Programlength長度 N N=N1+N2Programvocabulary詞匯量 n n=n1+n2Volume容量 V V=N*(LOG2n)Difficulty難度 D D=(n1/2)*(N2/n2)Effort工作量 E E=D*Vfromtheabove,fivemeasuresarederived...HalsteadMetrics131技術(shù)Halstead度量主要基于以下四層源自程序代碼的統(tǒng)計(jì)數(shù)HalsteadMetrics優(yōu)勢(shì):不必深入分析程序的結(jié)構(gòu)預(yù)測錯(cuò)誤的數(shù)目預(yù)測維護(hù)的工作量對(duì)報(bào)告和計(jì)劃項(xiàng)目的健康程度有幫助對(duì)整個(gè)程序有幫助計(jì)算簡單適合任何編程語言
經(jīng)過很多工業(yè)研究,都支持使用Halstead來預(yù)測開發(fā)工作量和平均bugs
132HalsteadMetrics優(yōu)勢(shì):不必深入分析程序的結(jié)構(gòu)FunctionPoints起源:1977由A.J.Albrecht開發(fā)設(shè)計(jì)測量軟件的大小和生產(chǎn)力技術(shù):將基本功能點(diǎn)分為5組:outputs輸出inquiries查詢inputs輸入files文件interfaces接口功能點(diǎn)就是最終用戶的業(yè)務(wù)功能,比如對(duì)輸入的查詢.和軟件完成的功能緊密相關(guān)133FunctionPoints起源:1977由A.J.AFunctionPoints優(yōu)勢(shì):對(duì)以下情況,通常被公認(rèn)為是一種有效方法:較大的用戶群;InternationalFunctionPointGroup(IFPG)多于1,200會(huì)員公司
建立每小時(shí)功能點(diǎn)的生產(chǎn)率評(píng)估對(duì)需求的支持評(píng)估軟件工程的大小(以及周期)軟件模塊比較的標(biāo)準(zhǔn)化評(píng)估系統(tǒng)變更的開銷IFPG提供功能點(diǎn)實(shí)踐手冊(cè),以及標(biāo)準(zhǔn)化的實(shí)踐活動(dòng)Source:SoftwareEngineeringInstituteCarnegieMellon134FunctionPoints優(yōu)勢(shì):對(duì)以下情況,通常被公認(rèn)為LineCountMetrics表明每個(gè)模塊的行數(shù),包括代碼,注釋,空白行,混合代碼和注釋.技術(shù)LOC可分為以下幾類:Lines-of-Code(LOC)metrics提供代碼的總額,但是對(duì)內(nèi)容的測量不太好blanks- Lineswithonlyspace(eg.spaceandtabs)ornotextcommentcode- Sourcelinesofcodethatcontainonlycodeandwhitespacecomments- SourcelinesofcodethatarepurelycommentsMixed- Linesthatcontainbothcodeandcomments135LineCountMetrics表明每個(gè)模塊的行數(shù),包LineCountMetrics優(yōu)勢(shì):測量軟件的物理尺寸鑒別特殊行,如注釋行和空行幫助查明難以理解的模塊.(Commentlinesoftenincreasereadability,althoughanunusuallylargenumberofcommentscanindicatethatthemoduleisdifficulttounderstand.)136LineCountMetrics優(yōu)勢(shì):測量軟件的物理尺寸McCabeMetrics起源:圈復(fù)雜度(CyclomaticComplexity)由ThomasMcCabe于1976提出測量貫穿程序模塊的獨(dú)立線性路徑數(shù)提供了比較兩個(gè)程序復(fù)雜度的一種簡單的指標(biāo)通常被稱為程序復(fù)雜度或McCabe復(fù)雜度137McCabeMetrics起源:圈復(fù)雜度(CyclomatMcCabeMetrics優(yōu)勢(shì):廣泛應(yīng)用的靜態(tài)軟件度量
和其他度量互補(bǔ)
獨(dú)立于開發(fā)語言擴(kuò)展到可以包括設(shè)計(jì)和結(jié)構(gòu)復(fù)雜度
基于軟件結(jié)構(gòu)的嚴(yán)格的數(shù)學(xué)分析138McCabeMetrics優(yōu)勢(shì):廣泛應(yīng)用的靜態(tài)軟件度量和McCabeMetrics優(yōu)勢(shì):可以應(yīng)用到幾個(gè)領(lǐng)域:維護(hù)的風(fēng)險(xiǎn)分析Codecomplexitytendstoincreasethroughmaintenanceovertime.Bymeasuringbeforeandaftercomplexitycanbemonitored,managedandminimisetheriskofchange.代碼開發(fā)的風(fēng)險(xiǎn)分析:whileunderdevelopment,complexitycanbemeasuredforinherentriskandriskbuildup.測試的計(jì)劃Cyclomaticcomplexitygivestheexactnumberoftestsneededtotesteverydecisionpoint.Thisaidsintestplanning.Highlycomplexmodulesrequireaprohibitivenumberofteststeps,thatnumbercanbereducedtoamorepragmaticsizebybreakingthemoduleintosmallerlesscomplexsubmodules.再工程Cyclomaticcomplexityanalysisprovidesinsighttothestructureofcode.Reengineeringriskisrelatedtothecodecomplexity.Thisinsighthelpswithcostandriskanalysis.139McCabeMetrics優(yōu)勢(shì):可以應(yīng)用到幾個(gè)領(lǐng)域:維護(hù)McCabeMetricsMcCabe度量包括...Cyclomaticcomplexity(v(G))Essentialcomplexity(ev(G))Moduledesigncomplexity(iv(G))Designcomplexity(S0)Integrationcomplexity(S1)DatacomplexityGlobaldatacomplexity(gdv(G))Specifieddatacomplexity(sdv(G))140McCabeMetricsMcCabe度量包括...CyIsconstructedfromwrittencode分析一個(gè)模塊結(jié)構(gòu)流圖...一種描述軟件模塊邏輯的結(jié)構(gòu)圖Isavisualizationofthemodule’sdecisionlogic141Iscon
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 攝影工作室裝修免租合同
- 二零二五年度辦公室文員工作責(zé)任與獎(jiǎng)勵(lì)合同
- 科技園區(qū)房產(chǎn)居間合同模板
- 餐飲連鎖居間合同
- 車輛長期租賃合同協(xié)議
- 代簽合同委托書
- 企業(yè)知識(shí)產(chǎn)權(quán)保護(hù)與管理策略研究項(xiàng)目名稱
- 項(xiàng)目策劃與執(zhí)行流程指南
- 農(nóng)業(yè)災(zāi)害防治技術(shù)研究與應(yīng)用方案
- 終止合同協(xié)議書
- 元宇宙視域下非遺保護(hù)與傳播途徑探究
- 2025年買賣個(gè)人房屋合同(4篇)
- 2025代運(yùn)營合同范本
- 武漢2025年湖北武漢理工大學(xué)管理人員招聘筆試歷年參考題庫附帶答案詳解
- 第十一章《功和機(jī)械能》達(dá)標(biāo)測試卷(含答案)2024-2025學(xué)年度人教版物理八年級(jí)下冊(cè)
- 2025年銷售部年度工作計(jì)劃
- 2024年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 辦公用品價(jià)格清單
- ESG表現(xiàn)對(duì)企業(yè)財(cái)務(wù)績效的影響研究
- DB3713T 340-2024 實(shí)景三維數(shù)據(jù)接口及服務(wù)發(fā)布技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論