Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Uml

955 views

Published on

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

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>

×