亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        分支語句重構(gòu)算法的研究與應(yīng)用

        2018-03-19 02:44:48趙會群孫雨
        計算機工程與應(yīng)用 2018年6期
        關(guān)鍵詞:嵌套表達(dá)式代數(shù)

        趙會群,孫雨

        北方工業(yè)大學(xué)計算機學(xué)院,北京100144

        分支語句重構(gòu)算法的研究與應(yīng)用

        趙會群,孫雨

        北方工業(yè)大學(xué)計算機學(xué)院,北京100144

        CNKI網(wǎng)絡(luò)出版:2017-04-14,http://kns.cnki.net/kcms/detail/11.2127.TP.20170414.1723.020.html

        1 引言

        軟件產(chǎn)品的后期維護(hù)問題往往是由于軟件自身的設(shè)計不當(dāng),然而,這種由軟件產(chǎn)品質(zhì)量引起的問題不僅會給用戶帶來經(jīng)濟(jì)損失,還會在諸如軍事、醫(yī)療、航天、通信、交通等相關(guān)領(lǐng)域帶來災(zāi)難性的后果。軟件的安全性和可靠性就顯得尤為重要,而要保證軟件的正常運作,為人們提供最優(yōu)質(zhì)的服務(wù),就需要對軟件進(jìn)行不斷地維護(hù)與測試,這其中非常重要的一項工作就是軟件重構(gòu)[1]。

        代碼重構(gòu)是對軟件內(nèi)部結(jié)構(gòu)的一種調(diào)整[2],目的是在不改變軟件可觀察行為的前提下,提高其可理解性,降低其修改成本[3]。面向結(jié)構(gòu)分析需求的代碼重構(gòu)的基本思想是,通過對代碼結(jié)構(gòu)的分析與研究,確定對應(yīng)的重構(gòu)方法,以便對代碼在結(jié)構(gòu)上的識別與劃分更加精準(zhǔn)與高效。

        關(guān)于重構(gòu)的研究,前人已經(jīng)做了大量的研究,在重構(gòu)工具的設(shè)計與實現(xiàn)方面,由李龍[4]等實現(xiàn)了一個基于AADL架構(gòu)的軟件重構(gòu)工具,軟件架構(gòu)的重構(gòu)主要通過軟件模態(tài)的遷移實現(xiàn),運用生成的AADL模態(tài)的動態(tài)藍(lán)圖動態(tài)模擬目標(biāo)軟件系統(tǒng)的模態(tài)遷移過程,從而便于進(jìn)行代碼重構(gòu),最終實現(xiàn)該軟件重構(gòu)工具。在代碼壞味的處理方面,高原[5]等人對代碼壞味處理順序的優(yōu)先級進(jìn)行了研究,選取具有代表性的10種代碼壞味,從每種代碼壞味的產(chǎn)生原因、癥狀,對軟件的影響以及相應(yīng)的處理這4個方面進(jìn)行分析,考慮重構(gòu)操作與相對應(yīng)的代碼壞味的關(guān)系,分析重構(gòu)操作的先后順序,最終得出代碼壞味處理順序的優(yōu)先級。在代碼的類提取方面,由Bavota[6]等對如何識別提煉類重構(gòu)機會進(jìn)行了研究,運用的方法是將結(jié)構(gòu)和語義凝聚。他們利用結(jié)構(gòu)和語義在方法之間的關(guān)系,提出了一個基于圖理論的提取類重構(gòu)方法,這個方法強調(diào)了語義和結(jié)構(gòu)相結(jié)合措施的益處,也強調(diào)了該方法在軟件開發(fā)環(huán)境中的潛在有用性。在代碼的搬移函數(shù)方面,由Han[7]提出了一個自動化的方法來識別多個獨立搬移函數(shù)重構(gòu)候選點,并且可以同時應(yīng)用以最大化提高軟件的可維護(hù)性,此方法運用最高獨立集的概念,確定多個重構(gòu)操作可以同時被運用。運用實踐證明該方法增強了重構(gòu)識別過程的時效和效益,提高軟件可維護(hù)性,與一次選擇一個重構(gòu)候選點的方法相比,需要較少的計算成本。在預(yù)測維護(hù)工作方面,由Yamashita[8]等研究了在多大程度上可以通過代碼味道檢測來預(yù)測維護(hù)問題,代碼味道作為糟糕代碼和不良設(shè)計的指示燈,很容易在軟件維護(hù)和演化階段引起一些問題。這項研究做了一個非常詳細(xì)的調(diào)查,通過已知的現(xiàn)有的代碼味道去預(yù)測維護(hù)階段可能會出現(xiàn)的問題。最終從觀察中得到的結(jié)論是代碼味道只是維護(hù)難點的一個部分指示器,并不是占絕大部分或者全部責(zé)任。

        本文所做的重構(gòu)工作借鑒了以上相關(guān)工作的工作經(jīng)驗,從分析代碼的壞味道開始,到提出具體的解決方案,到最后達(dá)到重構(gòu)的效果[9]。

        一般程序的偽代碼中,會存在一系列的條件語句,而條件語句中又會嵌套條件語句,多重嵌套后導(dǎo)致程序邏輯結(jié)構(gòu)復(fù)雜化,不利于分析程序的執(zhí)行路徑。在軟件測試中,基本路徑測試法是一種很常見的測試方法,它是一種白箱測試技術(shù),基本路徑測試方法允許測試用例設(shè)計者導(dǎo)出一個過程設(shè)計的邏輯復(fù)雜性測度,并使用該測度作為指南來定義執(zhí)行路徑的基本集。而要得到執(zhí)行路徑的基本集,首先要分析程序的執(zhí)行路徑[10],這時清晰的程序邏輯結(jié)構(gòu)就顯得尤為重要。

        傳統(tǒng)的條件語句形式都是以if-else關(guān)鍵詞的形式出現(xiàn)的,還有特殊的if-else嵌套形式,多重的嵌套使得程序的邏輯結(jié)構(gòu)復(fù)雜化,不夠清晰易懂,測試時,會導(dǎo)致分析程序的執(zhí)行路徑花費更多的時間。據(jù)此,本文提出了一種對嵌套條件語句進(jìn)行優(yōu)化的自動化重構(gòu)方法,依據(jù)重構(gòu)理論知識中代碼壞味的判定方法[11],運用語法分析中的自下而上分析方法和歸約思想[12],將嵌套的條件語句轉(zhuǎn)化為線性排列的條件語句,簡化了程序的邏輯結(jié)構(gòu),提高了代碼的可讀性,也提高了路徑分析的精度,應(yīng)用于改進(jìn)后的路徑集生成工具可以得到更準(zhǔn)確的結(jié)果,對提高測試效率有很大幫助。本文主要實現(xiàn)了一種代碼自動化重構(gòu)的工具,同時改進(jìn)了另一個相關(guān)工具(路徑集生成工具)中生成模型代數(shù)[13]表達(dá)式的算法(準(zhǔn)確度較低),該重構(gòu)工具的應(yīng)用提高了路徑集生成工具的效率。

        接下來的第2章介紹了重構(gòu)條件分支語句工具的實現(xiàn)過程;第3章介紹了改進(jìn)的生成代數(shù)表達(dá)式算法;第4章介紹了實驗結(jié)果與分析過程;最后進(jìn)行了總結(jié)。

        2 重構(gòu)分支語句的實現(xiàn)方法

        該方法是以編譯原理中語法分析方法為基礎(chǔ),運用其中的歸約思想,在不改變偽代碼功能的基礎(chǔ)上,實現(xiàn)if-else嵌套語句的變換,最終實現(xiàn)偽代碼的重構(gòu)。方法的大概過程如下所示:

        步驟1準(zhǔn)備源偽代碼。

        步驟2對偽代碼進(jìn)行提取,替換,收集關(guān)鍵行,運用關(guān)鍵詞來偵測其所在的行,將else替換為if形式,再收集所有的if條件表達(dá)式。

        步驟3運用編譯原理中語法分析的自下而上分析方法,利用其中的歸約思想,將if嵌套的代碼塊變換為單一if條件。

        步驟4得到組合條件,最終可用于進(jìn)行直接替換。

        步驟5首先偵測出替換點,進(jìn)行代碼塊的差異性分析,定位出需要替換的代碼塊位置,替換完畢進(jìn)行相應(yīng)的刪減,除去已無關(guān)的行。

        步驟6得到重構(gòu)之后的偽代碼。

        2.1 生成組合條件

        語法分析的方法——自下而上分析的原理是,從輸入串開始,逐步進(jìn)行“歸約”,直到文法的開始符號,即從樹末端開始,構(gòu)造語法樹。采用“移進(jìn)-歸約”思想進(jìn)行自下而上分析,用一個寄存符號的先進(jìn)后出棧,把輸入符號一個一個地移入到棧里,當(dāng)棧頂形成某個產(chǎn)生式的候選式時,即把棧頂?shù)倪@一部分替換成(規(guī)約為)該生產(chǎn)式的左部符號。邊輸入單詞符號(移進(jìn)到棧里),邊歸約。過程中處理的核心問題是:識別可歸約串。

        在if-else重構(gòu)的算法中運用了類似于歸約的基本思想,在將if條件入棧的同時,把匹配else的出現(xiàn)作為識別到了可歸約串,繼而得到可替換的if組合條件。整個過程也是邊輸入、邊做類似歸約的操作。相關(guān)算法見算法1。

        算法1生成組合條件算法getIfMap()

        輸入:初步處理偽代碼提取的關(guān)鍵行。

        輸出:組合條件。

        while(關(guān)鍵行不為空)

        2.2 重構(gòu)嵌套語句

        偵測替換點時,要進(jìn)行代碼塊的差異性分析,首次遇到的單行if并不能作為替換點,首次遇到雙層嵌套時,或者是三層嵌套,表示替換點已被偵測到,需要進(jìn)行相應(yīng)的替換與刪減,最終得到重構(gòu)代碼,相關(guān)算法見算法2。

        算法2重構(gòu)if嵌套changeIfNest()

        輸入:組合條件。

        輸出:重構(gòu)后的偽代碼。

        鋼-混凝土組合結(jié)構(gòu)橋梁是指鋼腹板或鋼桁架組成的鋼梁與混凝土面板通過抗剪連接件連接在一起的橋梁結(jié)構(gòu)形式,這種結(jié)構(gòu)可以讓鋼材和混凝土共同承受主梁的荷載.

        while(原偽代碼不為空)

        if遇到相鄰兩行都包含if then取一個組合條件來替換,移除多余的if行;

        if遇到相鄰三行都包含if then繼續(xù)取組合條件來替換,并移除多余if行;

        if遇到單行if,而此時組合條件集不為空then直接進(jìn)行替換;

        endwhile

        3 生成模型代數(shù)表達(dá)式算法的改進(jìn)

        重構(gòu)之后的偽代碼可以用于生成基本路徑集的工具,該工具可生成用于測試的基本路徑集。在生成基本路徑集工具中,生成模型代數(shù)表達(dá)式的算法存在一定的不足。

        生成模型代數(shù)表達(dá)式的過程如下,首先運用編譯原理中關(guān)于基本塊的劃分原理,對偽代碼進(jìn)行標(biāo)記劃分。需要對偽代碼進(jìn)行邏輯結(jié)構(gòu)的分析,判斷基本語句的流程關(guān)系,所做的標(biāo)記能夠與相應(yīng)的控制流圖表示一致,該算法掃描該偽代碼的結(jié)構(gòu)與標(biāo)記,生成模型代數(shù)表達(dá)式。而該表達(dá)式最終提取解析出來的各個子表達(dá)式所表示的路徑與控制流圖的路徑完全相同,才是最終正確的結(jié)果。但先前的算法在此環(huán)節(jié)有部分功能的缺失,未能足夠準(zhǔn)確地生成預(yù)期的模型代數(shù)表達(dá)式。本章對該算法做出了改進(jìn),具體見算法3。

        算法3改進(jìn)的生成模型代數(shù)表達(dá)式算法

        //讀取經(jīng)過基本快劃分的偽代碼ReadPseudo_Code(Path)

        //構(gòu)件結(jié)點的前驅(qū)后繼關(guān)系表

        GenerateSuccessorMap

        //通過遞歸方法生成模型代數(shù)表達(dá)式

        //遞歸出口,該結(jié)點不存在后繼結(jié)點或結(jié)點出/現(xiàn)循環(huán)

        此處添加一個變量,用來判斷結(jié)點是否是目標(biāo)值}

        本次改進(jìn)的兩個函數(shù)分別是String generateSubExpression(Integer index){}和boolean isLoop(Integer index,int i){}。原來的算法在遇到循環(huán)條件的時候,無法實現(xiàn)結(jié)點的倒序遍歷,且由于遞歸條件的不夠完善,在生成的模型代數(shù)表達(dá)式中無法出現(xiàn)相同的子表達(dá)式?;谶@樣的兩個問題,對兩個函數(shù)進(jìn)行了相應(yīng)的擴展。通過后面的案例對比,可以看出本次算法改進(jìn)的有效性,能夠準(zhǔn)確地生成代數(shù)模型表達(dá)式。

        4 實驗結(jié)果與分析

        首先針對嵌套分支語句重構(gòu)方法進(jìn)行具體案例分析,驗證該重構(gòu)方法的有效性。之后應(yīng)用于選取的另外四個案例當(dāng)中,并運用于生成基本路徑集的工具中,同時引入改進(jìn)后的算法,得到了重構(gòu)與改進(jìn)前后的不同實驗結(jié)果,通過統(tǒng)計、對比、分析、驗證了重構(gòu)方法的通用性及改進(jìn)算法的有效性。

        4.1 重構(gòu)案例研究

        案例:任意輸入三邊的值,判斷三角形的類型。

        偽代碼如圖1所示。

        圖1 初始偽代碼

        首先依據(jù)if,else關(guān)鍵詞對偽代碼進(jìn)行掃描提取、替換、收集,得到用于生成組合條件的關(guān)鍵行。將關(guān)鍵行作為算法1的輸入,得到的組合條件如圖2所示。

        圖2 組合條件

        然后將得到的組合條件作為算法2的輸入,得到的重構(gòu)后的偽代碼如圖3所示。

        圖3 重構(gòu)后的偽代碼

        重構(gòu)后的偽代碼能夠保持程序原有功能,同時實現(xiàn)了代碼邏輯結(jié)構(gòu)的調(diào)整,簡化結(jié)構(gòu),增強程序的可讀性,遵循了重構(gòu)的基本概念要求。本次的重構(gòu)方法為以后生成基本路徑集提供了清晰的程序邏輯結(jié)構(gòu),容易建立語句之間的對應(yīng)關(guān)系,便于進(jìn)行基本塊的標(biāo)記劃分,提高了效率,對之后生成測試路徑集有很大幫助,同時說明該重構(gòu)方法在生成測試基本路徑集這一方面具有一定意義,即為測試工作提供了方便。

        4.2 重構(gòu)方法應(yīng)用案例研究

        案例:計算不超過100個數(shù)字的平均值,同時計算總和與有效數(shù)字個數(shù)。具體的程序偽代碼如圖4所示。

        圖4 待測路徑的程序偽代碼

        (1)重構(gòu)與改進(jìn)之前

        劃分基本塊后的程序流圖,如圖5所示。

        圖5 重構(gòu)前程序流程圖

        生成的代數(shù)表達(dá)式:(與預(yù)期不一致)

        預(yù)期的代數(shù)表達(dá)式:

        基本路徑:->>>

        獨立路徑:->>>

        (2)重構(gòu)與改進(jìn)之后

        劃分基本塊之后的程序流程圖如圖6所示。

        圖6 重構(gòu)后程序流程圖

        生成的代數(shù)表達(dá)式:(與預(yù)期一致)

        預(yù)期的代數(shù)表達(dá)式:

        基本路徑:->>>

        獨立路徑:->>>

        在使用路徑集生成工具之前,首先用重構(gòu)方法對偽代碼進(jìn)行重構(gòu),然后再進(jìn)行基本路徑集的生成工作。由于改進(jìn)算法之前生成的代數(shù)表達(dá)式與預(yù)期的不一致,在生成的過程中存在一些結(jié)點不可達(dá)的路徑,即路徑不完整。改進(jìn)算法之后生成的代數(shù)表達(dá)式可以與期望的表達(dá)式完全一致,最終生成與程序流程圖完全一致的基本路徑集。

        現(xiàn)補充介紹一個代碼相對復(fù)雜的案例,充分證明重構(gòu)工具和改進(jìn)算法的有效性。

        案例:NextDate是一個有三個變量(月份、日期和年)的函數(shù)。函數(shù)返回輸入日期后面的那個日期。變量月份、日期和年都是整數(shù)值,并滿足以下條件:c1:1≤日期≤31;c2:1≤月份≤12;c3:1840≤年≤2016。

        重構(gòu)前偽代碼如圖7,重構(gòu)后偽代碼如圖8。

        運用基本路徑集生成工具掃描此案例的偽代碼,生成基本路徑集。

        改進(jìn)前結(jié)果如下:

        獨立路徑:->>>

        存在大量終點不可達(dá)現(xiàn)象。

        改進(jìn)后結(jié)果如下:

        獨立路徑:->>>

        所有路徑均可達(dá)到終點。

        4.3 案例對比分析

        本文研究的是文獻(xiàn)[6]提出的五個案例,對其進(jìn)行重構(gòu)與應(yīng)用,也方便對重構(gòu)算法與改進(jìn)算法所產(chǎn)生的效果進(jìn)行先后對比。五個案例分別為:

        案例1輸入a,b值,經(jīng)過處理后輸出相應(yīng)的a,b值。

        案例2計算不超過100個數(shù)字的平均值,同時計算總和與有效數(shù)字個數(shù)。

        案例3任意輸入三邊的值,判斷三角形的類型。

        案例4通過一定的規(guī)則,計算傭金的問題。

        案例5輸入年月日,計算該日期后面的日期。

        圖7 重構(gòu)前偽代碼

        圖8 重構(gòu)后偽代碼

        本次實驗對每一個案例都進(jìn)行了重構(gòu),將得到的結(jié)果重新進(jìn)行基本塊的劃分,然后用改進(jìn)工具生成每一個案例的基本路徑集。為了數(shù)據(jù)的直觀簡潔,便于進(jìn)行對比,將得到的數(shù)據(jù)統(tǒng)計在兩張表格中進(jìn)行分析。

        具體的實驗數(shù)據(jù)可見表1和表2。

        表1 重構(gòu)前案例集數(shù)據(jù)

        表2 重構(gòu)后案例集數(shù)據(jù)

        表1和表2中列出了結(jié)點數(shù)量,基本路徑數(shù)量,路徑完整性。

        前后的不同之處表現(xiàn)在兩個方面:劃分基本塊所用時間的不同和路徑長度完整性的不同。重構(gòu)之前,由于嵌套語句的邏輯結(jié)構(gòu)比較復(fù)雜,導(dǎo)致劃分基本塊要用更多的時間,自動化重構(gòu)[14]之后,可以減短所用時間。重構(gòu)之前得到的基本路徑會有終點不可達(dá)的現(xiàn)象,即路徑不完整,有失準(zhǔn)確性,改進(jìn)生成模型代數(shù)表達(dá)式的算法后,可以確保所有路徑的完整性。

        通過此案例集的實驗結(jié)果可以驗證本次偽代碼重構(gòu)及改進(jìn)生成模型代數(shù)表達(dá)式算法的有效性。

        5 結(jié)束語

        本文所做的研究,以基于模型代數(shù)的基本路徑集的自動生成工具為基礎(chǔ),該工具是一種求基本路徑集的全新思路,能夠較為有效地生成待測程序的基本路徑。該工具通過掃描程序的偽代碼,最終生成與該偽代碼的流圖中相對應(yīng)的基本路徑集,而在掃描偽代碼的過程中,生成的代數(shù)表達(dá)式存在一定的不足,本文首先對偽代碼進(jìn)行重構(gòu),而后改進(jìn)生成代數(shù)表達(dá)式的算法,最終使得該工具能夠非常準(zhǔn)確地生成待測程序的基本路徑。

        通過面向結(jié)構(gòu)分析需求的代碼重構(gòu)之后,代碼會具有更加清晰易懂的程序結(jié)構(gòu)(可見4.1節(jié)重構(gòu)案例研究),便于進(jìn)行分析程序的執(zhí)行路徑,使得路徑集生成工具的性能也得到提升。將本方法與技術(shù)運用在基于模型代數(shù)的基本路徑集自動生成工具中,該工具對偽代碼的識別有一定的規(guī)則要求,造成代數(shù)表達(dá)式的生成存在一定的不足,通過本次重構(gòu)及算法的改進(jìn),能夠解決以上的不足之處,提高了劃分基本塊的效率,更快地生成了準(zhǔn)確的基本測試路徑集。更加具體地體現(xiàn)了代碼重構(gòu)的重要意義,使重構(gòu)能夠更為廣泛地應(yīng)用到不良代碼當(dāng)中[15],而不僅僅只是停留在理論層面,同時驗證了該代碼重構(gòu)工具的有效性,而且對測試自動化有重要意義。這樣的實踐使得面向結(jié)構(gòu)的重構(gòu)的理論與應(yīng)用彼此融會貫通,豐富了理論,擴展了應(yīng)用范圍。當(dāng)然,在實驗過程中,為了便于對比所選取的案例是較為簡短的,該算法能否解決更大規(guī)模的案例有待進(jìn)一步進(jìn)行研究和解決。

        [1] Fowler M.重構(gòu)改善既有代碼的設(shè)計[M].北京:人民郵電出版社,2013.

        [2] 王忠杰,徐曉飛,戰(zhàn)德臣.面向復(fù)用成本優(yōu)化的構(gòu)件重構(gòu)方法[J].軟件學(xué)報,2005,16(12):2157-2165.

        [3] 陳生慶,張立臣,陳廣明.面向方面軟件重構(gòu)等價性形式化證明方法[J].計算機科學(xué),2006,33(7):257-261.

        [4] 李龍,董云衛(wèi),覃楊森,等.基于AADL的軟件重構(gòu)工具設(shè)計與實現(xiàn)[J].計算機科學(xué),2011,38(7):121-125.

        [5] 高原,劉輝,樊孝忠,等.代碼壞味的處理順序[J].軟件學(xué)報,2012,23(8):1965-1977.

        [6] Bavota G,Lucia A D,Oliveto R.Identifying extract class refactoring opportunities using structural and semantic cohesion measures[J].Journal of Systems and Software,2011,84(3):397-414.

        [7] Han A R,Bae D H,Cha S.An efficient approach to identify multiple and independent move method refactoring candidates[J].Information and Software Technology,2015,59(C):53-66.

        [8] Yamashita A,Moonen L.To what extent can maintenance problems be predicted by code smell detection?-An empirical study[J].Information and Software Technology,2013,55(12):2223-2242.

        [9] Liu Hui,Liu Yang,Xue Guo.Case study on software refactoring tactics[J].IET Software,2014,8(1):1-11.

        [10] 孫晶,張學(xué)娜.面向測試和模型檢測需求的程序建模技術(shù)研究[J].計算機應(yīng)用研究,2015(9):2693-2696.

        [11] Hermans F,Pinzger M,Deursen A V.Detecting and refactoring code smells in spreadsheet formulas[J].Empir Software Engineering,2015,20(2):549-575.

        [12] 陳火旺,劉春林.程序設(shè)計語言編譯原理[M].3版.北京:國防工業(yè)出版社,2006.

        [13] 趙會群,盧飛.基于模型代數(shù)的基本路徑集的自動生成[J].計算機科學(xué),2017,44(4):114-117.

        [14] 陳林,徐寶文,錢巨,等.一種基于類型傳播分析的泛型實例重構(gòu)方法[J].軟件學(xué)報,2009,20(10):2617-2627.

        [15] Distante D,Garrido A,Camelier-Carvajal J.Business processes refactoring to improve usability in E-commerce applications[J].Electronic Commerce Research,2014,14(4):497-529.

        ZHAO Huiqun,SUN Yu.Research and application of refactoring algorithm of branch statements.Computer Engineering andApplications,2018,54(6):30-36.

        ZHAO Huiqun,SUN Yu

        College of Computer Science,North China University of Technology,Beijing 100144,China

        Due to the multiple nested of conditional branch statements,logic structure of the code is not clear and the code is difficult to read,the efficiency of dividing basic block is reduced when generating basic path set.On this basis,a method is proposed for automatic code refactoring.It uses bottom-up analysis and reduction,following compiler syntax analysis method,can realize automatic adjustment to the nested if-else conditional statement,and is more clearer to the structure of code,the code will be more suitable for the tool of generating basic path set.This method improves the efficiency of the tool of generating basic path set.For the tool of generating basic path set based on the model algebraic,it improves the algorithm of generating model algebraic expressions,and can generate basic path set accurately.Finally,through the comparison of the experiment,it verifies the effectiveness of the refactoring and the improved algorithm.

        multiple nested;automated refactoring;bottom-up analysis;reduction;model algebraic expression

        由于條件分支語句的多重嵌套,導(dǎo)致代碼的邏輯結(jié)構(gòu)不清晰,可讀性差,降低了生成基本路徑集時劃分基本塊的效率。據(jù)此,提出一種代碼自動化重構(gòu)方法,該方法運用編譯原理中語法分析的自下而上分析方法和歸約思想,能夠?qū)η短椎膇f-else條件語句實現(xiàn)自動化調(diào)整,實現(xiàn)代碼結(jié)構(gòu)的清晰化,更適用于生成基本路徑集的工具,該方法提高了生成基本路徑集的效率。而對于基于模型代數(shù)的基本路徑集生成工具,改進(jìn)了生成模型代數(shù)表達(dá)式的算法,并且能夠準(zhǔn)確地生成基本路徑集。最后通過實驗對案例進(jìn)行對比,驗證了重構(gòu)方法及改進(jìn)算法的有效性。

        多重嵌套;自動化重構(gòu);自下而上分析;歸約;模型代數(shù)表達(dá)式

        2016-10-13

        2017-01-16

        1002-8331(2018)06-0030-07

        A

        TP312

        10.3778/j.issn.1002-8331.1610-0151

        國家自然科學(xué)基金(No.61070030,No.61370051)。

        趙會群(1960—),男,博士,教授,研究領(lǐng)域為軟件體系結(jié)構(gòu),軟件測試;孫雨(1989—),女,碩士研究生,研究領(lǐng)域為軟件重構(gòu),E-mail:sunyu7412@163.com。

        猜你喜歡
        嵌套表達(dá)式代數(shù)
        例析“立幾”與“解幾”的嵌套問題
        基于嵌套Logit模型的競爭性選址問題研究
        兩個有趣的無窮長代數(shù)不等式鏈
        Hopf代數(shù)的二重Ore擴張
        什么是代數(shù)幾何
        科學(xué)(2020年1期)2020-08-24 08:08:06
        一個混合核Hilbert型積分不等式及其算子范數(shù)表達(dá)式
        表達(dá)式轉(zhuǎn)換及求值探析
        淺析C語言運算符及表達(dá)式的教學(xué)誤區(qū)
        一個非平凡的Calabi-Yau DG代數(shù)
        一種基于區(qū)分服務(wù)的嵌套隊列調(diào)度算法
        計算機工程(2014年6期)2014-02-28 01:25:29
        中文字幕亚洲综合久久| 国产肥熟女视频一区二区三区| 亚洲成a人片在线观看无码| 国产肉体XXXX裸体784大胆| 亚洲在中文字幕乱码熟女| 性色视频加勒比在线观看| 亚洲综合色区另类av| 国内精品一区视频在线播放 | 人妻久久一区二区三区蜜桃| 天下第二社区在线视频| 在线综合网| 亚洲最黄视频一区二区| 国产人成精品免费久久久| 午夜内射中出视频| 免费无码中文字幕A级毛片| 蜜桃激情视频一区二区| 中文字幕av中文字无码亚| 欧洲成人一区二区三区| 国产欧美日韩久久久久| 免费国产h视频在线观看86| 亚洲精品大全中文字幕| 亚洲av成人片色在线观看高潮 | 国产精品免费久久久久影院仙踪林| 国产AV无码专区久久精品网站| 亚洲熟妇夜夜一区二区三区| 91三级在线观看免费| 影音先锋女人aa鲁色资源| 亚洲日本欧美产综合在线| 亚洲国产AⅤ精品一区二区久| av影片手机在线观看免费网址| 色视频综合无码一区二区三区| 91麻豆国产香蕉久久精品| 白色月光在线观看免费高清| 久久精品av在线观看| 午夜精品久久久久久| 日本a在线天堂| 在线观看一区二区三区在线观看| 天天爽夜夜爽人人爽一区二区 | 人妻体体内射精一区二区| 一级做a爰片久久毛片| 亚洲男人的天堂色偷偷|