建模對每一位軟件開發人員都不陌生。Rational ROSE建模工具的出現,使程序員從手工建模的工作中解脫出來,並使大型開發項目的分析,建模、設計更加規範化。我們曾經通過《ROSE 技術白皮書》對Rose的可視化建模有了瞭解,從今天開始,我們將循序漸進地指導您如何應用Roe工具完成建模。同時,我們還將提供一個使用Rational Rose UML CASE 工具創建完整的UML模型的範例。對那些想高效地使用和評估Rational Rose工具(而不是其他UML CASE 工具)的新用戶,我們建議做下面的工作:
首先:創建使用Rational Rose CASE 工具(www.rational.com)的圖表和報告,如下所示。
第二:使用Rational Rose——UML CASE 工具在你的問題領域創建一個類似的實例,如一個訂單系統、產品系統,客戶系統,等等。
第三(如果需要),使用其他 UML CASE 工具創建這些實例,以充分比較不同工具的性能。
我們的目標是創建一個系統的正確、可靠、可理解、可擴展、可複用、完整的UML模型。該模型應該混合了可複用的類、組件和模式。這裏提供一個經簡化的銀行存款模型。
從Rational Rose開始
啓動 Rose
選擇菜單File-New,選擇File-SaveAs,將文件另存爲BusinessModel.然後選擇File-New-SaveAs,另存爲Requirements-AnalysisModel;
注意,當Requirements-Analysis(需求分析)完成後要另存爲Design-ImplementationModel(設計-實現模型);
選擇View(視圖)選中Status Bar,Browser, Documentation, As Unified;
選擇Tools-Options-Diagram 選中Stereotype Display(構造型顯示)標籤並選中Show/Display 的所有項目(Three-Tier Diagram除外);
可以在文檔窗口(Documentation Window)爲每個瀏覽器元素(Browser element)鍵入"文檔信息";
可以在圖上增加文本框(text boxes)"ABC"(譯註:ABC 是文本框符號的標誌);
可以在圖上增加註釋;也可以通過"File-Delete"(譯註:似乎應是Edit-Delete)從模型中刪除不正確的元素。Check Model後,選擇Window-Log查看日誌文件;
可以選擇Report-Documentation Report;
選擇Help,查看Rational Rose Help Topics(幫助主題)。
創建Rose 用例圖:在瀏覽器窗口,選擇Use Case View(用例視圖),將"Main"重命名爲"Use Case Diagram",在Use Case View雙擊可以顯示用例圖,在圖上放置參與者(ACTOR)和用例,選擇一種關係連接各元素。
參與者 用例
創建Rose 類圖
在瀏覽器窗口選擇Logical View(邏輯視圖),將“Main”重命名爲“class diagram”;在Class Diagram上雙擊以顯示類圖;
在圖上放置"類";選擇一個"類"然後按鼠標右鍵,選擇New Attribute鍵入屬性;
選擇"類"然後按鼠標右鍵,再選擇:"New Operation"鍵入操作;
從工具條中選擇"泛化"(Generalization)關係箭頭,從子類到超類拖曳,放置一個泛化關係;
從工具條中選擇實現(Realize)箭頭,由實現類向接口拖曳,放置一個實現關係;
從工具條中選擇關聯(Association)箭頭從較大/上級類向較小/從屬類拖曳,放置一個關聯關係;
在離較小/從屬類最近的關聯線上單擊鼠標右鍵,鍵入角色名及角色多重性;
從工具條中選擇菱形的聚合符號,然後從較大/整體類向較小/部分類拖曳,放置一個聚合/組成關係;
在到部分類最近的關聯線上單擊鼠標右鍵,鍵入角色名稱及角色多重性;
從工具條中選擇依賴箭頭,從源/客戶類(source/client class)向目標/供應端(destination/supplier class)拖曳,放置一個依賴(dependency)關係;選擇Tools-Check Model;
選擇Report - Show Usage/Show Instances/Show Access Violations;
選擇 File - Save。
創建Rose 順序圖
在瀏覽器窗口選擇Logical View;
選擇Browse-Interaction Diagram-Logical View-<View>;
選擇Sequence Diagram;
鍵入圖名;
在圖上放置對象(object)以表示類的對象;
雙擊對象並且選擇從下拉列表中選擇類名;
選擇Rose 對象消息(Object Message)符並在兩個對象間拖曳;
雙擊消息,選擇操作。
選擇Tools - Check Model;
選擇Report - Show Unresolved Objects/Show Unresolved Messages;
選擇 File - Save。
-------------------
文章中,我們使用了“統一軟件開發過程”。(參見《The Unified Software Development Process》(Ivar Jacobson,Grady Booch, James Rumbaugh 著)、《The Rational Unified Process An Introduction Second Edition》(Krutchen著))。統一過程生命週期階段圖示如下:
系統/子系統/組件 | 包/類/對象 |
Ⅰ-需求→→ | Ⅱ-分析 |
需求描述/產品性能 | 類圖 |
所有用例的用例圖 | 包圖 |
每個用例場景(scenario)的順序圖 | 順序圖和/或寫作圖 |
每個用例所有場景的活動圖 | 活動圖和狀態圖 |
Ⅳ-實現 | ←←Ⅲ-設計 |
過程環境硬件&軟件 組件圖&部署圖 |
過程環境硬件(HW)&軟件(SW) 更新的類/包/順序/協作/活動/狀態圖 |
---Ⅴ&Ⅵ 構建/測試
下表中總結了在統一過程中不同的模型:
業務模型 | 需求模型 | 分析模型 | 設計模型 | 實現模型; | 測試模型 | |
關鍵UML元素 | 業務過程(用例),業務域對象 | 系統,參與者,用例,交互 | 業務包,類,對象,消息 | 硬件&軟件配置,包,類,對象,消息 | 組件,節點,編碼 | 測試計劃和測試實例 |
主要關注點 | 模型業務 | 黑盒模型系統 | 問題領域模型的業務元素(不含實現細節) | 更新特定實現的分析圖/規約,例如硬件&軟件配置 | 分佈式環境模型物理元素;對應所有需求的編碼 | 單元(類/操作)測試,集成,整個系統測試 |
目標:元素間弱耦合-強內聚 | 充分的業務/企業信息 | 所有用例/場景的充分信息,所有計劃過的增量/迭代。 | 滿足需要的最簡業務/問題領域模型 | 生成最大量代碼或手動編碼需要的足夠的信息 | 界面友好、最適當的組件架構-網絡;滿足所有需求的代碼 | 編碼可滿足所有需求的充分測試 |
靜態/結構性圖 | 業務領域對象 | 顯示參與者的塊圖和用例圖 | 包/類圖 | 包/類圖 | 組件和部署圖;逆向類圖 | - |
動態的/基於時間的圖 | 業務過程(用例) | 每個用例場景的用例圖、順序圖,每個用例的活動圖 | 每個用例場景的順序圖,基於狀態的類的狀態圖,複雜操作的活動圖 | 每個用例場景的順序圖,基於狀態的類的狀態圖,複雜操作的活動圖 | 可選地,顯示分佈式信息的更新順序圖 | - |
關鍵團隊成員 | 業務分析員 | 業務分析員 | 業務分析員 | 開發人員 | 架構師,開發人員 | 開發人員/測試人員 |
模型籤認 | 項目經理,架構師,客戶 | 項目經理,架構師,客戶 | 項目經理,架構師,客戶 | 項目經理,架構師 | 項目經理,架構師 | 項目經理,架構師,客戶(驗收) |
建議的任務/練習:基於統一過程創建一個UML模型。
0 ——業務建模-企業級
評審業務模型:前景文檔,組織結構圖,業務事件和過程(用例),業務參與者,工作人員(worker),實體(域模型),業務規則目錄,業務接口(操作集),業務模式,業務系統體系結構-組件圖,術語表。參見《The Rational Unified Process An Introduction Second Edition》(Krutchen著)及《Business Modeling with UML》(Eriksson 和Penker 著)。
Ⅰ-需求-系統/子系統/組件級(與語言無關的)
1.需求-對需求描述、系統圖(System Drawing),系統塊圖(客戶提供)進行評審。創建系統協作圖[環境圖(Context Diagram)]以說明對象/數據的輸入輸出、設定系統的邊界(可選)。創建需求可追蹤性表,列出需求名、需求號、引用、用例、UML元素、測試實例、描述、職責,等等(可選)。評審管理計劃、時間表、風險、命名/編碼標準、方法設計-UML 過程/構造型/特徵/約束(可選)。
2.所有用例-創建用例圖說明所有用例。說明用例關係(包含,擴展、泛化)和/或分級用例(從高級到細節)(可選)。確定用例的增量和迭代。
3.每個用例-爲每個用例創建用例規約描述:用例名、觸發、輸入、輸出、前置條件/異常、後置條件/異常,基本的和替代性可選場景【從樂觀到悲觀】、業務規則。爲每個用例場景創建順序圖(可選)。爲每個用例創建輸入/輸出表和測試實例(可選)。
4.每個用例所有的場景-爲每個用例創建活動圖說明所有的用例場景(樂觀到悲觀)。用文本、流程圖或其他圖說明每個用例的場景/路徑(可選)。
5.信息--創建產品性能(Product Capabilities)列出非功能性的需求:可用性(可靠性、性能、安全、人員因素),一般性(generality)、可移動性、兼容性,時間,空間,存儲等等。創建一個語義數據模型(高級類/包圖)(可選)。
Ⅱ-分析-類和對象級(與語言無關的)
6.類和包-創建候選類清單,CRC 卡,類圖和包圖。創建對象圖顯示屬性值(可選)。
7.對象和消息-爲每個用例-樂觀場景創建順序圖。爲所有其他用例場景創建順序圖(可選)。或者,爲每個用例創建協作圖。
8.狀態和轉移-爲每個基於狀態的類創建狀態圖,說明狀態、事件、條件、動作。
9.操作-爲每個複雜的操作創建一個操作規約,說明前置條件、轉換,後置條件,以及異常。爲每個複雜操作創建活動圖,說明活動的順序、狀態、條件和動作(可選)。
III -設計-類和對象級(特定的過程環境下的)
10.過程環境-創建由已計劃的"實現硬件和軟件配置清單"組成的goig過程環境:操作系統,語言,類庫,組件,GUI,分佈--對象請求代理,永久數據存儲,等等。可列出潛在的模式,組件標準((Active X, Java Bean, CORBA),命名約定,編碼標準,代碼生成腳本,工具(CASE, 編譯器,配置管理,測試等等)(可選)。
11.更新的分析圖及規約-更新所有圖表和說明,爲過程環境增加細節,包括數據類型,參數/返回值,支持類,操作細節(前置條件/異常)轉換,後置條件/異常),等等。提供了實現模式,例如多態操作,異常(異常的超類/子類),線程,數據訪問,事務,安全,消息隊列等等。目標是:圖和規約爲手工編碼或代碼生成提供正確的信息(可選)。
Ⅳ 實現-系統/子系統/組件級(特定過程環境下的)
12.實施過程環境,組件標準和組件模式-更新過程環境,顯示已提供的組件(GUI,數據訪問,事務,分佈,消息隊列,安全等)、組件標準(ActiveX, Enterprise Java Bean,CORBA)、組件到組件模式,例如小的單個操作組件、基於組件的類、每一用戶-實體組件,基於組件的包,大的多包組件。
13.實施組件-創建組件圖顯示所有需要的帶有依賴關係的組件和文件,例如.EXE, DLL, .OCX, .LIB, .TXT, .HLP等等。顯示接口(棒棒糖)、創建接口圖顯示公有操作(exposed operation)(可選)。顯示IDL 代碼(Interface Definition Language,接口定義語言)例如 CORBA IDL, Microsoft IDL, Java(可選)。
14.實施節點(處理器和設備)- 創建部署圖,顯示所有需要的處理器、設備和其他器材,例如客戶網絡計算機(NC),Windows PC, NT Server,事務服務器,WEB 服務器,郵件服務器,傳真,打印機,網絡等。
V -構建
15.編碼標準和代碼生成腳本-更新編碼標準和代碼生成腳本.編碼標準爲所有主要UML元素編碼列出了樣本代碼、關係以及繼承策略、接口、異常、線程等。
16.每個組件的編碼、圖表逆向工程
VI - 測試
17.測試計劃-更新測試計劃,列出測試實例(名稱,輸入,輸出,條件),測試步驟(每一個測試用例的每一步用法),測試組件【驅動器(driver),測試裝置(harnesses),腳本】
18.測試-引導測試(conduct tests),例如類/操作測試(單元測試),個體組件測試(基於用例的),全範圍系統-多組件測試(基於用例的集成/驗收測試)。
VII - 模型和構建其他需要的組件
19.圖形用戶接口/用戶/外部接口組件-可選的-創建GUI 組件(窗口,菜單,對話框,面板)
20.永久存儲組件的-可選的-數據存儲表/存儲過程/觸發器。
小結
當我們開始一項工作時,並不知道接下來會發生什麼。我們關心的只是如何能出色地完成這項工作。現在,我們已經安裝了Rational Rose,並從頭開始創建了類圖,下面的工作將是“使用Rational CASE”,這纔是重點。
『引自 UMLCHINA』