日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
軟件復(fù)雜度概述
軟件復(fù)雜度概述
 更新時(shí)間:2008-8-17 20:01:50  點(diǎn)擊數(shù):21
【字體: 字體顏色
數(shù)目,在所有的開發(fā)周期中都要使用。

  圈復(fù)雜度度量以軟件的結(jié)構(gòu)流程圖為基礎(chǔ)?刂屏鞒虉D描述了軟件模塊的邏輯結(jié)構(gòu)。一個(gè)模塊在典型的語言中是一個(gè)函數(shù)或子程序,有一個(gè)入口和一個(gè)出口,也可以通過調(diào)用/返回機(jī)制設(shè)計(jì)模塊。軟件模塊的每個(gè)執(zhí)行路徑,都有與從模塊的控制流程圖中的入口到出口的節(jié)點(diǎn)相符合的路徑。

  “Cyclomatic”來源于非直接連接基本測(cè)試周期的數(shù)目,更重要的是,也通過直接相連的圖表給出獨(dú)立路徑的數(shù)目。通過圖表的相關(guān)性,一個(gè)節(jié)點(diǎn)可到達(dá)另一個(gè)節(jié)點(diǎn)。

  圈復(fù)雜度度量也可作為模塊基本流程圖路徑的數(shù)目,其重點(diǎn)在于模塊線形組合后,所產(chǎn)生的路徑數(shù)目是最小的。

對(duì)圈復(fù)雜度的限制

  現(xiàn)在有許多好方法可以用來限制圈復(fù)雜度。過于復(fù)雜的模塊容易出錯(cuò),難于理解、測(cè)試、更正,所以應(yīng)當(dāng)在軟件開發(fā)的各個(gè)階段有意識(shí)地限制復(fù)雜度,許多開發(fā)者已經(jīng)成功地實(shí)現(xiàn)把對(duì)軟件復(fù)雜度的限制作為軟件項(xiàng)目的一部分,盡管在確切的數(shù)目上略微有些爭議。最初支持的數(shù)目是10,現(xiàn)在支持?jǐn)?shù)目可達(dá)15。但是,只應(yīng)當(dāng)在條件較好的情況下使數(shù)目大于10,例如開發(fā)者非常有經(jīng)驗(yàn),設(shè)計(jì)合乎正式標(biāo)準(zhǔn),使用現(xiàn)代化的程序語言、結(jié)構(gòu)程序、代碼預(yù)排和先進(jìn)的測(cè)試計(jì)劃。換句話說,開發(fā)團(tuán)隊(duì)可以選擇超過10的限制數(shù)目,但是必須根據(jù)經(jīng)驗(yàn)進(jìn)行一些取舍,把精力花在比較復(fù)雜的模塊上。

 Essential Complexity (ev(G))基本復(fù)雜度

  基本復(fù)雜度是用來衡量程序非結(jié)構(gòu)化程度的,非結(jié)構(gòu)成分降低了程序的質(zhì)量,增加了代碼的維護(hù)難度,使程序難于理解。因此,基本復(fù)雜度高意味著非結(jié)構(gòu)化程度高,難以模塊化和維護(hù)。實(shí)際上,消除了一個(gè)錯(cuò)誤有時(shí)會(huì)引起其他的錯(cuò)誤。

計(jì)算方法

  將圈復(fù)雜度圖中的結(jié)構(gòu)化部分簡化成一個(gè)點(diǎn),計(jì)算簡化以后流程圖的圈復(fù)雜度就是基本復(fù)雜度。

優(yōu)點(diǎn)

  衡量非結(jié)構(gòu)化程度;反映代碼的質(zhì)量;預(yù)測(cè)代碼維護(hù)量,輔助模塊劃分;與所用的高級(jí)程序設(shè)計(jì)語言類型無關(guān)。

應(yīng)用

  當(dāng)基本復(fù)雜度為1,這個(gè)模塊是充分結(jié)構(gòu)化的;當(dāng)基本復(fù)雜度大于1而小于圈復(fù)雜度,這個(gè)模塊是部分結(jié)構(gòu)化的;當(dāng)基本復(fù)雜度等于圈復(fù)雜度,這個(gè)模塊是完全非結(jié)構(gòu)化的。

 Module Design Complexity (iv(G))模塊設(shè)計(jì)復(fù)雜度

  模塊設(shè)計(jì)復(fù)雜度是用來衡量模塊判定結(jié)構(gòu),即模塊和其他模塊的調(diào)用關(guān)系。軟件模塊設(shè)計(jì)復(fù)雜度高意味模塊耦合度高,這將導(dǎo)致模塊難于隔離、維護(hù)和復(fù)用。

計(jì)算方法

  模塊設(shè)計(jì)復(fù)雜度是從模塊流程圖中移去那些不包含調(diào)用子模塊的判定和循環(huán)結(jié)構(gòu)后得出的圈復(fù)雜度,因此模塊設(shè)計(jì)復(fù)雜度不能大于圈復(fù)雜度,通常是遠(yuǎn)小于圈復(fù)雜度。

優(yōu)點(diǎn)

  衡量模塊對(duì)其下層模塊的支配作用;衡量一個(gè)模塊到其子模塊進(jìn)行集成測(cè)試的最小數(shù)量;定位可能多余的代碼;以復(fù)雜的計(jì)算邏輯和設(shè)計(jì)來區(qū)分模塊;是設(shè)計(jì)復(fù)雜度(S0)和集成復(fù)雜度(S1)計(jì)算的基礎(chǔ);與所用的高級(jí)程序設(shè)計(jì)語言類型無關(guān)。

 Design Complexity (S0)設(shè)計(jì)復(fù)雜度

  設(shè)計(jì)復(fù)雜度以數(shù)量來衡量程序模塊之間的相互作用關(guān)系,它提供了系統(tǒng)級(jí)模塊設(shè)計(jì)復(fù)雜度的概況,有助于衡量進(jìn)行自底向上集成測(cè)試的效果,而且提供了全面衡量程序設(shè)計(jì)規(guī)格和復(fù)雜度的數(shù)據(jù),不反映獨(dú)立模塊的內(nèi)部情況。高設(shè)計(jì)復(fù)雜度的系統(tǒng)意味著系統(tǒng)各部分之間有著復(fù)雜的相互關(guān)系,這樣系統(tǒng)將難以維護(hù)。

S0是程序中所有模塊設(shè)計(jì)復(fù)雜度之和,計(jì)算公式如下:

 優(yōu)點(diǎn)

  可應(yīng)用于完整的軟件,也可應(yīng)用于任何子系統(tǒng);衡量代碼的質(zhì)量;指出一個(gè)模塊整體的復(fù)雜度,反映了每個(gè)模塊和其內(nèi)部模塊的控制關(guān)系;揭示了程序中模塊調(diào)用的復(fù)雜度;有助于集成復(fù)雜度的計(jì)算。

 Integration Complexity (S1)集成復(fù)雜度

  集成復(fù)雜度是為了防止錯(cuò)誤所必須進(jìn)行的集成測(cè)試的數(shù)量表示,另一種說法是程序中獨(dú)立線性子樹的數(shù)目,一棵子樹是一個(gè)有返回的調(diào)用序列。就像圈復(fù)雜度是測(cè)試路徑的數(shù)目,而集成復(fù)雜度是程序或其子系統(tǒng)的獨(dú)立線性子樹。

計(jì)算方法

  一個(gè)程序的集成復(fù)雜度和一個(gè)模塊的圈復(fù)雜度是非常相似的,必須計(jì)算對(duì)程序進(jìn)行完全測(cè)試所需集成測(cè)試的數(shù)目。S1的計(jì)算公式:

S1=S0-N+1

N是程序中模塊的數(shù)目。

優(yōu)點(diǎn)

  有助于集成測(cè)試的實(shí)施;量化集成測(cè)試工作且反映了系統(tǒng)設(shè)計(jì)復(fù)雜度;有助于從整體上隔離系統(tǒng)復(fù)雜度。

 Number of Lines (nl)行數(shù)

行數(shù)是模塊中總的行數(shù),包括代碼和注釋。

優(yōu)點(diǎn):

  計(jì)算簡單;與所用的高級(jí)程序設(shè)計(jì)語言類型無關(guān);指出了模塊的行數(shù)(即模塊的規(guī)模),規(guī)模小的模塊易于理解和維護(hù)。

 Normalized Complexity (nv)規(guī)范化復(fù)雜度

規(guī)范化復(fù)雜度是圈復(fù)雜度除以行數(shù)。

計(jì)算方法

nv=v(G)/nl

優(yōu)點(diǎn)

  與所用的高級(jí)程序設(shè)計(jì)語言類型無關(guān);定義那些有著顯著判定邏輯密度的模塊,這些模塊相對(duì)于其他常見規(guī)范模塊需要做更多的維護(hù)工作。

 Global Data Complexity (gdv(G))全局?jǐn)?shù)據(jù)復(fù)雜度

  全局?jǐn)?shù)據(jù)復(fù)雜度(需有McCabe Data)量化了模塊結(jié)構(gòu)和全局?jǐn)?shù)據(jù)變量的關(guān)系,它說明了模塊對(duì)外部數(shù)據(jù)的依賴程度,同時(shí)度量了全局?jǐn)?shù)據(jù)的測(cè)試工作,也描述了模塊之間的耦合關(guān)系,能反映潛在的維護(hù)問題。

  對(duì)于如何跟蹤全局?jǐn)?shù)據(jù)使用情況的更多信息,可以參考《McCabe Data in Using McCabe IQ Add-Ons》。

 Specified Data Complexity (sdv(G))局部數(shù)據(jù)復(fù)雜度

  局部數(shù)據(jù)復(fù)雜度(需有McCabe Data)量化了模塊結(jié)構(gòu)和用戶局部數(shù)據(jù)變量的關(guān)系,同時(shí)度量了局部數(shù)據(jù)的測(cè)試工作。

  我們能夠使用McCabe Data的數(shù)據(jù)字典選擇單獨(dú)的數(shù)據(jù)元素,指出每個(gè)數(shù)據(jù)元素具體的數(shù)據(jù)類型。局部數(shù)據(jù)復(fù)雜度還提供了其他的數(shù)據(jù)選擇準(zhǔn)則,量化了每個(gè)模塊中相應(yīng)數(shù)據(jù)對(duì)模塊控制結(jié)構(gòu)的影響。

  關(guān)于數(shù)據(jù)字典的更多信息,參考文檔《McCabe Data in Using McCabe IQ Add-Ons.》。

 Pathological Complexity (pv(G))病態(tài)數(shù)據(jù)復(fù)雜度

  病態(tài)數(shù)據(jù)復(fù)雜度衡量一個(gè)模塊包含的完全非結(jié)構(gòu)化成份的程度,標(biāo)出向循環(huán)內(nèi)部跳入的問題代碼,而這些部分具有最大的風(fēng)險(xiǎn)度,通常需要重新設(shè)計(jì)。

計(jì)算方法

  所有的非結(jié)構(gòu)部分除去向循環(huán)內(nèi)跳入的結(jié)構(gòu),轉(zhuǎn)化為線結(jié)構(gòu),病態(tài)復(fù)雜度就等于簡化以后流程圖的圈復(fù)雜度。

優(yōu)點(diǎn)

  與所用的高級(jí)程序設(shè)計(jì)語言類型無關(guān);指出了可靠性的問題,降低了維護(hù)風(fēng)險(xiǎn);幫助識(shí)別極不可靠的軟件。

Halstead Metrics(Halstead 復(fù)雜度)

  McCabe QA能夠?yàn)樗x擇的語言產(chǎn)生Halstead Metrics復(fù)雜度。Halstead復(fù)雜度是以程序中出現(xiàn)的運(yùn)算符和運(yùn)算元為計(jì)數(shù)對(duì)象,以它們出現(xiàn)的次數(shù)作為計(jì)數(shù)目標(biāo)(直接測(cè)量指標(biāo)),然后據(jù)以計(jì)算出程序容量、工作量。

優(yōu)點(diǎn)

  不要求對(duì)程序結(jié)構(gòu)進(jìn)行深層次分析;能夠預(yù)測(cè)錯(cuò)誤率;預(yù)測(cè)維護(hù)工作量;有利于項(xiàng)目規(guī)劃,衡量所有程序的復(fù)雜度;計(jì)算方法簡單;與所用的高級(jí)程序設(shè)計(jì)語言類型無關(guān);眾多研究結(jié)構(gòu)研究表明Halstead復(fù)雜度對(duì)于預(yù)測(cè)程序工作計(jì)劃和程序的Bug非常有用。

 Line Count復(fù)雜度描述了Line Count復(fù)雜度并列出了它們的優(yōu)點(diǎn)

Line Count Metrics(Line Count復(fù)雜度)

優(yōu)點(diǎn)

  軟件物理規(guī)模的度量;定義了具體的Line Count數(shù)據(jù),例如注釋行和空行;協(xié)助指出難于理解的模塊。

  • 上一篇: 新一代IP寬帶接入網(wǎng)
  • 下一篇: 拓展企業(yè)解決方案的千兆以太網(wǎng)產(chǎn)品系列
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1