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