劉艷



摘要
隨著軟件工程及軟件體系結構的發展,軟件體系結構建模成為軟件開發的必要部分。本文以一個在線投稿系統為例,使用UML對系統進行體系結構建模,并使用JSP、JavaBean等技術進行開發。
【關鍵詞】UML 軟件工程 軟件體系結構 JSP
1 引言
隨著軟件工程的深入發展,軟件體系結構設計已經成為直接影響軟件開發的關鍵因素。而軟件體系結構建模是軟件體系結構設計中的重要組成部分,是否能夠對軟件體系結構模型進行精確的描述,決定了軟件系統開發的效率和成敗。對于軟件的建模,我們可以使用統一建模語言UML。UML是一種基于面向對象的可視化建模語言,它提供了豐富的視圖來描述系統的不同側面,可以有效地進行系統建模、分析和設計。
本文以一個在線投稿系統為例,該系統根據基于Internet實現了在線投稿和審稿功能,解決了編輯部繁雜、低效的問題。采用可視化建模工具Rational Rose并利用LJML建立其體系結構模型。并采用JSP、JavaBean技術在建模的基礎上實現了該在線投稿系統。
2 基于UML的體系結構建模
本文對系統的基本體系結構進行描述,其次進行了概要設計,繪制出其需求模型,數據庫模型,功能模型,框架模型,進而進行更加詳細的設計,建立了結構模型和動態模型。
2.1 基于Web的三層體系結構
本系統作為一個基于Internet和Web的系統,要求能夠安全及時地服務大量的客戶端用戶,又能夠長時間安全穩定地運行所以要求其具有一種良好體系結構。因此我們采用三層體系結構,如圖1所示。
服務器端由Web服務器和數據庫服務器構成,這是當前應用比較多的一種結構模式,可以將要發布信息分類保存到數據庫服務器,然后通過應用程序或腳本程序根據用戶請求提取相應的信息,這種模式克服了單一Web服務器只能發布靜態內容的缺點,由于增加了后臺數據庫的支持,在Web Server中通過應用程序的支持,就可以給用戶提供動態的信息服務,通過定制頁面模板,添加到后臺數據庫的信息可即時發布到請求的客戶,因而也就保證了信息的時效性。這種模式對編程人員的素質要求不是很高,并且開發周期快,適用于企業內部的INTRANET或一些訪問量不大的中小網站,不用再添加一些中間層的應用服務器了。
2.2 MVC體系結構模型
本系統采用了MVC(視圖、模型、控制器)模型,該模型把一個應用的輸入、處理、輸出流程按照Model、View、Controller(視圖、模型、控制器)的方式進行分離,如圖2所示。模型封裝內核數據與狀態,視圖從模型獲取數據,用戶輸入的數據通過控制器與系統交互。
在本系統的實現過程中,采用了JSP以及JAVABEAN的技術, MVC模型與該實現技術的進一步說明如下:
(1)MVC中的Model(模型)對應于JAVABEAN。比如用戶類userjava,它主要用于獲取用戶信息以及與數據庫交互。在我們的應用程序中,模型是通過Bean包里的各個Bean表示的。
(2)MVC框架中的View(視圖)是將要發布給客戶端的接口。視圖了解控制器和模型。在我們的應用程序中,視圖是通過WEB模塊中的一些JSP頁面來表示,比如用于注冊的register.jsp。
(3)MVC框架中的Controller(控制器)是最常用的作為模型和視圖之間的服務中介。在視圖和控制器之間有一對一的映射。在本系統中,對應于每一個用于顯示頁面的JSP文件都有一個控制器與之對應。該控制器也是用JSP文件表示。比如對應register.jsp就有rgistercontrollerjsp.
由此可以看出,該系統的體系結構并不是單一的,三層Web體系結構與MVC結構模型相結合,體現出軟件體系結構的一種異構性,也就是說,該系統的體系結構屬于異構體系結構的類型。
2.3 需求模型
本在線投稿系統主要由三個基本模塊構成,分別是用戶模塊,編輯模塊和專家模塊。前臺的用戶可以在線投遞,并能在第一時間內查看通知;后臺編輯和管理員則可在線閱讀、審批來稿,從而實現投稿、采編、發布一體化。
本文以用戶模塊為例,構建出用戶的需求模型如圖3所示。第一次投稿前用戶必須先注冊登記,然后使用注冊成功的帳號和密碼進行登陸,進入用戶界面。在用戶界面中提供了在線投稿、查看個人發表的歷史稿件、查看當前稿件、查看個人資料等服務。
在查看當前稿件的過程中,如果專家已經評審,則可以查看評審內容。如果有修改的權限(比如用戶剛投稿,編輯還未分配給專家評;或者專家要求用戶修改其稿件);查看歷史稿件包括查看該稿件是否錄用,以及錄用時間;修改稿件將更新原來在服務器上的對應文件。
2.4 功能模型
系統服務層次模型如圖4所示。本系統中用了大量的JSP文件來用于表示服務,控制服務也是采用了JSP文件來實現。業務邏輯服務采用JAVABEAN來實現。數據訪問服務使用了一個Bean——DBHandler.java,專門與數據庫交互,包括與數據庫的連接,查詢等。而其上層服務通過傳遞SQL參數給它來實現數據庫操作。本系統中數據庫采用的Microsoft的Access數據庫。
所有的JSP與JavaBean都將被配置在應用服務器,實現表示服務,控制服務和業務邏輯服務,數據庫則配置在數據庫服務器上。如圖5所示。由于本系統相對來說比較簡單,所以不用再將前幾個服務分層??蛻舳说闹饕饔檬菫g覽,用于表示服務的JSP文件也被放在應用服務器上。
2.5 框架模型
本系統的子系統框架模型如圖6所示,包括用戶投稿子系統模塊,編輯子系統模塊和專家子系統模塊。以用戶在線投稿模塊這一實例說明MVC框架的實現,如圖7所示。MVC框架中的控制器是最常用的作為模型和視圖之間的服務中介。在視圖和控制器之間有一對一的映射。因此,在線投稿子系統中,對應于我們每一個用于表示的JSP對象都有一個JSP控制器與之對應(如叩loadcontroller.jsp,xiugailunwencontroller.jsp),用戶接口控制器直接與表示頁面交互。讓控制器作為視圖和模型之間的代理,能夠使得用戶接口清晰。雖然有時不可避免用戶接口直接進入實體類中檢索信息,但是通過保持表示層的相對無關聯,我們最終會使得服務層高度內聚,使其和其他服務層的耦合減少。
2.6 結構模型
圖8是本系統各實體類的主要關系模型。主要的類有“User”(用戶),“ Article”(文章),“Editor”(編輯),“Expert”(專家),“DBHandler”(數據訪問)?!癠ser”與“Article”之間存在關聯,其兩端多重性標記表示一個用戶可以投零篇或多篇文章。Editor與Expert是User的泛化。User與Article類都使用DBHandler類來與數據庫交互。
圖9是用戶投稿實例的類圖,可以非常清楚地看到涉及的類。User首先將基本信息顯示到zaixiantougao.jsp的頁面上,然后zaixiantougao.jsp與uploadcontroller.jsp,Articlejava,以及DBHandler.java逐層交互,文件上傳并修改數據庫。限于篇幅,此處其他的實例的類圖不——列出。
2.7 動態模型
可用LYME順序圖進一步對以上的概要設計細化。如圖10所示,是在線投稿子例子的順序圖Uploadcontroller.jsp調用Article類的articledb()方法,主要就是用于文件上傳,以及修改數據庫中的article表和submitarticle表。
圖11是修改稿件子例的協作圖。與在線投稿的流程類似,通過調用DBHandler類的conn()方法與數據庫建立連接,調用execute()方法來對數據庫進行操作。
3 系統實現
目前,Jsp技術作為一個很好的動態網站開發語言得到了越來越廣泛的應用,在各類Jsp應用程序中,Jsp與JavaBean的組合成為了一種事實上最常見的Jsp程序的標準,這也是本系統的主要技術。JavaBean在Jsp程序中用來封裝事務邏輯、數據庫操作等等,可以很好地實現業務邏輯和前臺程序(如jsp文件)的分離,使得系統具有更好的健壯性和靈活性。本系統中文件上傳采用了組件技術,已經封裝了各種方法。
本系統數據庫模型中主要建立了六張表:articles,submitarticles,articletype,comments,expert,user.用戶模塊與其中的大部分表相關,限于篇幅,不再列出。系統主要界面如圖12所示。
4 結束語
本系統基于Web架構實現,由于采用了軟件體系結構建模的開發方法,其開發過程更加高效和正確,其功能擴展容易、與已有系統集成方便,具有跨平臺、易維護、易用等特點。
參考文獻
[1]麥中凡,戴彩霞.軟件體系結構的概念[J].計算機工程與應用,2001(11).
[2]梅宏,申峻嶸.軟件體系結構研究進展[J].軟件學報,2006(06).
[3][美]羅夫著,張瑜等譯.UML基礎教程[M].北京:清華大學出版社,2004(03).
[4]司飚.MVC模式下的考試系統建模研究[J].計算機科學,2013(S1).
[5]李志,賈克斌等.基于.NET MVC架構的網上珠寶銷售系統的設計與實現[J].計算機應用與軟件,2013(03).
[6]馮纓.JSP-JavaBean開發模式研究及在網上答題系統中的應用[J].計算機工程與設計,2006(05).