版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件簡單度概述在硬件的牢靠性設(shè)計中,有一條基本原則"簡潔就是牢靠"。這個原則同樣也適合軟件,與功能的增多或增加相伴的是不斷升級與補丁?,F(xiàn)在已經(jīng)有若干種軟件簡單性的度量方法可供參考,其中McCabeQA是比較精彩和有用的方法,它能夠計算出多種軟件簡單度,由此可對軟件進行檢查、分析和查明那些可能導(dǎo)致錯誤的代碼。簡單度70年月,軟件系統(tǒng)已經(jīng)變得極其簡單,無論是開發(fā)還是維護都是一項成本昂揚的工作。人們意識到必需使軟件模塊化,以便于開發(fā)、測試和維護。為此,成立于1976的McCabe&Associates公司開發(fā)出了McCabeCyclomaticComplexityMetric(圈簡單度)技術(shù)對軟件進行結(jié)構(gòu)測試。Metric以軟件簡單度測量的數(shù)目為基礎(chǔ),能關(guān)心工程師識別難于測試和維護的模塊,圈簡單度已經(jīng)成為評估軟件質(zhì)量的一個重要標(biāo)準(zhǔn)。人們可以用圈簡單度對軟件的簡單度和質(zhì)量進行衡量,來支配工程進度,在成本、進度和性能之間尋求平衡。簡單度的種類有模塊、類和程序三類簡單度。模塊簡單度包含了關(guān)于模塊的簡單度信息;類簡單度是針對那些使用McCabe面對對象特性的程序,它包含了關(guān)于類的簡單度信息;程序簡單度包含了關(guān)于程序的簡單度信息。集成簡單度報告全部的非結(jié)構(gòu)部分除去向循環(huán)內(nèi)跳入的結(jié)構(gòu),轉(zhuǎn)化為線結(jié)構(gòu),病態(tài)簡單度就等于簡化以后流程圖的圈簡單度。優(yōu)點與所用的高級程序設(shè)計語言類型無關(guān);指出了牢靠性的問題,降低了維護風(fēng)險;關(guān)心識別極不行靠的軟件。HalsteadMetrics(Halstead簡單度)McCabeQA能夠為所選擇的語言產(chǎn)生HalsteadMetrics簡單度。Halstead簡單度是以程序中消失的運算符和運算元為計數(shù)對象,以它們消失的次數(shù)作為計數(shù)目標(biāo)(直接測量指標(biāo)),然后據(jù)以計算出程序容量、工作量。優(yōu)點不要求對程序結(jié)構(gòu)進行深層次分析;能夠猜測錯誤率;猜測維護工作量;有利于項目規(guī)劃,衡量全部程序的簡單度;計算方法簡潔;與所用的高級程序設(shè)計語言類型無關(guān);眾多討論結(jié)構(gòu)討論表明Halstead簡單度對于猜測程序工作方案和程序的Bug特別有用。LineCount簡單度描述了LineCount簡單度并列出了它們的優(yōu)點LineCountMetrics(LineCount簡單度)優(yōu)點軟件物理規(guī)模的度量;定義了詳細的LineCount數(shù)據(jù),例如注釋行和空行;幫助指出難于理解的模塊。對應(yīng)于三種簡單度的是三種簡單度報告。假如一個報告的簡單度信息不只一種,那么就把這些簡單度信息組合成新的報告。集成簡單度信息只收集一個部件及其下級的信息。例如:假如一個程序級報告包含一個類簡單度,那么只報告組成程序的類的信息,而不包含類組成的信息。McCabe簡單度McCabe簡單度是對軟件結(jié)構(gòu)進行嚴格的算術(shù)分析得來的,實質(zhì)上是對程序拓撲結(jié)構(gòu)簡單性的度量,明確指出了任務(wù)簡單部分。McCabe簡單度包括:圈簡單度、基本簡單度、模塊設(shè)計簡單度、設(shè)計簡單度、集成簡單度、行數(shù)、法律規(guī)范化簡單度、全局數(shù)據(jù)簡單度、局部數(shù)據(jù)簡單度、病態(tài)數(shù)據(jù)簡單度。McCabe簡單度的用途在軟件工程中,有三種使用McCabe簡單性度量的方式。作為測試的幫助工具。McCabe簡單性度量的結(jié)果等于通過一個子程序的路徑數(shù),因而需要設(shè)計同樣多的測試案例以掩蓋全部的路徑。假如測試案例數(shù)小于簡單性數(shù),則有三種狀況一是需要更多的測試;二是某些推斷點可以去掉;三是某些推斷點可用插入式代碼替換。作為程序設(shè)計和管理指南。在軟件開發(fā)中,需要一種簡潔的方式指出可能出問題的子程序。保持子程序簡潔的通用方法是設(shè)置一個長度限制,例如50行或2頁,但這實際上是在缺乏測試簡明性的有效方法時無可奈何的替代方法。不少人認為McCabe度量就是這樣一種簡明性度量。但是要留意,McCabe度量數(shù)大的程序,不見得結(jié)構(gòu)化就不好。例如,Case語句是良結(jié)構(gòu)的,但可能有很大的McCabe度量數(shù)(依靠于語句中的分支數(shù)),這可能是由于問題和解決方案所固有的簡單性所打算的。使用者應(yīng)自己打算如何使用McCabe度量所供應(yīng)的信息。作為網(wǎng)絡(luò)簡單性度量的一種方法。Hall和Preiser提出了一種組合網(wǎng)絡(luò)簡單性度量,用于度量可能由多個程序員組按模塊化原理建立的大型軟件系統(tǒng)的簡單性。他們提出的組合度量公式為式中C1,…,Ck是各個模塊的簡單性;CN是網(wǎng)絡(luò)簡單性;W1和W2為權(quán)值。McCabe簡單度即可用于度量各個模塊的簡單性,也可用于度量網(wǎng)絡(luò)簡單性。CyclomaticComplexity(v(G))圈簡單度圈簡單度是用來衡量一個模塊判定結(jié)構(gòu)的簡單程度,數(shù)量上表現(xiàn)為獨立路徑的條數(shù),即合理的預(yù)防錯誤所需測試的最少路徑條數(shù),圈簡單度大說明程序代碼可能質(zhì)量低且難于測試和維護,閱歷表明,程序的可能錯誤和高的圈簡單度有著很大關(guān)系。計算方法節(jié)點是程序中代碼的最小單元,邊代表節(jié)點間的程序流。假如一個模塊流程圖有e條邊n個節(jié)點,它的圈簡單度V(G)=e-n+2,典型的V(G)max=10o圖1中示例的圈簡單度是2。避開軟件中的錯誤傾向;指出極簡單模塊,這樣的模塊或許可以進一步細化;度量測試方案,確定測試重點;在開發(fā)過程中通過限制程序規(guī)律,指導(dǎo)測試過程;指出將要測試的區(qū)域;關(guān)心測試人員確定測試和維護對象;與所用的高級程序設(shè)計語言類型無關(guān)。應(yīng)用圈簡單度指出為了確保軟件質(zhì)量應(yīng)檢測的最少基本路徑的數(shù)目。在實際中,測試每一條路經(jīng)是不現(xiàn)實的,測試難度隨著路徑的增加而增加。但測試基本路徑對衡量代碼簡單度的合理性是很必要的。McCabe&Associates建議圈簡單度到10,由于高的圈簡單度使測試變得更加簡單而且增大了軟件錯誤產(chǎn)生的概率。提示:圈簡單度度量是測量在一個軟件模塊中的分支數(shù)目,在全部的開發(fā)周期中都要使用。圈簡單度度量以軟件的結(jié)構(gòu)流程圖為基礎(chǔ)。掌握流程圖描述了軟件模塊的規(guī)律結(jié)構(gòu)。一個模塊在典型的語言中是一個函數(shù)或子程序,有一個入口和一個出口,也可以通過調(diào)用/返回機制設(shè)計模塊。軟件模塊的每個執(zhí)行路徑,都有與從模塊的掌握流程圖中的入口到出口的節(jié)點相符合的路徑。Tyclomatic,,來源于非直接連接基本測試周期的數(shù)目,更重要的是,也通過直接相連的圖表給出獨立路徑的數(shù)目。通過圖表的相關(guān)性,一個節(jié)點可到達另一個節(jié)點。圈簡單度度量也可作為模塊基本流程圖路徑的數(shù)目,其重點在于模塊線形組合后,所產(chǎn)生的路徑數(shù)目是最小的。對圈簡單度的限制現(xiàn)在有很多好方法可以用來限制圈簡單度。過于簡單的模塊簡潔出錯,難于理解、測試、更正,所以應(yīng)在軟件開發(fā)的各個階段有意識地限制簡單度,很多開發(fā)者已經(jīng)勝利地實現(xiàn)把對軟件簡單度的限制作為軟件項目的一部分,盡管在準(zhǔn)確的數(shù)目上略微有些爭議。最初支持的數(shù)目是10,現(xiàn)在支持數(shù)目可達15。但是,只應(yīng)在條件較好的狀況下使數(shù)目大于10,例如開發(fā)者特別有閱歷,設(shè)計合乎正式標(biāo)準(zhǔn),使用現(xiàn)代化的程序語言、結(jié)構(gòu)程序、代碼預(yù)排和先進的測試方案。換句話說,開發(fā)團隊可以選擇超過10的限制數(shù)目,但是必需依據(jù)閱歷進行一些取舍,把精力花在比較簡單的模塊上。EssentialComplexity(ev(G))基本簡單度基本簡單度是用來衡量程序非結(jié)構(gòu)化程度的,非結(jié)構(gòu)成分降低了程序的質(zhì)量,增加了代碼的維護難度,使程序難于理解。因此,基本簡單度高意味著非結(jié)構(gòu)化程度高,難以模塊化和維護。實際上,消退了一個錯誤有時會引起其他的錯誤。計算方法將圈簡單度圖中的結(jié)構(gòu)化部分簡化成一個點,計算簡化以后流程圖的圈簡單度就是基本簡單度。優(yōu)點衡量非結(jié)構(gòu)化程度;反映代碼的質(zhì)量;猜測代碼維護量,幫助模塊劃分;與所用的高級程序設(shè)計語言類型無關(guān)。應(yīng)用當(dāng)基本簡單度為1,這個模塊是充分結(jié)構(gòu)化的;當(dāng)基本簡單度大于1而小于圈簡單度,這個模塊是部分結(jié)構(gòu)化的;當(dāng)基本簡單度等于圈簡單度,這個模塊是完全非結(jié)構(gòu)化的。ModuleDesignComplexity(iv(G))模塊設(shè)計簡單度模塊設(shè)計簡單度是用來衡量模塊判定結(jié)構(gòu),即模塊和其他模塊的調(diào)用關(guān)系。軟件模塊設(shè)計簡單度高意味模塊耦合度高,這將導(dǎo)致模塊難于隔離、維護和復(fù)用。計算方法模塊設(shè)計簡單度是從模塊流程圖中移去那些不包含調(diào)用子模塊的判定和循環(huán)結(jié)構(gòu)后得出的圈簡單度,因此模塊設(shè)計簡單度不能大于圈簡單度,通常是遠小于圈簡單度。優(yōu)點衡量模塊對其下層模塊的支配作用;衡量一個模塊到其子模塊進行集成測試的最小數(shù)量;定位可能多余的代碼;以簡單的計算規(guī)律和設(shè)計來區(qū)分模塊;是設(shè)計簡單度(SO)和集成簡單度(S1)計算的基礎(chǔ);與所用的高級程序設(shè)計語言類型無關(guān)。DesignComplexity(SO)設(shè)計簡單度設(shè)計簡單度以數(shù)量來衡量程序模塊之間的相互作用關(guān)系,它供應(yīng)了系統(tǒng)級模塊設(shè)計簡單度的概況,有助于衡量進行自底向上集成測試的效果,而且供應(yīng)了全面衡量程序設(shè)計規(guī)格和簡單度的數(shù)據(jù),不反映獨立模塊的內(nèi)部狀況。高設(shè)計簡單度的系統(tǒng)意味著系統(tǒng)各部分之間有著簡單的相互關(guān)系,這樣系統(tǒng)將難以維護。so是程序中全部模塊設(shè)計簡單度之和,計算公式如下:優(yōu)點可應(yīng)用于完整的軟件,也可應(yīng)用于任何子系統(tǒng);衡量代碼的質(zhì)量;指出一個模塊整體的簡單度,反映了每個模塊和其內(nèi)部模塊的掌握關(guān)系;揭示了程序中模塊調(diào)用的簡單度;有助于集成簡單度的計算。IntegrationComplexity(S1)集成簡單度集成簡單度是為了防止錯誤所必需進行的集成測試的數(shù)量表示,另一種說法是程序中獨立線性子樹的數(shù)目,一棵子樹是一個有返回的調(diào)用序列。就像圈簡單度是測試路徑的數(shù)目,而集成簡單度是程序或其子系統(tǒng)的獨立線性子樹。計算方法一個程序的集成簡單度和一個模塊的圈簡單度是特別相像的,必需計算對程序進行完全測試所需集成測試的數(shù)目。S1的計算公式:S1=SO-N+1N是程序中模塊的數(shù)目。有助于集成測試的實施;量化集成測試工作且反映了系統(tǒng)設(shè)計簡單度;有助于從整體上隔離系統(tǒng)簡單度。NumberofLines(nl)行數(shù)行數(shù)是模塊中總的行數(shù),包括代碼和注釋。優(yōu)點:計算簡潔;與所用的高級程序設(shè)計語言類型無關(guān);指出了模塊的行數(shù)(即模塊的規(guī)模),規(guī)模小的模塊易于理解和維護。NormalizedComplexity(nv)法律規(guī)范化簡單度法律規(guī)范化簡單度是圈簡單度除以行數(shù)。計算方法nv=v(G)/nl優(yōu)點與所用的高級程序設(shè)計語言類型無關(guān);定義那些有著顯著判定規(guī)律密度的模塊,這些模塊相對于其他常見法律規(guī)范模塊需要做更多的維護工作。GlobalDataComplexity(gdv(G))全局數(shù)據(jù)簡單度全局數(shù)據(jù)簡單度(需有McCabeData)量化了模塊結(jié)構(gòu)和全局數(shù)據(jù)變量的關(guān)系,它說明白模塊對外部數(shù)據(jù)的依靠程度,同時度量了全局數(shù)據(jù)的測試工作,也描述了模塊之間的耦合關(guān)系,能反映潛在的維護問題。對于如何跟蹤全局數(shù)據(jù)使用狀況的更多信息,可以參考《McCabeDatainUsingMcCabeIQAdd-Ons》。SpecifiedDataComplexity(sdv(G))局部數(shù)據(jù)簡單度局部數(shù)據(jù)簡單度(需有McCabeData)量化了模塊結(jié)構(gòu)和用戶局部數(shù)據(jù)變量的關(guān)系,同時度量了局部數(shù)據(jù)的測試工作。我們能夠使用McCabeD
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)采購招標(biāo)制度
- 浙江財經(jīng)大學(xué)東方學(xué)院《數(shù)字電子技術(shù)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 缺陷管理與企業(yè)社會責(zé)任實踐
- 財務(wù)創(chuàng)新述職報告模板
- DB2201T 76-2024 非公路用旅游觀光車輛安全管理規(guī)范
- 雙十二廣告策略
- 專業(yè)基礎(chǔ)-2018-2019年房地產(chǎn)經(jīng)紀(jì)人《專業(yè)基礎(chǔ)》真題匯編
- 年終研發(fā)業(yè)務(wù)總結(jié)
- 教師繼教個人培訓(xùn)學(xué)習(xí)計劃
- 部編版語文四年級下冊第五單元綜合素質(zhì)評價(含答案)
- 四年級數(shù)學(xué)(除數(shù)是兩位數(shù))計算題專項練習(xí)及答案
- 四川省綿陽市涪城區(qū)2024-2025學(xué)年九年級上學(xué)期1月期末歷史試卷(含答案)
- 2025年山東水發(fā)集團限公司社會招聘高頻重點提升(共500題)附帶答案詳解
- 2024年計算機二級WPS考試題庫(共380題含答案)
- 《湖南省房屋建筑和市政工程消防質(zhì)量控制技術(shù)標(biāo)準(zhǔn)》
- 中建集團面試自我介紹
- 《工業(yè)園區(qū)節(jié)水管理規(guī)范》
- 警校生職業(yè)生涯規(guī)劃
- 意識障礙患者的護理診斷及措施
- 2025企業(yè)年會盛典
- 215kWh工商業(yè)液冷儲能電池一體柜用戶手冊
評論
0/150
提交評論