总记
什么是UML
Booch对他的定义
UML是对软件密集型系统中的制品进行可视化,详述,构造和文档化的语言。
UML的全称
Unified Modeling Language(统一建模语言)
UML的主要特点
- 统一的标准:提供标准的面向对象的模型元素的定义和表示
- 面向对象:uml是支持面向对象软件开发的建模语言
- 独立于过程:uml不依赖于特定的软件开发过程,这也是能被广泛接受的原因
- 可视化、表达能力强:表示系统的逻辑模型或实现模型,用于复杂软件系统的建模
- 概念明确:建模表示法简洁,图形结构清晰,容易掌握和使用
结构体系
- 基本构造块
- 语义规则
- 公共机制 基本构造块
- 事务
- 结构事务
- 行为事务
- 分组事务
- 注释事务
- 关系
- 依赖
- 关联
- 泛化
- 实现
- 图
4+1视图
- 用例图
- 逻辑图
- 进程图
- 部署图
- 实现图
用例与用例图
使用场合
- 显示谁将是相关用户,用户希望系统提供什么服务以及用户需要为系统提供的服务
- 用于表限系统根据需求所提供的功能
- 最常用来描述系统以及子系统
元素
用例
- 表示:用例用一个椭圆表示。
- 定义:用例是对一个活动者使用系统的一项功能时所进行的交互过程的一个文字描述序列。
- 另一种定义:用例时系统,子系统或类和外部参与者交互时动作序列的说明,包括可选的动作序列和会出现异常的动作序列。
- 用例并不是系统的全部需求,只需要把重要的或交互过程复杂的用例找出来
参与者
- 定义:指系统以外的,需要使用系统或与系统交互的东西。又名活动者执行者等翻译
- 可以是人,设备,外部系统等
- 参与者可以执行或使用用例,他们的关系是一对多的。
- 可以 尽管使用,参与者并不属于系统的一部分
- 以下是参与者的几种表示,小人一般代表参与者是人,类图标一般表示参与者是一个系统
- 参与者也有继承关系,在涉及阶段用泛化这个词表示A是a的一个特殊实现。
用例间的关系
泛化
- 子类继承了父用例的行为和含义,子用例也可以新增或覆盖行为和含义,箭头子->父
- 以下是一个例子,斜体是一个抽象父用例
登陆验证,子用例是密码验证与视网膜验证
包含
- 基本用例的行为包含了包含用例的行为,箭头从父->子
- 是依赖关系的版型,是一直特殊的依赖关系
- 下图ATM Session是基本用例,另外两个是包含用例
- 箭头从基本用例指向包含用例
扩展关系
- 类似于泛化用例,但是基本用例必须声明若干
扩展点,扩展用例智能在这些扩展点上新增新的行为和含义。扩展关系也是特殊的依赖关系,也是有更多规则限制的泛化关系。箭头子->父 - 与包含关系和泛化关系的不同:前两者在使用基本用例时必然发生一个或多个子用例,但不一定会发生扩展用例。
脚本
- UML中脚本贯穿用例的一条单一路径,来显示用例中的某种特殊情况
- 脚本时用例的实例,脚本与用例的关系相当于对象和类的关系
- 每个用例包括一个主要脚本和多个次要脚本;次要脚本描述执行路径中的异常分支和可选分支
顺序图与协作图
交互图
用来描述对象之间以及对象与参与者之间的动态协作关系和协作过程中行为次序的图形文档。
包括顺序图与协作图两种形式。
顺序图
- 又称时序图,显示对象之间交互的图
- 对象按时间顺序排列,显示的是参与交互对象和对象之间消息交互的顺序
- 元素:对象,生命线,控制焦点,消息等
作图-元素
- 对象:如下图三种对象的表示,在对象头选择性的标注对象名和类名
- 生命线:在对象下面延展一条序线表示此对象存在的时间
- 控制焦点:表示为生命线上的小矩形,表示在这个时间段内对象执行相应的操作
- 可以嵌套,更精确的说明消息的开始结束位置
- 激活期:对象执行动作的期间,和控制焦点一个意思
作图-消息
- 调用消息:调用消息的发送者把控制传递给接收者后停止活动等待接收者的放弃或返回控制。可以理解为同步消息。调用消息必有一个配对的返回信息但是可以省略。(实心箭头)
- 异步消息:发送者把消息传递给接收者,如何继续自己的活动,不等待接收者返回消息或控制。(单勾箭头)
- 返回消息:从过程调用返回可以省略,非过程调用需要表示。(虚线双勾箭头)
- 其他
- 阻止消息:箭头拐回来,表示如果接收者无法立即接收则放弃发送
- 超时消息:发送病等待,但是超时放弃
协作图
描述系统行为是如何由各个系统成分协作实现的图。
元素包括:对象(参与者实例,多对象,主动对象等),消息,链
多对象指由多个对象组成的对象,一般这些对象是一个类,消息需要同时发送给这些对象时使用
主动对象是一组属性和一组方法的封装体,其中至少由一个方法不需要接收消息就可以执行(主动方法)