Uml

886 views
813 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
886
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Uml

  1. 1. 張書源 [email_address] 趨勢科技 技術經理 集英信誠 資深架構顧問
  2. 2. <ul><li>模型化軟體架構 </li></ul><ul><li>支援 UML 2.0 的模型圖 </li></ul><ul><ul><li>使用案例圖表 (Use case diagram) </li></ul></ul><ul><ul><li>活動圖表 (Activity diagram) </li></ul></ul><ul><ul><li>元件圖表 (Component diagram) </li></ul></ul><ul><ul><li>類別圖表 (Class diagram) </li></ul></ul><ul><ul><li>順序圖表 (Sequence diagram) </li></ul></ul><ul><li>範例下載: http://cid-155f8cb309a06348.office.live.com/self.aspx/%e7%a0%94%e8%a8%8e%e6%9c%83/2010^_06^_24^_MSDN^_ UML.rar </li></ul>
  3. 3. <ul><li>作為軟體系統或應用程式之整體結構和行為描述的一部分 </li></ul><ul><ul><li>模型應該搭配其他文件或討論一起使用 </li></ul></ul><ul><ul><li>模型本身無法代表完整的架構規格 </li></ul></ul><ul><li>系統架構 </li></ul><ul><ul><li>高階設計 (High-Level Design) </li></ul></ul><ul><ul><li>設計模式 (Design Patterns) </li></ul></ul>
  4. 4. <ul><li>支援 UML 2.0 的模型圖 </li></ul><ul><ul><li>使用案例圖表 (Use case diagram) </li></ul></ul><ul><ul><li>活動圖表 (Activity diagram) </li></ul></ul><ul><ul><li>元件圖表 (Component diagram) </li></ul></ul><ul><ul><li>類別圖表 (Class diagram) </li></ul></ul><ul><ul><li>順序圖表 (Sequence diagram) </li></ul></ul><ul><li>Visual Studio 2010 自訂模型圖 </li></ul><ul><ul><li>圖層圖表 (Layer diagram) </li></ul></ul><ul><ul><li>相依圖表 (Dependence diagram) </li></ul></ul>
  5. 5. <ul><li>使用案例圖表 </li></ul><ul><ul><li>系統支援的使用者目標和工作 </li></ul></ul><ul><li>活動圖表 </li></ul><ul><ul><li>商務程序中動作與參與者之間的工作流程 </li></ul></ul><ul><li>順序圖表 </li></ul><ul><ul><li>物件、元件、系統或動作項目之間的互動順序 </li></ul></ul><ul><li>元件圖表 </li></ul><ul><ul><li>系統、其介面、通訊埠和關聯性的元件 </li></ul></ul><ul><li>類別圖表 </li></ul><ul><ul><li>系統及其關聯性中用來儲存和交換資料的類型 </li></ul></ul>
  6. 7. <ul><li>建立系統或應用程式與人員、組織或外部系統進行互動的案例。 </li></ul><ul><li>協助達成動作項目的目標。 </li></ul><ul><li>系統的範圍。 </li></ul>
  7. 8. <ul><li>動作項目 (Actor) </li></ul><ul><ul><li>與系統互動的人員、組織、裝置或外部軟體元件的類別 </li></ul></ul><ul><li>使用案例 (Use Case) </li></ul><ul><ul><li>一個或多個動作項目為追求特定目標所執行的動作 </li></ul></ul><ul><li>關聯 (Associate) </li></ul><ul><li>系統 (System) </li></ul><ul><ul><li>開發的任何系統 </li></ul></ul>
  8. 9. <ul><li>在動作項目間使用 Generalization 連結 </li></ul><ul><ul><li>特製化動作項目,會繼承一般化動作項目的使用案例 </li></ul></ul><ul><ul><li>箭頭應指向更普通的動作項目 </li></ul></ul><ul><ul><li>特製化動作項目可以額外擁有專用的使用案例,其他動作項目無法使用 </li></ul></ul>
  9. 10. <ul><li>Include ( 包含 ) </li></ul><ul><ul><li>顯示某一個使用案例描述另一個使用案例的部分詳細資料 </li></ul></ul>
  10. 11. <ul><li>Generalization ( 一般化 ) </li></ul><ul><ul><li>將一組擁有相同目的之使用案例予以組織化的程序 </li></ul></ul><ul><ul><li>開放式箭頭應指向更普通的使用案例 </li></ul></ul>
  11. 12. <ul><li>Extend ( 擴充 ) </li></ul><ul><ul><li>某一個使用案例在某種情況下可將功能加入至另一個使用案例中 </li></ul></ul><ul><ul><li>箭號應指向擴充的主要使用案例箭號應指向擴充的主要使用案例 </li></ul></ul>
  12. 13. <ul><li>「 角色 」 (Role) 是指位於關聯的其中一端的項目 </li></ul><ul><ul><li>[ 1 ] ,表示這個角色只有一個執行個體參與每一個連結。 </li></ul></ul><ul><ul><li>[ 1..* ] ,表示這個角色有一個或多個執行個體參與每一個連結。 </li></ul></ul><ul><ul><li>[ 0..1 ] ,表示可選擇性參與。 </li></ul></ul><ul><ul><li>[ * ] ,表示這個角色有零或多個執行個體參與此連結。 </li></ul></ul><ul><li>多重性採用預設值 1 </li></ul>
  13. 14. <ul><li>建立使用案例圖 </li></ul>
  14. 15. <ul><li>活動圖用途 </li></ul><ul><ul><li>描述使用者與系統之間的商務程序或工作流程 </li></ul></ul><ul><ul><li>描述在使用案例中執行的步驟 </li></ul></ul><ul><ul><li>描述軟體中的方法、函式或作業 </li></ul></ul><ul><li>流程種類 </li></ul><ul><ul><li>控制流程 </li></ul></ul><ul><ul><li>並行流程 </li></ul></ul><ul><ul><li>資料流程 </li></ul></ul>
  15. 16. <ul><li>動作 (Action) </li></ul><ul><li>連接器 </li></ul><ul><ul><li>控制流程 (Control Flow) </li></ul></ul><ul><ul><li>資料流程 (Data Flow) </li></ul></ul><ul><li>決策節點 </li></ul><ul><ul><li>輸入的 token 只會出現到其中一個輸出 </li></ul></ul><ul><li>合併節點 </li></ul><ul><ul><li>任何輸入的 token 都會出現在輸出中 </li></ul></ul>
  16. 17. <ul><li>針對使用者、系統或兩者共同執行的每個主要工作 </li></ul><ul><li>詳細定義動作 </li></ul><ul><ul><li>在 [ Body ] 屬性中撰寫更詳細的描述 </li></ul></ul><ul><ul><li>建立呼叫行為動作 </li></ul></ul><ul><ul><ul><li>  [ Is Synchronous ] 屬性 </li></ul></ul></ul><ul><ul><li>設定動作的 [ Local Postconditions ] 和 [ Local Preconditions ] 屬性 </li></ul></ul>
  17. 18. <ul><li>描述傳入和傳出活動的資料 </li></ul><ul><ul><li>使用 [ 物件節點 ] </li></ul></ul><ul><ul><li>使用 [ 輸出連接 ] 和 [ 輸入連接 ] </li></ul></ul><ul><li>物件節點 </li></ul><ul><ul><li>Type 屬性 </li></ul></ul><ul><ul><li>Ordering 屬性 </li></ul></ul><ul><ul><li>Selection 屬性 </li></ul></ul>
  18. 19. <ul><ul><li>使用 [ 輸出連接 ] 和 [ 輸入連接 ] 建立資料流程 </li></ul></ul><ul><ul><li>兩個連接之間的連接器代表物件流程 </li></ul></ul><ul><ul><li>每個連接的名稱表示物件的角色 </li></ul></ul><ul><ul><ul><li>例如:參數名稱 </li></ul></ul></ul><ul><ul><li>所傳遞物件必須相容,或是透過轉換 活動改變型別 </li></ul></ul><ul><ul><ul><li>建立轉換活動 </li></ul></ul></ul><ul><ul><ul><li>使用註解 </li></ul></ul></ul>
  19. 20. <ul><li>分岔節點 (Fork) </li></ul><ul><ul><li>將控制項的執行緒分成兩個或多個執行緒 </li></ul></ul><ul><ul><li>前一個動作結束時,就可以開始進行位於分岔之輸出端的所有動作 </li></ul></ul><ul><li>連結節點 (Join) </li></ul><ul><ul><li>將並行執行緒合併在一起 </li></ul></ul><ul><ul><li>等到指向 [ 聯結節點 ] 的所有動作完成之後才會開始進行 </li></ul></ul><ul><li>多個資料流程 </li></ul><ul><ul><li>藉由來自某個動作的多個控制流程或物件流程,表示此動作結束時將出現多個執行緒 </li></ul></ul>
  20. 22. <ul><li>命名慣例 </li></ul><ul><ul><li>整個活動的名稱與包含使用案例的名稱相同 </li></ul></ul><ul><ul><li>活動圖表中動作的名稱與被包含使用案例的名稱相同 </li></ul></ul>
  21. 23. <ul><li>建立活動圖表 </li></ul>
  22. 24. <ul><li>順序圖表用途 </li></ul><ul><ul><li>描述系統介面的主要元件如何互動,完成每個使用案例的目標 </li></ul></ul><ul><ul><li>描述元件的內部各部分如何互動,來達到每個傳入訊息所需要的結果 </li></ul></ul>
  23. 25. <ul><li>每個圖表都應顯示一個初始化事件所產生的互動序列 </li></ul><ul><li>生命線可以表示 </li></ul><ul><ul><li>程式碼中已存在或正在開發的物件 </li></ul></ul><ul><ul><li>系統和外部動作項目 </li></ul></ul><ul><li>訊息可以表示 </li></ul><ul><ul><li>程式碼中位於 API 或 Web 介面上的軟體訊息 </li></ul></ul><ul><ul><li>異動或子異動,例如使用者與系統之間或程式碼與資料庫之間的異動 </li></ul></ul>
  24. 26. <ul><li>合併片段是由一個或多個「 互動運算元 」 (Interaction Operand) 所構成 </li></ul><ul><li>顯示迴圈、分支和其他替代項目 </li></ul><ul><li>常用合併片段 </li></ul><ul><ul><li>Opt :選擇性。包圍不一定會發生的序列 </li></ul></ul><ul><ul><li>ALT :包含片段清單,任何情況下都只會發生一個序列。 </li></ul></ul><ul><ul><li>Loop :片段會重複執行幾次。您可以在成立條件中指出重複執行的條件 </li></ul></ul>
  25. 27. <ul><li>建立順序圖表 </li></ul>procedure Dispatch foreach(lineitem) if(product.value > 10000) careful.dispatch else regular.dispatch end if end for if(needsConfirmation) messenger.confirm end procedure
  26. 28. <ul><li>顯示軟體系統的結構 </li></ul><ul><ul><li>內部項目已隱藏 </li></ul></ul><ul><li>「 提供的介面 」 (Provided Interface) </li></ul><ul><ul><li>可提供由該元件實作,且其他元件可以使用的作業 </li></ul></ul><ul><li>「 需要的介面 」 (Required Interface) </li></ul><ul><ul><li>需要由其他元件或外部系統提供的作業或服務群組 </li></ul></ul>
  27. 30. <ul><li>使用元件圖表 </li></ul>
  28. 31. <ul><li>提供與實作無關的型別說明 </li></ul><ul><ul><li>可在系統中使用,並在元件之間傳遞 </li></ul></ul><ul><li>釐清應用程式與使用者之間通訊所使用的字彙 </li></ul><ul><li>Classifier </li></ul><ul><ul><li>類別、介面或列舉的一般名稱 </li></ul></ul><ul><ul><li>使用案例和動作項目也屬於 Classifier </li></ul></ul><ul><li>封裝 (Package) </li></ul><ul><ul><li>一組 Classifier 、關聯、動作、生命線、元件和封裝 </li></ul></ul>
  29. 32. <ul><li>UML 類別圖表 </li></ul><ul><ul><li>從 [ UML 模型總管 ] 中將該類別拖曳至其他圖表 </li></ul></ul><ul><li>元件圖表 </li></ul><ul><ul><li>從 [ UML 模型總管 ] 中將該元件拖曳至類別圖表。它將顯示為類別 </li></ul></ul><ul><li>UML 順序圖表 </li></ul><ul><ul><li>從順序圖表中的生命線建立類別和介面 </li></ul></ul><ul><ul><li>每個生命線都表示物件、元件或動作項目的執行個體 </li></ul></ul>
  30. 33. <ul><li>屬性和關聯 </li></ul><ul><ul><li>最好只針對不會在圖表上繪製的型別 ( 例如基本型別 ) 使用屬性 </li></ul></ul>
  31. 34. <ul><li>繼承 </li></ul><ul><ul><li>覆寫作業 </li></ul></ul><ul><li>實現 </li></ul><ul><ul><li>  [ 顯示為棒棒糖符號 ] </li></ul></ul>
  32. 35. <ul><li>封裝 </li></ul>
  33. 36. <ul><li>建立類別圖 </li></ul>

×