• 
    

    
    

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

      淺析克隆代碼領(lǐng)域本體構(gòu)建研究

      2020-09-26 11:50:30翟曄葛湘薇
      內(nèi)蒙古教育·理論版 2020年6期

      翟曄 葛湘薇

      摘 要:代碼克隆是軟件開發(fā)中常用的方法。本文針對“克隆代碼領(lǐng)域本體構(gòu)建”這一核心問題,從克隆代碼領(lǐng)域本體模型的規(guī)劃、分析與設(shè)計、形式化、本體評估及維護等方面展開具體研究工作。通過克隆檢測結(jié)果獲取克隆代碼的克隆關(guān)系,通過代碼靜態(tài)分析技術(shù)抽取克隆代碼之間的耦合關(guān)系,基于這兩種以克隆代碼為中心的數(shù)據(jù),設(shè)計并實現(xiàn)克隆代碼領(lǐng)域本體。該本體對克隆代碼的理解、分析、維護與管理有積極作用。

      關(guān)鍵詞:克隆代碼;領(lǐng)域本體;克隆關(guān)系;克隆檢測

      【中圖分類號】G【文獻標(biāo)識碼】B 【文章編號】1008-1216(2020)06C-0127-02

      克隆代碼是指,一個軟件系統(tǒng)代碼庫中的兩個或多個代碼片段彼此完全相同或幾乎相似的代碼。一組相似的代碼片段構(gòu)成一個克隆類。有關(guān)克隆代碼的研究工作開始于上世紀(jì)九十年代,并在隨后的二十多年里受到越來越多國內(nèi)外研究學(xué)者的高度關(guān)注,在克隆檢測、克隆演化分析等多個方面產(chǎn)生了大量研究成果。

      過去的軟件克隆研究主要集中于代碼克隆的檢測和分析,而近年來的研究擴展到了克隆管理的整個領(lǐng)域??寺〈a領(lǐng)域本體的構(gòu)建可以為克隆代碼理解、克隆分析、克隆維護、克隆管理以及克隆重構(gòu)等研究提供有力的參考與支持。該本體可以為軟件開發(fā)及維護人員提供克隆代碼的更多特征以及更深層次的關(guān)系,如分布特征、耦合特征、高層設(shè)計特征等。這使得克隆代碼更容易被理解,進而使軟件開發(fā)及維護人員能更高效地維護及管理克隆代碼。

      一 相關(guān)研究

      目前,針對以領(lǐng)域本體為基礎(chǔ)的相關(guān)研究還非常少?,F(xiàn)有的基于領(lǐng)域本體的代碼理解及分析研究,大多是通過代碼本體與業(yè)務(wù)邏輯本體相關(guān)聯(lián)的方法分析、理解與維護軟件系統(tǒng),這些研究大多關(guān)注了代碼或克隆代碼的基本信息或是業(yè)務(wù)邏輯信息,但是,克隆代碼的維護與管理工作僅憑這些研究成果是遠遠不夠的。通過克隆代碼領(lǐng)域本體,可以解決類似“同一克隆群內(nèi)的克隆代碼在高層設(shè)計上有什么聯(lián)系”“哪些克隆代碼與其他代碼的耦合程度較高”等問題。這類問題可以給出克隆代碼更全面的生存環(huán)境狀況。

      二、克隆代碼領(lǐng)域本體構(gòu)建

      本研究面向開源軟件代碼資源,筆者制訂了詳細技術(shù)方案,并開展深入研究。本研究實現(xiàn)流程如圖 1所示。

      (一)克隆靜態(tài)關(guān)系

      克隆檢測是研究基礎(chǔ),本研究借助領(lǐng)域內(nèi)較為流行的克隆代碼檢測工具NiCad來進行克隆代碼檢測工作。NiCad可以有效檢測3種類型的克隆代碼,并以XML格式反饋克隆對以及克隆群關(guān)系。根據(jù)克隆代碼檢測結(jié)果,做進一步分析,獲得克隆關(guān)系。

      1.克隆代碼相似度。

      克隆代碼的相似度是指兩段克隆代碼片段之間的文本相似度,本研究利用編輯距離相似度計算模型,計算兩段克隆代碼片段之間的文本相似度。

      2.克隆類型。

      克隆類型除了能反應(yīng)克隆代碼文本相似程度,還能夠反應(yīng)克隆代碼之間存在的差異。本研究利用NiCad對每一種克隆類型進行檢測,從而可以直接獲取克隆對之間的克隆類型關(guān)系。

      3.克隆對及克隆群關(guān)系。

      克隆對被分組,稱為克隆群的集合,其中集合中的任何兩個片段都可以形成克隆對。由于克隆代碼檢測工具能以克隆對、克隆群的方式反饋克隆代碼,所以通過分析檢測結(jié)果,可直接獲取克隆對與克隆群關(guān)系。

      4.克隆代碼位置。

      克隆檢測結(jié)果中至少要包含表征克隆代碼位置信息的三元組:所在文件名、起始行號、終止行號。通過分析克隆代碼檢測工具的反饋信息,即可獲取克隆對與克隆群關(guān)系信息。

      (二)克隆代碼耦合關(guān)系分析

      構(gòu)建克隆代碼領(lǐng)域本體,除了關(guān)注代碼的克隆關(guān)系外,還需關(guān)注克隆代碼與其他代碼之間存在的耦合關(guān)系,這樣才能更全面地表征克隆代碼的生存環(huán)境,更深層次地理解克隆代碼。本文中涉及克隆代碼的耦合關(guān)系包含以下幾個方面。

      1.繼承、實現(xiàn)關(guān)系。

      由于特定粒度的克隆代碼片段位于某一個類或接口中,本研究考慮了克隆代碼所在的類是否繼承了其他類,從而可反映出部分克隆代碼是否在高層設(shè)計上存在著聯(lián)系。

      2.聲明關(guān)系。

      聲明關(guān)系指一個類中聲明的屬性和方法。通過分析聲明關(guān)系,可以挖掘出克隆代碼所在的類之間是否存在聚合等關(guān)系,這些關(guān)系可以反應(yīng)克隆代碼所在類之間存在著哪些設(shè)計模式。

      3.調(diào)用關(guān)系。

      克隆代碼與其他代碼片段之間存在著耦合關(guān)系,例如,某一段克隆代碼調(diào)用了某些函數(shù),或者該克隆代碼片段被其他代碼段調(diào)用。與克隆代碼相關(guān)的調(diào)用關(guān)系,是構(gòu)成克隆代碼生存環(huán)境的重要數(shù)據(jù)。

      克隆代碼耦合關(guān)系提取,是克隆代碼本體構(gòu)建的關(guān)鍵,本研究采用AST技術(shù)準(zhǔn)確地提取了克隆代碼中的耦合關(guān)系。

      三、克隆代碼領(lǐng)域本體的構(gòu)建

      結(jié)合克隆代碼的實際需要,本項目以七步法本體構(gòu)建思想為指導(dǎo),結(jié)合軟件工程的結(jié)構(gòu)化開發(fā)方法,設(shè)計克隆代碼領(lǐng)域本體的構(gòu)建流程。主要包括以下步驟。

      (一)本體規(guī)劃

      需求分析是本體規(guī)劃的第一步,主要任務(wù)是明確本體構(gòu)建的基本信息,最后生成需求分析文檔。該本體適用的專業(yè)領(lǐng)域和范圍是軟件代碼中的克隆代碼,構(gòu)建本體的目的主要是為克隆管理提供方便。該本體的目標(biāo)用戶是開發(fā)人員和測試維護人員等,目前不存在可重用的本體。

      (二)本體分析

      本體分析階段主要任務(wù)是:確定本體的主體架構(gòu)和知識粒度,明確克隆代碼領(lǐng)域本體需要哪些克隆實體來填充和支撐,以及提取克隆代碼中的各種信息??寺〈a以克隆代碼片段為單位的方式進行組織,本文選用自上而下的構(gòu)建方法設(shè)計本體。

      (三)本體設(shè)計

      對本體分析階段收集到的概念進行分析歸納,建立本體類,然后依據(jù)概念的唯一性和同級概念間不存在交集的要求,形成以繼承關(guān)系為主關(guān)系結(jié)構(gòu)的樹狀模型、聲明及調(diào)用關(guān)系。類是本體的核心與基礎(chǔ),定義本體的類應(yīng)該能夠突顯類本身的特性,所以,一個新的類應(yīng)包含其父類所沒有的新屬性。例如,對于“克隆群”類,它具備的屬性有克隆群尺寸、克隆群號等,而對于該類下的子類“克隆代碼”則新增了代碼相似度、克隆類型、文件距離等屬性。

      克隆代碼領(lǐng)域不同實體間存在的關(guān)系很多,如對一個具體克隆片段來說,它需同屬于一個克隆對。本項目設(shè)計的關(guān)系如右表。同時,圖2呈現(xiàn)了克隆代碼領(lǐng)域本體中部分實體以及對應(yīng)關(guān)系。

      (四)本體形式化

      1.本體的形式化主要采用形式語言來構(gòu)建。

      本研究中采用OWL 描述語言,用 Protégé保存為基于 RDF/XML格式的 OWL 文件,文件命名為Code Clone.owl。

      2.命名空間聲明。

      一組 XML 格式的命名空間的聲明,本體標(biāo)識符的表示可以提供無歧義的解釋方式,使本體的表示更具可讀性。

      3.實體定義。

      為了避免本體表示過程中對冗長的 URL 的書寫,文檔類型聲明部分提供了對一些實體的定義,利用實體名來代替冗長的URL。

      (五)克隆代碼本體的存儲與維護

      對于克隆代碼領(lǐng)域本體的持久化,本文采用 Jena 技術(shù)實現(xiàn),并將本體持久化到 MySQL 數(shù)據(jù)庫中存儲。

      本體的維護是指本體的迭代進化。本體的建模目標(biāo)非一個周期或者一次循環(huán)就能夠完全實現(xiàn)的。由于軟件復(fù)雜度的增加或新技術(shù)的迭代更新,后期需要對現(xiàn)有本體進行調(diào)整。

      四、總結(jié)與展望

      本研究是將克隆代碼與領(lǐng)域本體相結(jié)合,構(gòu)建出克隆代碼的領(lǐng)域本體。研究過程中,通過對克隆代碼中耦合關(guān)系的提取,深入地研究了克隆代碼中的函數(shù)調(diào)用、變量之間的關(guān)系,該本體能幫助開發(fā)和維護人員有效地理解克隆代碼的生存環(huán)境,為克隆代碼的后期演化和重構(gòu)提供依據(jù)。

      參考文獻:

      [1]史慶慶,孟繁軍,張麗萍,等.克隆代碼技術(shù)研究綜述[J].計算機應(yīng)用研究,2013,(6).

      [2]張瑞霞,張麗萍,王春暉,等.基于主題建模技術(shù)的克隆群映射方法[J]. 計算機工程與設(shè)計,2015,(6).

      [3]涂穎,張麗萍,王春暉,等.基于軟件多版本演化提取克隆譜系[J].計算機應(yīng)用,2015,(4).

      [4]蘇小紅,張凡龍.面向管理的克隆代碼研究綜述[J].計算機學(xué)報,2018,(3).

      [5]郭穎,陳峰宏,周明輝.大規(guī)模代碼克隆的檢測方法[J].計算機科學(xué)與探索,2014,(4).

      [6]史慶慶,孟繁軍,張麗萍,劉東升.克隆代碼技術(shù)研究綜述[J].計算機應(yīng)用研究,2013,(6).

      上饶市| 富顺县| 德清县| 鹿泉市| 通海县| 四子王旗| 肇庆市| 乐清市| 武胜县| 法库县| 民勤县| 修水县| 崇文区| 洛阳市| 锡林浩特市| 綦江县| 无极县| 藁城市| 同仁县| 宁夏| 蓬莱市| 黔西县| 齐齐哈尔市| 彭山县| 如东县| 灵寿县| 班玛县| 宜都市| 铁岭市| 漠河县| 白沙| 苏尼特右旗| 射洪县| 渝北区| 大丰市| 平果县| 桓仁| 资溪县| 林州市| 廊坊市| 洛阳市|