任濤
(西安外事學(xué)院陜西西安710077)
隨著科技的進(jìn)步人類(lèi)生活越來(lái)越快捷,信息化建設(shè)得到了快速發(fā)展。而高校圖書(shū)館由于具有信息復(fù)雜且數(shù)量龐大的特點(diǎn),使其成為信息化建設(shè)中較為引人注目的建設(shè)目標(biāo)。而圖書(shū)館管理系統(tǒng)不僅需要幫助工作人員完成日常的維護(hù)和服務(wù),且還需要為讀者提供圖書(shū)館各類(lèi)信息,如館藏圖書(shū)的查詢(xún)與借閱。因此,圖書(shū)館管理系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)復(fù)雜且具有挑戰(zhàn)性。
回顧圖書(shū)館管理系統(tǒng)的發(fā)展歷程,該系統(tǒng)最開(kāi)始僅為單機(jī)版。而隨著計(jì)算機(jī)技術(shù)的發(fā)展和信息時(shí)代的到來(lái),開(kāi)始使用C/S模式來(lái)架構(gòu)圖書(shū)館管理系統(tǒng)。在上世紀(jì)九十年代,該模式下的管理系統(tǒng)發(fā)展成為主流[1]。隨后具備分布式訪(fǎng)問(wèn)、可擴(kuò)展性和開(kāi)放性等優(yōu)點(diǎn),基于Web的B/S模式為圖書(shū)館系統(tǒng)的開(kāi)發(fā)與發(fā)展提供了一個(gè)新的機(jī)遇[2-4]。EX LIBRIS公司、INNOVATIVE公司、SIRSI公司均相繼開(kāi)發(fā)出了此類(lèi)圖書(shū)館管理系統(tǒng)。
J2EE平臺(tái)包括了通信類(lèi)程序、組件類(lèi)程序以及服務(wù)類(lèi)程序[5],且擁有3類(lèi)可以研發(fā)應(yīng)用程序組件的技術(shù):服務(wù)器端小程序(Servlet)、JSP( JavaServer Pages)、EJB( Enterprise JavaBean)[6-10]。
而J2EE規(guī)范定義的5個(gè)組件模型如下:
EJB應(yīng)用程序服務(wù)器:JB組件是設(shè)計(jì)開(kāi)發(fā)者們針對(duì)特定應(yīng)用程序而開(kāi)發(fā)的組件,且其具體的操作需要在對(duì)應(yīng)應(yīng)用容器的操作環(huán)境中進(jìn)行。第三方不僅需要為JB組件提供相應(yīng)的容器環(huán)境,且還需要提供伸縮應(yīng)用程序[11-12]。
Web應(yīng)用程序服務(wù)器:Web組件是在Web服務(wù)器收到請(qǐng)求之后的處理程序,對(duì)應(yīng)收到的請(qǐng)求指令產(chǎn)生Web響應(yīng)。其包括Java Servlet和JSP兩類(lèi)。HTTP和Web服務(wù)之類(lèi)的標(biāo)準(zhǔn)通信協(xié)議,可以向客戶(hù)端提Web組件[13]。
小程序客戶(hù)機(jī):小程序是一類(lèi)Java應(yīng)用程序,其在容器環(huán)境中的放置工作也有較為詳細(xì)的規(guī)范,而這些規(guī)范則是由J2EE擬定[14-16]。
資源適配器:資源適配器是一種資源管理器,起連接資源的作用。其在具體部署過(guò)程中,是與相關(guān)組件被一并放置到相應(yīng)的容器中。
應(yīng)用程序客戶(hù)機(jī):是起到與客戶(hù)交互作用的,可以為用戶(hù)提供交互界面,一般以Java為基礎(chǔ)。
為滿(mǎn)足用戶(hù)需求,本文架構(gòu)一種標(biāo)準(zhǔn)的、開(kāi)放的系統(tǒng)。
圖1 系統(tǒng)架構(gòu)示意圖
如圖1所示,架構(gòu)一個(gè)整體系統(tǒng)不僅要考慮到系統(tǒng)的各個(gè)需求及設(shè)計(jì)目標(biāo)。還要考慮到系統(tǒng)各部分之間的關(guān)系及系統(tǒng)設(shè)計(jì)的成本、復(fù)雜度、可操作性等一系列問(wèn)題或影響因素。
總體而言,以J2EE為基礎(chǔ)的網(wǎng)絡(luò)應(yīng)用程序需要提供請(qǐng)求的獲取、邏輯的執(zhí)行、網(wǎng)頁(yè)的選擇及生成這4個(gè)網(wǎng)絡(luò)服務(wù)階段。系統(tǒng)網(wǎng)結(jié)構(gòu)包括了整個(gè)系統(tǒng)需要的所有部分與組件的協(xié)同工作,其包括了應(yīng)用服務(wù)器及數(shù)據(jù)庫(kù)服務(wù)器等5個(gè)部分。
眾所周知,傳統(tǒng)的圖書(shū)館信息化建設(shè)僅針對(duì)單個(gè)圖書(shū)館。即所有的信息資源均為單個(gè)圖書(shū)館所有,不能實(shí)現(xiàn)資源共享。而當(dāng)前信息共享與交換是大勢(shì)所趨,且能將圖書(shū)館所蘊(yùn)含的信息發(fā)揮到最大化。因此,本文設(shè)計(jì)開(kāi)發(fā)的圖書(shū)館管理系統(tǒng)是基于圖書(shū)館群為背景,要實(shí)現(xiàn)數(shù)字信息的一體化。
圖2 一塊區(qū)域圖書(shū)館分布示意圖
圖3 區(qū)域圖書(shū)館聯(lián)合分布示意圖
如圖所示,不同的字母A,B,C,D,E,F(xiàn),G代表的是一塊區(qū)域的不同圖書(shū)館。傳統(tǒng)的圖書(shū)館之間是分離的,如圖2所示。圖書(shū)館之間的資源無(wú)法共享,讀者無(wú)法同時(shí)從不同的圖書(shū)館獲得信息。而本文所設(shè)計(jì)的系統(tǒng)要打破傳統(tǒng),如圖3所示。建立起圖書(shū)館之間的聯(lián)系,實(shí)現(xiàn)資源信息的共享,讓讀者能夠同時(shí)獲取更多的信息。
在整個(gè)圖書(shū)館系統(tǒng)中包括有流通、編目、采訪(fǎng)、典藏、期刊、推薦等6個(gè)部分(即6個(gè)子系統(tǒng))。圖4為該系統(tǒng)的功能模塊下書(shū)籍流通的流程示意圖,由圖4可以看出,圖書(shū)館書(shū)籍流通過(guò)程較為繁瑣,需要對(duì)書(shū)籍的收入及借閱進(jìn)行數(shù)據(jù)記錄并且還要對(duì)書(shū)籍進(jìn)行日常維護(hù),因此本文所設(shè)計(jì)的系統(tǒng)需要對(duì)圖書(shū)館的基礎(chǔ)功能進(jìn)行詳細(xì)分析與建模,并設(shè)計(jì)到該系統(tǒng)中,以滿(mǎn)足圖書(shū)館基本的功能性需求。
圖4 書(shū)籍流通過(guò)程示意圖
以J2EE為基礎(chǔ)的系統(tǒng)是屬于多層體系結(jié)構(gòu)的。其包括了客戶(hù)端層、Web表現(xiàn)層、商業(yè)邏輯層及企業(yè)信息系統(tǒng)層等部分,采用多層體系結(jié)構(gòu)是為了使得該系統(tǒng)結(jié)構(gòu)清晰,方便后續(xù)系統(tǒng)的管理與維護(hù)工作。
如圖5所示,本文所設(shè)計(jì)的圖書(shū)館管理系統(tǒng)選擇MVC作為整體的系統(tǒng)架構(gòu)。表現(xiàn)層、邏輯層、持久化層分別采用的是Struts Web Framework技術(shù)、Enterprise Session Bean技術(shù)和Hibernate技術(shù)。
圖5 MVC系統(tǒng)構(gòu)架示意圖
在圖書(shū)館管理系統(tǒng)中,數(shù)據(jù)倉(cāng)庫(kù)內(nèi)的信息龐大而復(fù)雜,如圖書(shū)的類(lèi)目信息、讀者信息、書(shū)籍借閱信息等。所以在圖書(shū)館管理系統(tǒng)中如何管理數(shù)據(jù)倉(cāng)庫(kù)中的各類(lèi)信息,并如何調(diào)動(dòng)使用則顯得尤為重要。
圖書(shū)館系統(tǒng)的電子數(shù)據(jù)庫(kù)支持圖像的輸入和輸出,動(dòng)態(tài)瀏覽/導(dǎo)航能力,安全機(jī)制,分布式圖像管理與倉(cāng)庫(kù)管理等等系統(tǒng)功能。也就是說(shuō),本文所開(kāi)發(fā)的圖書(shū)館管理系統(tǒng)中的數(shù)據(jù)庫(kù)對(duì)應(yīng)各個(gè)圖書(shū)館詳細(xì)地各類(lèi)數(shù)據(jù)信息,且允許可訪(fǎng)問(wèn)用戶(hù)進(jìn)行查詢(xún)?cè)L問(wèn)操作。
較為為重要的是,該系統(tǒng)的數(shù)據(jù)庫(kù)管理著該圖書(shū)館系統(tǒng)的電子文檔。電子文檔存儲(chǔ)來(lái)自Web端用戶(hù)與數(shù)據(jù)庫(kù)產(chǎn)生的數(shù)據(jù)圖像等,并在數(shù)據(jù)庫(kù)與客戶(hù)端之間進(jìn)行流通,傳遞以及存儲(chǔ)信息。
眾所周知,MVC框架結(jié)構(gòu)是信息系統(tǒng)技術(shù)中常用的框架結(jié)構(gòu),該框架結(jié)構(gòu)具有以下優(yōu)點(diǎn):
1)耦合性低
視圖層和業(yè)務(wù)層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,同樣,一個(gè)應(yīng)用的業(yè)務(wù)流程或者業(yè)務(wù)規(guī)則的改變只需要改動(dòng)MVC的模型層即可。因?yàn)槟P团c控制器和視圖相分離,所以很容易改變應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則。
2)重用性高
隨著技術(shù)的不斷進(jìn)步,需要用越來(lái)越多的方式來(lái)訪(fǎng)問(wèn)應(yīng)用程序。MVC模式允許使用各種不同樣式的視圖來(lái)訪(fǎng)問(wèn)同一個(gè)服務(wù)器端的代碼,因?yàn)槎鄠€(gè)視圖能共享一個(gè)模型,它包括任何WEB(HTTP)瀏覽器或者無(wú)線(xiàn)瀏覽器(wap),比如,用戶(hù)可以通過(guò)電腦也可通過(guò)手機(jī)來(lái)訂購(gòu)某樣產(chǎn)品,雖然訂購(gòu)的方式不一樣,但處理訂購(gòu)產(chǎn)品的方式是一樣的。由于模型返回的數(shù)據(jù)沒(méi)有進(jìn)行格式化,所以同樣的構(gòu)件能被不同的界面使用。
MVC使開(kāi)發(fā)和維護(hù)用戶(hù)接口的技術(shù)含量降低。
3)部署快
使用MVC模式使開(kāi)發(fā)時(shí)間得到相當(dāng)大的縮減,它使程序員(Java開(kāi)發(fā)人員)集中精力于業(yè)務(wù)邏輯,界面程序員(HTML和JSP開(kāi)發(fā)人員)集中精力于表現(xiàn)形式上。
4)可維護(hù)性高
分離視圖層和業(yè)務(wù)邏輯層也使得WEB應(yīng)用更易于維護(hù)和修改。
5)有利軟件工程化管理
由于不同的層各司其職,每一層不同的應(yīng)用具有某些相同的特征,有利于通過(guò)工程化、工具化管理程序代碼。控制器也提供了一個(gè)好處,就是可以使用控制器來(lái)聯(lián)接不同的模型和視圖去完成用戶(hù)的需求,這樣控制器可以為構(gòu)造應(yīng)用程序提供強(qiáng)有力的手段。給定一些可重用的模型和視圖,控制器可以根據(jù)用戶(hù)的需求選擇模型進(jìn)行處理,然后選擇視圖將處理結(jié)果顯示給用戶(hù)。
基于上述優(yōu)點(diǎn),本文所設(shè)計(jì)的圖書(shū)館管理系統(tǒng)就是選擇MVC作為整體的系統(tǒng)架構(gòu),如圖6所示,整體的技術(shù)框架又包括基礎(chǔ)模塊spring和功能模塊兩部分。
圖6 系統(tǒng)的整體技術(shù)框架圖
篇幅有限,本文以流通模塊中的讀者書(shū)籍借閱以及歸還過(guò)程為例介紹流通模塊的建模設(shè)計(jì)過(guò)程。
如圖7所示,讀者進(jìn)入借閱書(shū)籍的操作頁(yè)面,首先系統(tǒng)讀入讀者的證件信息,根據(jù)讀者是否為是該圖書(shū)館讀者,是,則可進(jìn)行下一步借閱,不是該圖書(shū)館讀者則需要驗(yàn)證是否可跨館借閱,再進(jìn)行下面操作。借閱書(shū)籍有3種借書(shū)途徑,普通借閱,計(jì)費(fèi)租借,還有定時(shí)借還。讀者選擇3種之一進(jìn)行借書(shū),并遵循規(guī)則歸還書(shū)籍。
圖7 書(shū)籍借閱操作頁(yè)面示意圖
借書(shū)的后臺(tái)管理功能主要包括3部分:
1)在頁(yè)面顯示讀者和相應(yīng)書(shū)籍的信息。
2)在操作頁(yè)面顯示讀者的借書(shū)處理結(jié)果,成功或者失敗。
3)在操作頁(yè)面顯示讀者所有的書(shū)籍借閱信息,讀者在借閱操作過(guò)程中可以核對(duì)翻閱。
圖8 歸還書(shū)籍操作頁(yè)面示意圖
如圖8所示,讀者進(jìn)入還書(shū)操作頁(yè)面,系統(tǒng)讀入讀者的證件信息,歸還書(shū)籍時(shí)讀入書(shū)籍條形碼進(jìn)行還書(shū),然后進(jìn)行下一本書(shū)籍歸還,以此類(lèi)推。如果到達(dá)借閱日期,而讀者想繼續(xù)借閱,則可以按照以證續(xù)借和按書(shū)續(xù)借兩種方式進(jìn)行續(xù)借操作,屆時(shí)可以再歸還書(shū)籍。
軟件測(cè)試方法一般有兩種,黑盒測(cè)試法和白盒測(cè)試法。
如圖9所示,文中以書(shū)籍借閱為例進(jìn)行操作測(cè)試闡述。首先建立多個(gè)本館圖書(shū)館賬號(hào)和外館賬號(hào),進(jìn)入借閱書(shū)籍操作頁(yè)面進(jìn)行借閱書(shū)籍操作。按照操作頁(yè)面提示進(jìn)行操作,讀入讀者信息和借閱書(shū)籍的信息,選擇借閱方式進(jìn)行借閱。通過(guò)多個(gè)賬號(hào)多種借閱方式的操作測(cè)試,沒(méi)有出現(xiàn)錯(cuò)誤及卡頓現(xiàn)象,功能穩(wěn)定且能正常使用。
圖9 書(shū)籍借閱測(cè)試頁(yè)面
文中通過(guò)建立多個(gè)圖書(shū)館賬號(hào)進(jìn)行具體的操作測(cè)試,并分別對(duì)系統(tǒng)的功能模塊進(jìn)行了多次檢驗(yàn),以保證測(cè)試結(jié)果的可靠性。如圖10所示,通過(guò)9項(xiàng)步驟進(jìn)行多次測(cè)試,測(cè)試結(jié)果均顯示通過(guò)。因此通過(guò)測(cè)試結(jié)果分析,本文所設(shè)計(jì)的圖書(shū)館管理系統(tǒng)性能穩(wěn)定,可以投入使用。
圖10 測(cè)試結(jié)果示意圖
文中從圖書(shū)館管理系統(tǒng)的需求出發(fā),通過(guò)對(duì)分布式圖書(shū)館的建模分析,開(kāi)發(fā)并設(shè)計(jì)了基于J2EE的圖書(shū)館管理系統(tǒng)。從而實(shí)現(xiàn)了各個(gè)模塊的功能性要求以及區(qū)域圖書(shū)館群一體化的數(shù)字化建設(shè)。經(jīng)過(guò)測(cè)試表明,該系統(tǒng)性能穩(wěn)定。文中的設(shè)計(jì)對(duì)未來(lái)圖書(shū)館管理系統(tǒng)的進(jìn)一步發(fā)展,有重要的參考意義。