详解UML
软件工程3要素:方法、过程、工具
模型
对问题的书面上的无歧义文字或图形的描述。简言之,模型是对现实的简化
建模
对现实系统进行适当的过滤,用适当的表现规则描述出简洁的模型
UML(United Modeling Language)
-
统一标准
-
面向对象
-
可视化、表示能力强
-
独立于过程
-
易掌握、易用
-
事物
结构事物:类、接口、用例、协作、构件、节点
行为事物:交互、状态
分组事物:UML对模型的组织要素
注释事物:解释模型元素的要素
-
关系
关联:
泛化:
实现:
依赖:
-
UML中图的分类
-
视图
用例视图
核心
:主要描述了一个系统应该具备的功能。逻辑视图:主要用于描述在用例视图中提出的系统功能的实现
并发视图:主要是从资源的有效利用、代码的并行执行以及系统环境中异步事件的处理等方面的考虑
组件视图:描述系统的实现模块以及他们之间的依赖关系
部署视图:主要显示系统的物理部署
-
过程论和对象论
-
过程论和对象论是两种看世界的观点,没有孰对孰错、孰好孰坏之分。
-
过程论和对象论不是一种你死我活的绝对独立,而是一种辩证统一的对立,两者相互渗透、在一定情况下可以相互转化,是一种“你中有我、我中有你”的对立。
-
过程论相对确定,有利于明晰演进前进的方向,但当事物过于庞大繁杂,将很难理清思路。
-
对象论相对不确定,但是因为以对象为基本元素,即使很庞大的事物,也可以很好地分离关注,在研究一个对象的交互时,只需要关心与其相关的少数几个对象,不用总是关注整个流程和世界。
用例图
参与者:与系统打交道的人或者其他系统
用例:系统的某项完整功能
关系:包含,扩展,泛化,分组
用例分析的步骤
-
找出系统外部参与者,确定系统边界和范围
-
确定各参与者所期望的系统行为
-
把这些系统行为命名为用例
-
确定各用例之间的关系
-
绘制用例图
-
编制用例描述
-
优化用例图
类图与对象图
面向对象(OO)思想:类与对象来表示世界,消息与方法来模拟世界
类
名称
属性
操作
对象图
-
对象与类
-
对象是一个存在于时间和空间中的具体实体,而类是一个模型
-
类是静态的,对象是动态的;类是一般化,对象是个性化;类是定义,对象是实例;类是抽象,对象是具体。
-
-
对象图
-
对象图是描述对象及其关系的图
-
对象图可以看作类图在某一时刻的实例
-
对象图只能在系统某一时间段存在
-
接口
-
接口是一个没有具体实现的类
-
接口只是一组操作,没有属性
-
接口可以实现多态
关系:关联、泛化、依赖、实现
-
关联
-
泛化(继承)
表示两个类之间“一般”与“特殊”的关系
-
依赖
-
使用依赖
-
抽象依赖
-
授权依赖
-
绑定依赖
-
-
实现
类的划分
-
边界类
描述外部与系统内部交互的类
-
实体类
存储信息和相关行为的类
-
控制类
控制其他类
顺序图和通信图
顺序图(时序图)
-
概念
描述了系统中对象之间传送消息的时间顺序
-
作用
用来描述用例的实现
-
组成元素
-
参与者
系统角色可以是人或其他的系统或者其子系统
-
对象
参与者实例也是对象
顺序图中水平方向为对象维
-
生命线
表示对象存在的时间
-
**期(控制焦点)
顺序图中的对象执行一项操作的时期
-
消息
对象间交互信息的方式
消息类型
-
调用消息
-
同步消息
-
异步消息
-
返回消息
-
阻止消息
-
超时消息
-
-
通信图(协作图)
-
概念
描述系统中对象(或活动者)如何共同协作实现用例;强调的是参与交互的对象的组织
-
作用
描述用例或用例中特定部分的行为
-
基本元素
-
对象(活动者实例、多对象、主动对象)
-
消息
-
链
-
顺序图和通信图的比较
-
顺序图和协作图都属于交互图,用来描述对象之间的动态关系。
-
顺序图强调消息的时间顺序,通信图强调参与交互的对象的组织关系
-
顺序图和通信图在语义上是等价的,两者可以相互转换
状态机图和活动图
状态机图
-
概述
-
状态机图用来对系统的动态行为建模
-
描述单一对象在其生命期内受各种事件的影响而发生的状态变化
-
状态机图是展示状态与状态转换的图,可以描述对象的行为,也可以描述用例、协作和方法甚至整个系统的动态行为
-
-
基本元素
-
状态
指对象在其生命周期中,满足某些条件、执行某些活动与等待某些事件时的一个状况
-
事件
事件:是指在确定的时间和位置所发生的对对象起作用的事情。事情的发生将引起一些动作,使对象发生状态的转移。
动作:动作是对象类中一个操作的执行,动作具有原子和不可中断特性
-
转移
一个状态向另一个状态的转换。对象处在源状态时,发生一个事件,如果条件满足,则执行相应的动作,对象由源状态转移到目标状态。
-
-
作用
-
用来描述一个对象在其生命周期中所表现出来的状态和行为
-
当在系统建模过程中需要描述某个事物或对象的不同状态,以及状态之间转移的事件和动作时,用状态图。
-
活动图
-
概念
活动图是描述系统或业务的一系列活动构成的控制流,它描述了系统从一种活动转换到另一种活动的整个过程。
-
作用
活动图常用来描述业务或软件系统的活动轨迹,描述了系统的活动控制流程。
-
基本元素
-
状态
是指在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况。活动图中的状态包括动作状态和活动状态
-
动作状态
原子性、不可中断性、瞬时性
-
活动状态
-
-
转移
转移是两个状态间的一种关系,表示对象将在当前状态中执行的动作,并在某个特定事件发生或某个特定的条件满足时进入后继状态
-
分支——分叉和汇合
-
分支用于描述基于某个条件的可选择路径
-
一个分支可以有一个进入转换和两个或多个输出转换
-
在每条输出转换上都有监护条件表达式保护,当且仅当监护条件表达式为真时,该输出路径才有效
-
在所有的输出转换中,其监护条件不能重叠,而且它们应该覆盖所有的可能性
-
-
同步
-
泳道
-
“泳道”技术,是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动
-
“泳道”技术来描述每个活动是由哪个对象负责完成
-
UML中,每个组被称为一个泳道,用一条垂直的实线与邻居分开
-
每个活动都明确属于一个泳道,不可以跨越泳道,而转移则可以跨越泳道
-
-
对象流
对象流是动作状态或活动状态与对象间的依赖关系
-
状态机图与交互图的区别
-
交互图不显示对象所有可能的动态行为,只显示特定交互场景(一个具体的用例)中对象的行为
-
状态机图可以显示对象所有的动态行为
状态机图与活动图的区别
-
状态机图只建模一个对象的行为,活动图可以建模多个对象的活动
-
状态机图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与
-
活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程
-
状态机图是活动图的特例
构件图和部署图
构件图
-
概述
构件图是对面向对象系统的物理方面建模时使用的两种图之一(另一种是部署图),用于描述软件组件以及组件之间的组织和依赖关系
-
作用
-
帮助客户理解最终的系统结构
-
使开发工作有一个明确的目标
-
帮助开发组的其他人员理解系统
-
复用软件组件
-
-
组成元素
-
组件
-
组件是定义了良好接口且提供实现的一个物理部件
-
是指类的物理实现,表示将类、接口等逻辑元素打包而成的物理模块
-
它具有很广泛的定义,如:程序源代码、子系统、动态链接库等都可以被认为是组件
-
-
接口
-
接口是一组用于描述类或组件的某个服务的操作
-
它是一个被命名的操作的集合,与类不同,它不描述任何结构(因此不包含任何属性),也不描述任何实现(因此不包括任何实现操作的方法)
-
-
关系
-
部署图(配置图)(实施图)
-
概念
-
用于描述系统硬件的物理拓扑结构以及在此结构上运行的软件
-
可以显示计算节点的拓扑结构、通信路径、节点上运行的软件、软件包含的逻辑单元(对象、类等)
-
-
基本元素
-
节点
-
组件
-
关系
-
连接
-
包图、组合结构图、定时图与交互概览图
包图
-
什么是包
-
包就像一个“容器”,可用于组织模型中的相关元素,以便容易理解
-
将相关的各种类型的模型元素组织成组的通用机制
-
包的实例没有任何语义
-
仅在建模时有意义,而不必转换到可执行的系统中
-
-
概念
描述包及其关系的图,包图是维护和控制系统总体结构的重要建模工具
-
作用
-
对语义上相关的元素进行分组
-
提供配置管理单元
-
提供并行工作的单元
-
-
基本元素
类、接口、组件、节点、协作、用例、图以及其他包
-
设计原则
高内聚、低耦合
组合结构图
-
概述
-
将每一个类放在一个整体中,从类的内部结构来审视一个类,用于表示一个类的内部结构
-
可以表示一个类的内部成员对象之间的相互关系,是对传统类图的一个补充
-
-
基本元素
-
部件:表示被描述事物所拥有的内部成分
-
连接器:端口之间的关系
-
端口:表示部件和外部环境的交互点
-
接口
-
协作:为完成一项功能,涉及到承担相应角色的实体及其实体之间的联系
-
定时图
-
概述
定时图是描述一个交互中,参与交互的各对象实体状态变化的时序关系
-
基本元素
-
生命线:一条水平线,反映处于活跃状态的对象的实体
-
状态:对象实体随时间变化所处的状况
-
事件:改变对象状态所激发的动作
-
时间:水平方向的时间标度
-
时序约束:状态持续时间的间隔要求
-
定时图与顺序图的区别
-
坐标轴交换了位置,改为从左到右来表示时间的推移
-
生命线可以跟在一根线后面,在这跟线上显示不同的状态值
-
用生命线的“凹下凸起”来表示状态的变化,每个水平位置代表一种不同的状态
-
定时图可显示一个度量时间值的标尺,用刻度表示时间间隔,来精确地描述消息的顺序
交互概览图
-
概述
交互概览图是一种将顺序图和活动图结合起来描述交互流程与交互细节的交互图
-
两种形式
-
以活动图为主线:对活动图中某些重要活动节点进行细化,即,用一些小的顺序图对重要活动节点进行细化,描述活动节点内部对象之间的交互;
-
以顺序图为主线:用活动图细化顺序图中某些重要对象,即,用活动图描述重要对象的活动细节。
-
统一软件过程RUP
RUP是一套面向对象的软件工程过程
RUP说明了如何有效地使用成熟技术开发软件
迭代开发模式与传统瀑布模型比较
-
降低了在一个增量上的开支风险
-
降低了产品无法按照既定进度进入市场的风险
-
加快了整个开发工作的进度
-
更适应用户需求的变化
RUP开发过程的4个阶段
-
初始阶段
-
细化阶段
-
构造阶段
-
交付阶段
RUP的工作流程(前6个是核心过程工作流,后3个是核心支持工作流)
-
商业建模
-
需求分析
-
分析与设计
-
实现
-
测试
-
部署
-
配置和变更管理
-
项目管理
-
环境
RUP的十大要素
-
开发前景
-
达成计划
-
标识与减少风险
-
分配和跟踪任务
-
检查商业理由
-
设计组件架构
-
对产品进行增量式的构建和测试
-
验证和评价结果
-
管理和控制变化
-
提供用户支持