軟件工程筆記:主要UML模型圖繪製技巧

主要UML模型圖繪製技巧

— 筆記整理自 北京理工大學 計算機學院

用例圖與用例分析

  • 用例分析技術是Ivar Jacobson於1986年總結髮布的一項源於實踐的需求分析技術
  • 用例圖對系統、子系統或類與外部參與者的交互行爲進行了可視化
  • 爲軟件需求規格化提供了一個可驗證可度量的基本元素
  • 是項目計劃、進度控制、測試等環節的基礎
  • 用例圖可以使開發團隊與客戶之間的交流更加順暢
  • 用例分析技術的核心是用例描述而不是用例

用例圖元素

  • 參與者(actor):代表系統用戶,驅動系統運轉
  • 系統邊界(system scope):確定系統的範圍
  • 用例(use case):代表系統提供的服務
  • 關係(association):關聯、包含,擴展與泛化

備註:圖片託管於github,請確保網絡的可訪問性

用例描述

  • 前置條件:指在用例啓動時,參與者與系統應置於什麼狀態,這個狀態應該是系統能夠檢測到的、可觀測的
  • 後置條件:用例結束時,系統應置於什麼狀態,這個狀態也應該是系統能夠檢測得到的、可觀測的
  • 基本事件流:基本事件流是對用例中常規、預期路徑的描述,也被稱爲Happy day場景,即大部分時間所遇到的場景;它將體現系統的核心價值
  • 擴展事件流:主要是對一些 異常情況和選擇分支的描述

UML用例

  • 用例是用戶與計算機之間爲達到某個目的的典型交互
  • 用例的執行結果對參與者來說是可觀測的和有意義的
  • 用例必須由一個參與者發起
  • 用例應以動賓短語形式命名
  • 用例是指對系統提供的功能的描述
  • 用例對應一個層次性用戶目標
    • 概要級
    • 目標級
    • 子功能級

如何獲取參與者

  • 誰使用系統的主要功能(主要使用者)?
  • 誰需要系統支持他們的日常工作?
  • 誰來維護、管理系統使其能正常工作(輔助使用者)?
  • 系統需要控制哪些硬件?
  • 系統需要與其他哪些系統交互?
  • 對系統產生的結果感興趣的是哪些人?

如何獲取用例

  • 參與者要求系統提供哪些功能?
  • 參與者需要讀、產生、刪除、修改或存儲系統中的信息有哪些類型?
  • 必須提醒參與者的系統事件有哪些?
  • 參與者必須提醒系統事件有哪些?
  • 怎樣把這些事件表示成用例中的功能?

編寫用例時的建議

  • 使用簡單的語法,主語明確,語義易於理解
  • 明確寫出"誰控制球":在事件流描述中,讓讀者直觀地瞭解是參與者在控制還是系統在控制
  • 從俯視角度編寫,即從第三者的角度:指出參與者的動作,以及系統的響應,顯示過程
  • 向前推移:每一步都有前進的感覺
  • 顯示參與者的意圖而非動作

學習用例分析技術

  • 學習用例分析技術的"守、破、離"的三個階段:
    • 守:練習基本功夫,遵循規則,照章行事
    • 破:能突破傳統,因地制宜地靈活應用
    • 離:超脫任何招式與規則,達到無招勝有招的境界
  • 把捕獲的需求整理爲易理解的用例圖(圖形化)
    • 識別參與者
    • 識別用例
    • 構建用例圖
  • 補充用例描述(詳細完整的描述需求)
  • 重構用例(識別用例間關係,組織用例)

擴展

設計模式作爲一種傳承下來的面向對象設計經驗,一直得到程序員們的喜愛。是否掌握Gof23種設計模式甚至一度作爲衡量程序員水平的標誌之一。

然而,To A Man with a Hammer, Everything Looks Like a Nail.

於是,有人在"Hello world”程序中使用了4種設計模式。還有人想在一個程序中用盡 23 個 GoF 設計模式,據說失敗了,因爲他們只能使用 20 個。所以他們希望客戶能讓他們接着寫程序,也許能再擠進去另外 3 個。

他們是怎麼了?中毒了麼?跟着下面的鏈接去看看到底是怎麼回事。但是,請不要失去對提高自己面向對象分析設計能力的信心。

設計模式有毒??

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章