第八章 UML
第八章 UML
UML的产生和发展
- UML Unified Modeling Language,统一建模语言,一种标准的图形化建模语言
- 主要用于软件的分析和设计,用定义完善的符号来图形化地展现一个软件系统
- 由Grady Booch、Jim Rumbaugh和Ivar Jacohson 三位专家共同开发
- 基于面对对象技术的标准建模语言
UML的系统结构
设计原则
-
模块化
把强内聚低耦合原则应用到分组构建包和组织特征为元类metaclass -
分层化
一是包结构分层将元语言核心构件与用到他们的高层构件区分开
二是使用一个四层元模型构架模式来分离跨越层之间抽象的关注点 -
可扩展
一是为特定平台和特定领域定义一组新的方言
二是重用基础架构库的包来定义新的语言 -
可重用
通过重用一组细化和弹性化的元模型库来定义UML元模型,同时还定义了其他架构相关的元模型
模型元素
视图
现代软件开发过程RUP
用例驱动,以结构体系为中心,迭代增量的软件开发过程 ,包括四个阶段:初始、精化、构建、交付。
UML的图
用例图
- 用例: 文本形式的情节描述,描述的是外部行为者所理解的系统功能。
- 用例建模 用于描述一个系统的功能需求,用用例图来描述
- 用例图 把系统看做黑盒子,给出了用户所感受到的系统行为,但不描述系统如何实现该功能,驱动之后的开发工作
用例建模
在UML中,用例图的主要元素是系统、用例、行为者以及用例之间的关系
- 系统边界、用例
- 执行者(参与者)
- 模型元素间关系:关联、扩展、包含、泛化等
用例图要素-系统
- 系统被看做是一个提供用例的黑盒子
- 代表系统的方框的变现表示系统的边界,用于划定系统的功能范围、定义了系统所具有的功能
- 描述该系统功能的用例置于方框内,代表外部实体的行为都置于方框外
用例图要素-用例
-
特征
用例代表某些用户可见的功能,实现一个具体的用户目标
用例总是被行为者启动的,并向行为者提供可知别值
用例必须是完整的 - 用例是一个类,代表一类功能而不是使用该功能的某个具体实例
- 用例的实例是系统的一种实际使用方法,通常把用例的实例称为脚本
用例图要素-行为者
- 行为者是指与系统交互的人或其他系统,代表外部实体
- 行为者代表一种角色,而不是某个具体的人或物
- 一个具体的人可以充当多种不同的角色
- 通信联系:在用例图中,连接行为者和用例的直线,表示两者之间交互信息
- 单个行为者可与多个用例联系,一个用例也可与多个行为者联系
- 行为者对确定用例非常有用,可以先列出行为者清单,在针对每个行为者列出他的用例
用例图要素-用例之间的关系
- 扩展关系
向一个用例添加一些动作后构成另一个用例,其关系就是扩展关系
后者继承前者的一些行为,后者称为扩展用例,用例之间的扩展关系图示为带构造型<< extend >>的关系 - 包含关系
当一个用例包含另一个用例的全部步骤时,两个用例之间就构成了包含关系,用带构造型<< include >>的关系表示 - 泛化关系
一般用况和更特殊的用况之间的关系,特色用况可继承一般用况的特征,用表示
用况实例,使用系统的一个特定情节或用况的一条执行路径
用况就是一系列可能的场景集合
类图
用户根据例图抽象成类,描述类的内部结构和类与类之间的关系,是一种静态结构图
关系强弱:泛化=实现>组合>聚合>关联>依赖
泛化
一种继承关系,指定了子类如何继承父类的所有特征和行为。
实现
一种类与接口的关系,表示类是接口所有特征和行为的实现。
聚合
整体与部分的关系,且部分可以离开整体而单独存在。
关联和聚合在语法上无法区分,必须考察具体的逻辑关系
代码体现:成员变量
组合
整体与部分的关系,但部分不能离开整体而单独存在。
组合是关联的一种,比聚合关系还要强。
代码体现:成员变量
带实心菱形的实线,菱形指向整体。
关联
一种拥有关系,使一个类知道另一个类的属性和方法
依赖
一种使用关系,一个类的实现需要另一个类的协助
代码体现:局部变量、方法的参数或者对静态方法的调用
带箭头的虚线,指向被使用者
包
包是将类分组成更高层次的单位。 用于描述包中存在的类以及包与包之间的依赖关系和泛化关系。
包与包之间允许建立依赖、泛化、细化等关系
对象图
- 类图的实例,二者的差别在于对象图的对象名字下面要加一条下划线
- 对象图只有名称和属性,名称开头字母小写
状态图
- 一种由状态、变迁、事件和活动组成的状态机,用来描述类的对象所有可能的状态以及时间发生时状态的转移条件
- 状态变量:状态机图所显示的类的属性,也可是临时变量
- 活动:列出了处于该状态时所要执行的事件和动作
entry事件,exit事件,do事件
语法:事件名(参数列表)[警戒条件]/动作表达式
顺序图
交互图的一种
- 描述对象之间消息发送的先后顺序,强调时间顺序
- 主要用途是把用例表达的需求,转化为进一步、更加正式层次的精细表达
- 纵轴表示时间,向下的垂直虚线是对对象的生命线
- 横轴表示不同的对象,用一个矩形框表示,可带下划线表示一个类的特定实例
- 对象间的通信用对生命线之间的水平消息线表示,箭头以时间顺序从上到下排列