UML建模(七)需求啓發、分析之分析類圖

1.需求啓發要點

  • 和涉衆交流的形式應該採用視圖,而不是模型
  • 和涉衆交流的內容應該聚焦涉衆利益,而不是需求
  • 需求啓發手段:研究資料、問卷調查、訪談、觀察、研究競爭對手
  • 需求人員的素質培養:好奇心、探索力、溝通力、表達力、熱情

2.分析之分析類圖

2.1識別類和屬性

  • 核心域和非核心域:一個軟件系統封裝了若干領域的知識,其中一個領域的知識代表了系統的核心競爭力,是系統和其他系統區分的關鍵所在。 這個領域稱爲"核心域",其他領域稱爲"非核心域"。
  • 基於核心域的複用:設計的目的就是複用
  • 軟件開發史,就是不不斷複用級別的歷史
  • 基於核心域的複用有一定的難度:因爲能帶來利潤的系統,被迫關注的領域比較多,負載比較高
  • 要達到基於核心域的複用、有必要將核心域和非核心域分開考慮、將分析和設計分開考慮
  • 同一個核心域可能要映射到多個互相競爭的非核心域
    -人腦的容量和運算速度有限,待解決問題規模變大,就必須分而治之
  • 核心域知識和非核心域知識是獨立的,域和域之間的映射規律,與域中的個體不直接相關
  • 和只有自上而下順序的文本相比,二維圖形更容易讓開發人員看出這些類之間的規律,更好地切割系統


  • 有利潤的系統, 其內部都是複雜的
  • 對象封裝了數據和行爲
  • 對象封裝了數據和行爲


  • 三種分析類的責任、和用例的關係以及命名。


  • 控制類是可選的,如果在分配責任時只起到傳遞的作用,沒有起到分解和分配的作用,可以刪除調


  • 針對用例規約提煉類

-在分析工作流中,系統概念被打碎成各個類,所以系統這個詞不需要識別成類


  • 分析類雖然不包含設計工作流的知識,但是它是設計工作流的基礎

2.2識別分析類和屬性的要點

  • 中英文命名根據場景確定

  • 命名中不要到冗餘信息(類、情況、信息、記錄、數據、表、庫、單)



  • 屬性名稱前不要加類名


  • 英文用單數

  • 命名要一致

  • 不要類圖長的象用例圖

  • 不要類長得像過程

  • 不要類長得像報表

  • 使用核心域術語(涉衆關心的是涉衆利益,不關注系統需求)

  • 用核心域透鏡的方式思考問題,從核心域視角去看所有的事情


  • 屬性要直接描述類(任何非主屬性不依賴於其他非主屬性)

  • 分析類中不需要主鍵、外鍵屬性


  • 屬性在本領域內不可以在分解
    1.複雜屬性(分不分離的理由:是否另一個領域而不是 是否簡單)
    2.多重性大於1的屬性


  • 屬性對所有對象都有意義

2.3識別類之間的關係

  • 類的關係:
    1.泛化
    2.關聯(普通關聯、聚合、組合)


3.依賴


  • 泛化和關聯的區別:
    1.泛化表示集合關係
    2.關聯表示個體關係
    3.集合關係還是個體關係,這是泛化和關聯的本質區別



  • 識別泛化的思路:
    1.直接形成
    2.自下而上(從特殊到一般)



    3.自上而下(從一般到特殊)

  • 儘量不要跨領域使用泛化關係
  • 引入聚合/組合,相當於把類圖分區,每個區找一個區長作爲責任分配的起點


  • 識別關聯的思路:
    和泛化不同的是,關聯不只是發生在不同的類之間,還可以發生在同一個類上,即自反關聯。
    1.關聯是系統維護的關係



    2.關聯名或角色名(聚合/組合關聯經常被認爲不需要關聯名或角色名,其實也是需要的)



    3.導航方向(關聯可以是雙向的,兩端的對象都可以通過關聯導航到另一端;關聯也可以是單向的,只有其中一端能訪問另一端)

    4.多重性

    5.自反關聯(當關聯的兩端是同一個類時,這個關聯就是自反關聯。)



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