常用的关系图
系统设计多维视图
组成视图
- 表达了系统由哪些子系统、服务、组件部分构成。
交互视图
- 系统或服务与外部系统或服务的协作关系,也即:依赖与被依赖。它隐藏了内部众多服务的交互细节,强调了终端和服务端,以及服务端内部交互的主要过程
部署视图
- 表达系统的部署结构与环境
流程视图
- 流程视图,表达系统内部实现的功能和控制逻辑流程,UM类图,
状态视图
- 状态视图,表达系统内部管理了哪些状态以及状态的变迁转移路径。
甘特图
- 甘特图就是将任务与时间联系起来的一种图表形式,能够清晰展示每个任务的历时长短。
- 甘特图以图示通过活动列表和时间刻度表示出特定项目的顺序与持续时间。一条线条图,横轴表示时间,纵轴表示项目,线条表示期间计划和实际完成情况。直观表明计划何时进行,进展与要求的对比。便于管理者弄清项目的剩余任务,评估工作进度。
画法
- 把所有的任务在纵轴列出来
- 把预估时间在横轴列出来
- 在图例中画出线条,表示该任务的时间跨度
实例
一个项目中功能模块的排期

流程图
为便于识别,绘制流程图的习惯做法是
- 圆角矩形表示“开始”与“结束”;
- 矩形表示行动方案;
- 菱形表示问题判断或判定(审核/审批/评审)环节;
- 用平行四边形表示输入输出;
- 箭头代表工作流方向。

泳道图
- 可以理解为一种特殊的流程图,只不过泳道图会把部门和职能划分开。因此,泳道流程图是一种反映商业流程里,人与人或组织与组织之间关系的特殊图表。
泳道图的作用
- 1、泳道图在商业流程里,可以直观地反映出人与人之间的关系,令每个人清楚的掌握自己所负责的事项任务。
2、对于企业而言,泳道图能够让工作部署更加流程,提升工作效率。
3、有助于研究整个流程中,人与人,或者是工作小组和工作小组之间交接的动作
画法
第一步:罗列出参与此流程不同人员的各自工作内容,并输入到泳道图的左侧或者上方。
第二步;设计各个环节设计的流程图,并写入到各个泳道里。
第三步:对着写步骤环节进行深入的探讨,并将他们放置于合适的泳道上。
第四步:通过上述三步,基本给出了流程图的草稿,在此基础上再稍作调整即可完成。实例

E-R图三要素

- 联系不能脱离实体,必须有实体连接且可以是实体的自身联系
- 属性既可以连接实体,也可以连接联系。但一个属性只能有唯一的连接对象
实体和联系的三种情况
两个实体之间的联系
一对一
比如:一个学校只能有一个校长,而一个校长也只能担任一个学校的校长。

一对多
比如:一个学校里有多名教师,而每个教师只能在一个学校教学。

多对多
比如:一个学生可以上n种课程,而每一个课程可以有m个学生学习。而上课还可以有一个属性:上课时间。

多个实体之间的联系
多个实体一对多
比如:一门课程可以有n个老师来授课,一个老师只讲一门课程,该门课程可以有m本参考书,而这m本书只供这一门课使用。

多个实体多对多
比如:一个供应商可以给多个(n)项目提供零件,每个项目可以使用多个(m)供应商供应的零件,每种(p)零件可有不同供应商供给。

E-R的设计原则
- 尽量减少实体集数量,能作为属性时不要作为实体集。
- “属性”不能再具有需要描述的性质。必须时不可分割的数据项。不能是其他属性的聚集。
- “属性”不能与其他实体具有联系
- 综合局部E-R图,产生出总体E-R图。在这个过程中,同名实体只能出现一次,并去掉不必要的联系,以便消除冗余。一般的,能够根据总体E-R图导出各个局部的E-R图。
UML类图
概念
- UML是统一建模语言,是一种可视化的面向对象建模语言,是一种用来对真实世界物理进行建模的标准标记,用图形方式表现典型的面向对象系统的整个结构。它的作用域不局限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
- UML的概念包括了UML语义(Semantics)和UML表示符(Notation)两个部分。UML语义定义了静态模型和动态模型。结构模型强调系统的对象结构,入对象的类、接口、属性和关系;行为模型关注的是系统对象的行为动作,如对象的方法、交互、协作和状态。UML表示符为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。重要内容由9种图来定义,包括用例图、类图、对象图、状态图、构件图、部署图、协作图、交互序列图、活动图。
DEMO
- +标识public
- -表示private
- #表示protected
- ~表示default,也就是包权限
- _下划线表示static
- 斜体表示抽象
接口
接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。在UML中,接口使用一个带有名称的小圆圈来进行表示。

类与类之间的关系
泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)

泛化
- 泛化(Generalization)表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系
继承
继承表示是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力
表示方法:继承使用空心三角形+实线表示,箭头指向父类
实例:鸟类继承抽象类动物

实现
- 实现表示一个class类实现interface接口(可以是多个)的功能。是一种类与接口的关系,表示类是接口所有特征和行为的实现.
矩形表示法
使用空心三角形+虚线表示,箭头指向接口
比如:大雁需要飞行,就要实现飞()接口

棒棒糖表示法
使用实线表示

依赖
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
依赖关系用虚线箭头表示。
代码表现:局部变量、方法的参数或者对静态方法的调用
例如:动物依赖氧气和水。调用新陈代谢方法需要氧气类与水类的实例作为参数

关联
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
关联关系用实线箭头表示,可以是双向的,也可以是单向的
代码体现:成员变量
例如:企鹅需要‘知道’气候的变化,需要‘了解’气候规律。当一个类‘知道’另一个类时,可以用关联。

聚合
表示一种弱的‘拥有’关系,即has-a的关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。 两个对象具有各自的生命周期。是整体与部分的关系,且部分可以离开整体而单独存在。
表示方法:聚合关系用空心的菱形+实线箭头表示。菱形指向整体
代码体现:成员变量
每一只大雁都属于一个大雁群,一个大雁群可以有多只大雁。当大雁死去后大雁群并不会消失,两个对象生命周期不同。

组合
组合是一种强的‘拥有’关系,是一种contains-a的关系,体现了严格的部分和整体关系,部分和整体的生命周期一样。
表示方法:组合关系用实心的菱形+实线箭头表示,还可以使用连线两端的数字表示某一端有几个实例。
代码表现:成员变量
鸟和翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。

时序图
- 时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。
- 主要用来标识对象之间的通信和交互过程
画法
- 时序图中包括如下元素:角色,对象,生命线,控制焦点和消息。
角色
- 系统角色,可以是人或者其他系统,子系统的用户,角色通常是可以发起行为的。
对象(Object)
- 对象代表时序图中的对象在交互中所扮演的角色,位于时序图顶部和对象代表类角色。
- 对象的符号 : 时序图中的对象与对象图中的表示方法一样, 使用矩形将对象名称包含起来, 并且对象名称下有下划线;
- 对象的创建时机
- 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建;
- 处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了
- 不在顶部 : 如果对象的位置不在顶部, 那么对象在交互过程中创建的
- 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建;
- 对象的命名方式
- 第一种方式包含对象名和类名。(对象名:类名)
- 第二种方式只显示类名不显示对象名,即为一个匿名对象。(:类名)
- 第三种方式只显示对象名不显示类名。(对象)
- 基本原则
- 交互频繁的对象尽可能的靠拢
- 把初始化整个交互活动的对象放在最左边
生命线
- 生命线代表时序图中的对象在一段时期内的存在。时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线,对象间的消息存在于两条虚线间。
- 生命线的作用
- 生命线是一个时间线,从时序图顶部一致到底部都存在,其长度取决于交互的时间
- 对象的生命线
- 对象与生命线结合在一起就是对象的生命线, 这个概念包含对象图标 以及 对象下面的生命线图标
激活
- 控制焦点代表时序图中的对象执行一项操作的时期,在时序图中每条生命线上的窄的矩形代表活动期。
- 在生命线上当会话激活阶段,使用小矩形表示。
消息
- 消息是定义交互和协作中交换信息的类,用于对实体间的通信内容建模,消息用于在实体间传递信息。允许实体请求其他的服务,类角色通过发送和接受信息进行通信
绘画步骤
- 参与交互的对象在时序图顶端水平排列, 每个对象的底端绘制了一条垂直虚线, 对象A像对象B发送消息, 用一条带箭头的实线表示, 该实线起始于对象A底部的虚线, 终止于对象B底部的虚线; 实线箭头水平放置, 越靠近顶端越早被发送.
实例
客户填写买车订单,工作人员检查订单,没有问题然后填写记录,客户付款,然后工作人员取车
