摘 要: 類的構(gòu)造是面向?qū)ο笙到y(tǒng)分析的難點(diǎn),類的構(gòu)造合理與否很大程度上決定了系統(tǒng)的成敗。因此,在面向?qū)ο笙到y(tǒng)分析和設(shè)計過程中,類模型的分析是復(fù)雜的、重要的且容易重復(fù)勞動。為了降低設(shè)計過程的復(fù)雜性,減少重復(fù)性勞動,高效率且高質(zhì)量地完成系統(tǒng)建模與設(shè)計,提出一種基于層次結(jié)構(gòu)模型的類模型分析方法,并闡述了這種方法的機(jī)理;結(jié)合“移動學(xué)習(xí)系統(tǒng)的學(xué)生選課子系統(tǒng)”的開發(fā)實例,深入探討了從類模型到層次結(jié)構(gòu)模型的映射過程。
關(guān)鍵詞: 類構(gòu)造; 層次結(jié)構(gòu)模型; 類模型; 三層結(jié)構(gòu)模型
中圖分類號:TP311.5 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2013)11-01-03
0 引言
在傳統(tǒng)的面向?qū)ο蟮姆治雠c設(shè)計過程中,類的構(gòu)造和軟件架構(gòu)是相互獨(dú)立的,然而類必將映射到軟件架構(gòu)中,這一過程是復(fù)雜且較困難的。類構(gòu)造的合理性以及類與軟件層次結(jié)構(gòu)的相互適應(yīng)性必將影響到系統(tǒng)完成的效率與質(zhì)量。
系統(tǒng)的層次結(jié)構(gòu)是系統(tǒng)設(shè)計的“軀體”,主要是定義和說明包(子系統(tǒng)),以及包與包之間的相互依賴與通信機(jī)制[1]。類構(gòu)造是系統(tǒng)設(shè)計的“大腦”,主要是定義系統(tǒng)的運(yùn)作過程,與實現(xiàn)方法、技術(shù)無關(guān)。因此,基于層次結(jié)構(gòu)模型的類模型分析的優(yōu)點(diǎn)有:①系統(tǒng)結(jié)構(gòu)清晰;②降低設(shè)計過程的復(fù)雜性;③開發(fā)人員的思路更清晰易懂;④開發(fā)效率高。層次結(jié)構(gòu)模型可以劃分為若干層,目前流行的三層結(jié)構(gòu)模型。
本文選用目前流行的層次結(jié)構(gòu)模型——三層結(jié)構(gòu)模型,結(jié)合“移動學(xué)習(xí)系統(tǒng)”的子系統(tǒng)“學(xué)生選課系統(tǒng)”分析設(shè)計過程,探究如何實現(xiàn)類模型到層次結(jié)構(gòu)模型的映射。
1 層次結(jié)構(gòu)模型
層次結(jié)構(gòu)(hierarchy)是一種計算機(jī)操作系統(tǒng)的構(gòu)成方法。它是根據(jù)信息的類型、級別、優(yōu)先級等一組特定的規(guī)則排列的一組硬件或軟件項目。這種結(jié)構(gòu)的最大特點(diǎn)就是將一個大型、復(fù)雜的系統(tǒng)分解成若干單向依賴的層次。該結(jié)構(gòu)通過分解問題來降低問題的復(fù)雜性,從而確保程序的可靠性和易讀性,也便于人們對系統(tǒng)進(jìn)行局部修改。UNIX操作系統(tǒng)就是采用層次結(jié)構(gòu)實現(xiàn)結(jié)構(gòu)設(shè)計的。
層次結(jié)構(gòu)模型也被廣泛用于應(yīng)用軟件的構(gòu)成。層次結(jié)構(gòu)模型的建立,是在深入分析實際問題的基礎(chǔ)上,將相關(guān)的各個因素按照不同屬性自上而下地分解成若干層次,同一層的諸因素從屬于上一層的因素或?qū)ι蠈右蛩赜杏绊懀瑫r又支配下一層的因素或受到下層因素的作用。
目前流行的層次結(jié)構(gòu)模型是三層結(jié)構(gòu)模型,它是在由Buschmann等提出的“層模式”基礎(chǔ)上發(fā)展起來的。三層結(jié)構(gòu)是根據(jù)用戶與軟件系統(tǒng)的交互過程,將系統(tǒng)劃分為由上層到底層的的模型。層次的劃分按照高內(nèi)聚松耦合的原則進(jìn)行劃分。三層結(jié)構(gòu)分別為:用戶表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。各層的功能如下:將實現(xiàn)人機(jī)界面的所有表單和組件放在表示層,將所有業(yè)務(wù)規(guī)則和邏輯的實現(xiàn)封裝在負(fù)責(zé)業(yè)務(wù)邏輯組件中,將所有和數(shù)據(jù)庫的交互封裝在數(shù)據(jù)訪問組件中,如圖1所示。
三層結(jié)構(gòu)是一種嚴(yán)格分層方法,各層只能調(diào)用下一層,且不能越界調(diào)用。用戶通過表示層將請求傳送給業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層完成相關(guān)業(yè)務(wù)規(guī)則和邏輯,并通過數(shù)據(jù)訪問層訪問數(shù)據(jù)庫獲得數(shù)據(jù),然后按照預(yù)想的順序依次返回,并將數(shù)據(jù)顯示在表示層。
2 類的分析構(gòu)造
類的構(gòu)造與分析,是對現(xiàn)實世界的抽象,用于處理功能性的需求。在面向?qū)ο蟮姆治鲞^程中,通常從三個緯度對系統(tǒng)的類進(jìn)行分析,分別為邊界類、控制類和實體類[2],如圖2所示。
邊界類表示系統(tǒng)內(nèi)部工作方式與其周圍環(huán)境之間的各種交互作用,用于陳述和收集系統(tǒng)的邊界需求。邊界類包括:通過圖形化用戶界面與用戶交互;與其他參與者交互(如代表其他系統(tǒng)的參與者);與設(shè)備通信等。
控制類用于系統(tǒng)內(nèi)的控制邏輯與模型行為,用于對某一個具體的用例相關(guān)的控制或者其他業(yè)務(wù)邏輯建模。通常將協(xié)調(diào)、排序等事物處理或者涉及多個對象的復(fù)雜事務(wù)邏輯隔離在一個或多個控制類中。
實體對象表示對系統(tǒng)的重要信息。它們通常是持久的,并能在一個延續(xù)的時期內(nèi)存在。它們的主要的目的是表示和管理系統(tǒng)內(nèi)的信息。實體類通常表示為一種邏輯的數(shù)據(jù)結(jié)構(gòu)。
3 類與三層結(jié)構(gòu)模型的映射
統(tǒng)一軟件開發(fā)過程RUP中定義了四個模型:用例模型、分析模型、設(shè)計模型和實現(xiàn)模型[2]。類模型的分析屬于分析階段,三層結(jié)構(gòu)架構(gòu)模型屬于設(shè)計階段。類模型的分析是與具體實現(xiàn)無關(guān)的,而三層結(jié)構(gòu)架構(gòu)模型是與具體實現(xiàn)有關(guān)的?;谠O(shè)計的分析,有助于開發(fā)人員更容易理解系統(tǒng),更容易開發(fā)系統(tǒng)。
通過對三層結(jié)構(gòu)架構(gòu)模型與類模型的分析,得到如下結(jié)論:邊界類和表示層從不同角度處理與外界的交互,控制類與業(yè)務(wù)邏輯層從不同角度處理服務(wù)行為與動作行為,實體類與數(shù)據(jù)層從不同角度處理持久性數(shù)據(jù)。這樣,在分析類模型的同時,進(jìn)行層次分析。具體類模型到三層結(jié)構(gòu)架構(gòu)模型的映射過程如圖3所示。
4 實例說明
我們以“學(xué)生選課系統(tǒng)”為例來說明。
4.1 數(shù)據(jù)層的設(shè)計
4.1.1 實體類的獲取
對“學(xué)生選課系統(tǒng)”,采用領(lǐng)域建模的方法,獲取該系統(tǒng)的實體類。所謂領(lǐng)域建模,就是對領(lǐng)域內(nèi)的概念類或現(xiàn)實世界中的對象進(jìn)行可視化表示,它注重分析問題概念本身,發(fā)掘重要的業(yè)務(wù)領(lǐng)域概念,并建立業(yè)務(wù)領(lǐng)域概念之間的關(guān)系[3]。
領(lǐng)域模型的一個對象往往就與一個實體類對應(yīng),它們之間存在著各種關(guān)系,例如,一對多、多對多、一對一、繼承等關(guān)系。根據(jù)“學(xué)生選課”子系統(tǒng)的功能,應(yīng)該創(chuàng)建如下一些領(lǐng)域模型類,即實體類,如圖4所示。
4.1.2 創(chuàng)建實體類
通過領(lǐng)域模型分析,得到三個實體類,具體如下:
⑴ 學(xué)生實體類(Student):表示一個學(xué)生,負(fù)責(zé)進(jìn)行選課。
⑵ 課程實體類(Course):表示一門課程,可以被學(xué)生選中放入選課信息中。
⑶ 學(xué)生課程實體類(Scourse):表示屬于學(xué)生的所有所選課程。
4.2 業(yè)務(wù)邏輯層的設(shè)計
4.2.1 控制類的獲取
業(yè)務(wù)邏輯層是系統(tǒng)中最核心的部分,它關(guān)系到整個軟件系統(tǒng)的邏輯是怎么執(zhí)行的,功能是怎樣實現(xiàn)的,完全由用戶的需求來決定,是最靈活的一層。我們通常采用構(gòu)建用例模型,分析業(yè)務(wù)邏輯關(guān)系。
業(yè)務(wù)邏輯的設(shè)計主要是根據(jù)系統(tǒng)提供的功能而定的,也就是說,系統(tǒng)提供給用戶多少個功能,就對應(yīng)著多少個業(yè)務(wù)邏輯。根據(jù)“學(xué)生選課”子系統(tǒng)的功能,給出該系統(tǒng)的用例模型,如圖5所示。
4.2.2 創(chuàng)建控制類
⑴ 學(xué)生登錄類(StudentLogin)。
⑵ 學(xué)生退出類(StudentCheckout)。
⑶ 學(xué)生選課類(SelectCourse)。
4.3 表示層的設(shè)計
4.3.1 表示層的設(shè)計
表示層的作用表示系統(tǒng)內(nèi)部工作方式與其周圍環(huán)境之間的各種交互作用,它們可以把系統(tǒng)的其余部分與外界環(huán)境隔離和屏蔽起來。根據(jù)用戶與系統(tǒng)交互的需求,確定邊界類。
4.3.2 創(chuàng)建邊界類
⑴ 用戶主登錄界面(LogAction):用于登錄,將引用一個StudentLogin類。
⑵ 選課主界面(ListCourseAction):用于展示課程信息。
⑶ 學(xué)生所選課程界面(StudentCourse):用于顯示學(xué)生所選的課程信息。
5 結(jié)束語
層次結(jié)構(gòu)模型廣泛應(yīng)用于面向?qū)ο笙到y(tǒng)架構(gòu),而在面向?qū)ο笙到y(tǒng)的分析和設(shè)計過程中,類模型的建立是關(guān)鍵且復(fù)雜的。通過不斷編程實踐和總結(jié)出的,基于層次結(jié)構(gòu)模型(三層結(jié)構(gòu)模型)的類模型分析方法在軟件開發(fā)過程中很實用,能顯著降低程序開發(fā)困難,提高開發(fā)效率。
參考文獻(xiàn):
[1] 董連.基于UML和.NET三層B_S系統(tǒng)的開發(fā)[J].計算機(jī)與數(shù)字工程.2010,38(12):77-80
[2] 李軍.一種從用例模型到分析模型的設(shè)計方法[J].計算機(jī)系統(tǒng)應(yīng)用,2012.21(1):191-192
[3] 常倬林.JavaWeb從入門到精通[M].機(jī)械工業(yè)出版社,2011.
[4] 閆敏敏.基于UML與三層架構(gòu)的遠(yuǎn)程教育系統(tǒng)設(shè)計與實現(xiàn)[J].長春工程學(xué)院學(xué)報,2012.13(1):95-100
[5] 郭廣軍等.基于SSH整合架構(gòu)的教學(xué)支持系統(tǒng)設(shè)計與實現(xiàn)[J].計算機(jī)工程與設(shè)計,2009.30(13):3111-3116
[6] 李雷等.SSH整合框架的研究與應(yīng)用[J].內(nèi)蒙古工業(yè)大學(xué)學(xué)報,2012.31(2):40-44
[7] 王智超,王敏.軟件開發(fā)過程與UML關(guān)系的研究[J].中國科技信息,2011.20:97