画图工具:
OmniGraffle:https://www.omnigroup.com/download/
用例图
从用户的角度而不是从开发者的角度来描述需求,分析产品的功能和动态行为。
基本元素
用例
关联关系
参与者与参与者间的泛化关系:
比如腾讯用户,包括微信用户和QQ用户两部分,但是使用腾讯业务时,只需要是腾讯用户即可。
此时,可以采用泛化关系,采用三角空心箭头作为指向。
参与者与用例间的关联关系:
参与者与用例间是简单的关联关系,一个参与者可以有着多个用例。
用例与用例间的泛化关系:
用例之间可以存在泛化关系,比如常见的支付,可以选择微信支付、支付宝支付等等,但是这个操作就是支付。
泛化关系采用三角空心箭头。
用例与用例间的包含关系:
包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤。
- 通常可以这么理解,由基础用例向复杂用例转换的过程。
但是最终被参与者直接操作的还是基础用例。
包含关系的图形为虚线箭头加
<<include>>
,箭头指向复杂用例。
用例与用例间的扩展关系:
扩展关系是指用例功能的延伸,相当于为基础用例提供一个附加功能。
当特定条件出现时,该扩展用例的行为才会被执行。
扩展关系的图形为虚线箭头加上
<<<exclude>>>
,箭头指向基础用例。
简单案例
类图
泛化关系:在代码中体现为继承关系,设计上用空心箭头实线表示。
实现关系:在代码中体现在接口和实现关系,设计上用空心箭头虚线表示。
关联关系:在代码中体现为两个类之间存在语义上的关系,体现在类之间存在的隐约关系。
- 关联关系常用于数据库表的设计,与数据库范式相对应。
1、单向关联:
学生可以拥有书籍,学生知道书籍的存在,但是书籍无需知道学生的存在,学生可以拥有多本书籍,因此从学生指向书籍关联。
设计上用箭头实线表示。
2、双向关联:
- 学生知道老师的存在,老师知道学生的存在。
设计上用实线表示。
聚合关系:特殊的关联关系,体现整体和部分的关系,设计上用空心菱形实线箭头表示。
部门不存在,员工仍然可以存在,员工离职,部门仍然存在。
- 体现的是0和n,整体和部分,整体不存在,部分仍然可以存在。
组合关系:特殊的关联关系,和聚合关系类似,体现整体与部分关系,设计上用实心菱形实现箭头表示。
- 公司和部门关系体现在公司不存在,则部门也不存在了,前者掌握整体的生命周期。
体现在0和0、1和n,整体不存在,则部分不存在,整体存在,则部分存在。
依赖关系:没有直接的关系,仅仅在代码运行期间,产生的依赖,如将A类中间的时间属性赋值到B类中的时间属性。
- A类中调用类中类型为B类的属性,A类中调用的方法,需要用到B类的信息等。
设计上用箭头虚线表示。箭头指向方为被调用方。
周期图
时间轴
生命周期图
XY轴坐标图
坐标轴带图标模板
系统架构图
应用依赖图
系统分层简图
系统分层彩图
多维系统架构分层图
业务流程图
三角流程图
块状流程图
链式流程简图
链式流程彩图
分类数据图
矩阵分类图
业务大图
矩阵式业务大图