文章目录
  1. 1. 基本知识
  2. 2. 用例
    1. 2.1. 业务用例:
    2. 2.2. 业务用例实现(业务用例实例):
    3. 2.3. 概念用例:
    4. 2.4. [系统]用例:
    5. 2.5. [系统]用例实现:
  3. 3. 业务实体
  4. 4.
    1. 4.1. 领域包
    2. 4.2. 子系统
    3. 4.3. 组织结构
    4. 4.4.
  5. 5. 分析类(架构角度)
    1. 5.1. 边界类
    2. 5.2. 控制类
    3. 5.3. 实体类
  6. 6. 设计类
  7. 7. 关系
    1. 7.1. 关联
    2. 7.2. 依赖
    3. 7.3. 扩展
    4. 7.4. 包含
    5. 7.5. 实现
    6. 7.6. 精化
    7. 7.7. 泛化
    8. 7.8. 聚合
    9. 7.9. 组合
  8. 8. 组件
    1. 8.1. 特征
  9. 9. 节点

基本知识

  • 功能性需求、非功能性需求

    功能性需求:一定有参与者(主角)
    非功能性需求:找不到参与者

  • 涉众、参与者、用户

    涉众:与要建设的这个系统有利益相关的一切人和事。

    参与者是涉众的代表,用户是参与者的代表;

  • 角色:

    参与者的职责,从众多参与者职责中抽象出相同的那部分,将其命名。

用例

  • 特征:

    相对独立,即不需要与其他用例交互而独自完成参与者的目的;
    执行结果对参与者来说有意义,可观测。Eg:登陆系统<->填写密码;
    参与者发起;
    动宾短语;
    一个用例就是一个需求单、分析单元、设计单元、开发单元、测试单元、部署单元。【用例驱动】
    
  • 粒度:

    业务建模阶段:可以说明一件完整的 事情 为宜;
    用例分析阶段(概念建模阶段):可以描述一个完整的 事件流 为宜。
                            简言之,可以描述一个完整业务中的一个 步骤;
    系统建模阶段:因视角是针对计算机的,故能够描述操作者与计算机的一次交互为宜;
                  简言之,一个操作界面或一个页面流。
    
  • 用例和功能区别:

    用例:从人的角度;面向对象
    
    功能:从计算机角度;面向过程;其描述缺乏上下文环境,一些功能根本没有人会用到;
    
    对于不存在的事物,我们无法从结构和功能上描述,只能用使用者的观点来描述;
    
  • 总结:

    功能是脱离使用者愿望而存在的;
    
    功能是孤立的,给一个输入,通过计算就有一固定的输出;用例是系统性的工作,即谁在什么情况下通过什么方式做什么,
    结果(愿望)是什么;
    
    用例可以看成是 一系列功能组合来完成一个特定的目标,针对不同场景,组合方式不同。
    
    Eg:电视
              功能:能开关,能显示,能调频道,调声音;
              用例:我要看电视节目,要完成这个愿望:
                                              1、开电视;
                                              2、调频道;
                                              3、声音不合适,可以调声音;
    

业务用例:

  • 用于需求阶段的业务建模。(客户业务视角)

    业务用例实现(业务用例实例):

  • 业务用例的一种实现方式。 类比于编程中类和接口的关系,同一个接口可以有多个实现类。

概念用例:

  • 概念用例用来获取业务用例中的核心业务逻辑。
  • 概念用例是业务用例到系统用例(即我们天天挂在嘴边的用例)过渡时非常重要的指导。

    [系统]用例:

  • 即我们天天挂在嘴边的用例;
  • 用来定义系统范围,获取功能需求的;
  • 简言之,软件系统开发的全部范围,我们得到的最终需求。(系统视角)

[系统]用例实现:

  • 参照上面“业务用例实现”
  • 连接起用例模型和系统实现之间的桥梁。

业务实体

  • 来自现实世界的;
  • 业务用例场景中使用的事物;
  • 类的版型,具有对象所有性质。

业务实体属性:

面向对象方法中抽象视角的体现

业务实体方法:

面向对象方法中抽象视角的体现,
简言之,属性,方法很多,我们只关心特殊场景(用例)下与这个场景直接关联的属性和方法。


简言之,参与者代表人,用例代表事,业务实例代表物;

  • 一种容器,如文件夹,将信息分类,形成逻辑单元。
  • 可以容纳任何UML元素;
    Eg:用例、业务实体、类图、子包;
  • 分包的好(高内聚低耦合)坏(双向依赖和循环依赖)评判标准是包之间的依赖关系;

  • 包之间的关系也只有依赖关系;

领域包

分类业务领域内的业务单元,每个包代表一个领域

子系统

分类系统内逻辑对象并形成子系统

组织结构

分类业务领域中组织结构

分类软件中的层次

分析类(架构角度)

  • 分析类代表系统中主要“职责簇”。简言之,是从功能性需求向计算机实现转化过程中的“第一个关口“
  • 可以产生系统的设计类和子系统。简言之,系统可以通过某种途径“产生出来”,不是拍脑袋拍出来的。
  • 简言之,跨越需求阶段到设计实现的桥梁。

特点:

  • 高于设计实现:
    不理会复杂的设计要求,Eg:设计模式、框架;
  • 高于语言实现:
    不理会编程语言;
  • 高于实现方式:
    不理会具体实现方式,Eg:安全认证,实现方式有:LDAP,CA,JAAC等。

边界类

用于展现层(架构角度)

控制类

用于业务逻辑层(架构角度)

实体类

用于持久层(架构角度)

设计类

对应的对象取决于编程语言;
简言之,就是编程语言中具体的类;

关系

关联

  • 静态关系,由“常识”、“规则”、“法律”等因素决定
  • A————————B,双方都知道对方的存在
  • 特别的,用例模型中,参与者——>用例
  • 体现在代码里:实例变量(成员变量)

依赖

  • 临时,动态关系
  • A- - - - ->B (A依赖于B)
  • 体现在代码里:类构造方法、类方法等的传入参数;

扩展

<<extend>>
  • A– – – – – – – - ->B ( A扩展出B)
  • 用于在用例中项目基本用例中的某个扩展点插入扩展用例;
  • 可选;
  • 特定条件下发生;

包含

<<include>>
  • A– – — – – – – ->B ( A包含B)
  • 分解出两个或更多个用例共有的行为。

扩展,包含区别:

* 扩展“可选”,包含“必须”;
* 没有扩展用例,基本用例完整;
* 没有包含用例,基本用例不完整;
* 没有基本用例,扩展用例和包含用例均不能单独存在;

实现

  • A– – – – – –▷B (A实现B)
  • 用例和用例实现间用这种关系;

精化

<<refine>>
  • A– – – – – – – –>B ( A精化了B)
  • 设计类精化了分析类
  • 基本用例可以分解出许多更小的关键精化用例,这些精化用例更细致展现了基本用例的核心业务;

泛化

  • A————————▷B ( A继承了B)
  • 建模过程中任意阶段均可使用;

精化、泛化区别:

* 精化表示由基本对象可以分解为更精确、精细的对象,这些子对象没有增加、减少、改变基本对象的行为和属性,只是更加细致和
明确了;

* 泛化表示由基本对象泛化的子对象继承了基本对象的所有特征,且可以增加、改变基本对象的行为和属性;

聚合

  • A————————♢B ( A聚合到B,B由A组成)
  • 用于类图,特别表示实体对象间关系;
  • 表达整体由部分构成

组合

  • A————————♦B ( A组合成B,B由A构成)
  • 用于类图,特别表示实体对象间关系;
  • 表达整体拥有部分
  • 特别强调:Rose中用 <——————◇ 表示;

聚合、组合区别:

* 聚合:整体部分 “弱依赖”,整体不存在了,部分仍然存在;Eg:部门撤销后,人员依然存在;
* 组合,整体部分 “强依赖”,整体不存在了,部分将消亡  ;Eg:母公司解体,子公司也破产;

组件

  • 组件是系统中实际存在可更换的部分,它实现特定的功能,符合一套接口标准并实现一组接口;
  • 代表系统中一部分物理实施,包括软件代码(源代码、二进制代码)或其等价物(脚本或命令文件);

特征

  • 完备性

    包含的一些类和接口,一个组件能独立完成一项特定的业务目标;
    从调用者观点出发:不需调用多个组件来完成一个业务请求;

  • 独立性

    组件间是松耦合的;

  • 逻辑性

    从软件构件设计的观点来定义的,并非从需求中可直接导出;

  • 透明性

    组件的修改应当涉及组件的定义以及组件中包含类的重新指定,而不应该导致类的修改;

节点

  • 至少有一个处理器、内存以及可能还带有其他设备的处理元素;
  • 实际生活中,服务器、工作站、客户机都可以作为节点;
  • 应用于部署视图
  • 应用:分布式应用环境、多设备应用环境

参考资料:《Thinking in UML》(大象书)

文章目录
  1. 1. 基本知识
  2. 2. 用例
    1. 2.1. 业务用例:
    2. 2.2. 业务用例实现(业务用例实例):
    3. 2.3. 概念用例:
    4. 2.4. [系统]用例:
    5. 2.5. [系统]用例实现:
  3. 3. 业务实体
  4. 4.
    1. 4.1. 领域包
    2. 4.2. 子系统
    3. 4.3. 组织结构
    4. 4.4.
  5. 5. 分析类(架构角度)
    1. 5.1. 边界类
    2. 5.2. 控制类
    3. 5.3. 实体类
  6. 6. 设计类
  7. 7. 关系
    1. 7.1. 关联
    2. 7.2. 依赖
    3. 7.3. 扩展
    4. 7.4. 包含
    5. 7.5. 实现
    6. 7.6. 精化
    7. 7.7. 泛化
    8. 7.8. 聚合
    9. 7.9. 组合
  8. 8. 组件
    1. 8.1. 特征
  9. 9. 节点