• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Java程序度量工具的實現(xiàn)及案例探討

      2013-11-15 02:07:24朱云娜
      電子測試 2013年17期
      關鍵詞:分析器源代碼復雜性

      朱云娜

      (遼寧廣播電視大學 110034)

      0 引言

      在軟件工程與技術領域中,傳統(tǒng)的軟件度量技術與面向?qū)ο蟮能浖攘考夹g之間,最大的不同之處主要表現(xiàn)在面向?qū)ο蟮亩攘考夹g在實現(xiàn)定量測量的過程中,需要對于類之間的耦合程度以及類的復雜度、內(nèi)聚力、繼承層次復雜度等進行研究。在面向?qū)ο蟮能浖攘矿w系中,雖然能夠應用傳統(tǒng)方法進行軟件體系中某一模塊復雜度的定量測量與度量實現(xiàn),但是對于軟件體系中的某些定義的還需要進行補充。結(jié)合當前軟件工程以及技術的發(fā)展應用情況,國內(nèi)外已經(jīng)存在有一些進行計算機程度復雜度計算應用的軟件工具,像SafePro/Eval等軟件工具就能夠?qū)崿F(xiàn)對于C++以及ADA等語言程序中McCabe以及Halstead、MOOSE、MOOD等計算機程序復雜度的計算測量。此外,在軟件工具的設計開發(fā)中,通過應用CK度量套件中的度量方法,并利用Delphi進行設計開發(fā)出針對Java語言程序的度量工具,在我國也有實現(xiàn),同時,再加上我國這一時期設計開發(fā)出的通過VC++的應用進行McCabe、Halstead復雜度的軟件工具,這兩種軟件工具均在不具有跨平臺性的情況下,都涉及到對于計算機數(shù)據(jù)庫的相關操作。最后,在這一時期,國外的Shimba以及Jstyle則是針對Java語言程序的開發(fā)設計的兩個度量工具,在實際應用中具有不能夠?qū)崿F(xiàn)Halstead復雜度計算的局限性。

      1 度量工具的度量算法與度量標準分析

      在面向?qū)ο蟮能浖攘考夹g中,面向?qū)ο蟪绦虻幕締挝皇穷?,因此,在面向?qū)ο蟮亩攘坑嬎阒校饕沁M行類的規(guī)模以及類的層次、類的協(xié)作、個體類的度量計算。通常情況下,在進行程序規(guī)模的度量計算中多采用行數(shù)度量法;對于類之間的繼承層次復雜性度量計算,則多采用DIT以及NOC度量法進行度量計算;對于類之間的通信復雜性則多是采用RFC度量法進行度量計算;此外,對于類的邏輯復雜性的度量計算則采用的是WMC度量法;最后,應用McCabe以及Halstead度量法進行方法復雜性的度量計算。

      首先,在進行程序規(guī)模的度量中,主要是通過對于程序規(guī)模的度量,實現(xiàn)對于程序復雜性的度量評價,通常情況下,多采用的是行數(shù)度量法,也就是通過對于程序的源代碼行數(shù)情況進行統(tǒng)計,實現(xiàn)對于程序規(guī)模以及程序復雜性的度量。通常情況下,在相關研究中顯示,小于100條語句的小程序出錯率與可執(zhí)行代碼的行數(shù)之間具有一定的線性關聯(lián),往往隨著程序的增大,程序出錯率會呈現(xiàn)出非線性增長變化。因此,使用行數(shù)度量法能夠非常直觀的實現(xiàn)對于程序規(guī)模與復雜性的度量。

      其次,在進行類之間的繼承層次復雜性度量計算中,Java語言程序?qū)τ陬愔g的繼承層次要求使用單繼承機制實現(xiàn),也就是說Java語言程序中,類繼承樹都只存在有一個根結(jié)點,不管是J2SE提供的類,還是程序員開發(fā)設計的類都繼承于這個根結(jié)點。由于在進行類之間的繼承層次復雜性度量計算中,主要是進行程序開發(fā)員所開發(fā)程序的復雜度度量計算,因此,多使用DIT以及NOC兩種度量方法進行類之間繼承層次復雜度的計算,其中,DIT度量法主要是進行繼承樹的深度度量計算,也就是進行從結(jié)點到樹根之間最大距離的度量計算;而NOC度量法則是進行直接從屬于某類的子類總數(shù)的度量計算。

      再次,在進行類之間的通信復雜性度量計算中,類的響應集合RFC通常多包含類中被調(diào)用的其他類的方法,能夠?qū)崿F(xiàn)對于潛在類之間的通信度量,因此,對于類之間的通信復雜度多使用RFC度量法進行計算。具體度量計算過程如下,假設某類的方法為M1、M2、M3……Mn,{Ri}表示某類中方法i調(diào)用的方法集合,{M}表示某類的所有方法的集合,則有RS={M}∪alli{Ri};RFC=|RS|。

      在進行類的邏輯復雜性的度量計算中,類的加權方法數(shù)WMC主要是對于類所包含的方法數(shù)的體現(xiàn)與反映,或者是對于類之間方法的邏輯復雜性進行度量,因此,對于類之間的邏輯復雜性的度量計算多是采用WMC度量法進行。

      最后,在進行方法的邏輯復雜性度量計算中,多是使用McCabe以及Halstead度量法進行度量計算。首先,McCabe度量法在進行方法的邏輯復雜性度量計算中,是通過模塊的控制流量圖,實現(xiàn)對于模塊結(jié)構(gòu)復雜性的度量確定,主要是通過下列計算公式(1)進行度量計算實現(xiàn)。

      在上述計算公式中,V(G)表示的是強連通有向圖G中的環(huán)數(shù)情況,m則表示G中的弧數(shù),n表示G中的結(jié)點數(shù),p則是G中強連通分量的個數(shù)。其次,應用Halstead度量法進行方法的邏輯復雜性度量計算時,Halstead軟件工具主要是進行軟件規(guī)模的度量,也就是根據(jù)軟件的詞匯量的相關信息進行軟件長度的預測,從而實現(xiàn)對于軟件級別等的度量實現(xiàn)。應用Halstead度量法進行度量計算中,主要是根據(jù)Halstead度量軟件工具中的一系列度量值,通過軟件程序代碼中出現(xiàn)的不同操作符個數(shù)以及不同操作數(shù)個數(shù)、操作符總數(shù)、操作數(shù)總數(shù)等參數(shù),根據(jù)計算公式進行度量計算。

      2 Java程序度量工具的設計與案例探討

      2.1 Java程序度量工具的設計

      本文中所分析探討以及設計實現(xiàn)的Java程序度量工具是在對于SafePro/Eval所支持開發(fā)的度量工具以及測試工具QE-SAT的集成應用上設計實現(xiàn)的,其中,QE-SAT工具能夠?qū)τ贘ava程序項目中的源代碼進行分析,并實現(xiàn)動態(tài)以及靜態(tài)的測試。在QESAT工具對于Java程序項目源代碼的靜態(tài)以及動態(tài)測試中,靜態(tài)測試是進行被測試程序的程序結(jié)構(gòu)以及復雜度信息的分析,而動態(tài)測試則是進行程序項目源代碼中語句以及分支、方法、類的覆蓋等測試實現(xiàn),同時動態(tài)測試還能夠?qū)崿F(xiàn)對于程序執(zhí)行頻度的分析測試。Java程序度量工具在通過上述設計組成工具的度量計算后,將計算所得的復雜度信息顯示在QE-SAT工具中的圖形顯示界面中,以實現(xiàn)對于Java程序結(jié)構(gòu)與復雜度的度量測試。如下圖1所示,為Java程序度量工具中靜態(tài)分析器的結(jié)構(gòu)示意圖。

      圖1 Java程序度量工具中靜態(tài)分析器的結(jié)構(gòu)示意圖

      根據(jù)上示靜態(tài)分析器的總體結(jié)構(gòu)示意圖可以看出,Java程序度量工具中的靜態(tài)分析器主要由Java語法分析器以及符號表、復雜度信息分析器、語法樹四個結(jié)構(gòu)部分組成。Java程序度量工具在度量計算中,Java程序中的源文件在通過語法分析器進行分析后,形成符號表以及語法樹,然后再通過復雜度信息分析器對于語法樹的各節(jié)點進行分析,同時根據(jù)符號表中相關的標識符的相關定義信息,將分支作為基本單元結(jié)構(gòu)對于其中的變量操作信息進行提取,以實現(xiàn)對于程序結(jié)構(gòu)與復雜度的度量計算,計算結(jié)果將以XML格式存入到計算機的信息庫中,以輸出應用。在Java程序度量工具中,靜態(tài)分析器中的語法分析器是基于Java語言并根據(jù)相關語法自動生成的一種語法分析器,在對于這種自動生成語法分析器修改的基礎上,最終形成靜態(tài)分析器中的語法分析器。

      2.2 案例探討

      Java程序度量工具在進行代碼分析時具有較為突出的輔助作用,下文將以Java程序度量工具對于QE-SAT測量工具中jstaticdata數(shù)據(jù)包源代碼的分析為例,進行探討說明。為運行QE-SAT工具情況下,對被測數(shù)據(jù)包中的源代碼靜態(tài)分析后,生成信息顯示界面。在上述QE-SAT靜態(tài)分析器分析顯示的結(jié)果中,用戶在項目視圖或者是類視圖中進行類或者是方法的名稱選擇,就能夠通過信息視圖得知所選擇的類與方法的相對應各種度量值。

      3 結(jié)束語

      總之,Java程序度量工具在進行軟件程序開發(fā)設計中,具有幫助程序員分析代碼、及時發(fā)現(xiàn)軟件程序代碼中的問題,實現(xiàn)程序的優(yōu)化,因此,進行Java程序度量工具的實現(xiàn)以及案例探討,具有積極的作用與價值意義。

      [1]王樹森,顧慶,陳燾,陳道蓄.基于復雜網(wǎng)絡的大型軟件系統(tǒng)度量[J].計算機科學.2009(2).

      [2]姜元鵬,張永平,姜淑娟.測試Java異常處理機制的方法[J].計算機工程與設計.2010(20).

      [3]黃沛杰,楊銘銓.代碼質(zhì)量靜態(tài)度量的研究與應用[J].計算機工程與應用.2011(23).

      [4]徐軍,張嬡,葉澄清.Java多線程動態(tài)測試中的插裝[J].計算機工程與應用.2011(19).

      [5]李必信,楊朝暉,譚毅,朱平,李宣東,鄭國梁.一種基于切片技術度量Java耦合性的框架[J].計算機學報.2011(3).

      猜你喜歡
      分析器源代碼復雜性
      人工智能下復雜軟件源代碼缺陷精準校正
      計算機仿真(2023年8期)2023-09-20 11:23:42
      基于TXL的源代碼插樁技術研究
      PFNA與DHS治療股骨近端復雜性骨折的效果對比
      簡單性與復雜性的統(tǒng)一
      科學(2020年1期)2020-08-24 08:07:56
      酒精分析器為什么能分辨人是否喝過酒
      軟件源代碼非公知性司法鑒定方法探析
      多邊形電極線形離子阱質(zhì)量分析器的結(jié)構(gòu)與性能
      分析化學(2018年12期)2018-01-22 12:31:46
      應用于詞法分析器的算法分析優(yōu)化
      應充分考慮醫(yī)院管理的復雜性
      揭秘龍湖產(chǎn)品“源代碼”
      澜沧| 江陵县| 商河县| 大港区| 乌兰察布市| 定安县| 松桃| 迁西县| 垣曲县| 邢台市| 循化| 永州市| 平陆县| 青冈县| 郎溪县| 九江市| 长葛市| 卢氏县| 兴隆县| 金坛市| 平遥县| 西平县| 婺源县| 文水县| 体育| 乡城县| 浦县| 独山县| 获嘉县| 昌图县| 芒康县| 射洪县| 灵璧县| 北京市| 玉山县| 邓州市| 黄梅县| 旌德县| 耒阳市| 吉安县| 南华县|