1、 UML结构
(1)构造块:
建模元素
结构元素:类、接口、协作、用例、活动类、组件、节点
行业元素:交互、状态机
分组元素:包
注解元素
关系:关联关系、依赖关系、泛化关系、实现关系
图:
静态:类图、构件图、部署图
动态:对象图、用例图、协作图、状态图、活动图
(2)公共机制:
规格说明:元素语义的文本描述
修饰:表达更多的信息
公共分类:类元和实体、接口和实现
扩展机制:包括约束、构造模型、标记值
(3)构架:系统的组织结构,包括系统分解的组成部分、它们的关联性、交互、机制和指导原则等提供系统设计的信息。
逻辑视图
进程视图
实现视图
部署视图
用例视图
2、 UML应用
与UML结合最好的是用例驱动的、以体系结构为中心的、迭代的、增量的开发过程。
分析阶段:主要关心问题域中的主要概念和机制,以及这些概念之间的相互协作{交互图和顺序图}。
测试阶段:单元测试{类图和类的规格说明来指导测试},集成测试{使用合作图,活动图和部署图指导测试},系统测试和验收测试{使用顺序图和用例图来验证系统的外部行为}
3、 用例图:系统开发者和用户反复讨论的结果,确定了一个和用户参与者进行交互、并可由系统执行的动作序列。
寻找系统相关参与者{代表与系统接口有关的任何事物或人}:
(1) 谁是系统的主要用户
(2) 谁从系统获得信息
(3) 谁向系统提供信息
(4) 谁从系统删除信息
(5) 谁支付、维护系统
(6) 谁管理系统
(7) 系统需要与哪些其他系统交互
(8) 系统需要操纵哪些硬件
(9) 在预设的事件内,有事件自动发生吗
(10) 系统化从哪里获取信息
(11) 谁对系统的特定需求感兴趣
(12) 几个人在扮演同样的角色吗
(13) 系统使用的外部资源
(14) 系统用在什么地方
4、 用例:系统行为的动态描述
识别用例:
(1) 每个参与者的任务是什么
(2) 有参与者将要创建、存储、修改、删除或读取系统中的信息吗
(3) 什么用例会创建、存储、删除或读取系统中的信息
(4) 参与者需要通知系统外部的突然变化吗
(5) 需要通知参与者系统中正在发生的事情吗
(6) 什么用例将支持和维护系统
(7) 所有的功能需求都对应到用例中了吗
(8) 系统需要何种输入输出?输入从何处来?输出到哪里去?
(9) 当前运行系统的主要问题是什么?
5、 类图和对象图
(1) 类的属性
可见性{+-#} 属性名:类型= 缺省值 {约束特性}
(2) 类的操作
可见性:操作名(参数表):返回类型 {约束特性}
(3) 类之间的关系
i. 依赖关系:虚线实心箭头
ii. 泛化关系:实线空心箭头【子类指向父类】
iii. 关联关系:为类之间的通信提供了一种方式,聚合关系【整体和部分,用一个带空心菱形的实线表示】,组合关系【用一个带实心菱形的实现表示】
(4) 实现关系:虚线空心箭头
(5) 类图:描述类与类之间的静态关系。
6、 交互图:表示各组对象如何依某种行为进行协作的模型。
强调对象交互行为顺序的顺序图:消息可以用消息名及参数来标识,消息也可以带有顺序号,消息还可以带有条件表达式,表示分支或决定是否发送消息。
强调对象协作的协作图:着重体现交互对象间的静态链接关系
7、 状态图:用来描述对象状态和事件之间的关系
(1) 状态:圆角矩形
(2) 初始状态:实心圆圈
(3) 结束状态:实现圆圈外套上一个空心圆圈
(4) 状态转移:箭头+文字
8、 活动图:用来表示系统中各种活动的次序,既可用来描述用例的工作流程,也可用来描述类中某个方法的操作的行为。活动图由状态图变化而来,依据对象状态的变化来捕获动作。
(1) 基本活动图:判定{菱形表示}、分叉与结合{并发流,粗线表示}
(2) 带泳道的活动图:泳道图将活动图的逻辑描述与顺序图、协作图的责任描述结合起来。
(3) 对象流:对象可以作为活动的输入和输出{虚线箭头表示},如果仅表示对象受到某一活动的影响,则可用不带箭头的虚线来连接对象和活动。
9、 构件图:用于物理建模,它可以有效地显示一组构件以及它们之间的关系。构件图通常包括构件、接口以及各种关系。
对源代码进行建模、对可执行体的发布建模、对物理数据库建模、对可调整的系统建模。
10、 部署图:用于物理建模,描述系统硬件的物理拓扑结构以及在此结构上执行的软件。部署图可以显示计算节点的拓扑结构和通信路径、节点上运行的软件构件,常常用于帮助理解分布式系统。
(1) 节点和连接
节点代表一个物理设备以及在该设备上运行的软件系统。在UML中,使用一个立方体表示一个节点,节点名放在左上角。通信类型则放在连接旁边的“《》”之间,表示所用的通信协议或网络类型。
(2) 构件和接口
构件代表可执行的物理代码模块,如一个可执行程序。逻辑上它可以与类图中的包或类对应。接口表示为一头有小圆圈的直线。