源代碼類似度評(píng)價(jià)方法以及源代碼類似度評(píng)價(jià)裝置制造方法
【專利摘要】一種源代碼類似度評(píng)價(jià)方法以及源代碼類似度評(píng)價(jià)裝置。代碼克隆的分析隨著軟件的大規(guī)模化而計(jì)算量增大。本發(fā)明的源代碼類似度評(píng)價(jià)裝置具備:開發(fā)成果分析單元(21),其提取構(gòu)成軟件的源代碼列表;對(duì)應(yīng)關(guān)系分析單元(22),其比較比較基準(zhǔn)源代碼列表(44a)和比較目標(biāo)源代碼列表(44b),分析兩者的對(duì)應(yīng)關(guān)系;比較對(duì)象確定單元(23),其根據(jù)對(duì)應(yīng)關(guān)系,從上述比較目標(biāo)源代碼列表(44b)中確定包含在比較基準(zhǔn)源代碼列表(44a)中的比較基準(zhǔn)的比較目標(biāo)源代碼(41b)的比較對(duì)象;類似度計(jì)算單元(24),其求出比較基準(zhǔn)源代碼(41a)和由比較對(duì)象確定單元(23)確定的源代碼之間的類似度;輸出單元(15),其輸出比較基準(zhǔn)源代碼(41a)和類似度的組合。
【專利說明】源代碼類似度評(píng)價(jià)方法以及源代碼類似度評(píng)價(jià)裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及對(duì)構(gòu)成軟件的源代碼群的類似度進(jìn)行評(píng)價(jià)的源代碼類似度評(píng)價(jià)方法以及實(shí)施該方法的源代碼類似度評(píng)價(jià)裝置。
【背景技術(shù)】
[0002]近年來,伴隨著軟件的應(yīng)用范圍的擴(kuò)大,被稱為遺產(chǎn)軟件(legacy software)的軟件正在擴(kuò)大。所謂遺產(chǎn)軟件,是指對(duì)應(yīng)于對(duì)系統(tǒng)的新的要求來重復(fù)地進(jìn)行功能追加、修正,結(jié)果導(dǎo)致軟件的規(guī)模、復(fù)雜度增大,難以進(jìn)行維護(hù),維護(hù)成本增大的軟件。
[0003]作為遺產(chǎn)軟件的維護(hù)成本增大的原因之一,是被稱為所謂的代碼克隆的類似代碼列的存在。代碼克隆是包含在源代碼中的相同或類似的多個(gè)代碼列,主要由于進(jìn)行源代碼的沿用而生成。在包含許多代碼克隆的軟件中,除了系統(tǒng)整體的代碼大小增大以外,在對(duì)相同或類似的多個(gè)代碼列的一個(gè)施加變更時(shí),大多必須還要對(duì)其他全部地方進(jìn)行同樣的變更,成為增大維護(hù)成本的原因。
[0004]代碼克隆大多在對(duì)遺產(chǎn)軟件進(jìn)行功能追加的維護(hù)開發(fā)中發(fā)生。這是因?yàn)榇a克隆大多是將實(shí)現(xiàn)與所追加的功能類似的功能的軟件作為基礎(chǔ)軟件,在復(fù)制構(gòu)成基礎(chǔ)軟件的源代碼群的基礎(chǔ)上進(jìn)行改造而作成的。按道理,基礎(chǔ)軟件的類似的功能部分應(yīng)該作為軟件部件而通用。但是,由于在軟件開發(fā)中強(qiáng)烈要求縮短開發(fā)期間、開發(fā)成本,所以在大多的軟件開發(fā)現(xiàn)場(chǎng)作成了代碼克隆。
[0005]為了削減軟件的維護(hù)成本,從軟件的維護(hù)現(xiàn)場(chǎng)要求了檢測(cè)出該代碼克隆并作為軟件部件而通用。但是,對(duì)于大規(guī)模軟件,通過目視的代碼評(píng)審來發(fā)現(xiàn)代碼克隆是低效的。
[0006]近年來,基于上述問題,針對(duì)構(gòu)成軟件的源代碼,公開了檢測(cè)代碼克隆的技術(shù)。
[0007]在專利文獻(xiàn)I的課題中記載了 “提供一種能夠高速地提取類似的軟件片段的類似源代碼提取程序、類似源代碼提取裝置和類似源代碼提取方法”,在“解決手段”中記載了“比較基準(zhǔn)源代碼片段指定部210接受成為比較的基準(zhǔn)的源代碼片段的指定,從通過比較目標(biāo)源代碼指定部220接受了指定的源代碼群中提取與該源代碼片段類似的源代碼片段,從結(jié)果輸出部290輸出。參照根據(jù)比較基準(zhǔn)的源代碼片段作成的句法樹、根據(jù)源代碼群作成的句法樹,由比較目標(biāo)源代碼片段提取部270進(jìn)行從源代碼群中提取與比較基準(zhǔn)的源代碼片段進(jìn)行類似比較的源代碼的處理”。
[0008]在非專利文獻(xiàn)I中記載了作為進(jìn)行2個(gè)文件的比較的程序的diff的算法的細(xì)節(jié)。
[0009]在非專利文獻(xiàn)2中記載了與軟件的克隆檢測(cè)有關(guān)的研究內(nèi)容。
[0010]在非專利文獻(xiàn)1、2所記載的技術(shù)中存在以下問題,S卩如果應(yīng)用于由大量的源代碼(例如數(shù)千文件)構(gòu)成的大規(guī)模軟件,則分析結(jié)果按照文件數(shù)的平方而增加,因此理解類似關(guān)系需要極大的時(shí)間。
[0011]在專利文獻(xiàn)2所記載的技術(shù)中,由用戶指定比較基準(zhǔn)源代碼,因此對(duì)于由大量的源代碼構(gòu)成的大規(guī)模軟件,對(duì)進(jìn)行高效的分析的目的來說并不充分。例如,在軟件由數(shù)萬個(gè)源代碼文件構(gòu)成時(shí),由用戶指定全部的該比較基準(zhǔn)源代碼(文件)是不現(xiàn)實(shí)的。[0012]專利文獻(xiàn)1:日本特開2006-18693號(hào)公報(bào)
[0013]非專利文獻(xiàn)1:J.W.Hunt and M.D.Mcllroy, “An Algorithm for DifferentialFile Comparison”,BellTelephone Laboratories Computing Science TechnicalReport#41, Julyl976.[0014]非專利文獻(xiàn)2:Rainer Koschke, “Survey of Research on SoftwareClones”,Dagstuhl Seminar Proceedings06301, 19.04.2007
【發(fā)明內(nèi)容】
[0015]本發(fā)明的目的在于提供一種對(duì)由多個(gè)源代碼文件構(gòu)成的2個(gè)軟件的類似度進(jìn)行評(píng)價(jià)的源代碼類似度評(píng)價(jià)方法、以及實(shí)施該方法的源代碼類似度評(píng)價(jià)裝置。
[0016]為了解決上述問題,在第一方式的源代碼類似度評(píng)價(jià)裝置的發(fā)明中,具備:源代碼列表提取單元,其提取表示比較基準(zhǔn)軟件的結(jié)構(gòu)的比較基準(zhǔn)源代碼列表和表示比較目標(biāo)軟件的結(jié)構(gòu)的比較目標(biāo)源代碼列表;對(duì)應(yīng)關(guān)系分析單元,其比較上述比較基準(zhǔn)源代碼列表和上述比較目標(biāo)源代碼列表,分析兩者的對(duì)應(yīng)關(guān)系;比較對(duì)象確定單元,其根據(jù)上述對(duì)應(yīng)關(guān)系,從上述比較目標(biāo)源代碼列表中確定成為包含在上述比較基準(zhǔn)源代碼列表中的各比較基準(zhǔn)源代碼的比較對(duì)象的比較目標(biāo)源代碼;類似度計(jì)算單元,其計(jì)算上述比較基準(zhǔn)源代碼和通過上述比較對(duì)象確定單元確定的上述比較目標(biāo)源代碼之間的類似度;類似度評(píng)價(jià)單元,其判定通過上述比較對(duì)象確定單元確定的上述比較目標(biāo)源代碼中的具有最高類似度的類似源代碼;輸出單元,其將上述比較基準(zhǔn)源代碼、以及上述比較基準(zhǔn)源代碼和上述類似源代碼之間的類似度對(duì)應(yīng)起來輸出。
[0017]在用于實(shí)施發(fā)明的方式中,說明其他手段。
[0018]根據(jù)本發(fā)明,能夠提供一種對(duì)由多個(gè)源代碼文件構(gòu)成的2個(gè)軟件的類似度進(jìn)行評(píng)價(jià)的源代碼類似度評(píng)價(jià)方法、以及實(shí)施該方法的源代碼類似度評(píng)價(jià)裝置。
【專利附圖】
【附圖說明】
[0019]圖1是表示第一實(shí)施方式的源代碼類似度評(píng)價(jià)裝置的概要的結(jié)構(gòu)圖。
[0020]圖2是表示第一實(shí)施方式的源代碼類似度評(píng)價(jià)單元的動(dòng)作的圖。
[0021]圖3是表示第一實(shí)施方式的開發(fā)成果分析單元的處理的流程圖。
[0022]圖4是表示第一實(shí)施方式的比較基準(zhǔn)源代碼列表和比較目標(biāo)源代碼列表的圖。
[0023]圖5是表示第一實(shí)施方式的對(duì)應(yīng)關(guān)系分析單元的處理的流程圖。
[0024]圖6是表不第一實(shí)施方式的對(duì)應(yīng)關(guān)系列表的圖。
[0025]圖7是表示第一實(shí)施方式的比較對(duì)象確定單元的處理的流程圖。
[0026]圖8是表示第一實(shí)施方式的邏輯行定義DB的圖。
[0027]圖9是表示第一實(shí)施方式的類似度計(jì)算單元的差分分析處理的圖。
[0028]圖10是表示第一實(shí)施方式的類似度計(jì)算單元的處理的圖。
[0029]圖11是表示第一實(shí)施方式和比較例的類似度評(píng)價(jià)結(jié)果的圖。
[0030]圖12是表示第一實(shí)施方式的類似度評(píng)價(jià)單元的處理的流程圖。
[0031]圖13是表示第一實(shí)施方式的源代碼的類似關(guān)系信息的圖。
[0032]圖14是第一實(shí)施方式的類似關(guān)系圖。[0033]圖15是表示第一實(shí)施方式的類似說明書分析單元的處理的流程圖。
[0034]圖16是表示第一實(shí)施方式的類似說明書信息的圖。
[0035]符號(hào)說明
[0036]10:源代碼類似度評(píng)價(jià)裝置;11:存儲(chǔ)器;12:文件數(shù)據(jù)庫;13:處理器;14:輸入單元;15:輸出單元;16:存儲(chǔ)單元;17:源代碼類似度評(píng)價(jià)程序;18:總線;19:用戶接口 ;20:源代碼類似度評(píng)價(jià)單元;21:開發(fā)成果分析單元(源代碼列表提取單元);22:對(duì)應(yīng)關(guān)系分析單元;23:比較對(duì)象確定單元;24:類似度計(jì)算單元;25:類似度評(píng)價(jià)單元;26:邏輯行定義DB ;30:類似說明書分析單元;40a:比較基準(zhǔn)軟件存儲(chǔ)部;40b:比較目標(biāo)軟件存儲(chǔ)部;41:源代碼;41a:比較基準(zhǔn)源代碼;41b:比較目標(biāo)源代碼;42、42a、42b:詳細(xì)設(shè)計(jì)說明書;43、43a、43b:測(cè)試說明書;44a:比較基準(zhǔn)源代碼列表;44b:比較目標(biāo)源代碼列表;45:對(duì)應(yīng)關(guān)系列表(對(duì)應(yīng)關(guān)系);46:源代碼間差分;47:類似度評(píng)價(jià)結(jié)果;48:類似關(guān)系信息;49:類似說明書?目息;60:類似關(guān)系圖;61:根;62:文件夾;63:文件;64:橫條形圖;100:外部網(wǎng)絡(luò);110:外部文件數(shù)據(jù)庫;200:用戶;S50:邏輯行提取處理;S52:差分行數(shù)測(cè)量處理;S53:共通行數(shù)計(jì)算處理;S54:獨(dú)立行數(shù)計(jì)算處理;S55:文件間類似度計(jì)算處理。
【具體實(shí)施方式】
[0037]以下,參照各圖詳細(xì)說明用于實(shí)施本發(fā)明的方式。
[0038](第一實(shí)施方式的結(jié)構(gòu))
[0039]圖1是表示第一實(shí)施方式的源代碼類似度評(píng)價(jià)裝置的概要的結(jié)構(gòu)圖。
[0040]源代碼類似度評(píng)價(jià)裝置10具備:保存執(zhí)行用程序、計(jì)算結(jié)果的存儲(chǔ)器11 ;以電磁方式存儲(chǔ)文件的文件數(shù)據(jù)庫12 ;執(zhí)行計(jì)算處理的處理器13 ;接受來自用戶的輸入的輸入單元14 ;向用戶輸出信息的輸出單元15 ;存儲(chǔ)源代碼類似度評(píng)價(jià)程序17的存儲(chǔ)單元16 ;將上述的存儲(chǔ)器11、文件數(shù)據(jù)庫12、處理器13、輸入單元14、輸出單元15、存儲(chǔ)單元16連接起來而能夠相互進(jìn)行通信的總線18。
[0041]存儲(chǔ)器11例如由RAM (隨機(jī)存取存儲(chǔ)器)等構(gòu)成,具有:對(duì)構(gòu)成2個(gè)軟件的源代碼群之間的類似度進(jìn)行評(píng)價(jià)的源代碼類似度評(píng)價(jià)單元20、提取與類似的比較目標(biāo)源代碼關(guān)聯(lián)的詳細(xì)設(shè)計(jì)說明書42b (圖2、圖4 (b))和測(cè)試說明書43b (圖2)的類似說明書分析單元30。
[0042]進(jìn)而,源代碼類似度評(píng)價(jià)單元20具備:開發(fā)成果分析單元21 (源代碼列表提取單元),其提取表示各軟件的結(jié)構(gòu)的源代碼列表;對(duì)應(yīng)關(guān)系分析單元22,其對(duì)比較基準(zhǔn)源代碼列表和比較目標(biāo)源代碼列表進(jìn)行比較,分析兩者的對(duì)應(yīng)關(guān)系來進(jìn)行判定;比較對(duì)象確定單元23,其根據(jù)該對(duì)應(yīng)關(guān)系,從比較目標(biāo)源代碼列表中確定包含在比較基準(zhǔn)源代碼列表中的比較基準(zhǔn)源代碼的比較對(duì)象、即比較目標(biāo)源代碼;類似度計(jì)算單元24,其計(jì)算比較基準(zhǔn)源代碼與由比較對(duì)象確定單元23確定的源代碼之間的類似度;類似度評(píng)價(jià)單元25,其判定在比較基準(zhǔn)源代碼中具有最高類似度的類似源代碼。
[0043]將存儲(chǔ)在存儲(chǔ)單元16中的源代碼類似度評(píng)價(jià)程序17讀入到該存儲(chǔ)器11中,由上述處理器13執(zhí)行,由此實(shí)現(xiàn)源代碼類似度評(píng)價(jià)單元20和類似說明書分析單元30。
[0044]文件數(shù)據(jù)庫12例如是以HDD (硬盤驅(qū)動(dòng)器)為代表的存儲(chǔ)裝置,以電磁方式存儲(chǔ)文件。[0045]存儲(chǔ)器13例如是CPU(中央處理單元),通過執(zhí)行讀入到存儲(chǔ)器11的程序文件而實(shí)現(xiàn)源代碼類似度評(píng)價(jià)單元20、類似說明書分析單元30,控制該源代碼類似度評(píng)價(jià)裝置10。
[0046]輸入單元14例如是鼠標(biāo)、鍵盤、輸入板等,在用戶向源代碼類似度評(píng)價(jià)裝置10進(jìn)行指示時(shí)使用。
[0047]輸出單元15例如是液晶顯示裝置、打印機(jī)等,向用戶輸出顯示該源代碼類似度評(píng)價(jià)裝置10的操作指導(dǎo)、處理結(jié)果等。本實(shí)施方式的輸出單元15輸出比較基準(zhǔn)源代碼及其類似度。
[0048]存儲(chǔ)單元16例如是以HDD為代表的存儲(chǔ)裝置,以電磁方式存儲(chǔ)文件。
[0049]源代碼類似度評(píng)價(jià)裝置10經(jīng)由未圖示的網(wǎng)絡(luò)接口與外部網(wǎng)絡(luò)100連接,也能夠?qū)ν獠课募?shù)據(jù)庫110進(jìn)行存取。以下,在本實(shí)施方式中,將源代碼類似度評(píng)價(jià)裝置10記載為對(duì)存在于文件數(shù)據(jù)庫12中的軟件(項(xiàng)目)進(jìn)行分析。
[0050](第一實(shí)施方式的動(dòng)作)
[0051]圖2是表示第一實(shí)施方式的源代碼類似度評(píng)價(jià)單元的動(dòng)作的圖。
[0052]源代碼類似度評(píng)價(jià)單元20如果經(jīng)由用戶接口 19接受了用戶200的指示,則進(jìn)行存儲(chǔ)在比較基準(zhǔn)軟件存儲(chǔ)部40a中的軟件和存儲(chǔ)在比較目標(biāo)軟件存儲(chǔ)部40b中的軟件之間的類似度的評(píng)價(jià)。源代碼類似度評(píng)價(jià)單元20經(jīng)由用戶接口 19向用戶200顯示類似關(guān)系信息48。
[0053]比較基準(zhǔn)軟件存儲(chǔ)部40a和比較目標(biāo)軟件存儲(chǔ)部40b存儲(chǔ)在文件數(shù)據(jù)庫12、外部文件數(shù)據(jù)庫110 (圖1)中。比較基準(zhǔn)軟件存儲(chǔ)部40a例如是對(duì)現(xiàn)有的軟件進(jìn)行改造所得的,在文件數(shù)據(jù)庫12的預(yù)定的路徑下的文件夾階層中,具備包含用預(yù)定的程序語言記述的代碼的文件即比較基準(zhǔn)源代碼41a、記載了該比較基準(zhǔn)源代碼41a的設(shè)計(jì)規(guī)格的詳細(xì)設(shè)計(jì)說明書42a、記載了該比較基準(zhǔn)源代碼41a的測(cè)試規(guī)格的測(cè)試說明書43a。另外,比較基準(zhǔn)源代碼41a大多是多個(gè),例如有時(shí)達(dá)到數(shù)千?數(shù)萬的數(shù)量級(jí)。
[0054]比較目標(biāo)軟件存儲(chǔ)部40b例如是成為比較基準(zhǔn)軟件的改造源的現(xiàn)有的軟件,在文件數(shù)據(jù)庫12的預(yù)定的路徑下的文件夾階層中,具備包含用與記述比較基準(zhǔn)源代碼41a的程序語言相同的程序語言記述的代碼的文件即比較目標(biāo)源代碼41b、記載了該比較目標(biāo)源代碼41b的設(shè)計(jì)規(guī)格的詳細(xì)設(shè)計(jì)說明書42b、記載了該比較目標(biāo)源代碼41b的測(cè)試規(guī)格的測(cè)試說明書43b。
[0055]以下,在不特別區(qū)別比較基準(zhǔn)源代碼41a和比較目標(biāo)源代碼41b時(shí),簡單地記載為“源代碼41”。在不特別區(qū)別詳細(xì)設(shè)計(jì)說明書42a、42b時(shí),簡單地記載為“詳細(xì)設(shè)計(jì)說明書42”。在不特別區(qū)別測(cè)試說明書43a、43b時(shí),簡單地記載為“測(cè)試說明書43”。另外,將現(xiàn)有的軟件記載為“基礎(chǔ)軟件”,將對(duì)該現(xiàn)有的軟件進(jìn)行變更或改造所得的軟件記載為“改造軟件”。
[0056]邏輯行定義DB (數(shù)據(jù)庫)26是針對(duì)每個(gè)擴(kuò)展名定義構(gòu)成軟件的源代碼的邏輯行的
數(shù)據(jù)庫。
[0057]源代碼類似度評(píng)價(jià)單元20根據(jù)源代碼的擴(kuò)展名而參照邏輯行定義DB26,從而取得源代碼的邏輯行的定義,根據(jù)該邏輯行定義,提取比較基準(zhǔn)源代碼41a、比較目標(biāo)源代碼41b等的邏輯行。邏輯行定義DB26被存儲(chǔ)在存儲(chǔ)單元16 (圖1)中,由源代碼類似度評(píng)價(jià)單元20參照。[0058]開發(fā)成果分析單元21分析比較基準(zhǔn)軟件存儲(chǔ)部40a,提取表示比較基準(zhǔn)軟件的結(jié)構(gòu)的比較基準(zhǔn)源代碼列表44a,分析比較目標(biāo)軟件存儲(chǔ)部40b,提取表示比較目標(biāo)軟件的結(jié)構(gòu)的比較目標(biāo)源代碼列表44b。比較基準(zhǔn)源代碼列表44a是構(gòu)成比較基準(zhǔn)軟件的比較基準(zhǔn)源代碼41a的一覽。比較目標(biāo)源代碼列表44b是構(gòu)成比較目標(biāo)軟件的比較目標(biāo)源代碼41b的一覽。
[0059]對(duì)應(yīng)關(guān)系分析單元22對(duì)比較基準(zhǔn)源代碼列表44a和比較目標(biāo)源代碼列表44b進(jìn)行比較,分析判定兩者的對(duì)應(yīng)關(guān)系。對(duì)應(yīng)關(guān)系分析單元22根據(jù)比較基準(zhǔn)源代碼列表44a和比較目標(biāo)源代碼列表44b,分析判定與構(gòu)成比較基準(zhǔn)源代碼列表44a的比較基準(zhǔn)源代碼41a具有對(duì)應(yīng)關(guān)系的比較目標(biāo)源代碼41b,輸出對(duì)應(yīng)關(guān)系列表45。
[0060]對(duì)應(yīng)關(guān)系列表45是比較基準(zhǔn)源代碼41a和與該比較基準(zhǔn)源代碼41a具有對(duì)應(yīng)關(guān)系的比較目標(biāo)源代碼41b的組合的一覽。
[0061]比較對(duì)象確定單元23根據(jù)對(duì)應(yīng)關(guān)系列表45,從比較目標(biāo)源代碼列表44b中確定包含在比較基準(zhǔn)源代碼列表44a中的各比較基準(zhǔn)源代碼41a的比較對(duì)象,輸出由類似度計(jì)算單元24計(jì)算出的類似度評(píng)價(jià)結(jié)果47。
[0062]類似度計(jì)算單元24計(jì)算比較基準(zhǔn)源代碼41a和由比較對(duì)象確定單元23確定的比較目標(biāo)源代碼41b之間的類似度。
[0063]類似度評(píng)價(jià)結(jié)果47是分別計(jì)算包含在比較目標(biāo)源代碼列表44b中的比較基準(zhǔn)源代碼41a和包含在比較基準(zhǔn)源代碼列表44a中的比較目標(biāo)源代碼41b之間的類似度所得的結(jié)果。
[0064]類似度評(píng)價(jià)單元25判定由比較對(duì)象確定單元23確定的比較目標(biāo)源代碼41b中的具備最高類似度的類似源代碼,輸出類似關(guān)系信息48。
[0065]類似關(guān)系信息48存儲(chǔ)有包含在比較目標(biāo)源代碼列表44b中的比較基準(zhǔn)源代碼41a、類似源代碼、該比較基準(zhǔn)源代碼41a和類似源代碼之間的類似度。
[0066]用戶接口 19通過輸入單元14接受用戶200的輸入,并且通過輸出單元15輸出信息來向用戶200提供信息。輸出單元15對(duì)應(yīng)地輸出比較基準(zhǔn)源代碼41a、該比較基準(zhǔn)源代碼41a和類似源代碼之間的類似度。
[0067]類似說明書分析單元30在說明書與在比較基準(zhǔn)源代碼列表44a中記載的比較基準(zhǔn)源代碼41a不關(guān)聯(lián)的情況下,將與類似源代碼相關(guān)的說明書作為類似說明書而提示。類似說明書分析單元30根據(jù)作為沿用源的比較目標(biāo)源代碼41b,確定成為沿用候選的詳細(xì)設(shè)計(jì)說明書42b和測(cè)試說明書43b,輸出類似說明書信息49。
[0068]圖3 (a)、(b)是表示第一實(shí)施方式的開發(fā)成果分析單元的處理的流程圖。
[0069]圖3 Ca)是表示開發(fā)成果分析單元21的整體處理的流程圖。
[0070]如果開始處理,則在步驟SlO中,開發(fā)成果分析單元21指定比較基準(zhǔn)軟件存儲(chǔ)部40a的根文件夾,進(jìn)行開發(fā)成果分析處理(圖3 (b))。
[0071]在步驟Sll中,開發(fā)成果分析單元21指定比較目標(biāo)軟件存儲(chǔ)部40b的根文件夾,進(jìn)行開發(fā)成果分析處理(圖3 (b))。如果步驟Sll的處理結(jié)束,則圖3 (a)的整體處理結(jié)束。
[0072]圖3 (b)是表示開發(fā)成果分析單元21對(duì)每個(gè)源代碼存儲(chǔ)部的處理的流程圖。
[0073]如果開始處理,則在步驟S20中,開發(fā)成果分析單元21搜索被指定為源代碼存儲(chǔ)部的該文件夾的項(xiàng)目文件(例如makefile等)。在此,項(xiàng)目文件是該軟件的管理文件,記載了從該軟件的源文件生成執(zhí)行文件的規(guī)則等。
[0074]在步驟S21?S25中,開發(fā)成果分析單元21對(duì)全部項(xiàng)目文件重復(fù)進(jìn)行處理。
[0075]在步驟S22中,開發(fā)成果分析單元21提取與該項(xiàng)目文件相關(guān)的源代碼41 (文件名和相對(duì)路徑名)。
[0076]在步驟S23中,開發(fā)成果分析單元21提取與該項(xiàng)目文件相關(guān)的各源代碼41的詳細(xì)設(shè)計(jì)說明書42。開發(fā)成果分析單元21搜索源代碼41的相對(duì)路徑,提取具備與源代碼41的文件名具有預(yù)定的關(guān)聯(lián)性的文件名的詳細(xì)設(shè)計(jì)說明書42。
[0077]在步驟S24中,開發(fā)成果分析單元21提取與該項(xiàng)目文件相關(guān)的各源代碼41的測(cè)試說明書43。開發(fā)成果分析單元21搜索源代碼41的相對(duì)路徑,提取具備與源代碼41的文件名具有預(yù)定的關(guān)聯(lián)性的文件名的測(cè)試說明書43。
[0078]在步驟S25中,開發(fā)成果分析單元21判斷是否對(duì)全部的項(xiàng)目文件重復(fù)進(jìn)行了處理。開發(fā)成果分析單元21如果該判斷條件不成立,則返回到步驟S21的處理。
[0079]在步驟S26中,開發(fā)成果分析單元21搜索該預(yù)定文件夾的子文件夾。
[0080]在步驟S27?S29中,開發(fā)成果分析單元21對(duì)全部子文件夾重復(fù)進(jìn)行處理。
[0081]在步驟S28中,開發(fā)成果分析單元21對(duì)該子文件夾遞歸地進(jìn)行開發(fā)成果分析處理(圖 3 (b))。
[0082]在步驟S29中,開發(fā)成果分析單元21對(duì)全部子文件夾判斷是否重復(fù)進(jìn)行了處理。開發(fā)成果分析單元21如果該判斷條件不成立,則返回到步驟S27的處理,如果該判斷條件成立,則結(jié)束圖3 (b)的處理。
[0083]圖4 (a)、(b)是表示第一實(shí)施方式的比較基準(zhǔn)源代碼列表和比較目標(biāo)源代碼列表的圖。
[0084]圖4 (a)是表示比較基準(zhǔn)源代碼列表44a的圖。
[0085]比較基準(zhǔn)源代碼列表44a具有識(shí)別各比較基準(zhǔn)源代碼41a的ID欄44_1、存儲(chǔ)各比較基準(zhǔn)源代碼41a的文件名信息的文件名欄44-2、對(duì)存儲(chǔ)了各比較基準(zhǔn)源代碼41a的相對(duì)路徑名信息進(jìn)行存儲(chǔ)的相對(duì)路徑名欄44-3、存儲(chǔ)各比較基準(zhǔn)源代碼41a的邏輯行數(shù)即SLOC(source lines of code:源代碼行)的邏輯行數(shù)欄44_4、存儲(chǔ)各比較基準(zhǔn)源代碼41a的詳細(xì)設(shè)計(jì)說明書42a的文件名的詳細(xì)設(shè)計(jì)說明書欄44-5、存儲(chǔ)各比較基準(zhǔn)源代碼41a的測(cè)試說明書43a的文件名的測(cè)試說明書欄44-6。
[0086]例如ID是I的比較基準(zhǔn)源代碼41a的文件“R)l.c”存儲(chǔ)在相對(duì)路徑“/D01”,邏輯行數(shù)是300行,詳細(xì)設(shè)計(jì)說明書42a的文件名是“F01_speC.doc",測(cè)試說明書43a的文件名是“F01_test.doc”。
[0087]例如ID是4的比較基準(zhǔn)源代碼41a的文件“R)6.c”存儲(chǔ)在相對(duì)路徑“/D02”,邏輯行數(shù)是500行,不存在詳細(xì)設(shè)計(jì)說明書42b和測(cè)試說明書43b,因此在詳細(xì)設(shè)計(jì)說明書44-5和測(cè)試說明書欄44-6中存儲(chǔ)有表示不存在相應(yīng)的文件的N/A (Not Available:不可用)。
[0088]圖4 (b)是表示比較目標(biāo)源代碼列表44b的圖。
[0089]比較目標(biāo)源代碼列表44b具有與比較基準(zhǔn)源代碼列表44a相同的結(jié)構(gòu)。
[0090]圖5是表示第一實(shí)施方式的對(duì)應(yīng)關(guān)系分析單元的處理的流程圖。
[0091]如果開始處理,則在步驟S30中,對(duì)應(yīng)關(guān)系分析單元22用I初始化變量i。變量i表示包含在比較基準(zhǔn)源代碼列表44a中的比較基準(zhǔn)源代碼41a的ID。在此,變量i=l,因此比較基準(zhǔn)源代碼Fi (41a)的文件名是“H)l.C”。
[0092]在步驟S31中,對(duì)應(yīng)關(guān)系分析單元22用I初始化變量j。變量j表示包含在比較目標(biāo)源代碼列表44b中的比較目標(biāo)源代碼41b的ID。
[0093]在步驟S32中,對(duì)應(yīng)關(guān)系分析單元22判斷比較基準(zhǔn)源代碼Fi (41a)的相對(duì)路徑名和比較目標(biāo)源代碼Fj (41b)的相對(duì)路徑名是否相同。對(duì)應(yīng)關(guān)系分析單元22如果該判斷條件成立(是),則進(jìn)行步驟S33的處理,如果該判斷條件不成立(否),則進(jìn)行步驟S35的處理。
[0094]在步驟S33中,對(duì)應(yīng)關(guān)系分析單元22判斷比較基準(zhǔn)源代碼Fi (41a)的文件名和比較目標(biāo)源代碼Fj (41b)的文件名是否相同。對(duì)應(yīng)關(guān)系分析單元22如果該判斷條件成立(是),則進(jìn)行步驟S34的處理,如果該判斷條件不成立(否),則進(jìn)行步驟S35的處理。
[0095]在步驟S34中,對(duì)應(yīng)關(guān)系分析單元22將比較基準(zhǔn)源代碼Fi (41a)和比較目標(biāo)源代碼Fj (41b)判定為對(duì)應(yīng)關(guān)系,記錄在對(duì)應(yīng)關(guān)系列表45中。
[0096]在步驟S35中,對(duì)應(yīng)關(guān)系分析單元22判斷變量j是否是比較目標(biāo)源代碼列表44b的ID的最大值jmax (在本實(shí)施方式中是5)以上。對(duì)應(yīng)關(guān)系分析單元22,如果該判斷條件成立(是),則進(jìn)行步驟S37的處理,如果該判斷條件不成立(否),則進(jìn)行步驟S36的處理。
[0097]在步驟S36中,對(duì)應(yīng)關(guān)系分析單元22將變量j加1,返回到步驟S32的處理。由此,對(duì)應(yīng)關(guān)系分析單元22能夠?qū)θ康谋容^目標(biāo)源代碼列表44b的各比較目標(biāo)源代碼41b進(jìn)行步驟S32?S34的處理。
[0098]在步驟S37中,對(duì)應(yīng)關(guān)系分析單元22判斷變量i是否是比較基準(zhǔn)源代碼列表44a的ID的最大值imax (在本實(shí)施方式中是5)以上。對(duì)應(yīng)關(guān)系分析單元22如果該判斷條件成立(是),則結(jié)束圖5的處理,如果該判斷條件不成立(否),則進(jìn)行步驟S38的處理。
[0099]在步驟S38中,對(duì)應(yīng)關(guān)系分析單元22將變量i加1,返回到步驟S31的處理。由此,對(duì)應(yīng)關(guān)系分析單元22能夠?qū)θ康谋容^基準(zhǔn)源代碼列表44a的各比較基準(zhǔn)源代碼41a進(jìn)行步驟S31?S35的處理。
[0100]圖6是表不第一實(shí)施方式的對(duì)應(yīng)關(guān)系列表的圖。
[0101]在對(duì)應(yīng)關(guān)系列表45中記載了比較基準(zhǔn)源代碼41a的ID和比較目標(biāo)源代碼41b的ID的對(duì)應(yīng)關(guān)系。比較基準(zhǔn)源代碼41a的ID=I和比較目標(biāo)源代碼41b的ID=I具有對(duì)應(yīng)關(guān)系。比較基準(zhǔn)源代碼41a的ID=2和比較目標(biāo)源代碼41b的ID=2具有對(duì)應(yīng)關(guān)系。比較基準(zhǔn)源代碼41a的ID=3和比較目標(biāo)源代碼41b的ID=4具有對(duì)應(yīng)關(guān)系。
[0102]圖7是表示第一實(shí)施方式的比較對(duì)象確定單元的處理的流程圖。
[0103]如果開始處理,則在步驟S40中,比較對(duì)象確定單元23用I初始化變量i。變量i表示包含在比較基準(zhǔn)源代碼列表44a中的比較基準(zhǔn)源代碼Fi (41a)的ID。
[0104]在步驟S41中,比較對(duì)象確定單元23判斷是否存在與比較基準(zhǔn)源代碼Fi(41a)具有對(duì)應(yīng)關(guān)系的比較目標(biāo)源代碼F j (4Ib )。比較對(duì)象確定單元23如果該判斷條件成立(是),則進(jìn)行步驟S42的處理,如果該判斷條件不成立(否),則進(jìn)行步驟S44的處理。
[0105]在步驟S42中,比較對(duì)象確定單元23根據(jù)對(duì)應(yīng)關(guān)系列表45,將與比較基準(zhǔn)源代碼Fi (41a)對(duì)應(yīng)的比較目標(biāo)源代碼Fj (41b)的ID設(shè)置為變量j。
[0106]在步驟S43中,比較對(duì)象確定單元23在進(jìn)行了比較基準(zhǔn)源代碼Fi (41a)和比較目標(biāo)源代碼Fj (41b)的類似度計(jì)算處理后,進(jìn)行步驟S48的處理。在后述的圖10中詳細(xì)說明類似度計(jì)算處理。
[0107]在步驟S44中,比較對(duì)象確定單元23用I初始化變量j。變量j表示包含在比較目標(biāo)源代碼列表44b中的比較目標(biāo)源代碼41b的ID。
[0108]在步驟S45中,比較對(duì)象確定單元23進(jìn)行比較基準(zhǔn)源代碼Fi (41a)和比較目標(biāo)源代碼Fj (41b)的類似度計(jì)算處理。在后述的圖10中詳細(xì)說明類似度計(jì)算處理。
[0109]在步驟S46中,比較對(duì)象確定單元23判斷變量j是否為比較目標(biāo)源代碼列表44b的ID的最大值jmax (在本實(shí)施方式中是5)以上。比較對(duì)象確定單元23如果該判斷條件成立(是),則進(jìn)行步驟S48的處理,如果該判斷條件不成立(否),則進(jìn)行步驟S47的處理。
[0110]在步驟S47中,比較對(duì)象確定單元23將變量j加1,返回到步驟S45的處理。
[0111]在步驟S48中,比較對(duì)象確定單元23判斷變量i是否為比較基準(zhǔn)源代碼列表44a的ID的最大值jmax (在本實(shí)施方式中是5)以上。比較對(duì)象確定單元23如果該判斷條件成立(是),則結(jié)束圖7的處理,如果該判斷條件不成立(否),則進(jìn)行步驟S49的處理。
[0112]在步驟S49中,比較對(duì)象確定單元23將變量i加I,返回到步驟S41的處理。
[0113]圖8是表示第一實(shí)施方式的邏輯行定義DB的圖。
[0114]邏輯行定義DB26具有擴(kuò)展名欄26-1、邏輯行的劃分欄26_2、注釋開始欄26_3、注釋結(jié)束欄26-4。
[0115]擴(kuò)展名欄26-1表示文件名的擴(kuò)展名部分的信息。在此,擴(kuò)展名是指文件名的末尾的句號(hào)以后的部分。源代碼通過文件名的擴(kuò)展名部分表示記述了該源代碼的計(jì)算機(jī)語言。
[0116]邏輯行的劃分欄26-2表示與該擴(kuò)展名相關(guān)的計(jì)算機(jī)語言的邏輯行的劃分規(guī)則。源代碼類似度評(píng)價(jià)單元20根據(jù)該邏輯行的劃分規(guī)則,對(duì)源代碼的邏輯行數(shù)進(jìn)行計(jì)數(shù)。
[0117]注釋開始欄26-3表示與該擴(kuò)展名相關(guān)的計(jì)算機(jī)語言的注釋的開始規(guī)則。
[0118]注釋結(jié)束欄26-4表示與該擴(kuò)展名相關(guān)的計(jì)算機(jī)語言的注釋的結(jié)束規(guī)則。源代碼類似度評(píng)價(jià)單元20在對(duì)源代碼的邏輯行數(shù)進(jìn)行計(jì)數(shù)時(shí),根據(jù)注釋開始欄26-3和注釋結(jié)束欄26-4,完全無視注釋。
[0119]圖9是表示第一實(shí)施方式的類似度計(jì)算單元的差分分析處理的圖。
[0120]在此,以任意2個(gè)比較基準(zhǔn)源代碼Fi (41a)和比較目標(biāo)源代碼Fj (41b)之間的類似關(guān)系為例。
[0121]比較基準(zhǔn)源代碼Fi (41a)用邏輯行表示比較基準(zhǔn)源代碼41a。用L (Fi)表示比較基準(zhǔn)源代碼Fi (41a)的邏輯行數(shù)。
[0122]比較目標(biāo)源代碼Fj (41b)用邏輯行表示比較目標(biāo)源代碼41b。用L (Fj)表示比較目標(biāo)源代碼Fj (41b)的邏輯行數(shù)。
[0123]比較基準(zhǔn)源代碼Fi (41a)的共通行41c和比較目標(biāo)源代碼Fj (41b)的共通行41d記載了相同的內(nèi)容。共通行41c、41d的行數(shù)用共通行數(shù)L (Fi AFj)表示。
[0124]在差分分析處理S51中,對(duì)比較基準(zhǔn)源代碼Fi (41a)和比較目標(biāo)源代碼Fj (41b)的差分進(jìn)行分析。在非專利文獻(xiàn)I中記載了該差分分析處理S51的細(xì)節(jié)。
[0125]差分分析處理S51的結(jié)果是輸出源代碼間差分Dij (46)。源代碼間差分Di j (46)的各行的第一位表示差分的內(nèi)容。如果行的第一位是“〈”,則該行表示只包含在比較基準(zhǔn)源代碼Fi (41a)中。如果行的第一位是“〉”,則該行表示只包含在比較目標(biāo)源代碼Fj (41b)中。在此,將源代碼間差分Dij (46)的全體行數(shù)設(shè)為L (Dij)0
[0126]式I表示比較基準(zhǔn)源代碼Fi (41a)和比較目標(biāo)源代碼Fj (41b)之間的源代碼間類似度Sij的計(jì)算式。
【權(quán)利要求】
1.一種源代碼類似度評(píng)價(jià)裝置,其特征在于,具備: 源代碼列表提取單元,其提取表示比較基準(zhǔn)軟件的結(jié)構(gòu)的比較基準(zhǔn)源代碼列表和表示比較目標(biāo)軟件的結(jié)構(gòu)的比較目標(biāo)源代碼列表; 對(duì)應(yīng)關(guān)系分析單元,其比較上述比較基準(zhǔn)源代碼列表和上述比較目標(biāo)源代碼列表,分析兩者的對(duì)應(yīng)關(guān)系; 比較對(duì)象確定單元,其根據(jù)上述對(duì)應(yīng)關(guān)系,從上述比較目標(biāo)源代碼列表中確定成為包含在上述比較基準(zhǔn)源代碼列表中的各比較基準(zhǔn)源代碼的比較對(duì)象的比較目標(biāo)源代碼; 類似度計(jì)算單元,其計(jì)算上述比較基準(zhǔn)源代碼和通過上述比較對(duì)象確定單元確定的上述比較目標(biāo)源代碼之間的類似度; 類似度評(píng)價(jià)單元,其判定通過上述比較對(duì)象確定單元確定的上述比較目標(biāo)源代碼中的具有最高類似度的類似源代碼;以及 輸出單元,其將上述比較基準(zhǔn)源代碼、以及上述比較基準(zhǔn)源代碼和上述類似源代碼之間的類似度對(duì)應(yīng)起來輸出。
2.根據(jù)權(quán)利要求1所述的源代碼類似度評(píng)價(jià)裝置,其特征在于, 上述比較對(duì)象確定單元,如果判定為上述比較基準(zhǔn)源代碼與上述比較目標(biāo)源代碼列表的任意一個(gè)比較目標(biāo)源代碼具有上述對(duì)應(yīng)關(guān)系,則將具有該對(duì)應(yīng)關(guān)系的比較目標(biāo)源代碼確定為比較對(duì)象,如果判定為上述比較基準(zhǔn)源代碼與上述比較目標(biāo)源代碼列表的任意一個(gè)比較目標(biāo)源代碼都不具有上述對(duì)應(yīng)關(guān)系,則將上述比較目標(biāo)源代碼列表的全部比較目標(biāo)源代碼確定為比較對(duì)象。
3.根據(jù)權(quán)利要求2所述的源代碼類似度評(píng)價(jià)裝置,其特征在于, 上述源代碼列表提取單元還取得構(gòu)成上述比較基準(zhǔn)軟件的上述比較基準(zhǔn)源代碼的相對(duì)路徑名和文件名,提取上述比較基準(zhǔn)源代碼列表,并且取得構(gòu)成上述比較目標(biāo)軟件的比較目標(biāo)源代碼的相對(duì)路徑名和文件名,提取上述比較目標(biāo)源代碼列表, 上述對(duì)應(yīng)關(guān)系分析單元,如果上述比較基準(zhǔn)源代碼的相對(duì)路徑名和文件名與上述比較目標(biāo)源代碼列表的任意一個(gè)比較目標(biāo)源代碼的相對(duì)路徑名和文件名一致,則判定出一致的比較目標(biāo)源代碼與該比較基準(zhǔn)源代碼具有上述對(duì)應(yīng)關(guān)系。
4.根據(jù)權(quán)利要求1所述的源代碼類似度評(píng)價(jià)裝置,其特征在于, 在上述比較基準(zhǔn)源代碼與上述比較目標(biāo)源代碼列表的任意一個(gè)比較目標(biāo)源代碼具有上述對(duì)應(yīng)關(guān)系的情況下,上述輸出單元輸出的類似度是與具有上述對(duì)應(yīng)關(guān)系的比較目標(biāo)源代碼的類似度。
5.根據(jù)權(quán)利要求1所述的源代碼類似度評(píng)價(jià)裝置,其特征在于, 在上述比較基準(zhǔn)源代碼與上述比較目標(biāo)源代碼列表的任意一個(gè)比較目標(biāo)源代碼都不具有上述對(duì)應(yīng)關(guān)系的情況下,上述輸出單元輸出的類似度是與上述比較目標(biāo)源代碼列表的全部比較目標(biāo)源代碼的類似度中的最高的類似度。
6.根據(jù)權(quán)利要求1所述的源代碼類似度評(píng)價(jià)裝置,其特征在于, 上述輸出單元用樹形圖進(jìn)行顯示,該樹形圖將上述比較基準(zhǔn)軟件的根文件夾作為根節(jié)點(diǎn),將位于上述比較基準(zhǔn)源代碼的相對(duì)路徑中的各文件夾作為內(nèi)部節(jié)點(diǎn),將上述比較基準(zhǔn)源代碼、以及上述比較基準(zhǔn)源代碼和上述類似源代碼之間的類似度作為葉節(jié)點(diǎn)。
7.根據(jù)權(quán)利要求1所述的源代碼類似度評(píng)價(jià)裝置,其特征在于,上述輸出單元用進(jìn)行了顏色標(biāo)記的柱形圖的任意一種顏色的面積比表示上述比較基準(zhǔn)源代碼和上述類似源代碼之間的類似度,并且用上述柱形圖的整體面積表示上述比較基準(zhǔn)源代碼的邏輯行數(shù)。
8.根據(jù)權(quán)利要求1所述的源代碼類似度評(píng)價(jià)裝置,其特征在于, 還具備:類似說明書分析單元,其在說明書與上述比較基準(zhǔn)源代碼不關(guān)聯(lián)的情況下,將上述類似源代碼的說明書提示為類似說明書。
9.一種源代碼類似度評(píng)價(jià)方法,其特征在于,包括: 提取表示比較基準(zhǔn)軟件的結(jié)構(gòu)的比較基準(zhǔn)源代碼列表和表示比較目標(biāo)軟件的結(jié)構(gòu)的比較目標(biāo)源代碼列表的步驟; 比較上述比較基準(zhǔn)源代碼列表和上述比較目標(biāo)源代碼列表,分析兩者的對(duì)應(yīng)關(guān)系的步驟; 根據(jù)上述對(duì)應(yīng)關(guān)系,從上述比較目標(biāo)源代碼列表中確定成為包含在上述比較基準(zhǔn)源代碼列表中的各比較基準(zhǔn)源代碼的比較對(duì)象的比較目標(biāo)源代碼的步驟; 計(jì)算上述比較基準(zhǔn)源代碼和所確定的上述比較目標(biāo)源代碼之間的類似度的步驟; 判定所確定的上述比較目標(biāo)源代碼中的具有最高類似度的類似源代碼的步驟;以及將上述比較基準(zhǔn)源代碼、以及上述比較基準(zhǔn)源代碼和上述類似源代碼之間的類似度對(duì)應(yīng)起來輸出的步驟 。
【文檔編號(hào)】G06F11/36GK103678111SQ201310337262
【公開日】2014年3月26日 申請(qǐng)日期:2013年8月5日 優(yōu)先權(quán)日:2012年9月18日
【發(fā)明者】吉村健太郎, 橋本康范, 三部良太 申請(qǐng)人:株式會(huì)社日立制作所