一種面向軟件演化的代碼可替換性評(píng)估方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種面向軟件演化的代碼可替換性評(píng)估方法,對(duì)演化原因進(jìn)行分析與定位,包括以下步驟:根據(jù)源代碼構(gòu)造相應(yīng)的抽象語(yǔ)法樹(shù);在抽象語(yǔ)法樹(shù)上提取表示依賴(lài)關(guān)系的邊,構(gòu)造出代碼耦合關(guān)系圖;基于程序耦合關(guān)系定義一種度量代碼可替換性指標(biāo),對(duì)代碼中模塊的可替換性進(jìn)行計(jì)算;針對(duì)演化版本中代碼的可替換性發(fā)生改變的包進(jìn)行分析,識(shí)別出導(dǎo)致代碼可替換性變化的元素。該發(fā)明的評(píng)估方法不但可以自動(dòng)分析源代碼,度量代碼的可替換性,指出代碼中的核心框架,而且對(duì)演化過(guò)程中發(fā)生改變的原因進(jìn)行分析定位實(shí)現(xiàn)了演化評(píng)估的自動(dòng)化。
【專(zhuān)利說(shuō)明】
一種面向軟件演化的代碼可替換性評(píng)估方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明提出了一種面向軟件演化的代碼可替換性評(píng)估方法,主要利用代碼中耦合 關(guān)系對(duì)代碼的可替換性演化原因進(jìn)行識(shí)別,屬于軟件維護(hù)與演化領(lǐng)域。
【背景技術(shù)】
[0002] 在軟件的生命周期中,不斷對(duì)軟件進(jìn)行升級(jí)、更改,以適應(yīng)新的需求。而對(duì)軟件的 更改往往都是在一些外部壓力下進(jìn)行的,如客戶(hù)或行業(yè)競(jìng)爭(zhēng)。這些更改勢(shì)必會(huì)破壞程序原 有的結(jié)構(gòu),提高程序復(fù)雜度,降低代碼的質(zhì)量。結(jié)果導(dǎo)致軟件的維護(hù)成本顯著提高,對(duì)軟件 的升級(jí)將變得更加困難。任何軟件開(kāi)發(fā)方法和工具都不能避免這個(gè)問(wèn)題,對(duì)軟件的修復(fù)工 作越晚進(jìn)行,軟件維護(hù)成本越高,直至維護(hù)代價(jià)超過(guò)重新開(kāi)發(fā)整個(gè)系統(tǒng)的代價(jià)。為了解決這 個(gè)難題,需要一種技術(shù)能夠跟蹤軟件中代碼可替換性的變更,提高軟件的內(nèi)部質(zhì)量。
[0003] 軟件演化是軟件工程領(lǐng)域正逐步受到重視的研究方向,并將得到越來(lái)越多的關(guān) 注。軟件演化過(guò)程的目標(biāo)就是在不違反系統(tǒng)約束的條件下,對(duì)軟件系統(tǒng)的演化流程進(jìn)行管 理,從而使演化后的軟件系統(tǒng)能夠在功能滿(mǎn)足用戶(hù)的需求,同時(shí)它所展現(xiàn)出來(lái)的質(zhì)量屬性 也維持在一個(gè)令人滿(mǎn)意的水平上。
[0004] 識(shí)別程序中哪些地方變更導(dǎo)致代碼可替換性發(fā)生變化的真實(shí)原因是演化分析中 的難點(diǎn)目前,只進(jìn)行一個(gè)代碼版本的可替換性度量,或者只提供代碼變更信息而沒(méi)有與代 碼的可替換性相關(guān)聯(lián),不能提供真實(shí)的影響可替換性變更的信息。因此,自動(dòng)地識(shí)別可替換 性變更原因?qū)浖莼c維護(hù)的分析非常重要。
【發(fā)明內(nèi)容】
[0005] 技術(shù)問(wèn)題:本發(fā)明提供一種能夠自動(dòng)化識(shí)別演化過(guò)程中導(dǎo)致代碼可替換性變更的 演化原因,提取代碼演化中可替換性變更的演化對(duì)象的面向軟件演化的代碼可替換性評(píng)估 方法。
[0006] 技術(shù)方案:本發(fā)明的面向軟件演化的代碼可替換性評(píng)估方法,包括以下步驟:
[0007] 步驟一,根據(jù)源代碼,將軟件版本中的每個(gè)類(lèi)構(gòu)造為抽象語(yǔ)法樹(shù);
[0008] 步驟二,在所述步驟一構(gòu)建的抽象語(yǔ)法樹(shù)上進(jìn)行解綁定處理,得到底層的依賴(lài)關(guān) 系,然后提取表示依賴(lài)關(guān)系的邊,構(gòu)造出代碼耦合關(guān)系圖;
[0009] 步驟三,基于代碼耦合關(guān)系圖,以包的傳入耦合度和傳出耦合度為基礎(chǔ),根據(jù)下式 計(jì)算度量軟件代碼中每個(gè)包的可替換性指標(biāo):
[0010] C = EC/(AC+EC)
[0011] 其中,EC代表對(duì)包的傳出耦合的度量,表示依賴(lài)該包的外部包的數(shù)目,即傳出耦合 集中元素的個(gè)數(shù);
[0012] AC代表對(duì)包的傳入耦合的度量,表示被該包依賴(lài)的外部包的數(shù)目,即傳入耦合集 中元素的個(gè)數(shù);
[0013] C代表該包的可替換性的評(píng)估,取值為[0-1];
[0014] 步驟四,比較軟件代碼中的包在各個(gè)演化版本中的可替換性指標(biāo),對(duì)于可替換性 指標(biāo)發(fā)生改變的包進(jìn)行變更原因分析,識(shí)別出導(dǎo)致代碼可替換性變化的元素。
[0015] 進(jìn)一步的,本發(fā)明方法中,所述步驟一構(gòu)建的抽象語(yǔ)法樹(shù)包含代碼基本架構(gòu)的解 析樹(shù)信息,以及在方法調(diào)用處與被調(diào)方法之間建立起綁定關(guān)系。
[0016] 進(jìn)一步的,本發(fā)明方法中,所述步驟二構(gòu)造的代碼耦合關(guān)系圖具有層次特性,由類(lèi) 層次耦合關(guān)系到包層次耦合關(guān)系圖自下而上構(gòu)造。
[0017] 進(jìn)一步的,本發(fā)明方法中,所述步驟四中的變更原因分析,是針對(duì)可替換性發(fā)生變 更的包,在步驟二構(gòu)造的代碼耦合關(guān)系圖中定位識(shí)別出導(dǎo)致代碼可替換性變化的元素。
[0018] 有益效果:本發(fā)明方法通過(guò)Eclipse JDT生成的抽象語(yǔ)法樹(shù)獲取耦合關(guān)系,主要用 于解決代碼可替換性度量的精確性以及可替換性演化原因分析問(wèn)題,與現(xiàn)有技術(shù)相比,具 有以下優(yōu)點(diǎn):
[0019] (1)利用Eclipse JDT中ASTParser生成的抽象語(yǔ)法樹(shù),通過(guò)在解綁定技術(shù)的基礎(chǔ) 上所獲得的包耦合關(guān)系圖比現(xiàn)有技術(shù)所獲得的耦合關(guān)系更加精確和完整。傳統(tǒng)的耦合關(guān)系 的獲取通常是通過(guò)包的聲明域進(jìn)行耦合關(guān)系的獲取,當(dāng)代碼中包的聲明缺省時(shí),會(huì)使得耦 合關(guān)系獲取的缺失。我們的技術(shù)通過(guò)代碼解綁定技術(shù),獲取在代碼中底層所使用的類(lèi)型,用 來(lái)生成代碼在類(lèi)層次的耦合關(guān)系,進(jìn)而逐層向上生成包層次耦合關(guān)系,可以保證包耦合關(guān) 系獲取的準(zhǔn)確性和完整性。
[0020] (2)利用從下而上的耦合關(guān)系,為可替換性的分析提供了不同的粒度。通過(guò)在類(lèi)的 耦合關(guān)系的基礎(chǔ)上所獲得的包耦合關(guān)系圖,比現(xiàn)有技術(shù)所獲得的耦合關(guān)系能夠包含更多信 息更加完整。傳統(tǒng)的方法在對(duì)可替換性結(jié)果展示時(shí)只顯示到包層次的內(nèi)容,不能夠顯示出 包中具體發(fā)生耦合關(guān)系的類(lèi)。我們的技術(shù)所獲的包的可替換性是建立在類(lèi)粒度的耦合關(guān)系 上的,因此可以對(duì)包的耦合關(guān)系進(jìn)行更細(xì)粒度的查詢(xún),能夠展示出可替換性評(píng)估值在類(lèi)層 次的形成原因。
[0021] (3)利用代碼的耦合關(guān)系提供了軟件演化的原因分析。通過(guò)我們?cè)陬?lèi)層次所獲取 的低層次的耦合關(guān)系傳入傳出耦合集,能夠?qū)浖莼^(guò)程中導(dǎo)致可替換性變化的原因進(jìn) 行分析;傳統(tǒng)的評(píng)估工具只有針對(duì)代碼整體變更的分析,并不具有針對(duì)可替換性的演化分 析,我們的方法通過(guò)獲取項(xiàng)目演化過(guò)程中新舊版本的耦合集,通過(guò)新舊版本的傳入傳出耦 合集的匹配,從而定位出與可替換性相關(guān)的演化原因。
【附圖說(shuō)明】
[0022]圖1面向軟件演化的代碼可替換性評(píng)估體系結(jié)構(gòu);
[0023]圖2 JcouplingEvaluator總體工作流程圖;
[0024]圖3抽象語(yǔ)法樹(shù);
[0025]圖4代碼耦合關(guān)系圖。
【具體實(shí)施方式】
[0026]下面結(jié)合實(shí)施例和說(shuō)明書(shū)附圖對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。
[0027]實(shí)施例中項(xiàng)目Proj中有版本Verl及其演化版本Ver2,Verl中共有七個(gè)包,分別為 pi. 1-pl .7,Ver2中對(duì)應(yīng)的包為ρ2.1_ρ2.7。使用工具JcouplingEvaluator進(jìn)行評(píng)估,其總體 工作流程圖如圖2所示。包括以下步驟:
[0028] 步驟一,根據(jù)源代碼,將軟件版本中的每個(gè)類(lèi)構(gòu)造為抽象語(yǔ)法樹(shù);將實(shí)施例中版本 Verl的源代碼構(gòu)造相應(yīng)的抽象語(yǔ)法樹(shù),其抽象語(yǔ)法樹(shù)如圖3所示;
[0029] 抽象語(yǔ)法樹(shù)(Abstract Syntax Tree,AST)作為程序的一種中間表示形式,在代碼 解析、程序分析等諸多領(lǐng)域有廣泛的應(yīng)用。它將java源代碼映射為樹(shù)的形式:每個(gè)java源文 件被表示成AST節(jié)點(diǎn)樹(shù)。Eclipse AST是Eclipse JDT的一個(gè)重要組成部分,定義在包 org. eel ipse. jdt. core. dom中,用來(lái)表示JAVA語(yǔ)言中的所有語(yǔ)法結(jié)構(gòu)。
[0030] Eclipse AST的總體結(jié)構(gòu):
[0031 ] (1)、org .eclipse, jdt. core · dom. AST( AST節(jié)點(diǎn)類(lèi)),Eel ipse AST的工廠類(lèi),用于 創(chuàng)建表示各種語(yǔ)法結(jié)構(gòu)的節(jié)點(diǎn)。
[0032] (2)、org · eclipse · jdt · core · dom. ASTNode及其派生類(lèi)(AST類(lèi)),用于表不JAVA語(yǔ) 言中的所有語(yǔ)法結(jié)構(gòu),在實(shí)際使用中常作為AST上的節(jié)點(diǎn)出現(xiàn)。
[0033] (3)、〇坪.〇(:11卩86.」(11:.(3〇代.(1〇111.厶31'\^8;[1:01'(厶31'\^8;[1:01'類(lèi))4(311卩86厶31'的訪 問(wèn)者類(lèi),定義了統(tǒng)一的訪問(wèn)AST中各個(gè)節(jié)點(diǎn)的方法。
[0034] (4)、org .eclipse, jdt. core · dom. ASTParser(ASTPar ser 類(lèi)),用于解析包含 java 源代碼的程序,并返回一個(gè)AST。其返回的結(jié)果包含了源代碼字符的范圍。
[0035] 該圖的源代碼中包含一個(gè)類(lèi),類(lèi)中包含四個(gè)成員變量和四個(gè)成員方法構(gòu)成。其中 綁定技術(shù)用于獲取成員變量的SimpleType節(jié)點(diǎn)和MethodDeclaration節(jié)點(diǎn)的 MethodInvocation節(jié)點(diǎn)中所使用的類(lèi)型信息,借助EclipseAST中的綁定技術(shù)將外部類(lèi)型 信息同時(shí)加載進(jìn)抽象語(yǔ)法樹(shù),以便于節(jié)點(diǎn)數(shù)據(jù)類(lèi)型信息的獲取。
[0036] 步驟二,在所述步驟一構(gòu)建的抽象語(yǔ)法樹(shù)上進(jìn)行解綁定處理,得到底層的依賴(lài)關(guān) 系,然后提取表示依賴(lài)關(guān)系的邊,構(gòu)造出代碼耦合關(guān)系圖;
[0037] 代碼中的耦合關(guān)系圖中有以下兩種關(guān)系:傳入耦合:如果特定類(lèi)依賴(lài)于其他類(lèi),那 么就稱(chēng)它對(duì)其他類(lèi)具有傳入耦合關(guān)系;傳出耦合:如果其他類(lèi)依賴(lài)于特定類(lèi),那么就稱(chēng)特定 類(lèi)對(duì)其他類(lèi)具有傳出耦合關(guān)系。
[0038] 類(lèi)內(nèi)根據(jù)抽象語(yǔ)法樹(shù)上的語(yǔ)句節(jié)點(diǎn)上抽取耦合信息,其中語(yǔ)句節(jié)點(diǎn)包括聲明節(jié)點(diǎn) 和方法調(diào)用節(jié)點(diǎn);從語(yǔ)句節(jié)點(diǎn)中獲取類(lèi)的傳出耦合類(lèi),例如類(lèi)A中聲明或調(diào)用中使用了類(lèi)B, 類(lèi)B對(duì)于類(lèi)A則是傳出耦合關(guān)系,類(lèi)A對(duì)于類(lèi)B則是傳入耦合關(guān)系。
[0039]包耦合關(guān)系在類(lèi)耦合關(guān)系的基礎(chǔ)上,根據(jù)類(lèi)所屬的包信息,獲取屬于同一個(gè)包中 的類(lèi)的傳入耦合集合和傳出耦合集合,形成包層次的耦合關(guān)系圖。
[0040] 根據(jù)步驟一中所構(gòu)造的AST樹(shù),對(duì)其中的節(jié)點(diǎn)進(jìn)行解綁定(resol veBinding)處理, 可獲得所依賴(lài)的類(lèi)型信息,如類(lèi)型名稱(chēng)以及所屬包名。根據(jù)解綁定所獲得的依賴(lài)信息,遍歷 后將元素放入相應(yīng)耦合集中。在實(shí)例中,包pl. 5中的類(lèi)使用了 pi.4中的類(lèi),即表示pi.4為 pl .5的傳出親合元素,放入pi .5的傳出親合集ACSet中,pi .5為pi .4的傳入親合元素,放入 P1.4的傳入耦合集ECSet中。訪問(wèn)結(jié)束后,可獲得Ver 1中各個(gè)包的傳入耦合集合傳出耦合 集,結(jié)果如下表所示:
[0042]表格中所記錄的數(shù)字為各個(gè)耦合集中元素個(gè)數(shù)。
[0043]步驟三,基于代碼耦合關(guān)系圖,以包的傳入耦合度和傳出耦合度為基礎(chǔ),根據(jù)下式 計(jì)算度量軟件代碼中每個(gè)包的可替換性指標(biāo):
[0044] 代碼可替換性主要跟模塊之間的耦合度相關(guān)。模塊之間的耦合分為傳入耦合和傳 出耦合。傳入耦合是指依賴(lài)于一個(gè)包的其他包的數(shù)量;傳出耦合是指一個(gè)包所依賴(lài)的包的 數(shù)量。一個(gè)包的傳出耦合越大,它就越依賴(lài)于其他包,該包的變更對(duì)其他包的影響較小,但 面對(duì)關(guān)聯(lián)包的更改時(shí)它容易受到連鎖反應(yīng)的影響。一個(gè)包的傳入耦合越大,則該包被依賴(lài) 度越高,它發(fā)生更改或被替換的代價(jià)也就越大。代碼可替換性中定義了如下兩個(gè)集合:
[0045] 定義1傳入耦合集:對(duì)于包P中的所有類(lèi)集C,如果代碼其他包p中的類(lèi)依賴(lài)于類(lèi)c, 且c e C,則p屬于傳入耦合集中一個(gè)元素,這些元素的集合為P包的傳入耦合集ACSet。
[0046] 定義2傳出耦合集:對(duì)于包P中的所有類(lèi)集C,對(duì)于類(lèi)c(c eC),如果類(lèi)c依賴(lài)于其他 的類(lèi)c',且d C:,c'所在的包p屬于傳出耦合中的一個(gè)元素,這些元素的集合為P包的傳出 耦合集ECSet。
[0047] 通過(guò)可提換性度量模型,對(duì)Java軟件中包的可替換性的度量評(píng)估方法,通過(guò)度量 傳出耦合在耦合關(guān)系中所占據(jù)的比例對(duì)包的可替換性進(jìn)行量化評(píng)價(jià)。
[0048] 該模型統(tǒng)計(jì)每個(gè)包所依賴(lài)包的個(gè)數(shù)及依賴(lài)于該包的包數(shù)目,并根據(jù)傳出耦合在總 體耦合中所占比值大小判斷該包的可替換性強(qiáng)弱。高的傳出耦合比例表示傳入耦合較低, 對(duì)象不具有太多的職責(zé),易于進(jìn)行替換;反之,高的傳入耦合比例表示對(duì)象具有太多的職 責(zé),在進(jìn)行替換時(shí)候要格外小心。
[0049] 根據(jù)步驟二中的傳出耦合與傳入耦合,對(duì)每個(gè)包的可替換性進(jìn)行計(jì)算,結(jié)果如下 表所示。
[0051 ] C表示Verl中包的可替換性值。
[0052]對(duì)項(xiàng)目的演化版本Ver2重復(fù)步驟一至步驟三,進(jìn)行可替換性度量,同樣計(jì)算出可 替換性度量值。Ver2中各個(gè)包的傳入耦合集合傳出耦合集表如下所示:
[0055]可替換性結(jié)果如下表所示:
[0057] 可替換性度量值越接近1,說(shuō)明該包傳入耦合相對(duì)較少,容易被替換;值越接近0, 說(shuō)明該包傳入耦合較多,難以被替換。
[0058] 步驟四,比較軟件代碼中的包在各個(gè)演化版本中的可替換性指標(biāo),對(duì)于可替換性 指標(biāo)發(fā)生改變的包進(jìn)行變更原因分析,識(shí)別出導(dǎo)致代碼可替換性變化的元素。
[0059] 在軟件演化過(guò)程中,如果代碼包的可替換性度量值改變了,表示代碼在演化過(guò)程 中所進(jìn)行的修改導(dǎo)致了包的耦合關(guān)系發(fā)生了改變,例如增加、刪除或修改。
[0000] 代碼可替換性變更原因差異分析Diff(verl,ver2)具體步驟如下如下:
[0061 ]第一步:獲取項(xiàng)目verl中各個(gè)包的可替換性;
[0062]第二步:獲取項(xiàng)目ver2中各個(gè)包的可替換性;
[0063] 第三步:對(duì)比verl和ver2中各個(gè)包的可替換性數(shù)值,記錄發(fā)生改變的包;
[0064] 第四步:定位在verl和ver2中發(fā)生變更的包,記為P與P',P有傳入親合集ACSet與 傳出耦合集ECSet,P'有傳入耦合集ACSet'與傳出耦合集ECSet';
[0065] 第五步:對(duì)比ACSet與ACSet'中元素,若存在元素 aeACSet且:ai ACSch',則表示元 素 a的傳入親合關(guān)系在ver2中被刪除,若元素戒ACSet且aeACSet',貝lj表示中ver2中增加 了與元素 a的傳入親合關(guān)系。記錄變更信息到Diff(verl,ver2)中;
[0066] 第六步:對(duì)比ECSet與ECSet'中元素,若存在元素 e e ECSet且eG ECSet',則表示元 素 e的傳出耦合關(guān)系在ver2中被刪除,若元素試ECSet且eEECSet',則表示中ver2中增加 了與元素 e的傳出親合關(guān)系。記錄變更信息到Diff(verl,ver2)中。
[0067] 在如上實(shí)例中Verl到Ver2版本的演化過(guò)程中包pi. 4到p2.4的可替換性發(fā)生了變 化,其可替換性由0.73變?yōu)?.75。對(duì)比兩個(gè)版本中pi. 4和p2.4的傳入耦合集和傳出耦合集, 記pi .4的傳入親合集和p2.4的傳入親合集分別為ACSet和ACSet',實(shí)例中ACSet = ACSet', 兩者的傳入耦合集在演化過(guò)程中沒(méi)有發(fā)生變化;記Pi.4的傳出耦合集和p2.4的傳出耦合集 分別為ECSet和ECSet',實(shí)例中ECSet中為8個(gè)元素,ECSet'中有9個(gè)元素,傳出耦合耦合集在 演化過(guò)程中存在元素技ECSet且eeECSet',則表示中Ver2中增加了元素 e的傳出耦合關(guān) 系。
[0068] 記錄包中增加的變更信息到Diff (Verl,Ver2)中;通過(guò)依次遍歷Verl和Ver2中對(duì) 應(yīng)的包得到可替換性的變化原因。
[0069] 上述實(shí)施例僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出:對(duì)于本技術(shù)領(lǐng)域的普通技術(shù) 人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和等同替換,這些對(duì)本發(fā)明 權(quán)利要求進(jìn)行改進(jìn)和等同替換后的技術(shù)方案,均落入本發(fā)明的保護(hù)范。
【主權(quán)項(xiàng)】
1. 一種面向軟件演化的代碼可替換性評(píng)估方法,其特征在于,該方法包括以下步驟: 步驟一,根據(jù)程序源代碼,將軟件版本中的每個(gè)類(lèi)構(gòu)造為抽象語(yǔ)法樹(shù); 步驟二,在所述步驟一構(gòu)建的抽象語(yǔ)法樹(shù)上進(jìn)行解綁定處理,得到底層的依賴(lài)關(guān)系,然 后提取表示依賴(lài)關(guān)系的邊,構(gòu)造出代碼耦合關(guān)系圖; 步驟三,基于代碼耦合關(guān)系圖,以包的傳入耦合度和傳出耦合度為基礎(chǔ),根據(jù)下式計(jì)算 度量軟件代碼中每個(gè)包的可替換性指標(biāo)C: C = EC/(AC+EC) 其中,EC代表對(duì)包的傳出耦合的度量,表示依賴(lài)該包的外部包的數(shù)目,即傳出耦合集中 元素的個(gè)數(shù); AC代表對(duì)包的傳入耦合的度量,表示被該包依賴(lài)的外部包的數(shù)目,即傳入耦合集中元 素的個(gè)數(shù); 可替換性指標(biāo)C代表對(duì)該包的可替換性的評(píng)估,取值為[0-1]; 步驟四,比較軟件代碼中的包在各個(gè)演化版本中的可替換性指標(biāo),對(duì)于可替換性指標(biāo) 發(fā)生改變的包進(jìn)行變更原因分析,識(shí)別出導(dǎo)致代碼可替換性變化的元素。2. 根據(jù)權(quán)利要求1所述的面向軟件演化的代碼可替換性評(píng)估方法,其特征在于,所述步 驟一構(gòu)建的抽象語(yǔ)法樹(shù)包含代碼基本架構(gòu)的解析樹(shù)信息,以及在方法調(diào)用處與被調(diào)方法之 間建立起綁定關(guān)系。3. 根據(jù)權(quán)利要求1所述的面向軟件演化的代碼可替換性評(píng)估方法,其特征在于,所述步 驟二構(gòu)造的代碼耦合關(guān)系圖具有層次特性,由類(lèi)層次耦合關(guān)系到包層次耦合關(guān)系圖自下而 上構(gòu)造。4. 根據(jù)權(quán)利要求1、2或3所述的面向軟件演化的代碼可替換性評(píng)估方法,其特征在于, 所述步驟四中的變更原因分析,是針對(duì)可替換性發(fā)生變更的包,在步驟二構(gòu)造的代碼耦合 關(guān)系圖中定位識(shí)別出導(dǎo)致代碼可替換性變化的元素。
【文檔編號(hào)】G06F11/36GK105867906SQ201610164659
【公開(kāi)日】2016年8月17日
【申請(qǐng)日】2016年3月22日
【發(fā)明人】李必信, 苗意盎, 廖力, 劉輝輝
【申請(qǐng)人】東南大學(xué)