吳曉輝,王致富,張 正
(1.對外經(jīng)濟貿(mào)易大學 金融學院,北京100029;2.中國科學院軟件研究所 軟件工程技術研究中心,北京100190;3.中國科學院研究生院 信息科學與工程學院,北京100190;4.中科軟科技股份有限公司,北京100190)
行業(yè)應用軟件是某行業(yè)內(nèi)的核心軟件,是中國軟件產(chǎn)業(yè)崛起的好機會,但是由于涉及到管理、工程化、行業(yè)知識、個人表達能力等一系列問題[1],決定了行業(yè)應用軟件開發(fā)的復雜性。如何提高軟件開發(fā)的效率、保證軟件產(chǎn)品的正確性,是行業(yè)應用軟件開發(fā)過程中不可避免的問題。在行業(yè)應用軟件的開發(fā)過程中,自動化檢查和測試工具,能夠起到很好的輔助作用,它不僅能夠提高軟件系統(tǒng)的正確性,而且能夠通過一定程度的代替人工進行快速檢查,降低軟件系統(tǒng)的開發(fā)成本[2]。目前存在大量的自動化檢查工具 (如 FindBugs[3]、PMD[4])和 自 動 化 測 試 工 具 (如LoadRunner[5]、WinRunner[6]),這些工具提供了非常強大的檢查和測試功能,但是對于樣本程序[1]的使用情況檢查等行業(yè)應用軟件開發(fā)的個性化檢查需求,并不能提供很好的支持。因此本文提出了一種面向行業(yè)應用的軟件開發(fā)檢查工具,該工具緊密結(jié)合行業(yè)應用軟件的個性檢查要求,針對檢查的相關功能進行了設計和開發(fā)。在現(xiàn)有工具的基礎上,進一步改善代碼質(zhì)量,提高系統(tǒng)的正確性,也為開發(fā)、測試、維護過程提供便利。
目前存在大量的自動化檢查和測試工具,例如在代碼自動化檢查方面,PMD和FindBugs能夠根據(jù)配置的規(guī)則,檢查出大量的代碼問題;在軟件的自動化測試方面,Load-Runner和WinRunner等工具提供了非常強大的測試支持。雖然這些工具解決了大部分常見的測試和檢查問題,但是對于以下4個方面沒有很好的支持,而以下方面是本檢查工具主要關注的4個方面:
(1)樣本程序的使用情況檢查:在行業(yè)應用軟件開發(fā)的過程中,樣本程序起著非常重要的作用[7],但是現(xiàn)有的代碼自動化檢查工具,只能對目標代碼進行全局的常規(guī)問題檢查,無法針對樣本程序的個性化特點,進行有針對性的個性規(guī)則檢查。
(2)數(shù)據(jù)結(jié)構與業(yè)務數(shù)據(jù)正確性檢查:對于行業(yè)應用軟件來說,存儲業(yè)務數(shù)據(jù)的數(shù)據(jù)結(jié)構、以及業(yè)務數(shù)據(jù)本身,是一個行業(yè)應用軟件系統(tǒng)的基礎,是最重要的管理對象,因此同一應用的不同部署之間的數(shù)據(jù)結(jié)構一致性、業(yè)務數(shù)據(jù)與數(shù)據(jù)結(jié)構及其業(yè)務規(guī)則的吻合程度等方面,也需要通過工具進行檢查和驗證。
(3)系統(tǒng)接口的可用性和效率的批量檢查:行業(yè)應用軟件系統(tǒng)比較復雜,系統(tǒng)之間通過接口進行交互是經(jīng)常發(fā)生的,在大型的行業(yè)應用軟件系統(tǒng)中,這種交互更為復雜。但是對于接口是否正常運行,接口是否出現(xiàn)性能瓶頸等問題,大部分系統(tǒng)還是采用 “測試過程發(fā)現(xiàn)問題再進行補救”的方式,因此通過工具對接口進行功能正確性和高效性的檢查,對系統(tǒng)接口進行整體的把握,也是非常有必要的。
(4)日志文件的正確性檢查:日志文件是軟件維護的“黑匣子”,在維護過程中承擔著重要的角色,日志文件的存在和日志內(nèi)容的正確性,對軟件維護過程至關重要。對于日志文件相關內(nèi)容的檢查,也是非常必要的。
針對4個方面的檢查,在行業(yè)應用軟件系統(tǒng)的開發(fā)過程中是經(jīng)常會出現(xiàn)的,但是目前沒有很好的工具來進行支持。
通過分析行業(yè)應用軟件的個性化檢查要求,以及現(xiàn)有工具的一些相關功能和不足,本文設計研發(fā)了一種面向行業(yè)應用的軟件開發(fā)檢查工具,該工具包括以下4個檢查功能:
(1)代碼檢查:是指在常規(guī)問題檢查的基礎之上,基于行業(yè)應用軟件的領域特點,結(jié)合樣本程序,對目標代碼進行進一步的個性規(guī)則檢查。
(2)數(shù)據(jù)結(jié)構檢查:包括對同一個應用系統(tǒng)的不同部署之間、業(yè)務數(shù)據(jù)與數(shù)據(jù)結(jié)構及其規(guī)則之間、歷史數(shù)據(jù)與新系統(tǒng)的數(shù)據(jù)結(jié)構之間的一致性檢查。
(3)接口檢查:是指在多個系統(tǒng)或同一系統(tǒng)的不同部署之間通過接口進行交互的情況下,針對眾多接口功能和性能的批量檢查。
(4)日志檢查:是針對日志文件、日志相關的配置文件的存在與內(nèi)容正確性的檢查。
圖1是針對以上4個部分的功能模塊給出的檢查工具的體系結(jié)構圖。圖中分別列出了現(xiàn)有的工具的情況,以及本檢查工具提供的檢查功能的模塊。
圖1 工具的體系結(jié)構
對此體系結(jié)構圖的相關說明如下:
(1)現(xiàn)有的一些檢查工具,對于行業(yè)應用的以上4個特性的檢查,都存在一定的工具缺失,因此本檢查工具相關功能的提出、實現(xiàn)和應用,具有一定的現(xiàn)實意義。
(2)本檢查工具主要由CodeChecker、DBStructChecker、DBDataChecker、InterfaceChecker和LogChecker這5個功能模塊組成,每一個模塊都遵循公共的接口約定,便于工具的擴展和修改。
(3)針對代碼規(guī)范與功能正確性的檢查方面,我們在現(xiàn)有的代碼自動化檢查工具PMD基礎上進行樣本程序檢查相關的擴展,開發(fā)出了基于樣本程序和規(guī)則庫的代碼自動化檢查工具CodeChecker,通過PMD、FindBugs和CodeChecker的結(jié)合使用,共同提高代碼的規(guī)范性和代碼功能的正確性。
2.2.1 針對特定領域的編程規(guī)范和代碼質(zhì)量的檢查
PMD和FindBugs等第三方代碼自動化檢查工具,能夠?qū)δ繕舜a整體進行常規(guī)問題的檢查,但是在基于樣本程序的行業(yè)應用軟件系統(tǒng)中,隨著樣本程序的普遍使用,樣本程序在使用過程中出現(xiàn)的代碼問題越來越多,這些問題也需要通過代碼自動化檢查工具來進行檢查。
對于開發(fā)人員來說,樣本程序的主要使用方式為“抄”,在抄的過程中,結(jié)合個性化的功能需求進行個性化的修改以符合新的功能要求,這就是樣本程序的 “相似性復用”。但是在樣本程序的相似性復用過程中,有可能會因為開發(fā)人員對領域知識的不熟悉、對樣本程序的使用規(guī)則的不了解、以及編程水平的參差不齊等原因,引起樣本程序的使用錯誤。因此針對樣本程序的使用,存在以下兩個方面的內(nèi)容需要進行檢查:
(1)樣本程序特征點的完整性
特征點是能夠標識樣本程序的結(jié)構特征的關鍵功能步驟代碼,比如流程控制語句、特殊的公共組件調(diào)用代碼、特殊的業(yè)務功能調(diào)用代碼、樣本程序結(jié)構標識注釋等。
一般的,特征點是樣本程序的結(jié)構特征的標識方式,反映了樣本程序的執(zhí)行流程的組件調(diào)用過程,在樣本程序的相似性復用過程中,特征點在衍生程序中也必須存在,才能保證衍生程序功能的正確性。特征點的完整性檢查,是現(xiàn)有的第三方工具無法做到的。
(2)樣本程序的常見問題
除了樣本程序特征點的缺失引起錯誤之外,其他在樣本程序復用過程中引起的代碼問題,我們就把它稱為樣本程序的常見問題。常見問題是在樣本程序的局部代碼范圍內(nèi)才會產(chǎn)生的問題,例如在某一段樣本程序內(nèi),某一個變量必須聲明為類變量[8]。
由于現(xiàn)有的第三方工具主要針對目標程序進行整體的規(guī)則檢查,無法支持針對樣本程序的局部規(guī)則檢查,因此本工具給出了針對樣本程序相關內(nèi)容的檢查工具Code-Checker。該功能首先結(jié)合樣本程序庫和樣本程序的識別輔助,從目標程序中識別出衍生程序;接著利用基礎檢查規(guī)則,檢查目標代碼中的常規(guī)問題;最后,利用樣本程序相關的個性化檢查規(guī)則,檢查目標程序中的衍生程序的正確性。該功能的檢查流程如圖2所示。
圖2 代碼檢查流程
由圖2可以看出,整個檢查過程主要分為衍生程序的識別與基于知識庫的代碼檢查兩部分內(nèi)容。該檢查流程主要由以下部分組成:
(1)目標程序,即需要進行代碼檢查的源程序,其代碼中包含了依據(jù)樣本程序進行 “相似性復用”生成的衍生程序,需要對衍生程序進行識別。
(2)衍生程序識別輔助,用于輔助在目標程序中識別出衍生程序的識別過程,由骨架注釋、詞根表、樣本程序庫、特征點匹配引導等內(nèi)容組成。其中,骨架注釋是一種特殊的用于標識樣本程序結(jié)構特征的代碼注釋,用于輔助衍生程序的簡單快速識別;詞根表是行業(yè)應用軟件中用以表述領域術語的詞碼表[9],用于在功能單元名稱相似性判斷是提供判斷依據(jù);樣本程序庫是知識庫的組成部分,為識別過程提供目標和依據(jù);特征點匹配引導是規(guī)則引擎流程引導中關于特征點的修改前后映射關系的部分,在以特征點為識別依據(jù)的識別方法中需要用到。
(3)衍生程序識別工具,它掃描待檢查的目標程序,并借助于衍生程序識別輔助的信息,通過一定的衍生程序識別策略,識別出目標程序中存在的所有衍生程序。
(4)衍生程序集是衍生程序識別工具的識別結(jié)果,每一個衍生程序中包含了對應的樣本程序的相關信息,衍生程序集是樣本程序個性代碼問題檢查的目標和前提。
(5)知識庫,是所有可檢查問題的程序和規(guī)則集合,由樣本程序和檢查規(guī)則組成,檢查規(guī)則可以分為基礎檢查規(guī)則、特征點檢查規(guī)則與常見問題檢查規(guī)則。
(6)規(guī)則檢查執(zhí)行引擎,負責檢查規(guī)則的解析執(zhí)行與代碼問題的檢查匯總。它是以目標程序、衍生程序、知識庫等內(nèi)容作為輸入,以代碼中存在的問題作為輸出。
(7)規(guī)則引擎流程引導。規(guī)則檢查執(zhí)行引擎是所有文件的公共執(zhí)行流程,如果將此流程看成是一種腳本,那么規(guī)則引擎流程引導則是這一腳本的執(zhí)行流程的控制條件集合。它主要用于引導規(guī)則檢查執(zhí)行引擎的執(zhí)行過程,讓工具的使用者能夠個性化的定制每一個目標程序的檢查流程,特征點匹配引導是規(guī)則引擎流程引導的重要內(nèi)容之一。
2.2.2 針對數(shù)據(jù)結(jié)構與業(yè)務數(shù)據(jù)記錄的檢查
針對數(shù)據(jù)結(jié)構與業(yè)務數(shù)據(jù)記錄,存在以下兩個方面的問題或要求:
(1)一般的,同一行業(yè)應用軟件系統(tǒng)通常會在不同地域、不同級別的公司或部門進行部署,例如:在總公司、多個分公司進行部署,而每一個部署可能擁有單獨的數(shù)據(jù)庫進行業(yè)務數(shù)據(jù)存儲,由于隸屬于同一軟件系統(tǒng),這些數(shù)據(jù)庫結(jié)構必須保持高度的一致性,否則將會影響系統(tǒng)的正常交互,并增加維護的難度。
(2)業(yè)務數(shù)據(jù)遷移是系統(tǒng)進行升級和維護時經(jīng)常要進行的操作。在數(shù)據(jù)遷移時,先從原系統(tǒng)的歷史數(shù)據(jù)庫中將歷史業(yè)務數(shù)據(jù)取出,通過一定的轉(zhuǎn)換規(guī)則,將業(yè)務數(shù)據(jù)對應到新系統(tǒng)的數(shù)據(jù)結(jié)構,最終轉(zhuǎn)入新系統(tǒng)的數(shù)據(jù)庫中。一般這個過程都是通過存儲過程,或者數(shù)據(jù)遷移的程序來完成的。在這個過程中,如果轉(zhuǎn)入的數(shù)據(jù)不符合新數(shù)據(jù)結(jié)構的規(guī)則,那么整個遷移的過程可能就會受到嚴重阻礙。為了減少遷移過程中遇到的阻礙,有必要對原系統(tǒng)中的業(yè)務數(shù)據(jù)進行數(shù)據(jù)遷移的預檢查和預處理。
因此,針對數(shù)據(jù)結(jié)構與業(yè)務數(shù)據(jù)記錄的檢查,主要分為以下3個方面:
(1)對于同一個應用系統(tǒng)的不同部署之間,數(shù)據(jù)庫的結(jié)構必須保持一致;
(2)業(yè)務數(shù)據(jù)與數(shù)據(jù)結(jié)構、數(shù)據(jù)結(jié)構對應的規(guī)則之間必須保持一致;
(3)原系統(tǒng)的歷史數(shù)據(jù)必須與新系統(tǒng)的數(shù)據(jù)結(jié)構、數(shù)據(jù)結(jié)構的規(guī)則保持一致。
目前尚沒有相關的工具能夠做到這些方面的檢查,因此本工具給出了這些檢查的相關功能及其工具DBStruct-Checker和DBDataChecker。
DBStructChecker用于檢查數(shù)據(jù)結(jié)構之間的一致性,DBDataChecker用于檢查業(yè)務數(shù)據(jù)與數(shù)據(jù)結(jié)構及其規(guī)則之間的一致性。
DBStructChecker首先建立一個基準數(shù)據(jù)庫,通過對基準數(shù)據(jù)庫中的數(shù)據(jù)結(jié)構特征的獲取,來檢查目標數(shù)據(jù)庫中數(shù)據(jù)結(jié)構特征的一致性,比如:通過對數(shù)據(jù)表、數(shù)據(jù)表字段、索引、主外鍵關聯(lián)[10]等內(nèi)容的一致性檢查,即可對比出待檢查的數(shù)據(jù)庫結(jié)構與標準庫結(jié)構之間的差異。DBStructChecker的主要處理流程如圖3所示。
圖3 數(shù)據(jù)結(jié)構檢查流程
數(shù)據(jù)表名稱、數(shù)據(jù)表字段、索引、主外鍵關聯(lián)等信息,都能夠從數(shù)據(jù)庫的系統(tǒng)表中進行獲取,例如sysindexs表存儲的索引信息、syscolumns表存儲數(shù)據(jù)表的列字段、sysforeignkeys表存儲數(shù)據(jù)表的外部關鍵字[11]。
DBDataChecker是對業(yè)務數(shù)據(jù)的檢查模塊,功能包括對數(shù)據(jù)庫中的現(xiàn)有數(shù)據(jù)的檢查以及對數(shù)據(jù)遷移之前的歷史數(shù)據(jù)的檢查和預處理。其中,對現(xiàn)有數(shù)據(jù)的檢查主要是用來找出系統(tǒng)庫中的不符合業(yè)務規(guī)則的數(shù)據(jù);對歷史數(shù)據(jù)的檢查和預處理,主要是為了順利的完成數(shù)據(jù)遷移的過程。
業(yè)務數(shù)據(jù)的合法性檢查,需要針對數(shù)據(jù)表結(jié)構制定業(yè)務數(shù)據(jù)檢查規(guī)則。通過制定一個數(shù)據(jù)表的所有字段的取值檢查規(guī)則矩陣,并針對業(yè)務數(shù)據(jù)進行規(guī)則檢查,來實現(xiàn)業(yè)務數(shù)據(jù)的合法性檢查。其具體的處理流程如圖4所示。
在執(zhí)行歷史數(shù)據(jù)檢查之前,必須配置歷史數(shù)據(jù)表與目標數(shù)據(jù)表之間的字段映射關系,需要注意的是,一個歷史數(shù)據(jù)表的多個字段,在新數(shù)據(jù)庫中有可能對應不同的數(shù)據(jù)表,圖4給出的是一種相對簡單的情況。
業(yè)務數(shù)據(jù)的存儲方式可以多種多樣,數(shù)據(jù)庫、包含字段分隔符的文本文件、Excel文件等,都可以作為業(yè)務數(shù)據(jù)的存儲方式。
圖4 業(yè)務數(shù)據(jù)檢查流程
通過數(shù)據(jù)結(jié)構檢查功能DBStructChecker和業(yè)務數(shù)據(jù)檢查功能DBDataChecker,針對數(shù)據(jù)結(jié)構和業(yè)務數(shù)據(jù)進行檢查,可以更好的保證數(shù)據(jù)結(jié)構的一致性,以及業(yè)務數(shù)據(jù)與數(shù)據(jù)庫表結(jié)構之間的一致性。
2.2.3 針對接口的功能、性能的批量檢查與報表
通常,一個企業(yè)的業(yè)務支撐需要若干個應用系統(tǒng),少則幾個,多則幾十個。這些系統(tǒng)提供了復雜的接口功能,并且每一個系統(tǒng)可能存在眾多的系統(tǒng)部署,此時需要測試的功能接口的數(shù)量將會以較快的速度增長。而每一個接口的可用性和高效性,是測試人員在進行與接口相關的功能測試之前,必須要驗證的一些信息。目前這些信息的獲取,主要通過人工方式來進行,工作量比較大,容易出錯,工作的重復性較高,并且不能保證測試結(jié)果的實時性。因此需要有相應的工具,來支持接口的可用性、效率等信息的快速、自動收集。
針對這一需求,本工具給出了針對接口的功能和性能的批量測試工具InterfaceChecker,該工具通過讀取目標接口的配置信息,獲取對應的請求報文,通過程序自動向目標接口發(fā)送模擬報文,接收目標接口返回的結(jié)果,并記錄整個測試處理的時間。最后通過對測試結(jié)果和處理時間的報表,直觀的給出當前各個接口的可用性和效率的情況。
在工具執(zhí)行接口檢測之前,需要對工具進行如下內(nèi)容的配置:
(1)目標主機的信息,包括主機名稱、主機地址、用戶名、密碼等;
(2)待測試的接口信息,包括接口名稱、接口描述等;
(3)測試用的模擬報文,針對每一個接口都需要請求報文,一般報文以XML[12]文件的方式編寫。
針對接口的功能和性能的檢查流程如圖5所示。
圖5 接口批量檢查流程
針對該流程圖的相關說明如下:
(1)在執(zhí)行接口的批量測試時,需要針對每一個服務器,對每一個接口,都構造對應的訪問鏈接地址,并且針對該地址發(fā)送接口對應的請求報文。
(2)接口與報文之間是一一對應的,每一個待測試的接口都需要一個請求的報文,并在測試結(jié)束后對返回的報文進行解析,以便獲知接口的可用性。
(3)對于性能方面,在每一個接口的測試過程中,計算報文發(fā)送與結(jié)果接收之間的時間差,即可獲取接口的訪問時間。
2.2.4 針對系統(tǒng)日志的正確性檢查
系統(tǒng)的日志是系統(tǒng)運行過程的軌跡記錄,是系統(tǒng)維護的重要參考。因此日志文件及其內(nèi)容的正確性,對于系統(tǒng)維護至關重要。針對日志文件是否存在、存放位置是否正確、日志的級別設置、日志信息的格式、日志文件的存儲形式、日志信息的內(nèi)容完整性等方面的檢查,能夠提高日志文件及其內(nèi)容的正確性,為維護過程提供保證。
針對以上要求,本工具給出了日志的正確性檢查工具LogChecker,該工具主要檢查行業(yè)應用軟件開發(fā)過程中使用的日志記錄工具的相關配置,以及生成的日志結(jié)果文件內(nèi)容的正確性。
以J2EE[13]的Web應用為例,最常用的日志記錄工具是第三方工具log4j[14],而且一般配置log4j的方式都是編寫log4j.properties文件,并將文件放置在源代碼的根目錄下。針對log4j的日志文件檢查可以分為以下方面:
(1)針對log4j的配置文件log4j.properties的檢查,包括:配置文件log4j.properties在源代碼根目錄下是否存在;配置文件中的日志項配置是否正確性,比如日志級別必須為INFO,日志輸出的目的地必須為DailyRollingFileAppender(每天產(chǎn)生一個日志文件)等;日志的輸出方式必須為PatternLayout,且必須正確的設置輸出的格式。
(2)針對日志文件存放路徑的檢查,包括:是否在log4j.properties文件中設置了日志的存放路徑;是否在JVM[15]參數(shù)中正確無誤的配置了日志的存放路徑。
(3)針對日志log文件及其內(nèi)容的檢查,包括:打印出的日志信息的完整性;通過日志文件的最后修改時間與當前時間差來確定日志文件的有效性。
通過以上幾個方面的檢查,可以保證日志的配置、存放目錄、日志文件等方面的正確性,從而為系統(tǒng)維護的過程提供參考。
為實現(xiàn)對全國車險業(yè)務的有效管控,車險信息共享平臺在保監(jiān)會和保險行業(yè)協(xié)會的管理下成功建設,該平臺與各財產(chǎn)保險公司、公安交通管理部門、稅務局等單位實現(xiàn)了實時的數(shù)據(jù)互聯(lián),有力的保證了車險業(yè)務的合規(guī)開展和科學實施。
本檢查工具在車險信息共享平臺項目進行了初步的應用,應用效果非常好。
本檢查工具的應用效果主要從以下方面來分析:
(1)提高了代碼的規(guī)范性和代碼質(zhì)量
在PMD、FindBugs等第三方工具與樣本程序檢查工具CodeChecker的共同作用下,不僅找出了代碼中存在的一些常規(guī)的問題,而且針對于系統(tǒng)開發(fā)過程中用到的樣本程序的檢查,進一步檢查出了樣本程序使用過程的代碼問題,抽取一個比較典型的樣本程序進行代碼自動化檢查,一共檢查出83個代碼問題,其中50個基礎問題,20個特征點的問題,以及13個常見問題,可以看出,CodeChecker檢查的樣本程序個性問題的數(shù)量比例為
樣本程序檢查問題占比
= (特征點問題數(shù)+常見問題數(shù))/總問題數(shù)
= (20+13)/83=39.76%
由此可見,CodeChecker在常規(guī)問題檢查的基礎上,進一步檢查了樣本程序相似性復用產(chǎn)生的個性代碼問題,此結(jié)論在整體的檢查結(jié)果中也得到了比較好的驗證。Code-Checker功能的運行截圖如圖6所示。
(2)數(shù)據(jù)結(jié)構檢查工具DBStructChecker保證了數(shù)據(jù)結(jié)構之間的一致性,而業(yè)務數(shù)據(jù)檢查工具DBDataChecker找出了現(xiàn)有系統(tǒng)數(shù)據(jù)庫中的不合法數(shù)據(jù),并為數(shù)據(jù)遷移的數(shù)據(jù)提供了預處理的方式,減少了數(shù)據(jù)遷移執(zhí)行過程的錯誤幾率。
DBStructChecker的部分運行結(jié)果如圖7所示。DBData-Checker的部分運行結(jié)果如圖8所示。
(3)接口檢查工具InterfaceChecker對接口的功能和性能進行批量的測試,并最后生成報表供項目管理者和測試人員進行參考。不僅減少了重復性的人工操作,而且提高了測試的正確性和實時性。
目前車險信息共享平臺系統(tǒng)中共有24個接口需要測試,而且現(xiàn)有37個應用部署的接口需要測試,因此一共有888個接口需要測試,如果通過人工的方式進行測試,假設平均每一個接口的報文整理 (假設接口測試對應報文已經(jīng)確定)、測試執(zhí)行、結(jié)果整理、耗時統(tǒng)計、填寫報表等工作需要1分鐘來進行,則一共需要888分鐘 (合14小時)才能測試完所有的接口。
現(xiàn)在利用工具對接口進行測試并最終生成報表,耗時小于5分鐘,效率提升非常明顯。
(4)日志檢查工具LogChecker通過檢查日志文件、日志配置文件、JVM參數(shù)中對日志文件存放路徑的配置等方面,保證了日志內(nèi)容配置的正確性和有效性,保證了維護工作中日志內(nèi)容的正確和可靠。
在行業(yè)應用軟件開發(fā)的過程中,現(xiàn)有的通用測試和檢查工具提供了非常好的輔助,但是有時候也必須針對現(xiàn)有系統(tǒng)的個性化檢查要求,自主開發(fā)相應的工具來支持這些個性化的檢查要求。
本文結(jié)合目前行業(yè)應用軟件系統(tǒng)開發(fā)過程中通用工具的不足,給出了一種面向行業(yè)應用的軟件開發(fā)檢查工具,該工具通過針對特定領域的編程規(guī)范和代碼質(zhì)量的檢查,提高了系統(tǒng)的代碼規(guī)范性和正確性;通過針對數(shù)據(jù)結(jié)構與業(yè)務數(shù)據(jù)記錄的檢查,保證了數(shù)據(jù)結(jié)構和業(yè)務數(shù)據(jù)的一致性;通過針對接口的功能和性能的批量檢查,提高了接口測試的效率和實時性;通過針對系統(tǒng)日志的正確性檢查,保證了日志文件的正確性,為維護提供重要依據(jù)。通過以上功能的共同作用,提高系統(tǒng)的代碼規(guī)范性和功能正確性,也為開發(fā)、測試、維護過程提供了便利。
在下一步工作過程中,要逐步提高4個功能模塊的通用性,使這些功能能夠更好的應用于其他行業(yè)應用軟件系統(tǒng)的檢查過程;其次要繼續(xù)發(fā)掘行業(yè)應用軟件系統(tǒng)的個性檢查需求,研發(fā)更多實用的檢查工具,進一步降低軟件開發(fā)的成本支出,提高軟件系統(tǒng)的質(zhì)量。
[1]ZUO Chun.Industry software developing method based-on imitation [J].Computer World,2006,27 (45):1-3 (in Chinese).[左春.行業(yè)軟件開發(fā)要靠 “抄” [J].計算機世界,2006,27 (45):1-3.]
[2]JIN Hu.Study on automatic software testing techniques and methods[D].Chengdou:Sichuan University,2006 (in Chinese).[金虎.自動化軟件測試技術研究 [D].成都:四川大學,2006.]
[3]FindBugs [EB/OL].http://findbugs.sourceforge.net/,2011.[4]PMD [EB/OL].http://pmd.sourceforge.net/,2011.
[5]YU Yong.Software performance test and practice in LoadRunner[M].Beijing:Posts and Telecom Press,2010 (in Chinese).[于涌.精通軟件性能測試與LoadRunner實戰(zhàn) [M].北京:人民郵電出版社,2010.]
[6]WinRunner [EB/OL].http://en.wikipedia.org/wiki/HP _WinRunner,2011.
[7]YUAN Weimin,ZUO Chun.Domain development platform based on typical program [J].Computer Engineering,2010,31 (18):3979-3982 (in Chinese).[袁偉民,左春.基于樣本程序的領域開發(fā)平臺研究與實踐 [J].計算機工程與設計,2010,31 (18):3979-3982.]
[8]Bruce Eckel.Thinking in Java [M].4th ed.Beijing:China Machine Press,2007 (in Chinese).[Bruce Eckel.Java編程思想 [M].4版.北京:機械工業(yè)出版社,2007.]
[9]ZUO Chun.Etyma sheet and data structure in industry software[J].Computer World,2007,28 (44):1-3 (in Chinese).[左春.行業(yè)應用軟件中的詞根表與庫結(jié)構 [J].計算機世界,2007,28 (44):1-3.]
[10]Abraham S,Henry F K,Sudarshan S.Database system concept[M].YANG Dongqing,MA Xiuli,TANG Shiwei,transl.5th ed.Beijing:China Machine Press,2006 (in Chinese).[Abraham S,Henry F K,Sudarshan S.數(shù)據(jù)庫系統(tǒng)概念 [M].楊冬青,馬秀莉,唐世渭,譯.5版.北京:機械工業(yè)出版社,2006.]
[11]ZHAO Jie.Administrator's guide to SQL server 2005 [M].Beijing:Electronic Industry Press,2008 (in Chinese). [趙杰.SQL Server 2005管理員大全 [M].北京:電子工業(yè)出版社,2008.]
[12]Extensible markup language(XML)[EB/OL].http://www.w3.org/XML/,2011.
[13]YU Haodong.J2EE application framework design and project development[M].Beijing:Tsinghua University Press,2008(in Chinese).[余浩東.J2EE應用框架設計與項目開發(fā)[M].北京:清華大學出版社,2008.]
[14]Log4J[EB/OL].http://logging.apache.org/log4j/1.2/,2011.
[15]ZHOU Zhiming.Understanding Java virtue machine:JVM senior feature and best practice[M].Beijing:China Machine Press,2011(in Chinese).[周志明.深入理解Java虛擬機:JVM高級特性與最佳實踐 [M].北京:機械工業(yè)出版社,2011.]