UML 基础概念
模型
概念:是对现实系统本质特征的一种抽象,简化和直观的描述。
特征
- 反映性
- 直观性
- 简化性
- 抽象性
分类
- 概念模型
- 逻辑模型
- 物理模型
软件模型
概念:指通过软件建模语言对软件的功能和性能等外特性,软件的要素和结构,以及软件的动态行为特性所给出的抽象和规范描述。
软件模型是人员交流的媒介,是软件的中间形态,是软件升级和维护的依据
特征
- 建模对象特殊
- 复杂性
- 多样性
UML
概念:是一种软件工程领域内通用的软件建模语言。
由 Rational 公司推出,基于面向对象方法,Jacobson 参与了 UML 的研制。
特点
- 独立于建模方法和建模过程
- 统一标准
- 体系规范
- 方便实用
1. 元模型
元模型是 UML 的理论基础,分为 4 个层次。其中元元模型处在最顶层,用户对象处在最底层。
元素
- 是模型的要素
- 是 UML 元模型中最抽象的要素
- 可以拥有自己的元素
- 是抽象的,不能直接产生实例
基本元素包括结构元素,行为元素,分组元素
结构元素:
- 对象与类:对象用来表示客观事物的一个实体,封装了一组属性和操作。类是具有相同性质的一组对象的集合。
- 接口:用来声明一个类或构件对外提供的服务操作,分为需求接口和供应接口
- 构件:构件是软件系统中可以独立封装的一个软件逻辑部件
- 制品:表示可以在结点上独立部署的软件单元,制品一般以文件的形式呈现
- 结点:是在物理上可以独立部署的一个硬件设备
行为元素:
- 用例:描述系统的一个功能
- 协作:描述为完成一个用例所定义的功能
- 交互
- 状态
- 动作
分组元素:
- 包
关系
概念:是用来建立元素之间联系的模型元素,一个关系会把一个或多个元素联系起来。根据元素之间联系的方向性,可以把关系分为无向关系和有向关系两种类型。
主要关系:
- 关联关系
- 组成关系
- 泛化关系(继承关系)
- 依赖关系
命名空间
概念:命名空间是一个拥有多个命名元素的集合,它自身也是命名元素。命名空间与所拥有的命名元素是组合关系。
用例图
用例:表示系统执行的一组动作,它会给系统或者参与者产生一组可观测的结果。用例描述系统的一个功能。
1. 用例图
概念:是 UML 用于描述软件功能的图形。
要素:
- 参与者:与用例存在交互关系的系统外部实体
- 用例:用来描述一个相对独立的软件功能
- 关系:包含参与者与用例的关系,参与者相互之间的关系,用例相互之间的关系。
2. 参与者
概念:也称活动者,是与系统发生交互的外部实体。
特性:
- 位于系统的外部,不属于系统的内容
- 与系统发生交互关系
- 和系统之间存在交互信息的接口
参与者的类型
- 人
- 设备
- 其他系统
- 时间
参与者之间的关系
- 泛化关系
- 通信关系
3. 用例特性
- 用例描述用户对系统的期望,被用于软件需求建模,一个用例对应于软件能够为参与者提供的一项服务。
- 用例反映参与者与系统一次完整的交互过程。
- 用例的执行过程是系统为参与者的一次服务过程,这个服务就体现为系统提供给参与者的功能。
- 用例是软件设计和测试的依据。
4. 用例之间的关系
- 泛化:用例之间存在一般(父用例)和特殊(子用例)关系
- 包含:某一个用例(基用例)完整执行,必须依赖于另外一个用例(包含用例)的执行
- 扩展:某个基用例需要通过附加一个用例开扩展或延伸它原有的功能时,基用例和这个附加用例之间的关系。
5. 用例叙述的内容
- 用例编号
- 用例名
- 参与者
6. 用例图的作用
- 描述软件功能,展示软件使用者和软件功能的关系
- 建立软件分析模型的依据
- 软件测试的依据
- 展现软件功能相互之间的关系
类图与对象图
1. 对象
概念:可以是客观中一个具体的事物,也可以是主观中一个抽象观念。在计算机软件中,从形式上看,对象是一段具有特定语法规则的程序单元,它能够作为软件系统的一个相对独立的基本单位,在软件中承担确定的服务职能。
对象的要素:
- 认识的指向物
- 认识者
- 认识指向物在认识者主观中的反映
对象图的作用
- 初期分析工具
- 描述业务场景
- 模拟运行场景
2. 实例
实例是类元中的一个元素。
3. 类元
类元是对聚集一组具有共同特征的实例的模型元素的通称,类,接口,用例,参与者,关联等都属于类元。
4. 类
概念:是具有相同性质的一组对象的集合,这组对象具有相同的特征,约束和语义。
类型:
- 抽象程度
- 业务对象
- PIM 类:PIM (平台无关模型)独立于软件开发和运行平台
- PSM 类:PSM(平台相关模型)与具体的开发平台有关
- 作用
- 实体类:表示客观实体
- 边界类:用来描述系统与外界之间交互的系统要素
- 控制类:表示系统用来进行调度,协调以及业务处理的系统要素
5. 接口
概念:是一种类元,聚集了一组需要通过其他类元实现的公共的操作和属性。接口只是定义一组操作的规约,并不实现这组操作,接口所定义的操作需要通过另外一个类元来实现。
类型:
- 供应接口
- 需求接口
6. 关联关系
关联表示事物之间存在内在角色之间的一种牵连关系,这种关系是事物之间的一种基本关系。
7. 组成关系
部分组成整体的关系是客观世界事物之间存在的一种基本关系。根据部分与整体事物之间关系的紧密程度,可以把组成关系分为聚集和组合两种类型。
- 聚集:表示事物之间一种相对松散的组成关系
- 组合:表示整体与部分紧密的组成关系
8. 泛化关系
指抽取事物的共性特征,形成超越特殊事物而具有普遍意义的一般事物的方法。
9. 依赖关系
是模型元素之间的一种有向关系,表示一个模型元素在其语义或结构上依赖于另外一个元素。
类型
- 使用(《use》)
- 调用(《call》)
- 实例化(《instance》)
- 创建(《create》)
- 销毁(《destory》)
- 职责(《responsibility》)
- 发送(《send》)
- 抽象(《abstraction》)
- 派生(《derive》)
- 精化(《refine》)
- 跟踪(《trace》)
- 实现(《realization》)
- 接口的实现(《implementation》)
- 替代(《substitution》)
- 许可(《permission》)
10. 类图
用来展示一组类,类的特性及其类相互之间的关系,对系统的领域概念及静态结构进行建模。
类图的元素:类,接口,协作,关系,注释,约束,包
类描述事物以及事物的性质,类的关系反映事物之间的联系。
类的关系
关联,组成,泛化,依赖,接口的实现
作用
- 在软件空间中建立对问题空间抽象的结构映像
- 用例分析和设计的逻辑结构建模
- 数据库结构建模
包图
1. 包
概念:UML 用来对模型元素进行分组的一种机制,包图是构建软件模型框架和结构的一种图。
可见性:
- 公开
- 私有
- 保护
关系:
- 依赖
- 使用(《use》)
- 抽象(《abstraction》)
- 跟踪(《trace》)
- 导入(《import》)
- 元素导入
- 包导入
- 合并(《merge》)
- 包含
2. 包图
概念:用来展示包成员以及包与包之间的关系
作用
- 分类组织模型元素
- 模型结构建模
- 命名空间建模
活动图
1. 活动
概念:活动的一般含义是指在过程中能够完成确定任务的一项相关动作的集合。
活动要素:一个完整的活动由多个活动节点和活动边构成。
活动节点
概念:是活动图中由活动边连接的表示活动单元的节点。一个活动结点是一条活动流程中的一个步骤,通过活动边把多个活动结点联系起来,就构成一个完整的活动。
类型
- 动作节点:描述一个动作,是活动的基本行为单位
- 对象结点:描述实体或数据结构的节点,描述在活动中处于某种状态的对象
- 控制结点:用来控制和协调活动图中动作结点和对象结点的流程,包括起始,终止,分叉与汇合,判断与合并等。
动作
动作是活动的一个基本执行单位,若干个动作按照一定的流程联系起来就构成一个活动。活动可以分解为多个动作,但动作具有原子性,一般不在分解。
动作节点
一个动作的执行需要经历下面5个步骤
- 创建
- 启动
- 操作
- 完成
- 清理
控制节点
- 起始节点:没有入边,只有出边
- 活动终止节点:用来终止一个活动
- 流终止节点:用来终止活动中的一个流。一个活动中出现一个流的终止时,并不影响该活动中其他流的执行。
- 分叉节点:有一个入边,多个出边
- 汇合节点:多条入边,一条出边
- 判断节点
- 合并节点
对象结点
- 一般对象节点:表示处于某种状态的对象
- 活动参数节点:通过给活动设置参数来提高活动的灵活性
- 引脚:用来作为动作参数的对象结点,因此引脚也被称为动作参数结点
- 中央缓冲节点:可以接收来自不同源的对象流,对接收到的对象进行排序,分拣和缓冲处理,然后分发给不同的对象流
- 数据存储节点:用于在活动图中对持久存储对象建模
活动边
概念:连接两个活动节点之间的线条被称为活动边。用一个带箭头的连线表示,箭头由源节点指向目标节点。
一条活动边的权重规定为同时通过该条边的令牌的最小数目。默认为 all。当边的权重为 x 时,只有令牌数目达到 x,才允许令牌通过。
控制流:
表示在前一个活动结点执行完成后,把控制令牌传递给下一个活动结点,并启动该结点的执行。控制流上不能传递对象或数据,因此控制流不能连接对象结点。
对象流:
传输对象或数据。在一个对象流连接的两个活动结点中,至少应该有一个是对象结点。在对象流上传递对象令牌。
2. 令牌
令牌为一个可以赋予结点执行权力的数据结构,这个数据结构可以在活动图的各个结点之间进行传递,一个结点只有获得令牌才可以执行。
类型
- 控制令牌:沿着控制流移动
- 对象令牌:延着对象流移动
3. 活动图
通过对活动中的各个动作的联系来描述活动的流程
作用
- 业务流程建模
- 工作流建模
- 算法流程建模
- 用例描述
状态机图
概念:描述事物在其生命周期中所具有的各种状态和关系,以及因事件激励导致的状态变换。
状态机图可以表现一个对象在生存周期的行为,所经历的状态序列,引起状态转换的事件以及因状态转换引起的动作。
1. 状态
概念:指事物在其生存周期中满足某些条件,执行某些操作或等待某些事件而持续的一种稳定的状况。每个状态都需要持续一段有限的时间。
类型
- 简单状态
- 复合状态
- 子机状态
2. 状态机图的构成
- 状态结点:描述事物的状态,分为简单状态,复合状态,子机状态
- 控制结点:用来协调状态关系,控制状态转换的流程
- 转换边:连接状态机图中的结点,表示状态因事件触发,由源状态到目标状态的转换。
3. 状态转换
概念:是两个状态之间的一种有向关系,表示从源状态转换到目标状态。
要素:触发事件,监护条件,转换动作
交互图
交互
概念:表示一组相关的对象在动作执行中通过相互交互消息完成确定的任务。
交互图类型
- 顺序图:描述在交互过程中,参与交互的对象实体之间消息传输的时序关系
- 通信图:表示在交互过程中参与交互的对象实体之间的结构关系
- 交互概览图:把顺序图和活动图结合起来描述交互流程和交互细节的一种图
- 时序图:描述在一个交互中,参与交互的各对象实体状态变化的时序关系
顺序图
强调在交互过程中交互的各实体之间消息传输的时序关系
生命线
概念:表示参与交互的一个实体及实体集合。一条生命线表示为一个矩形框下面垂着一条虚线。
消息
概念:是一种命名元素,定义了在交互中生命线之间所传输的信息,这种信息可以表示调用一个操作,创建或销毁一个实体,或者发送一个信号。
类型:
- 同步调用消息
- 异步调用消息
- 异步消息
- 应答消息
- 创建消息
- 销毁消息
交互事件
概念:指在交互的某个时刻发生的事情。
一条消息隐含着两个交互事件,在消息的起点一定存在发送消息的事件,在消息的终点存在接收消息的事件。
时序:
一组消息的交互事件之间会存在一定的时序,并遵循下面三个基本准则
- 同一消息的发送事件一定先于接收事件
- 同一生命线上,上面的事件先于下面的事件
- 不同生命线上的不同消息的事件之间的时序不定
定序
概念:为了确定在不同生命线上的不同消息的事件的时序。
定序是规定两个事件一个为先发事件,一个为后发事件,先发事件在后发事件之前发生。
主要用途
- 确认和丰富一个使用语境的逻辑表达
- 细化用例的表达
- 有效地描述如何分配各个类的职责
通信图
在 UML2.0
版本之前,通信图被称为协作图。用来描述参与一个交互的多个实体之间的结构关系。
交互概览图
概念:把顺序图和活动图结合起来描述交互流程和交互细节的一种交互图。
类型
- 以活动图为主线,用顺序图或通信图作为活动节点,适合对复杂的工作流建模
- 以顺序图为主线,用活动图细化某些消息描述的操作细节
应用
- 组织顺序图
- 细化活动细节
时序图
概念:描述在一个交互中,参与交互的各对象实体状态变化的时序关系
时序图要素
- 生命线
- 状态
- 事件
- 时间刻度
- 时序约束
表示法
- 一般表示法
- 交错表示法
时序图的应用
- 实时控制系统的时序逻辑应用
- 事务处理系统的时序逻辑应用
UML 软件建模课程设计报告目录