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.自反关联(当关联的两端是同一个类时,这个关联就是自反关联。)



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