陜晉軍
1江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院 江蘇 214122
2山西建筑職業(yè)技術(shù)學(xué)院計算機工程系 山西 030006
如今,Web應(yīng)用開發(fā)變得越來越復(fù)雜,傳統(tǒng)的單個應(yīng)用框架往往很難滿足日益增長的應(yīng)用需求,實際的開發(fā)過程常常需要綜合多個框架的長處才能滿足用戶的需求。
表現(xiàn)層的開源 Struts2,數(shù)據(jù)持久層的 Hibernate框架以及中間層的Spring框架,這三者構(gòu)成了當(dāng)前主流的開發(fā)J2EE應(yīng)用的輕量級框架組合,即 Struts2+Spring+Hibernate。使用Struts2架構(gòu)作為了整個系統(tǒng)的基礎(chǔ)框架,它負責(zé)了MVC模型中各層的分離。利用 Hibernate作為系統(tǒng)持久層的底層結(jié)構(gòu)。中間業(yè)務(wù)邏輯層由Spring支持。根據(jù)需求來提出一個模型,將這些模型采用Java語言實現(xiàn)出基本的Java對象,然后寫出基本的DAO接口,并給出Hibernate的DAO實現(xiàn),采用Hibernate架構(gòu)實現(xiàn)的DAO類來實現(xiàn)Java類與數(shù)據(jù)庫之間的轉(zhuǎn)換和訪問,然后由Spring來完成業(yè)務(wù)邏輯。
概要分析要做的工作是描述目標系統(tǒng)的功能和性能,確定軟件設(shè)計的限制和軟件同其他系統(tǒng)元素間的接口細節(jié),定義軟件的其他有效性需求。運用統(tǒng)一建模語言(Unified Modeling Language, UML)來找出系統(tǒng)的功能需求、分析,提取所開發(fā)系統(tǒng)領(lǐng)域的類以及描述它們之間相互關(guān)系,在完成系統(tǒng)的面向?qū)ο蠓治?Object-Oriented Analysis, OOA)的基礎(chǔ)上,對系統(tǒng)進行面向?qū)ο笤O(shè)計(Object-Oriented Design, OOD)。圖1為整個系統(tǒng)的基本框架圖。
圖1 系統(tǒng)的基本框架圖
針對不同的用戶群,其功能也各部相同。實現(xiàn)分角色登錄,對不同的角色由不同的功能實現(xiàn)??梢詫崿F(xiàn)平時及期末成績錄入、查詢、修改、統(tǒng)計分析;學(xué)生補考成績錄入、查詢、修改、統(tǒng)計分析;數(shù)據(jù)備份、導(dǎo)入和導(dǎo)出;成績報表打印、數(shù)據(jù)報表打??;并且還可以對教師、學(xué)生的基本信息錄入、查詢、導(dǎo)入和導(dǎo)出;并且還可以對教師的授課情況將行統(tǒng)一管理,實現(xiàn)根據(jù)授課情況統(tǒng)計教師的工作量。成績錄入提供四種方式:教務(wù)人員錄入或?qū)胂到y(tǒng);教師錄入或?qū)胨淌谡n程的學(xué)生成績。成績一般有百分制和學(xué)分制(如包括優(yōu)秀、良好、中等、及格、不及格)。百分制總評成績由平時成績、考勤成績、期末考試成績結(jié)合學(xué)校制定的比例計算而來。
我們通過 UML語言來分析高職院校成績管理系統(tǒng)。UML作為一種圖形語言,用于對軟件系統(tǒng)建模和開發(fā)工作。在軟件開發(fā)的每個步驟中,從對需求的分析到技術(shù)規(guī)范,再到結(jié)構(gòu)設(shè)計及配置要求,UML都提供了模型化和可視化的支持。
用例是用戶和計算機系統(tǒng)進行交互的描述。用例圖是被稱為參與者的外部用戶所能觀察到的系統(tǒng)功能的模型圖,呈現(xiàn)了一些參與者和一些用例,以及它們之間的關(guān)系,主要用于對系統(tǒng)、子系統(tǒng)或類的功能行為進行建模。
用例圖展示了用例之間以及同用例參與者之間是怎樣相互聯(lián)系的。用例圖用于對系統(tǒng)、子系統(tǒng)或類的行為進行可視化,使用戶能夠理解如何使用這些元素,并使開發(fā)者能夠?qū)崿F(xiàn)這些元素。
1.1.1 使用用例圖描述系統(tǒng)需求的步驟
(1)識別用戶角色
一般而言,定義用戶角色的基本思路是,先從涉眾中找到用戶,用戶是指將與要建設(shè)的系統(tǒng)發(fā)生關(guān)系的那些涉眾。再從用戶的角度出發(fā),考慮系統(tǒng)建立以后將發(fā)揮什么作用,哪些事務(wù)與它進行交互。除此之外,系統(tǒng)還有可能跟其他系統(tǒng)相聯(lián)系,如招生系統(tǒng)、教務(wù)管理系統(tǒng)等,它通過數(shù)據(jù)庫進行接口,所以數(shù)據(jù)庫也可能是一個角色,還有與該系統(tǒng)交互的設(shè)備,如打印機也是角色??傮w來說,該系統(tǒng)主要角色有:系統(tǒng)管理員、學(xué)生、教師。
(2)識別系統(tǒng)中的用例
用例是系統(tǒng)的功能描述,從用戶角色的角度,分析每個角色的主要任務(wù)是什么?如教師角色,他的任務(wù)有查看和修改個人信息、成績錄入、成績查詢等。
(3)確定系統(tǒng)中角色與用例間的關(guān)系角色和用例的關(guān)系反映了角色與系統(tǒng)的互動,即角色的動作,角色向系統(tǒng)輸入或從系統(tǒng)輸出什么信息。
1.1.2 系統(tǒng)管理員角度的頂層用例圖
下面我們分別從系統(tǒng)管理員、教師、學(xué)生這三類用戶的角度得到頂層用例圖。項目用例圖如圖2所示。
圖2 系統(tǒng)頂層角色用例圖
系統(tǒng)管理員頂層用例圖
用例分析:該用例角色是系統(tǒng)管理員。系統(tǒng)管理員負責(zé)學(xué)生學(xué)籍信息的管理(包括學(xué)生注冊、學(xué)籍異動、學(xué)生調(diào)班以及學(xué)生畢業(yè)后的數(shù)據(jù)處理)、教師基本信息的錄入(導(dǎo)入)和查詢(設(shè)置多種查詢方式)、課程管理(開課情況、開課學(xué)期、任課教師、以及教材信息等)學(xué)生成績的錄入和查詢(設(shè)置多種查詢方式)、生成各種報表(班級名單、班級成績、補考名單以及教師的課程表等)、身份及角色管理、數(shù)據(jù)備份(所有師生及學(xué)生成績等數(shù)據(jù)的導(dǎo)入和導(dǎo)出等)以及打印功能。
教師角度的頂層用例圖
用例分析:該用例角色是教師。教師可以進行個人信息維護(查看任課信息、查看個人信息、查看學(xué)生信息和修改以及登錄用戶名和密碼的設(shè)定)、學(xué)生成績管理(包括導(dǎo)入或錄入學(xué)生成績、查詢本班學(xué)生成績并且可以對成績進行簡單的統(tǒng)計,生成補考學(xué)生名單等)、報表打印(打印本人信息、打印班級名單、打印本班成績以及打印本班補考成績名單)。
從學(xué)生角度的頂層用例圖
用例分析:該用例角色是學(xué)生??梢圆榭春托薷膫€人的信息(登錄用戶名和密碼的設(shè)置等)、個人成績查詢、個人選課情況,以及相應(yīng)選修學(xué)分的情況等。
在上述用例圖的基礎(chǔ)上,進一步對用戶需求進行分析。劃分業(yè)務(wù)用例,并針對業(yè)務(wù)用例,必要時可以結(jié)合UML提供的時序圖、協(xié)作圖、活動圖描述業(yè)務(wù)用例。選擇業(yè)務(wù)用例的粒度十分重要,如學(xué)生信息修改的功能,是應(yīng)該把增加學(xué)生信息、刪除學(xué)生信息、修改學(xué)生信息、查詢學(xué)生信息分別作為一個用例,還是整體作為一個用例都是需要考慮的。
1.2.1 確定業(yè)務(wù)用例
確定業(yè)務(wù)用例的時候,可以從以下幾個方面出發(fā):
(1)用例是針對一個完整的業(yè)務(wù)。一般不必把增加、刪除、修改、查詢分別作為一個完整的業(yè)務(wù)。作為一個管理業(yè)務(wù),數(shù)據(jù)只有先增加,才有可能修改或者刪除。增加、刪除、修改、查詢結(jié)合起來才能完成管理目的,單獨每一項都不是業(yè)務(wù)的全部。
(2)考慮實施成本和風(fēng)險。如果將增加、刪除、修改、查詢都分別作為一個業(yè)務(wù)用例,很容易造成這些原本與用戶這個實體緊密關(guān)聯(lián),共同組成用戶實體生命周期的業(yè)務(wù),被割裂成多個獨立的業(yè)務(wù),一個用例可以看作一個分析單元,設(shè)計單元,開發(fā)單元,測試單元甚至部署單元。把緊密關(guān)聯(lián)的業(yè)務(wù)分成多個獨立部分去實施是高成本的,高風(fēng)險的。
(3)盡量提高可復(fù)用性。增加、刪除、修改。查詢對一個用戶來說是不會同時發(fā)生的,每次用戶只會完成其中的一個行為。分開來有利于詳細分析、模擬這一行為的細節(jié)而不至于混淆。就Web應(yīng)用而言,針對數(shù)據(jù)的增加、刪除、修改、查詢等,很容易形成“模板”,增加用戶用這個模板,增加其它基礎(chǔ)數(shù)據(jù)可能也用同一個模板,只是操作的數(shù)據(jù)(實體)不同而已。因此,在這種情況下,這些模板是可以復(fù)用的。
(4)具體問題具體分析。查詢是比較特殊的,查詢一般不一定只局限于一類用戶,也不一定局限這個用例,一般都是所謂的綜合查詢,是可能跨用例的。比如管理員可以查詢學(xué)生學(xué)籍信息,學(xué)生也可以查詢自己的學(xué)籍信息。所以根據(jù)實際情況,查詢可以作為一個業(yè)務(wù)用例出現(xiàn)。
1.2.2 業(yè)務(wù)建模舉例
由于高職院校教學(xué)管理是十分龐大而復(fù)雜的,下面針對一小部分需求,進行業(yè)務(wù)建模。具體需求描述如下:
管理員登錄系統(tǒng)后,能夠維護(查找、增加、修改、刪除)學(xué)生信息,同時又能對教師的信息進行查詢和修改(查找、增加、修改、刪除)等。根據(jù)對用戶需求的總結(jié)和歸納,從管理員的角度以及從每項業(yè)務(wù)的角度來繪制業(yè)務(wù)用例圖。在上述功能點中,比較重要的操作如下:
(1)查詢學(xué)生信息;
(2)修改學(xué)生信息;
(3)增加學(xué)生信息;
(4)刪除學(xué)生信息;
(5)修改學(xué)生成績;
(6)查詢教師信息;
(7)修改教師信息;
(8)增加教師信息;
(9)刪除教師信息。
經(jīng)過分析,用例的粒度以每個用例能夠說明一件完整的事情為宜。即一用例可以描述一項完整的業(yè)務(wù)流程得到的業(yè)務(wù)用例如下:
(1)學(xué)生信息維護(增加、刪除、修改);
(2)教師信息維護(增加、刪除、修改);
(3)學(xué)生信息查詢;
(4)教師信息查詢。
在具體分析業(yè)務(wù)用例的時候,可以使用UML提供的時序圖、協(xié)作圖、活動圖等來幫助分析系統(tǒng)業(yè)務(wù)。以用戶登錄系統(tǒng)為例,其時序圖、協(xié)作圖和活動圖分別如圖3、圖4和圖5所示。
圖3 用戶登錄時序圖
圖4 用戶登錄協(xié)作圖
圖5 用戶登錄活動圖
成績管理系統(tǒng)含有大量用戶信息,所以數(shù)據(jù)庫的安全就是一個必須要考慮的問題。保證系統(tǒng)安全涉及諸多方面,而對系統(tǒng)用戶進行正確驗證、實施權(quán)限管理則是保證系統(tǒng)安全的一項重要基礎(chǔ)工作。
管理員每次登錄系統(tǒng)都要輸入自己的登錄用戶名、密碼以及該用戶名所屬的那個用戶身份類別,系統(tǒng)可以進行身份驗證。通過驗證后,才會進入相應(yīng)的系統(tǒng)界面,進行和該用戶身份相關(guān)的操作和管理。這樣可以避免出現(xiàn)非法用戶的數(shù)據(jù)訪問請求,也避免合法用戶的越權(quán)數(shù)據(jù)請求。
系統(tǒng)安全機制由兩部分組成:首先在用戶登錄系統(tǒng)時進行身份認證,防止非注冊用戶的訪問,并確定己登錄用戶的身份角色;然后,當(dāng)用戶通過身份認證調(diào)用系統(tǒng)的操作時,對每個操作根據(jù)系統(tǒng)的訪問策略驗證用戶是否擁有相應(yīng)的權(quán)限,為系統(tǒng)提供進一步的安全控制。
權(quán)限管理的設(shè)計原則是,對于擁有本系統(tǒng)使用權(quán)的用戶,系統(tǒng)根據(jù)承擔(dān)的職務(wù),進行角色和權(quán)限分配。系統(tǒng)根據(jù)其角色,分配相應(yīng)的系統(tǒng)操作權(quán)限,這樣當(dāng)用戶登錄本系統(tǒng)后,只能看到屬于自己操作權(quán)限的系統(tǒng),避免了操作者越權(quán)修改其職責(zé)之外的數(shù)據(jù)。
高職院校成績管理系統(tǒng)是一個B/S架構(gòu)系統(tǒng),采用網(wǎng)絡(luò)應(yīng)用標準的多層體系結(jié)構(gòu),每一層實現(xiàn)不同的系統(tǒng)功能。從系統(tǒng)架構(gòu)上將整個系統(tǒng)分成表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和域模型層。下面對系統(tǒng)各個層的設(shè)計及實現(xiàn)機制進行闡述。架構(gòu)如圖6所示。
圖6 系統(tǒng)總體架構(gòu)
客戶層運行在用戶的瀏覽器中提供了客戶與應(yīng)用程序的交互方式,這些交互主要包括向Web層發(fā)出請求并接收由Web層發(fā)回的響應(yīng)。
表示層為客戶層同業(yè)務(wù)邏輯層進行通信提供了服務(wù),負責(zé)從客戶層接受請求和向客戶層發(fā)送結(jié)果及顯示內(nèi)容,只包含顯示邏輯。Web層主要采用MVC的技術(shù)架構(gòu)。實現(xiàn)技術(shù)包括:Struts、Servlet、JSP、JSTL、ValueList、JavaScript,HTML,DHTML,CSS等。
Struts Action:Action類是業(yè)務(wù)邏輯的一個封裝,真正實現(xiàn)應(yīng)用程序的業(yè)務(wù)邏輯。
Struts Form:用以封裝HTTP Request或Response中的數(shù)據(jù)。主要用于存放HTTP form提交的數(shù)據(jù),也可用于JSP頁面的數(shù)據(jù)顯示。
業(yè)務(wù)邏輯層是該整合架構(gòu)的體系核心所在,它體現(xiàn)并處理企業(yè)的業(yè)務(wù)邏輯。處理Web層傳遞過來的用戶響應(yīng),實現(xiàn)業(yè)務(wù)邏輯,并將結(jié)果返回給Web層。所有的業(yè)務(wù)邏輯,都應(yīng)存放在這一層,由Spring管理該層。
本層在業(yè)務(wù)邏輯層之后,利用Spring和Hibernate,iBatis開發(fā),主要負責(zé)實現(xiàn)與數(shù)據(jù)庫等系統(tǒng)連接,實現(xiàn)數(shù)據(jù)的管理和持久化。
由于本系統(tǒng)將Web應(yīng)用劃分為了多個層次,就需要一系列的 Java對象來實現(xiàn)不同層之間的數(shù)據(jù)傳遞和交互。域模型層包含了真實世界中的業(yè)務(wù)對象。Hibernate允許將數(shù)據(jù)庫中的信息讀取到域模型對象中,以便于可以直接呈現(xiàn)在表示層的用戶界面中。這些對象還可以被更新并且傳回到持久層,最后更新到數(shù)據(jù)庫中。
本文對高職院校成績管理系統(tǒng)做了一個簡要的概述之后,然后做了需求分析,最后做出了總體設(shè)計,鑒于本文的篇幅,系統(tǒng)的分析和設(shè)計只是在總體上做了簡單的闡述,并沒有給出很詳細的需求分析和設(shè)計文檔,需要我們在實踐中繼續(xù)完善。
[1]張春枝等.基于C/S與B/S混合模式的MIS系統(tǒng)設(shè)計[J].計算機應(yīng)用研究.2001.
[2]袁華強,王亞強,朱君.利用J2EE輕量級框架構(gòu)建Web應(yīng)用研究[J].計算機工程與設(shè)計.2007.
[3]劉艷霞.J2EE項目中的數(shù)據(jù)持久層設(shè)計[J].工程地質(zhì)計算機應(yīng)用.2005.
[4]閻宏.Java與模式[M].北京:電子工業(yè)出版社.2002.
[5]魏學(xué)松,張育平.IoC 框架的研究與設(shè)計[J].計算機技術(shù)與發(fā)展.2006.
[6]夏聽.Spring開發(fā)指南0.8預(yù)覽版[M].2004.
[7]羅時飛.精通 Spring開發(fā)專家之 Sun One[M].北京:電子工業(yè)出版社.2005.