一種應(yīng)用系統(tǒng)版本構(gòu)建的正確性的檢查方法
【專利摘要】本發(fā)明公開了應(yīng)用系統(tǒng)版本構(gòu)建的正確性的檢查方法,包括:分別掃描各源碼庫;抽取源程序與COPYBOOK的關(guān)系并生成源程序與COPYBOOK的關(guān)系文件;根據(jù)上述關(guān)系文件和當(dāng)前版本變更申請單內(nèi)容產(chǎn)生編譯清單文件;利用編譯清單文件、普通程序?qū)傩詤?shù)文件和數(shù)據(jù)庫訪問程序?qū)傩詤?shù)文件生成數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件;根據(jù)當(dāng)前版本變更申請單內(nèi)容、數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件、對各執(zhí)行碼庫抽取程序時間戳及字節(jié)數(shù)的輸出結(jié)果檢查應(yīng)用系統(tǒng)版本構(gòu)建的正確性,輸出結(jié)果包括程序時間戳、大小及調(diào)用關(guān)系文件。根據(jù)本發(fā)明能夠兼效率和正確性的前提對所構(gòu)建的應(yīng)用系統(tǒng)版本進(jìn)行正確性檢查。
【專利說明】一種應(yīng)用系統(tǒng)版本構(gòu)建的正確性的檢查方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及復(fù)雜應(yīng)用系統(tǒng)的版本構(gòu)建,尤其涉及一種應(yīng)用系統(tǒng)的版本的正確性的檢查方法。
【背景技術(shù)】
[0002]對于復(fù)雜的應(yīng)用系統(tǒng),在應(yīng)用系統(tǒng)的版本構(gòu)建之后,采用人工手段進(jìn)行版本正確性檢查十分困難,其主要體現(xiàn)在以下三個方面:
[0003]第一方面,程序調(diào)用關(guān)系復(fù)雜。比如核心銀行系統(tǒng),往往存在成千上萬的應(yīng)用程序,這些應(yīng)用程序遵循軟件工程要求的模塊化設(shè)計原則,從而可以提高系統(tǒng)的易維護(hù)性、可靠性等。然而,這樣的設(shè)計導(dǎo)致程序調(diào)用關(guān)系呈現(xiàn)為十分復(fù)雜的網(wǎng)狀關(guān)系,例如對現(xiàn)有技術(shù)中一些核心銀行系統(tǒng)程序調(diào)用關(guān)系高達(dá)10多層,一個主程序往往包含幾百個子程序。當(dāng)一個較低層的子程序發(fā)生變更后,往往需要對成千上萬的上級程序重新鏈接(link),即對此類需要重新鏈接的上級程序構(gòu)建新版本;
[0004]第二方面,COPYBOOK嵌套關(guān)系復(fù)雜,所謂COPYBOOK可以理解為存儲變量的頭文件。COPYBOOK用于存放數(shù)據(jù)結(jié)構(gòu)定義或公共程序代碼段,其也是一種源碼。且COPYBOOK存在嵌套包含關(guān)系,當(dāng)一個COPYBOOK變更后,可能導(dǎo)致鏈接此COPYBOOK的上級COPYBOOK的變更,即與其相關(guān)的所有程序需要重新編譯鏈接,即對相關(guān)的所有程序均需構(gòu)建新版本,第一方面與第二方面構(gòu)建的新的應(yīng)用系統(tǒng)版本數(shù)量繁多,難以用人工方式在保證正確性與效率的前提下進(jìn)行版本的正確性檢查;
[0005]第三方面,DB2DBRM與程序執(zhí)行碼一致性問題,其中,DB2為一種關(guān)系型數(shù)據(jù)庫系統(tǒng)。DB2主要應(yīng)用于大型應(yīng)用系統(tǒng),具有與平臺無關(guān)的基本功能和SQL命令。對于包含DB2SQL語句的程序,DB2會附加產(chǎn)生一個所謂的DBRM(即Database Request Module,數(shù)據(jù)庫請求模塊),且要求該DBRM內(nèi)包含的時間戳與程序執(zhí)行碼中的時間戳完全一致,時間戳(timestamp)通常是一個字符序列,唯一地標(biāo)識某一刻的時間,而現(xiàn)有技術(shù)的版本構(gòu)建過程中由于DBRM與程序執(zhí)行碼并非通過同一次預(yù)編譯過程所產(chǎn)生的,因而DBRM內(nèi)的時間戳常與程序執(zhí)行碼內(nèi)的時間戳不一致,而對版本的正確性進(jìn)行人工檢測則較難判斷時間戳的相同與否。
[0006]目前,可通過采用IBM的BHLDF0RGE工具進(jìn)行版本構(gòu)建,但BHLDF0RGE工具不能保證上述三個方面的問題完全正確,為了保證版本的正確性,仍需要在版本構(gòu)建后,必須采用人工的手段檢查版本的正確性,人工檢查版本的工作量大、效率低,且容易出錯。因而現(xiàn)有技術(shù)對于一個中等規(guī)?;蚋蟮陌姹緲?gòu)建,往往需時較長才能完成版本檢查工作,并且難以保證版本的絕對正確性。
【發(fā)明內(nèi)容】
[0007]本發(fā)明所要解決的問題是難以用人工方式在保證正確性與效率的前提下進(jìn)行版本的正確性檢查,提供一種
[0008]為了解決上述問題,本發(fā)明提供一種應(yīng)用系統(tǒng)版本構(gòu)建的正確性的檢查方法,包括以下步驟:
[0009]步驟1:分別掃描各源碼庫;
[0010]步驟2:抽取源程序與COPYBOOK的關(guān)系并生成源程序與COPYBOOK的關(guān)系文件;
[0011]步驟3:根據(jù)源程序與COPYBOOK的關(guān)系文件和當(dāng)前版本變更申請單內(nèi)容產(chǎn)生編譯清單文件;
[0012]步驟4:利用編譯清單文件、普通程序?qū)傩詤?shù)文件和數(shù)據(jù)庫訪問程序?qū)傩詤?shù)文件生成數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件;
[0013]步驟5:根據(jù)當(dāng)前版本變更申請單內(nèi)容、數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件、對各執(zhí)行碼庫抽取程序時間戳及字節(jié)數(shù)的輸出結(jié)果檢查應(yīng)用系統(tǒng)版本構(gòu)建的正確性,輸出結(jié)果包括程序時間戳、大小及調(diào)用關(guān)系文件。
[0014]作為優(yōu)選,當(dāng)前版本變更申請單內(nèi)容配置于一程序清單文件中,其包含:
[0015]變更的源程序清單、COPYBOOK清單、運(yùn)行作業(yè)清單。
[0016]作為優(yōu)選,對各執(zhí)行碼庫抽取程序時間戳及字節(jié)數(shù)為抽取出一程序關(guān)系文件,該程序關(guān)系文件包括主程序名、子程序名、子程序的字節(jié)數(shù)、時間戳。
[0017]作為優(yōu)選,上述步驟5進(jìn)一步包括:
[0018]步驟51:根據(jù)數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件、輸出結(jié)果檢查LOAD執(zhí)行碼的時間戳是否在指定范圍內(nèi)。
[0019]作為優(yōu)選,上述步驟5進(jìn)一步包括:
[0020]步驟52:根據(jù)當(dāng)前版本變更申請單內(nèi)容和輸出結(jié)果檢查各子程序在所有主程序中的字節(jié)數(shù)、時間戳是否完全一致。
[0021]作為優(yōu)選,上述步驟5進(jìn)一步包括:
[0022]步驟53:根據(jù)數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件檢查數(shù)據(jù)庫請求模塊和執(zhí)行碼的時間戳是否一致。
[0023]作為優(yōu)選,在上述步驟5之后,所述檢查方法還包括:
[0024]步驟6:將檢查結(jié)果以報表形式輸出。
[0025]作為優(yōu)選,所述應(yīng)用系統(tǒng)為IBM大型機(jī)環(huán)境系統(tǒng)和/或ζ/OS操作系統(tǒng)。
[0026]本發(fā)明相對于現(xiàn)有技術(shù)的有益效果在于:
[0027]1、能夠兼效率和正確性的前提對所構(gòu)建的應(yīng)用系統(tǒng)版本進(jìn)行正確性檢查;
[0028]2、可以解決IBM大型機(jī)環(huán)境、ζ/OS操作系統(tǒng)下復(fù)雜應(yīng)用系統(tǒng)版本構(gòu)建的正確性問題。
【專利附圖】
【附圖說明】
[0029]圖1為根據(jù)本發(fā)明的應(yīng)用系統(tǒng)所構(gòu)建的版本的正確性的檢查方法的流程圖;
[0030]圖2為根據(jù)本發(fā)明的一個實施例對應(yīng)用系統(tǒng)BANCS的版本進(jìn)行正確性檢查的整體示圖;
[0031]圖3為根據(jù)本發(fā)明的一個實施例對應(yīng)用系統(tǒng)BANCS的版本進(jìn)行正確性檢查的流程圖。
【具體實施方式】
[0032]以下結(jié)合附圖對本發(fā)明的進(jìn)行詳細(xì)描述。
[0033]根據(jù)本發(fā)明的實施例,提供了一種應(yīng)用系統(tǒng)版本構(gòu)建的正確性的檢查方法。
[0034]根據(jù)本發(fā)明實例的檢查方法可以包括以下步驟:
[0035]步驟1:分別掃描各源碼庫;
[0036]步驟2:抽取源程序與COPYBOOK的關(guān)系并生成源程序與COPYBOOK的關(guān)系文件;
[0037]步驟3:根據(jù)源程序與COPYBOOK的關(guān)系文件和當(dāng)前版本變更申請單內(nèi)容產(chǎn)生編譯清單文件;
[0038]步驟4:利用編譯清單文件、普通程序?qū)傩詤?shù)文件和數(shù)據(jù)庫訪問程序?qū)傩詤?shù)文件生成數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件;
[0039]步驟5:根據(jù)當(dāng)前版本變更申請單內(nèi)容、數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件、對各執(zhí)行碼庫抽取程序時間戳及字節(jié)數(shù)的輸出結(jié)果檢查應(yīng)用系統(tǒng)版本構(gòu)建的正確性,輸出結(jié)果包括程序時間戳、大小及調(diào)用關(guān)系文件。因而能夠兼效率和正確性的前提對所構(gòu)建的應(yīng)用系統(tǒng)版本進(jìn)行正確性檢查。
[0040]此外,根據(jù)本發(fā)明實例的檢查方法還可以包括步驟6:將檢查結(jié)果以報表形式輸出,便于工作人員查看結(jié)果。
[0041]當(dāng)前版本變更申請單內(nèi)容可以配置于一程序清單文件中,其可以包含:變更的源程序清單、COPYBOOK清單、運(yùn)行作業(yè)清單。當(dāng)前版本變更申請單內(nèi)容即由工作人員提交的應(yīng)用系統(tǒng)版本內(nèi)變更的內(nèi)容。
[0042]作為優(yōu)選,對各執(zhí)行碼庫抽取程序時間戳及字節(jié)數(shù)為抽取出一程序關(guān)系文件,該程序關(guān)系文件可以包括主程序名、子程序名、子程序的字節(jié)數(shù)、時間戳。
[0043]在優(yōu)選的實施例中,上述步驟5可以進(jìn)一步包括:步驟51:根據(jù)數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件、輸出結(jié)果檢查LOAD執(zhí)行碼的時間戳是否在指定范圍內(nèi),從而解決子COPYBOOK與相關(guān)的上級COPYBOOK之間的一致性的問題;
[0044]和/或步驟52:根據(jù)當(dāng)前版本變更申請單內(nèi)容和輸出結(jié)果檢查各子程序在所有主程序中的字節(jié)數(shù)、時間戳是否完全一致,由于某一子程序的時間戳加上字節(jié)數(shù)相當(dāng)于該子程序的唯一標(biāo)志,凡是調(diào)用了該子程序的所有主程序,都必須具有與該子程序相同的標(biāo)志,因而可以檢查子程序與主程序的一致性;和/或
[0045]步驟53:根據(jù)數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件檢查數(shù)據(jù)庫請求模塊和執(zhí)行碼的時間戳是否一致,從而解決了 DB2DBRM與程序執(zhí)行碼一致性的問題。此處三個步驟51、52和53可以分別以報表形式輸出結(jié)果,從而便于工作人員對錯誤之處進(jìn)行修正。
[0046]本發(fā)明的應(yīng)用系統(tǒng)版本構(gòu)建的正確性的檢查方法主要適用于IBM大型機(jī)環(huán)境和/或ζ/OS操作系統(tǒng),從而解決IBM大型機(jī)環(huán)境、ζ/OS操作系統(tǒng)下復(fù)雜應(yīng)用系統(tǒng)版本構(gòu)建的正確性問題。圖2所示為根據(jù)本發(fā)明的一個實施例對應(yīng)用系統(tǒng)的版本進(jìn)行正確性檢查的示意圖,利用版本檢查工具(在實際應(yīng)用中可以為版本檢查工具V2.0版本)對應(yīng)用系統(tǒng)版本的正確性進(jìn)行檢查的架構(gòu)的示意圖。在本實施例中以BANCS內(nèi)的各源碼庫作為源碼庫的一個例子,當(dāng)然本發(fā)明也可以應(yīng)用于其它類型的源碼庫。相應(yīng)地,以BANCS各執(zhí)行碼庫作為LOADLIB (即上述執(zhí)行碼庫)。版本檢查工具對IBM DEBUG TOOL(排除程序故障的工具)產(chǎn)品附帶的Load Module Analyzer工具進(jìn)行重構(gòu),其能可靠地、高效地分析主程序包含的各子程序的時間戳和字節(jié)數(shù)。
[0047]如圖2所示,版本檢查工具V2.0根據(jù)開發(fā)人員提交的S0URCELIST(即上述當(dāng)前版本變更申請單內(nèi)容),以及與核心銀行系統(tǒng)BANCS相關(guān)的S0URCELIB(源碼庫)、LOADLIB (執(zhí)行碼庫)、DBRM LIB(DBRM 庫)、PROGLIST (普通程序?qū)傩?、DB10LIST(其中,DB1是一類封裝的數(shù)據(jù)庫訪問程序,因而DB10LIST為數(shù)據(jù)庫訪問程序?qū)傩?等參數(shù)文件進(jìn)行版本檢查,檢查結(jié)果在輸出的各報表中。其中,S0URCELIST為開發(fā)人員對Copybook所link的文件進(jìn)行人工識別所得到的結(jié)果,在實際應(yīng)用中該S0URCELIST可以為一個excel清單;SOURCE LIB為實際提交的源碼庫;LOAD LIB內(nèi)包含一些文件之間的映射關(guān)系;DBRM LIB為靜態(tài)庫;PR0GLIST參數(shù)文件定義了程序的屬性,比如是聯(lián)機(jī)還是批量,是子程序還是主程序等;DB10LIST即數(shù)據(jù)庫訪問程序?qū)傩缘膮?shù)文件,列出與DB2相關(guān)的程序,在圖2中與“參數(shù)文件PR0GLIST”共處一個位置。
[0048]如圖3所示,為根據(jù)本發(fā)明使用版本檢查工具V2.0進(jìn)行版本準(zhǔn)確性檢查的處理流程,處理流程包括以下七個模塊的實現(xiàn):
[0049]模塊一、模塊“抽取源程序與COPYBOOK的關(guān)系”實現(xiàn):對“BANCS各源碼庫”分別進(jìn)行掃描,抽取源程序與COPYBOOK的關(guān)系,最終生成“源程序與COPYBOOK的關(guān)系文件”;
[0050]模塊二、模塊“產(chǎn)生編譯清單”實現(xiàn):根據(jù)“源程序與COPYBOOK的關(guān)系文件”和本次版本申請的“S0URCELIST文件”,處理產(chǎn)生/輸出“編譯清單文件C0MPILELIST”,它反映了本次版本構(gòu)建實際需要編譯的程序清單,其中,“S0URCELIST文件”是指當(dāng)前版本變更申請單內(nèi)容,通常包含變更的源程序清單、COPYBOOK清單、運(yùn)行作業(yè)清單等;
[0051]模塊三、模塊“根據(jù)各編譯作業(yè)生成DBRM和執(zhí)行碼清單”實現(xiàn):根據(jù)編譯清單C0MPILELIST、普通程序?qū)傩缘膮?shù)文件PR0GLIST和DB1程序?qū)傩缘膮?shù)文件DB10LIST,判斷該程序采用何種編譯作業(yè),從而決定是否存在相應(yīng)的DBRM、SUB LOAD子程序、LOAD主程序,其結(jié)果輸出到“DBRM和LOAD清單文件”;
[0052]模塊四、模塊“抽取程序時間戳及字節(jié)數(shù)”實現(xiàn):根據(jù)IBM DEBUG TOOL產(chǎn)品的LoadModule Analyzer工具運(yùn)行結(jié)果,抽取出程序關(guān)系文件,它包含了主程序名、子程序名、子程序的字節(jié)數(shù)、時間戳等關(guān)鍵屬性。其輸入是“BANCS各執(zhí)行碼庫”,輸出是“程序時間戳、大小及調(diào)用關(guān)系文件”;
[0053]模塊五、模塊“檢查各LOAD是否正確”實現(xiàn):根據(jù)“DBRM和LOAD清單文件”和“程序時間戳、大小及調(diào)用關(guān)系文件”,檢查LOAD執(zhí)行碼的時間戳是否在指定范圍內(nèi),輸出相應(yīng)的報表;
[0054]模塊六、模塊“檢查子程序在所有主程序是否一致”實現(xiàn):根據(jù)“程序時間戳、大小及調(diào)用關(guān)系文件”,檢查各子程序在所有主程序中的字節(jié)數(shù)、時間戳是否完全一致,換言之,即,所有主程序中的相同子程序的字節(jié)數(shù)、時間戳是否完全一致,然后輸出相應(yīng)的報表;
[0055]模塊七、模塊“檢查DBRM與LOAD是否一致”實現(xiàn):根據(jù)“DBRM和LOAD清單文件”中記錄的DBRM清單,訪問LOAD庫中的執(zhí)行碼,檢查兩者的時間戳是否一致,輸出相應(yīng)的報表。
[0056]在使用版本檢查工具以后,僅需要2分鐘就完成版本檢查工作,極大地提高了工作效率,且保證的版本的絕對正確性。
[0057]以上實施例僅為本發(fā)明的示例性實施例,不用于限制本發(fā)明,本發(fā)明的保護(hù)范圍由權(quán)利要求書限定。本領(lǐng)域技術(shù)人員可以在本發(fā)明的實質(zhì)和保護(hù)范圍內(nèi),對本發(fā)明做出各種修改或等同替換,這種修改或等同替換也應(yīng)視為落在本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種應(yīng)用系統(tǒng)版本構(gòu)建的正確性的檢查方法,其特征在于,包括以下步驟: 步驟1:分別掃描各源碼庫; 步驟2:抽取源程序與COPYBOOK的關(guān)系并生成源程序與COPYBOOK的關(guān)系文件; 步驟3:根據(jù)所述源程序與COPYBOOK的關(guān)系文件和當(dāng)前版本變更申請單內(nèi)容產(chǎn)生編譯清單文件; 步驟4:利用所述編譯清單文件、普通程序?qū)傩詤?shù)文件和數(shù)據(jù)庫訪問程序?qū)傩詤?shù)文件生成數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件; 步驟5:根據(jù)所述當(dāng)前版本變更申請單內(nèi)容、所述數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件、對各執(zhí)行碼庫抽取程序時間戳及字節(jié)數(shù)的輸出結(jié)果檢查所述應(yīng)用系統(tǒng)版本構(gòu)建的正確性,所述輸出結(jié)果包括程序時間戳、大小及調(diào)用關(guān)系文件。
2.根據(jù)權(quán)利要求1所述的檢查方法,其特征在于,所述當(dāng)前版本變更申請單內(nèi)容配置于一程序清單文件中,其包含: 變更的源程序清單、COPYBOOK清單、運(yùn)行作業(yè)清單。
3.根據(jù)權(quán)利要求1所述的檢查方法,其特征在于,所述對各執(zhí)行碼庫抽取程序時間戳及字節(jié)數(shù)為抽取出一程序關(guān)系文件,該程序關(guān)系文件包括主程序名、子程序名、子程序的字節(jié)數(shù)、時間戳。
4.根據(jù)權(quán)利要求1所述的檢查方法,其特征在于,步驟5進(jìn)一步包括: 步驟51:根據(jù)所述數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件、所述輸出結(jié)果檢查LOAD執(zhí)行碼的時間戳是否在指定范圍內(nèi)。
5.根據(jù)權(quán)利要求1所述的檢查方法,其特征在于,步驟5進(jìn)一步包括: 步驟52:根據(jù)所述當(dāng)前版本變更申請單內(nèi)容和所述輸出結(jié)果檢查各子程序在所有主程序中的字節(jié)數(shù)、時間戳是否完全一致。
6.根據(jù)權(quán)利要求1所述的檢查方法,其特征在于,步驟5進(jìn)一步包括: 步驟53:根據(jù)所述數(shù)據(jù)庫請求模塊和執(zhí)行碼清單文件檢查所述數(shù)據(jù)庫請求模塊和所述執(zhí)行碼的時間戳是否一致。
7.根據(jù)權(quán)利要求1所述的檢查方法,其特征在于,在步驟5之后,所述檢查方法還包括: 步驟6:將檢查結(jié)果以報表形式輸出。
8.根據(jù)權(quán)利要求1所述的檢查方法,其特征在于,所述應(yīng)用系統(tǒng)為IBM大型機(jī)環(huán)境系統(tǒng)和/或z/OS操作系統(tǒng)。
【文檔編號】G06F11/36GK104298603SQ201410613909
【公開日】2015年1月21日 申請日期:2014年11月4日 優(yōu)先權(quán)日:2014年11月4日
【發(fā)明者】廖文勝 申請人:中國銀行股份有限公司