0 引言
面向對象的軟件分析與設計(OOA&D) 方法得到的是 OO(Object-Oriented) 的模型 ,OOA&D 方法從模型開始 , 就是識別對象、不斷細化的過程 , 開發(fā)過程就是不斷的迭代過程 [1] 。簡明準確的建模是把握復雜系統(tǒng)的關鍵,是一個優(yōu)秀系統(tǒng)開發(fā)中的重要的核心部分,其目的是把所要設計的結構和系統(tǒng)的行為溝通起來,對系統(tǒng)的體系結構進行可視化和控制,建模可以更好的理解正在構造的系統(tǒng),并提供簡化和和復用的機會。因此面向對象的分析和設計應該從建模開始。
本文在 并在 RUP(Rational Unified Process ) 指導下 , 把面向對象的設計方法運用于 B/ S 結構的 軟件系統(tǒng)中 , 利用 Rational ROSE 工具完成 B/ S 結構的信息管理系統(tǒng)的 UML建模 ; 通過這種基于 UML的內聚式、迭代式的建模設計 , 清晰展現系統(tǒng)的邏輯和框架結構 ,設計 出一套 B/ S 模式系統(tǒng)建模的方案。 實踐證明,筆者用這套方案可以很好地為管理信息系統(tǒng)處理需求和技術風險、進行軟件質量控制,大大縮短開發(fā)周期,使得開發(fā)出來的系統(tǒng)功能強大、易維護、可擴展。
1 UML(統(tǒng)一建模語言)及RUP(統(tǒng)一軟件過程)簡介
1.1 UML簡介
統(tǒng)一建模語言 UML(Unified Modeling Language) 融合了 Booch、OMT和OOSE方法中的基本概念,是國際上標準的建模語言,是面向對象的分析和設計方法發(fā)展的產物,能夠產生和長期其他技術學科的藍圖相似的草圖。 UML 有統(tǒng)一語義和符號表示 , 可使項目根植于一個成熟的標準建模語言 , 從而可以拓寬軟件系統(tǒng)的適用范圍 , 并提高其靈活程度 。
UML 是一種通用的可視化建模語言 , 用于對軟件進行描述、可視化處理、構造和建立軟件系統(tǒng)的文檔。 UML融合了許多面向對象開發(fā)方法的基本概念和優(yōu)點,具有 一致的圖形表示法和語義,同時也出現了許多 UML工具,能夠很好地支持軟件開發(fā),例如 UML 的開發(fā)工具 Rational Rose 提供了面向對象的分析和設計 (OOA 和 OOD) 到面向對象編程 (OOP) 的平滑過渡機制 , 完整地體現了面向對象的軟件工程思想 [2] 。
1.2 UML的靜態(tài)建模機制和動態(tài)建模機制
在應用中,當采用面向對象技術設計系統(tǒng)時,首先是描述需求,其次根據需求建立系統(tǒng)的靜態(tài)模型,以構造系統(tǒng)的結構。這兩步所建立的模型都是靜態(tài)的,包括用例圖、類圖(包含包)、對象圖、組件圖和配置圖等五個圖形,是標準建模語言 UML 的靜態(tài)建模機制。第三步是描述系統(tǒng)的行為,所建立的模型或者可以執(zhí)行,或者表示執(zhí)行時的時序狀態(tài)或交互關系。它包括狀態(tài)圖、活動圖、順序圖和合作圖等四個圖形,是標準建模語言 UML 的動態(tài)建模機制。
UML包括靜態(tài)建模機制和動態(tài)建模機制兩大類 靜態(tài)結構定義了系統(tǒng)中重要對象的屬性和操作以及這些對象之間的相互關系 ; 動態(tài)行為定義了對象的時間特性和對象為完成目標任務而相互進行通信的機制。 UML定義了9種圖用于系統(tǒng)建模, 分為兩類: 靜態(tài)結構圖和動態(tài)行為圖。
1)靜態(tài)結構圖 可用于對系統(tǒng)的靜態(tài)方面進行可視化、詳述、構造和文檔化??梢园严到y(tǒng)的靜態(tài)方面看作是對系統(tǒng)的相對穩(wěn)定的骨架的表示,它由類、接口、協(xié)作、構件和節(jié)點等事物的布局組成。結構圖包括 :
類圖 (Class diagram) 描述系統(tǒng)中類的靜態(tài)結構,它定 義了系統(tǒng)中類的內部結構以及類之間的聯系,用來捕獲信息和事件中的對象 ; 對象圖 (Object diagram) 是類的實例化圖 ; 構件圖 (Component diagram)描述程序代碼的物理結構 ; 部署圖 (Deployment diagram) 描述系統(tǒng)中軟、硬件的物 理體系結構,用于捕獲系統(tǒng)硬件和軟件構件的部署關系。
2)動態(tài)行為圖 用于對系統(tǒng)的動態(tài)方面進行可視化、詳述、 構造和文檔化。可以把系統(tǒng)的動態(tài)方面看作是對系統(tǒng)變化部 分的表示,它由諸如隨時間變化的信息流和在網絡上構件的 物理運動之類的事物組成。行為圖包括 :
用例圖 (Use Case diagram) 從用戶的角度描述系統(tǒng)的 功能,并指出各功能的執(zhí)行者,說明執(zhí)行者與提供的用例之間的某種聯系 ; 順序圖 (Sequence diagram) 描述幾個對象之間的動作 協(xié)作關系 ; 協(xié)作圖 (Collaboration diagram) 從另一個角度展示對象 之間的動作協(xié)作關系。它可以和順序圖相互轉換。在 rational rose中可以由順序圖生成協(xié)作圖 ; 狀態(tài)圖 (State diagram) 描述一類對象具有的所有可能的狀態(tài)以及狀態(tài)轉移關系 ; 活動圖 (Active diagram) 描述系統(tǒng)中各種活動的執(zhí)行 順序。
1.3 RUP 簡介
RUP,即Rational統(tǒng)一過程, 是一種適應 UML 的軟件生命周期方法, 是一個通用的過程框架 , 可用于各種不同類型的軟件系統(tǒng)、各種不同的應用領域、各種不同類型的組織、各種不同的功能級別以及各種不同的項目規(guī)模。 它 基于建模語言 UML 的、以體系結構為中心的、用例驅動與風險驅動相結合的迭代 和增量的軟件開發(fā)過程。 RUP 把軟件的開發(fā)周期分為 初始、細化、構造和移交 四個階段 , 所有開發(fā)工作都圍繞需求捕獲、分析、設計、實現和測試 五 個核心工作來組織。構造階段通過一系列迭代過程建造系統(tǒng),每一次迭代都是一個小項目,需要對所要求的用例進行分析、設計、編碼、測試和集成。

UML可視化建模系統(tǒng)支持從系統(tǒng)需求、系統(tǒng)分析到系統(tǒng)設計的整個建模過程,如表 1 所示。在需求分析階段, UML 可以用用例來捕獲用戶需求。通過需求建模,描述對系統(tǒng)感興趣的外部角色及其對用例的功能要求。在分析和設計階段,通過 UML 的靜態(tài)建模機制和動態(tài)建模機制對問題域的對象建模,描述類的屬性、類之間的關系、系統(tǒng)動態(tài)特征。編碼是一個獨立的階段,其任務是用面向對象編程語言將來自設計階段的類轉換成實際的代碼。 UML 模型還可作為測試階段的依據。同 UML還支持對系統(tǒng)體系結構的建模。
2 外國專家管理信息系統(tǒng)的建模設計
外國專家管理信息系統(tǒng)是專門用來管理來華的外國專家相關信息的軟件系統(tǒng)。它的基本任務是管理,它涵蓋了來華的外國專家從申請來華及在華期間,到離校的各個階段所涉及的信息,同時還管理了外專聘請單位的基本信息、外國專家聘請需求的基本信息。通過該系統(tǒng),能夠快捷、方便的對來華外專的各類信息進行綜合的科學的管理,提高了辦公效率 , 簡化了部門(企業(yè))內部的信息管理工作,而且進一步提高了部門(企業(yè))內部的信息交流程度,達到數據的共享,使管理工作更加規(guī)范化、科學化、全面化。
B/ S 結構的管理信息系統(tǒng)往往具有復雜與高度動態(tài)的特點。運用 UML 建模技術和 RUP 軟件工程技術 , 就能夠讓開發(fā)過程更加流暢 , 確保 B/ S 結構的系統(tǒng)將來更容易維護。
2.1 用戶和角色

系統(tǒng)分析要求接觸用戶,同時系統(tǒng)還要能夠控制不同的用戶角色和權限。通過對用戶進行分類并了解他們的需求,從而確定安全機制、功能限制方案、用戶界面分組和對具體內容的需求。圖1 顯示了幾組不同的系統(tǒng)用戶(在UML 中稱為Actor , 即參與者) 。普通的用戶類型(“普通用戶”) 位于圖的頂端,空心箭頭表示generalization(泛化) 關系,表示“User”又可以具體分成兩類用戶: 注冊用戶,未注冊用戶。而注冊用戶和未注冊用戶各自私有的特征則在對應的參與者中說明。在本例中,注冊用戶又可以細分為外國專家、管理員、行管人員三種類型,系統(tǒng)對這些用戶的處理方式應有所不同。
2.2 需求模型
需求建模的過程就是用例的獲取過程。用例的獲取是需求分析階段的主要任務之一,而且是首先要做的工作。大部分用例將在項目的需求分析階段產生,并且隨著工作的深入會發(fā)現更多的用例,這些都應及時增添到已有的用例集中。用例集中的每個用例都是一個潛在的需求。
對系統(tǒng)需求的建模是通過 UML的用例(USE CASE)圖實現的。用例模型描述的是外部執(zhí)行者(Actor)所理解的系統(tǒng)功能。首先,它描述了待開發(fā)系統(tǒng)的功能需求;其次,它將系統(tǒng)看作黑盒,從外部執(zhí)行者的角度來理解系統(tǒng);第三,它驅動了需求分析之后各階段的開發(fā)工作,不僅在開發(fā)過程中保證了系統(tǒng)所有功能的實現,而且被用于驗證和檢測所開發(fā)的系統(tǒng),從而影響到開發(fā)工作的各個階段和UML 的各個模型。
圖 2 為外國專家管理信息系統(tǒng)用例模型。圖中的橢圓是用例,表示用戶與計算機之間的一次典型交互作用,圖形化表示的小人是執(zhí)行者,表示用戶在系統(tǒng)中所扮演的角色,用例和執(zhí)行者之間的連線表示兩者之間的關聯。 系統(tǒng)所涉及各種模塊的差異較大 ,要描述系統(tǒng)的功能需求,只有將系統(tǒng)劃分為多個模塊分別描述其功能需求,這就需要多個用例視圖。 圖中列出了8個用例,對應系統(tǒng)來華申請、在華管理、離華管理、文件管理、統(tǒng)計報表、外專聘請需求的管理、外專聘請單位信息的管理、用戶管理。圖中還列出了3 個執(zhí)行者,分別表示外國專家、行管人員、高級用戶(系統(tǒng)管理員)。通過用例圖,使得設計者在系統(tǒng)設計的最初階段將主要精力集中在系統(tǒng)的功能上,而不是系統(tǒng)的具體實現上。對于比較復雜的系統(tǒng),可以增加活動圖顯示活動流程和并發(fā)行為,使得建立的需求模型更加完整。

2.3 系統(tǒng)功能分析與設計
為了讓系統(tǒng)設計能夠以結構、組織方式和代碼重用的形式表現出來,要對系統(tǒng)進行設計規(guī)劃,設計階段應該與分析階段交迭。需求是不斷地發(fā)展,而設計本身也會推動需求的發(fā)展(反之亦然) 。
外國專家管理信息系統(tǒng)功能的建模設計中 ,以下3個方面的問題是要關注的:業(yè)務對象的表示、業(yè)務服務的實現、用戶界面的組織。

(1) 業(yè)務對象的表示。在外國專家管理信息系統(tǒng)中, 業(yè)務對象主要是數據庫和解決數據實體類的表示方式。在外國專家管理信息系統(tǒng)的建模中,外專的基本信息和參加學術活動模塊及學術活動模塊的靜態(tài)模型可以用類圖表示(如圖3所示) ,(圖中只列了一些關鍵信息)其中的空心箭頭表示了這些實體類對共用實體(Common Entity) 的泛化關系, 繼承Common Entity 的公用方法,本圖中沒有顯示這些實體的私有屬性和方法;而普通箭頭表示的是實體類的關聯或依賴關系。
(2) 業(yè)務服務的實現。業(yè)務服務的實現需要完成的功能是各種業(yè)務規(guī)則和邏輯的實現,如學術活動模塊的信息錄入、修改、刪除、查詢。每個模塊的信息錄入、修改、刪除、查詢,業(yè)務規(guī)則和邏輯的實現基本相似,沒有太多的規(guī)律可循。采用UML 來進行業(yè)務服務的建模,可以使用UML 的序列圖、狀態(tài)圖、活動圖。這個部分的工作,通常通過一系列的類之間的交互來完成。為了在更動態(tài)的層面上描述系統(tǒng),UML 提供了許多其他類型的圖。對于B/ S 系統(tǒng)設計而言,情節(jié)圖(Scenario Diagram) 特別有用。例如頁面如何與驗證用戶身份的代碼協(xié)作。情節(jié)圖分成兩種: 協(xié)作圖(Collaboration Diagram) ,序列圖(Sequence Diagram) 。UML 建模工具Rational Rose 能夠從協(xié)作圖生成次序圖,或者相反。

圖 4 為外國專家管理信息系統(tǒng)中學術活動信息模塊的信息錄入功能的流程的序列圖,可以直接由它生成相應的協(xié)作圖。
(3) 用戶界面的組織。用戶界面布局圖能夠幫助組織系統(tǒng)頁面、文件、服務的布局結構。在UML 中,對于頁面和文件的組織,可以使用構件圖(Component Diagram) 或類圖(Class Diagram) 建模型。本系統(tǒng)中使用類圖對界面組織建模,頁面結構以及各種業(yè)務服務被捆綁到不同的區(qū)域。
2.4 應用部署的規(guī)劃
在 UML 中,系統(tǒng)的體系結構使用部署圖(DeploymentDiagram) 來完成。應用部署的規(guī)劃對于規(guī)劃整個B/ S 系統(tǒng)是很有用的。它確定了一種有效的應用部署的規(guī)劃組織方式,還可以作為一個模式在多個類似B/ S 系統(tǒng)上應用。
2.5代碼實現
在建模完成后,開發(fā)人員利用 Rational ROSE 工具可以生成程序代碼框架,并對代碼框架進行修改和補充,形成完整代碼;而且,還可根據代碼逆向生成 UML模型。這就較好地保證了模型與代碼的一致性。測試必須在整個項目周期中進行,對每個階段都要用所建立的模型進行測試,這樣才能保證開發(fā)的質量,減少開發(fā)的風險。
3 結束語
統(tǒng)一建模語言 UML 是國際軟件工程領域具有劃時代意義的重要成果,適用于以面向對象技術來描述任何類型的系統(tǒng),而且適用于系統(tǒng)開發(fā)的不同階段,從需求規(guī)格描述直至系統(tǒng)完成后的測試和維護。 軟件系統(tǒng)的規(guī)模越來越大 , 復雜度不斷提高 ,RUP 迭代式增量開發(fā)方式可以降低風險 ,同時 可以適應需求變化的需要。 筆者在外國專家管理信息系統(tǒng)的建模和開發(fā)中,將 UML 應用于系統(tǒng)開發(fā)的各個階段,建立了系統(tǒng)的需求模型、靜態(tài)模型和動態(tài)模型。這種基于UML 建模的迭代式開發(fā)方法具有傳統(tǒng)開發(fā)方法無可比擬的優(yōu)點。 UML 建模使系統(tǒng)設計完全面向對象 , 實現了信息封裝、數據抽象。 UML 能夠幫助人們輕松地構造出 B/ S 結構系統(tǒng)的模型。在一定程度上實現了軟件開發(fā)的自動化,實現了設計和編碼的無縫的連接,提高了軟件開發(fā)的效率和質量。