程序的影響范圍設(shè)定裝置,和利用該裝置的影響范圍的特定方法及受影響程序的提取方法
【專利摘要】本發(fā)明公開了一種程序的影響范圍設(shè)定裝置,和利用該裝置的影響范圍的特定方法及受影響程序的提取方法,無需提取沒有影響的類和方法,便可以用機(jī)械方式設(shè)定影響的范圍,在大規(guī)模修改系統(tǒng)時,謀求提高影響調(diào)查的精度和作業(yè)效率。對程序的源代碼進(jìn)行句法分析,分析為抽象語法樹,從表達(dá)式用語中,檢索形成抽象語法樹的表達(dá)式,根據(jù)已檢索的表達(dá)式,按照表達(dá)式的依賴關(guān)系,形成表達(dá)式的連接,形成針對源代碼的表達(dá)式與表達(dá)式的連接的依賴關(guān)系圖表,設(shè)定處于依賴關(guān)系的影響范圍。
【專利說明】程序的影響范圍設(shè)定裝置,和利用該裝置的影響范圍的特定方法及受影響程序的提取方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及程序的影響范圍設(shè)定裝置,和利用該裝置的影響范圍的特定方法及受影響程序的提取方法。
【背景技術(shù)】
[0002]在大規(guī)模修改系統(tǒng)時,伴隨程序的修改,針對其它的程序的影響要求提高調(diào)查的精度和作業(yè)效率。
[0003]在過去,為了調(diào)查影響,采用以“方法的調(diào)用關(guān)系”為中心的影響的調(diào)查方法。
[0004]在專利文獻(xiàn)I (JP特開2006— 277127號)中記載到,針對作為設(shè)計(jì)上的邏輯結(jié)構(gòu)的模塊,文件,函數(shù),源代碼的層級結(jié)構(gòu)的每個而應(yīng)進(jìn)行比較的項(xiàng)目,進(jìn)行定義、比較。
[0005]在專利文獻(xiàn)2 (JP特開2009—157505號)中記載到,在過去,規(guī)定分析規(guī)則,根據(jù)它,進(jìn)行變更的影響分析;由于在該方法中,規(guī)則的制定需要花費(fèi)時間,故存儲記載有針對源代碼的每個變更對象項(xiàng)目所假定的所有驗(yàn)證方法的影響分析圖。
【發(fā)明內(nèi)容】
[0006]在過去的基于方法的調(diào)用關(guān)系調(diào)查影響中,具有必須提取大量的沒有影響的類/方法,指定跟蹤調(diào)用關(guān)系的層級等問題。
[0007]另外,在存儲影響分析圖的方法中,具有構(gòu)建該影響分析圖需要花費(fèi)許多的時間等問題。
[0008]本發(fā)明的目的在于針對上述問題,不用提取無影響的類和方法,就可以用機(jī)械方式設(shè)定影響的范圍,在大規(guī)模修改系統(tǒng)時,可謀求提高影響調(diào)查的精度和作業(yè)效率。
[0009]本發(fā)明提供一種程序的影響范圍設(shè)定裝置,其特征在于:
對程序的源代碼進(jìn)行句法分析,分析為抽象語法樹,檢索形成該抽象語法樹的表達(dá)
式;
根據(jù)已檢索的表達(dá)式,按照表達(dá)式的依賴關(guān)系,形成表達(dá)式的連接;
形成針對源代碼的表達(dá)式與表達(dá)式的連接的依賴關(guān)系圖表,設(shè)定處于依賴關(guān)系的影響波及范圍。
[0010]本發(fā)明提供一種程序的影響波及范圍設(shè)定裝置,其特征在于:
對程序的源代碼進(jìn)行句法分析,分析為抽象語法樹;
檢索形成抽象語法樹的表達(dá)式;
根據(jù)已檢索的表達(dá)式,按照表達(dá)式的依賴關(guān)系,形成表達(dá)式的連接;
針對多個源代碼,分別形成已檢索的表達(dá)式的連接;
在多個源代碼所具有的檢索的表達(dá)式相同時,該表達(dá)式構(gòu)成各自的源代碼所共用的表達(dá)式;
包括該共用的表達(dá)式和表達(dá)式的連接的組合,形成而共用針對多個源代碼的表達(dá)式與表達(dá)式的連接的依賴關(guān)系圖表,設(shè)定處于依賴關(guān)系的影響波及范圍。
[0011]另外,本發(fā)明還提供一種程序的影響波及范圍的特定方法,該方法涉及采用上述程序的影響波及范圍設(shè)定裝置的影響范圍的特定方法,其特征在于:
如果在上述依賴關(guān)系圖表上,指定構(gòu)成基點(diǎn)的表達(dá)式,則通過跟蹤相對構(gòu)成基點(diǎn)的表達(dá)式的依賴關(guān)系,指定特定影響波及范圍。
[0012]本發(fā)明還提供一種受影響波及程序的提取方法,該方法涉及采用上述程序的影響波及范圍設(shè)定裝置的受影響波及程序的提取方法,其特征在于:
在于上述依賴關(guān)系圖表上,指定構(gòu)成基點(diǎn)的表達(dá)式時,通過跟蹤相對構(gòu)成基點(diǎn)的表達(dá)式的依賴關(guān)系,將具有表達(dá)式和表達(dá)式的連接的程序作為受影響波及的程序而抽取。
[0013]另外,在本發(fā)明中,輸入源代碼,但是,在這里,按照包括字節(jié)代碼的概念而使用。字節(jié)代碼指通過按照不依賴于特定的操作系統(tǒng)(OS),硬件而定義的命令而描述的可執(zhí)行程序,為位于作為人畫的設(shè)計(jì)圖的源代碼和實(shí)際上可在計(jì)算機(jī)中運(yùn)行的本地代碼的中間的形式,在這里,作為源代碼而對待,是沒有關(guān)系的。
[0014]本發(fā)明具有以下優(yōu)點(diǎn):按照本發(fā)明,由于象上述那樣,通過源代碼的句法分析,賦予表達(dá)式之間的依賴關(guān)系,進(jìn)行影響波及范圍的設(shè)定和指定,故不用提取沒有影響的類(class) /方法(method),就可根據(jù)表達(dá)式,以機(jī)械方式設(shè)定影響波及的范圍,在大規(guī)模修改系統(tǒng)時,可謀求提高影響調(diào)查的精度和作業(yè)效率。
【專利附圖】
【附圖說明】
[0015]圖1為通過方框表示本發(fā)明的實(shí)施例的結(jié)構(gòu)圖;
圖2為表示本實(shí)施例所采用的引擎的結(jié)構(gòu)圖;
圖3為表示本實(shí)施例的處理流程圖;
圖4為表不句法的分析例子的圖;
圖5為表不賦予表達(dá)式之間的依賴關(guān)系的例子的圖;
圖6為表示基于影響波及范圍的設(shè)定的依賴關(guān)系圖表的圖;
圖7為在圖6中添加類和方法關(guān)系的圖;
圖8為表示圖6所示的表達(dá)式和表達(dá)式的連接的具體例子的圖;
圖9為表示跟蹤依賴關(guān)系的影響波及調(diào)查的例子的圖;
圖10為表示影響波及范圍的結(jié)果的圖;
圖11為表示已有例子的影響波及的結(jié)果的圖;
圖12為表示已有例子的影響波及的結(jié)果的圖;
圖13為表示已有例子的影響波及的結(jié)果的圖;
圖14為表示本實(shí)施例的影響波及的結(jié)果的圖。
[0016]標(biāo)號的說明:
標(biāo)號I表不輸入單兀;
標(biāo)號2表示運(yùn)算處理單元;
標(biāo)號3表不輸出單兀;
標(biāo)號4表不數(shù)據(jù)庫;
標(biāo)號5表不程序;標(biāo)號6表不構(gòu)成基點(diǎn)的表達(dá)式;
標(biāo)號7表示圖像顯示器;
標(biāo)號8表畫面;
標(biāo)號100表示程序的影響波及范圍設(shè)定裝置。
【具體實(shí)施方式】
[0017]下面結(jié)合附圖及本發(fā)明的實(shí)施例對本發(fā)明作進(jìn)一步詳細(xì)的說明。
[0018]圖1為通過方框表示的本發(fā)明的實(shí)施例的程序的影響范圍設(shè)定裝置結(jié)構(gòu)圖。
[0019]在圖1中,程序的影響范圍設(shè)定裝置100由輸入單元1,運(yùn)算處理單元2,輸出單元3和數(shù)據(jù)庫4構(gòu)成。
[0020]在輸入單元I中,從外部,輸入在大規(guī)模修改系統(tǒng)時,構(gòu)成修改對象的程序5和構(gòu)成基點(diǎn)的表達(dá)式6。
[0021]運(yùn)算處理單元2包括下述處理單元(功能):
?源代碼的句法分析(即,語法分析)
?抽象語法樹分析 ?表達(dá)式檢索 ?表達(dá)式連接的形成 ?共用表達(dá)式的提取 ?表達(dá)式的依賴關(guān)系 ?圖表的形成 ?影響范圍的設(shè)定 ?影響范圍的特定 輸出單元3輸出:
?依賴關(guān)系的跟蹤 ?已設(shè)定的影響范圍
?已特定的影響范圍,將其顯示于畫面顯示器7的畫面8中。
[0022]數(shù)據(jù)庫4保存通過借助運(yùn)算處理單元2而演算處理的方式形成的表達(dá)式的依賴關(guān)系圖表(即,數(shù)據(jù))。
[0023]對運(yùn)算處理單元2進(jìn)行說明。
[0024]源代碼的句法分析單元對程序的源代碼進(jìn)行句法分析。
[0025]抽象語法樹分析單元根據(jù)句法分析,將其分析為作為層級結(jié)構(gòu)的抽象語法樹。
[0026]表達(dá)式檢索單元對形成抽象語法樹的表達(dá)式進(jìn)行檢索。針對表現(xiàn)為抽象語法樹的全部的注釋(行,表達(dá)式),分析依賴關(guān)系,檢索表達(dá)式。
[0027]表達(dá)式連接制作單元根據(jù)已檢索的表達(dá)式,按照表達(dá)式的依賴關(guān)系,形成表達(dá)式的連接。表達(dá)式的連接針對多個源代碼而形成。
[0028]共用表達(dá)式的提取單元相同時,將該表達(dá)式作為各個源代碼所共用的源代碼而提取。
[0029]表達(dá)式的依賴關(guān)系圖表的形成單元按照與其它的程序的關(guān)系,針對包括共用的表達(dá)式和按照依賴關(guān)系而連接的表達(dá)式的組合的多個源代碼,形成表達(dá)式的依賴關(guān)系圖表。[0030]影響范圍設(shè)定單元根據(jù)依賴關(guān)系圖表,設(shè)定處于依賴關(guān)系的影響范圍。
[0031]影響范圍特定單元根據(jù)已設(shè)定的影響范圍,特定影響范圍。
[0032]圖2表示采用本實(shí)施例的引擎的結(jié)構(gòu)。
[0033]引擎由語言依賴部分和語言非依賴部分構(gòu)成。(I)在句法分析時,采用各種插件,t匕如,A分析插件,B分析插件,C分析插件。也可為I個插件。
[0034]象圖2所示的那樣,進(jìn)行句法分析,對提取的語法樹進(jìn)行解析,(2)進(jìn)行依賴關(guān)系分析。通過該分析,形成依賴關(guān)系,接著,(3)進(jìn)行影響分析。通過該分析,形成影響結(jié)果。
[0035]圖3表示處理的流程。
[0036]針對源代碼,(I)進(jìn)行語法分析(SI)。對僅使用源代碼而缺乏的型信息,也可通過條形碼等的補(bǔ)充信息進(jìn)行補(bǔ)充。在這里所說的補(bǔ)充指僅對使用源代碼而缺乏的信息進(jìn)行補(bǔ)充的信息。指比如,Java語言的class或jar文件的信息。
[0037](I)根據(jù)句法分析,形成抽象語法樹(S2),(2)進(jìn)行依賴關(guān)系分析(S3)。通過該分析結(jié)果,形成依賴關(guān)系(S4),根據(jù)影響的基點(diǎn),(3)進(jìn)行影響分析(S5)。通過該分析結(jié)果,形成影響結(jié)果(S6)。
[0038]圖4表示通過源代碼的句法分析單元和抽象語法樹分析單元,分析源代碼的語法,分析而形成抽象語法樹。在這里,為了接近通過人員的眼睛而追蹤的情況,分析源代碼的各表達(dá)式的意思,將其結(jié)果變換為抽象語法樹。分析抽象語法樹,根據(jù)表達(dá)式用語,檢索表達(dá)式。
[0039]圖5表不表達(dá)式之間的依賴關(guān)系。
[0040]比如,方法調(diào)用句與調(diào)用方的方法宣言有關(guān)。象這樣,不僅是方法調(diào)用,而且針對變量的利用和宣言等的全部的表達(dá)式,提供連接。將其稱為依賴關(guān)系。
[0041 ] 依賴關(guān)系用作跟蹤影響的路線。
[0042]圖6為表示影響范圍的設(shè)定和影響范圍的特定。
[0043]在圖6中,記載有以表達(dá)式I和表達(dá)式2為基點(diǎn)的源代碼的一系列的表達(dá)式的連接。
[0044]以表達(dá)式I為起點(diǎn)的源代碼和以表達(dá)式2為起點(diǎn)的源代碼,如果表達(dá)式5相同,則形成各自的源代碼所共用的表達(dá)式。
[0045]表達(dá)式5連接有表達(dá)式7,表達(dá)式8,在表達(dá)式7上連接有表達(dá)式9。
[0046]象圖所示的那樣,表達(dá)式5,表達(dá)式7,表達(dá)式9在與其他的程序的關(guān)系上,形成各自的源代碼所共用的表達(dá)式的連接。
[0047]包括共用的表達(dá)式和按照依賴關(guān)系而連接的表達(dá)式的組合,形成針對多個源代碼的表達(dá)式的依賴關(guān)系圖表,設(shè)定影響范圍。影響范圍的調(diào)查通過跟蹤表達(dá)式的依賴關(guān)系而進(jìn)行。目前,在構(gòu)成起點(diǎn)的源代碼的內(nèi)部,形成以針對表達(dá)式2的源代碼為基點(diǎn)的源代碼。特定通過指定構(gòu)成基點(diǎn)的表達(dá)式2,跟蹤構(gòu)成基點(diǎn)的表達(dá)式的依賴關(guān)系的方式設(shè)定的影響范圍。
[0048]圖7表示在圖6所示的的狀態(tài),類,方法關(guān)系的圖。
[0049]在圖7中,表達(dá)式屬于類,方法。
[0050]于是,可通過跟蹤表達(dá)式,特定所屬的類,方法。如,表達(dá)式I屬于類A的方法
α ο[0051]圖8通過具體例子而表示圖6所示的表達(dá)式和表達(dá)式的連接。
[0052]在圖8中,按照源代碼的表達(dá)式單位,表示影響的路徑,從表達(dá)式用語中,自動提取影響對象的表達(dá)式。
[0053]圖9表示跟蹤依賴關(guān)系的影響調(diào)查的例子。
[0054]圖9表示特定按照Uselnfo類定義的name特性所波及的影響范圍的例子。在本例子中,伴隨name特性所具有的值的變更,特定必須修改或測試的范圍。比如,為按照通過10位而表示的方式修正通過過去的3位表示的值的場合。
[0055]圖9的說明如下述。
[0056]調(diào)查按照Uselnfo類的區(qū)域而定義的name特性的變更的影響。
[0057](Uselnfo 類的影響)
1.name特性在getName ()方法和setName (String)方法中使用。
[0058]由于通過getName ()方法的return句,將name特性退回,故影響getName ()方法的調(diào)用程序。
[0059]Utility 類的 makeKey (Date, String)方法。
[0060]2.由于在setName (String)方法中,將setName (String)方法的參數(shù)的值改寫為name特性,故對name特性的變更沒有影響,沒有被波及。
[0061](Utility 類的影響)
1.由于對userlnf0.getName ()的值產(chǎn)生影響,故影響到保存采用該值的計(jì)算結(jié)果的string 變量。
[0062]2.由于string變量過渡到encryption, encrypt (String)方法,故影響到作為其計(jì)算結(jié)果的 encryptedString 變量,與 encrypt (String)方法。
[0063]encryption 類的 encrypt (String)方法。
[0064]3.由于 encryptedString 變量為 makeKey (Date, String)方法的返回值,故影響到makeKey (Date, String)方法的調(diào)用程序。
[0065]Logic 類的 logic ()方法。
[0066](encryption 類的影響)
1.由于對encrypt (String)方法的string參數(shù),產(chǎn)生影響,故對采用該值的表達(dá)式(process (string))的參數(shù),產(chǎn)生影響。
[0067]2.由于對process (String)方法string的參數(shù),產(chǎn)生影響,故對采用該值的(return string)表達(dá)式產(chǎn)生影響。由于對return句,產(chǎn)生影響,故對process (String)方法的返回值,產(chǎn)生影響,影響到process (String)方法的調(diào)用程序。
[0068]Encryption 類的 encrypt (String)方法(3)。
[0069]3.通過 return 句,將 encrypted String 變量退還,故影響到 encrypt (String)方法的調(diào)用程序。
[0070]Utility 類的 makeKey (Date, String)方法。
[0071](Logic 類的影響)
由于對Utility類的makeKey (Date, String)的返回值產(chǎn)生影響,故對設(shè)定該值的key
變量產(chǎn)生影響。
[0072]由于Key變量不在此后使用,故在這里,影響結(jié)束。[0073]圖10通過處于調(diào)用關(guān)系的影響調(diào)查的比較而表示本實(shí)施例的影響范圍調(diào)查的結(jié)果。在調(diào)用關(guān)系的影響調(diào)查方法中,由于大量地提取沒有影響的類/方法,故需要人來判斷跟蹤到哪里,必須聚焦。相對該情況,在本實(shí)施例中,由于經(jīng)過影響調(diào)查的結(jié)果為必要充分的結(jié)果,故不必判斷跟蹤到哪里。
[0074]按照本實(shí)施例,通過表達(dá)式單位對語法進(jìn)行分析,可獲得 ?可分析表達(dá)式之間的依賴關(guān)系
?可分析處理的流程
的特征。由此,可跟蹤所影響的表達(dá)式,比如,可解決以“調(diào)用關(guān)系”為中心的影響調(diào)查的問題。另外,象圖6,圖7所示的那樣,可以機(jī)械方式判斷影響的終接點(diǎn)。即使在無頭緒碼這樣的情況下,仍可提取必要的表達(dá)式關(guān)系。
[0075]圖11?圖14具體地表示本實(shí)施例的影響范圍調(diào)查的結(jié)果與處于調(diào)用關(guān)系的影響調(diào)查的比較。
[0076]圖11?圖13表示基于已有調(diào)用關(guān)系的影響調(diào)查的結(jié)果。具體內(nèi)容在這些附圖中描述。
[0077]圖14為表示基于本實(shí)施例的影響調(diào)查的結(jié)果。
[0078]因此,根據(jù)這些比較,按照本實(shí)施例,無需大量提取無影響的類和方法,就可通過跟蹤表達(dá)式和表達(dá)式的連接的依賴關(guān)系,特定影響范圍。
[0079]象這樣,本實(shí)施例可提高在大規(guī)模修改系統(tǒng)時所實(shí)施的影響調(diào)查的精度和作業(yè)效率。
[0080]以上所述,僅為本發(fā)`明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種程序的影響范圍設(shè)定裝置,其特征在于: 對程序的源代碼進(jìn)行句法分析,分析為抽象語法樹,檢索形成該抽象語法樹的表達(dá)式;根據(jù)已檢索的表達(dá)式,按照表達(dá)式的依賴關(guān)系,形成表達(dá)式的連接;形成針對源代碼的表達(dá)式與表達(dá)式連接的依賴關(guān)系圖表,設(shè)定處于依賴關(guān)系的影響范圍。
2.一種程序的影響范圍設(shè)定裝置,其特征在于: 對程序的源代碼進(jìn)行句法分析,分析為抽象語法樹; 從表達(dá)式用語中,檢索形成抽象語法樹的表達(dá)式; 根據(jù)已檢索的表達(dá)式,按照表達(dá)式的依賴關(guān)系,形成表達(dá)式的連接; 針對多個源代碼,分別形成已檢索的表達(dá)式的連接; 在多個源代碼所具有的檢索的表達(dá)式相同時,該表達(dá)式構(gòu)成各自的源代碼所共用的表達(dá)式; 包括該共用的表達(dá)式和表達(dá)式的連接的組合,形成而共用針對多個源代碼的表達(dá)式與表達(dá)式的連接的依賴關(guān)系圖表,設(shè)定處于依賴關(guān)系的影響范圍。
3.一種程序的影響范圍的特定方法,該方法涉及采用權(quán)利要求1或2所述的程序的影響范圍設(shè)定裝置的影響范圍的特定方法,其特征在于: 如果在上述依賴關(guān)系圖表上,指定構(gòu)成基點(diǎn)的表達(dá)式,則通過跟蹤相對構(gòu)成基點(diǎn)的表達(dá)式的依賴關(guān)系,特定影響范圍。
4.一種受影響程序的提取方法,該方法涉及采用權(quán)利要求1或2所述的程序的影響范圍設(shè)定裝置的受影響程序的提取方法,其特征在于: 在于上述依賴關(guān)系圖表上,特定構(gòu)成基點(diǎn)的表達(dá)式時,通過跟蹤相對構(gòu)成基點(diǎn)的表達(dá)式的依賴關(guān)系,將具有表達(dá)式和表達(dá)式的連接的程序作為受影響程序而提取。
【文檔編號】G06F9/44GK103443766SQ201280016907
【公開日】2013年12月11日 申請日期:2012年3月29日 優(yōu)先權(quán)日:2011年3月31日
【發(fā)明者】吉田浩一 申請人:日立公共系統(tǒng)工程公司