質(zhì)量評審培訓(xùn)課件_第1頁
質(zhì)量評審培訓(xùn)課件_第2頁
質(zhì)量評審培訓(xùn)課件_第3頁
質(zhì)量評審培訓(xùn)課件_第4頁
質(zhì)量評審培訓(xùn)課件_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

質(zhì)量評審設(shè)計(jì)評審單元測試測試驗(yàn)證測試管理

代碼評審質(zhì)量評審質(zhì)量評審特點(diǎn)優(yōu)點(diǎn)復(fù)雜度分析代碼評價(jià)度量代碼結(jié)構(gòu)化化簡LCSAJs質(zhì)量模型質(zhì)量評審能力檢查多個(gè)代碼復(fù)雜性度量元圈復(fù)雜度結(jié)點(diǎn)度量LCSAJ控制流(測試路徑)識別死代碼和不可測試代碼提供功能強(qiáng)大的結(jié)構(gòu)化化簡工具結(jié)構(gòu)化程序驗(yàn)證

將你的代碼化簡到基本復(fù)雜度使用工業(yè)標(biāo)準(zhǔn)或自定義質(zhì)量模型提供邊界檢查產(chǎn)生定量評估將所有結(jié)果總結(jié)成頂層的度量指標(biāo)

清晰性/測試性/維護(hù)性提供直觀的報(bào)告和代碼可視化工具復(fù)雜性通常檢查多余的復(fù)雜性是非常困難的程序的復(fù)雜性并不可怕,但是多余的復(fù)雜性會(huì)引起軟件出問題度量元度量元是軟件度量的基礎(chǔ),就象“米”是對長度的度量注意度量結(jié)果本身并不能直接就反應(yīng)出質(zhì)量好壞在質(zhì)量評審中使用度量源元時(shí),相互的關(guān)聯(lián)是最重要的質(zhì)量評審–代碼評價(jià)度量清晰性系統(tǒng)的可理解性如何可維護(hù)性軟件的可維護(hù)性如何?可測試性對系統(tǒng)進(jìn)行測試需要多少工作?復(fù)雜度度量控制流結(jié)點(diǎn)圈復(fù)雜度基本結(jié)點(diǎn)和基本圈復(fù)雜度循環(huán)嵌套函數(shù)扇入和扇出不可達(dá)性結(jié)點(diǎn)分類跳轉(zhuǎn)分為下列幾類:向上(向后)跳轉(zhuǎn)向下(向前)跳轉(zhuǎn)結(jié)點(diǎn)根據(jù)跳轉(zhuǎn)類型可以分為:下-下結(jié)點(diǎn)上-下結(jié)點(diǎn)上-上結(jié)點(diǎn)153421534215342引起結(jié)點(diǎn)的C結(jié)構(gòu)下列編程結(jié)構(gòu)會(huì)引起結(jié)點(diǎn): for while switch可利用基本結(jié)點(diǎn)度量消除這些局限性引起結(jié)點(diǎn)的Ada結(jié)構(gòu)下列編程結(jié)構(gòu)會(huì)引起結(jié)點(diǎn):

IFTHENELSE CASE GOTO Exceptions可利用基本結(jié)點(diǎn)度量消除這些局限性圈復(fù)復(fù)雜雜度度從有有向向圖圖G,計(jì)計(jì)算算圈圈復(fù)復(fù)雜雜度度V(G):V(G)=No.edges(邊邊數(shù)數(shù)))-No.nodes(節(jié)節(jié)點(diǎn)點(diǎn)數(shù)數(shù)))+2這樣樣也也正正確確::V(G)=No.predicates(判判定定節(jié)節(jié)點(diǎn)點(diǎn)數(shù)數(shù)))+1Case結(jié)構(gòu)構(gòu)((有有N種選選擇擇))是是個(gè)個(gè)例例外外,,計(jì)計(jì)算算為為N––1V(G)=No.regions(區(qū)區(qū)域域數(shù)數(shù)))假如如G是個(gè)個(gè)連連接接的的平平面面圖圖圈復(fù)復(fù)雜雜度度例子子12條邊邊9個(gè)節(jié)節(jié)點(diǎn)點(diǎn)VG=12-9+2=5145236789123456789101112圈復(fù)復(fù)雜雜度度例子子3個(gè)判判定定結(jié)結(jié)點(diǎn)點(diǎn)計(jì)計(jì)算算為為4case計(jì)算算為為2VG=4+1=53-111圈復(fù)復(fù)雜雜度度例子子5個(gè)區(qū)區(qū)域域VG=532451結(jié)點(diǎn)和圈圈復(fù)雜度度13245此有向圖圖可表示示為右邊邊兩種程程序結(jié)構(gòu)構(gòu)。1452315342V(G)=6-5+2=3V(G)=6-5+2=3Knots=4Knots=1結(jié)點(diǎn)和圈圈復(fù)雜度度圈復(fù)雜度度和結(jié)點(diǎn)點(diǎn)度量是是互補(bǔ)的的兩個(gè)指指標(biāo)總之,程程序結(jié)結(jié)構(gòu)化度度量量化化了軟件件的屬性性圈復(fù)雜度度用于表表明程序序復(fù)雜性性結(jié)點(diǎn)度量量用于表表明程序序?qū)嵤r(shí)時(shí)附加的的復(fù)雜性性循環(huán)的復(fù)復(fù)雜性度度量由流程圖圖研究源源代碼的的循環(huán)結(jié)結(jié)構(gòu)用于度量量復(fù)雜性性和代碼碼優(yōu)化識別循環(huán)環(huán)結(jié)構(gòu)不被源代代碼結(jié)構(gòu)構(gòu)所影響響函數(shù)度量量:函數(shù)入口口和出口口(扇入入扇出))循環(huán)總數(shù)數(shù)循環(huán)最大大深度C++OO實(shí)現(xiàn)類的數(shù)目目子類的數(shù)數(shù)目每個(gè)類的的方法繼承深度度數(shù)據(jù)成員員的數(shù)據(jù)據(jù)類外的函函數(shù)調(diào)用用其他Chidamber和Kemerer度量程序結(jié)構(gòu)構(gòu)化驗(yàn)證證程序結(jié)構(gòu)構(gòu)化驗(yàn)證證通過匹配配程序結(jié)結(jié)構(gòu)模版版執(zhí)行結(jié)構(gòu)化驗(yàn)驗(yàn)證,模版使使用源代代碼基本本塊的流流程圖表表示使用檢查查工具自自動(dòng)運(yùn)行行檢查下列列結(jié)構(gòu)::if-then-endifif-then-else-endifdo-whilewhileforcase可配置成成識別其其他結(jié)構(gòu)構(gòu)程序結(jié)構(gòu)構(gòu)化確認(rèn)認(rèn)由于使用用非正確確的結(jié)構(gòu)構(gòu)形式,,C語言非常常容易產(chǎn)產(chǎn)生錯(cuò)誤誤:需要switch,case,default和break語句的case語句if-then語句也容容易產(chǎn)生生錯(cuò)誤for循環(huán)結(jié)構(gòu)構(gòu)也容易易產(chǎn)生錯(cuò)錯(cuò)誤SPV建議如果檢測測到非結(jié)結(jié)構(gòu)化的的代碼,,這部分分代碼應(yīng)應(yīng)該由程程序員重重新編寫寫,這不不包括為為了解決決某些特特殊問題題而有意意使用的的非結(jié)構(gòu)構(gòu)化編程程除了允許許以修改改非結(jié)構(gòu)構(gòu)化程序序會(huì)帶來來不必要要的復(fù)雜雜為理由由以外,,建議管管理者可可以先懷懷疑任何何非結(jié)構(gòu)構(gòu)化編程程的使用用流程圖看看起來很很混亂,,并不總總是意味味著代碼碼是非結(jié)結(jié)構(gòu)化的的。繪制制流程圖圖的算法法可能會(huì)會(huì)誤導(dǎo)程程序是高高度復(fù)雜雜的通常程序序的非結(jié)結(jié)構(gòu)化是是由于代代碼內(nèi)部部錯(cuò)誤引引起的SPV流程圖SPV流程圖,,圖形化化地顯示示設(shè)計(jì)良良好的程程序結(jié)構(gòu)構(gòu)中節(jié)點(diǎn)點(diǎn)的化簡簡過程代碼評審審流程圖圖基本結(jié)點(diǎn)點(diǎn)度量將所有的結(jié)結(jié)構(gòu)化的程序結(jié)構(gòu)進(jìn)行化簡簡后,計(jì)算剩剩余的節(jié)節(jié)點(diǎn)數(shù)就得到基本結(jié)點(diǎn)點(diǎn)度量對于一個(gè)個(gè)結(jié)構(gòu)化化的程序序:基本結(jié)點(diǎn)點(diǎn)數(shù)=0基本結(jié)點(diǎn)點(diǎn)是非結(jié)結(jié)構(gòu)化程程序引起起的復(fù)雜雜性的度度量基本圈復(fù)復(fù)雜度某些結(jié)構(gòu)構(gòu)化的編編程結(jié)構(gòu)構(gòu)會(huì)引起起很高的的圈復(fù)雜雜度這個(gè)局限限性可用用基本度度量克服服定義:EV(G)=V(G)-M這里M是有唯一一入口和和出口節(jié)節(jié)點(diǎn)的子子圖G的數(shù)目對于一個(gè)個(gè)結(jié)構(gòu)化化的程序序:EV(G)=1SPV度量總結(jié)結(jié)如果一個(gè)個(gè)模塊通通過SPV化簡之后后是結(jié)構(gòu)構(gòu)化的,,它有::基本結(jié)點(diǎn)為0基本圈復(fù)雜度度為1非結(jié)構(gòu)化的程程序含有很高高的基本度量量值這兩個(gè)度量是是對代碼中存存在的結(jié)構(gòu)缺缺陷的度量復(fù)雜度分析標(biāo)標(biāo)準(zhǔn)復(fù)雜度分析標(biāo)標(biāo)準(zhǔn)違反情況況位于代碼評審審報(bào)告中用于強(qiáng)制源代代碼執(zhí)行特定定的質(zhì)量特性性1CCyclomaticComplexitygreaterthan***2CProcedureisnotreducibleintermsofintervals3CProcedurecontainsessentialknots4CProcedureisnotstructured5CProcedurecontainsinfiniteloopLCSAJs線性代碼序列列及跳轉(zhuǎn)LCSAJs維護(hù)性度量指指標(biāo)檢測不可達(dá)代代碼識別不可測試試(或不合理理)代碼強(qiáng)制用于歐洲洲安全苛刻性性軍用航空電電子項(xiàng)目路徑測試的覆覆蓋度量基礎(chǔ)礎(chǔ)最高級別的代代碼覆蓋率度度量LCSAJ三要素根據(jù)定義和LDRA的代碼重格式式化策略,LCSAJs能描述成三要要素的形式::1.起始點(diǎn)[一個(gè)線性代碼碼序列]2.結(jié)束點(diǎn)3.目標(biāo)點(diǎn)LCSAJ起始點(diǎn)LCSAJs開始于:程序的第一行行可執(zhí)行代碼碼A的第一行可執(zhí)執(zhí)行代碼,A可以是:功能程序方法…任何控制流跳跳轉(zhuǎn)的目標(biāo)行行:標(biāo)號else語句endif語句switch語句的子句循環(huán)函數(shù)調(diào)用的返返回...LCSAJ跨度LCSAJ跨度是程序中中的最小分割割,任何LCSAJ的線型代碼序序列都完全包包含在LCSAJ的跨度中LCSAJ跨度的第一行行可以是程序序的開始,或或者是前面的的LCSAJ序列不能到達(dá)達(dá)的那一行LCSAJ跨度的終止行行可以是程序序的結(jié)束行,,或者是控制制流不能經(jīng)過過其下一行的的代碼行SpanFINISH82else1------------------------------------------------------------------------START83{184mess="HelloThere";185}1START86}2START87}3START88printf("%d%d%d%20s\n",i,j,k,mess);4FINISH89}4------------------------------------------------------------------------STARTFINISH90}1LCSAJ密度LCSAJ密度是維護(hù)性性度量元如果某一行代代碼作了修改改,LCSAJ密度會(huì)告訴用用戶由于此代代碼修改影響響到多少條LCSAJ如果密度越高高,那么就越越會(huì)降低對于于所有的LCSAJ此改變都是正正確的信心,,因此必須增增加需要的回回歸測試數(shù)目目Code“LCSAJ”Lines Densitya=b2if2(a==x) 2{1b=y;1}1print(“ok””);2不可達(dá)的LCSAJs如果從程序開開始沒有任何何路徑到達(dá)指指定的代碼行行,那么代碼碼將被標(biāo)為不不可達(dá)(或死死代碼)這種現(xiàn)象通常常出現(xiàn)在緊跟跟著goto語句的代碼行行中,典型例例子如右面最最后一行代碼碼不可達(dá)的LCSAJs標(biāo)記顯示在下下面的例子中中ifI=0thengotolabel:endif;FINISH235gotol6;2---------------------------------------------------------------------236z=5;0UNREACHABLE*****237z=9;0UNREACHABLE*****START238l6:1239z=10;1FINISH240}1不可測試的LCSAJsLCSAJ是一路徑片段段,通常在它它的線性代碼碼序列中包含含許多條件如果LCSAJ的執(zhí)行依賴于于程序中的某某些條件,而而且永遠(yuǎn)不會(huì)會(huì)滿足這些條條件,那么LCSAJ可能是不可測測試的(因此此是不可執(zhí)行行的)LCSAJ報(bào)告總結(jié)部分詳細(xì)的代碼清清單:LCSAJs出現(xiàn)的地方源代碼內(nèi)的位位置LCSAJ三要素列表不可達(dá)的LCSAJs列表通過追蹤局部部的控制流分分支,任何不不可達(dá)的代碼碼都會(huì)在報(bào)告告中著重顯示示LCSAJ(路徑測試))流程圖質(zhì)量評審報(bào)告告度量的解釋像大多數(shù)其他他的物理度量量一樣,度量量的大小并不不能表明事物物的好或者壞壞通常認(rèn)為最好好要保證函數(shù)數(shù)符合這樣的的度量,這增增加了程序的的可讀性和可可維護(hù)性質(zhì)量評審報(bào)告告顯示復(fù)雜度度度量和源代碼碼的信息顯示函數(shù)級別別的復(fù)雜度度度量和整體源源代碼的復(fù)雜雜度度量許多結(jié)果也也能夠以圖圖形化的方方式顯示可用的度量量包括:圈復(fù)雜度度度量源代碼基本本塊結(jié)點(diǎn)度量函數(shù)的入口口出口循環(huán)數(shù)目和和嵌套深度度程序結(jié)構(gòu)化化驗(yàn)證質(zhì)量評審報(bào)報(bào)告質(zhì)量評審-質(zhì)量模型質(zhì)量評審報(bào)報(bào)告ReformattedCodeInformationforFileTotalreformattedLines,Totalcommentsinref.Code,Executableref.Lines,Non-executableref.LinesNumberofProcedures,TotalsourceLines,ExpansionFactor.CommentsAssociatedwithProcedures(%oftotal)TotalComments,CommentsinHeaders,CommentsinDeclarations,CommentsinExecutableCodeBlankLines.RatioofCommentstoExecutablelines(%)TotalComments/Exe.Lines,HeaderComments/Exe.Lines,DeclarationComments/Exe.Lines,CodeComments/Exe.LinesHalstead'sMetricsTotalOperators,TotalOperands,UniqueOperators,UniqueOperandsVocabulary,Length,Volume.LCSAJandUnreachabilityTotalLCSAJs,ReachableLCSAJs,UnreachableLCSAJs,MaximumLCSAJDensityUnreachableLines,UnreachableBranches.FileBasedC++OOMetricsTotalStructuredTypesDeclared,TotalObjectsCreated.ClassLevelC++OOMetricsObjectsCreated,NumberofDataMembers,NumberofMembers,NumberofChildClassesClassLevelOOMetrics-withBaseClassesTotalBaseClasses,TotalDataMembers,TotalMembers,InheritanceDepthClassLevelOOMetrics-withBaseClasses(2)質(zhì)量量評評審審報(bào)報(bào)告告包含含質(zhì)質(zhì)量量評評審審產(chǎn)產(chǎn)生生的的信信息息::復(fù)雜雜度度標(biāo)標(biāo)準(zhǔn)準(zhǔn)違違反反情情況況詳細(xì)細(xì)報(bào)報(bào)告告中中有有每每個(gè)個(gè)函函數(shù)數(shù)的的復(fù)復(fù)雜雜度度匯匯總總表表柱狀狀圖圖柱狀狀圖圖用用于于圖圖形形化化顯顯示示““質(zhì)質(zhì)量量度度量量””的的數(shù)數(shù)目目,,包包括括::測試中的的文件((單元/模塊))Tbset系統(tǒng)范圍圍的結(jié)果果Kiviat圖圖形化表表示質(zhì)量量模型假如源代代碼滿足足質(zhì)量標(biāo)標(biāo)準(zhǔn),就就顯示為為綠色假如

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論