UML交互图与活动图详解
立即解锁
发布时间: 2025-08-16 02:43:50 订阅数: 1 


UML用户指南:从入门到精通
### UML 交互图与活动图详解
#### 1. 代码分析与逆向工程
首先来看一段代码:
```java
public void register() {
CourseCollection c = getSchedule();
for (int i = 0; i < c.size(); i++)
c.item(i).add(this);
this.registered = true;
}
```
一个“足够智能”的工具需要意识到`getSchedule`方法返回的是一个`CourseCollection`对象,这可以通过查看操作的签名来确定。通过使用标准的迭代习惯遍历这个对象的内容,代码可以泛化到任意数量的课程提供。
逆向工程(从代码创建模型)对于序列图和协作图都是可行的,特别是当代码的上下文是一个操作的主体时。之前图的部分可以由一个工具从`register`操作的典型执行中生成。需要注意的是,正向工程很直接,而逆向工程则很困难。简单的逆向工程很容易获取过多信息,所以难点在于巧妙地选择要保留的细节。
#### 2. 模型动画与交互图创建提示
比从代码进行逆向工程更有趣的是将模型与已部署系统的执行进行动画关联。例如,给定之前的图,一个工具可以在运行系统中调度消息时对图中的消息进行动画展示。更棒的是,在调试器的控制下使用这个工具,你可以控制执行速度,还可以设置断点在有趣的点停止操作,以检查单个对象的属性值。
在创建 UML 交互图时,有以下提示和技巧:
- 序列图和协作图都是系统动态方面同一模型的投影。没有单个交互图可以捕捉系统动态方面的所有内容,而应该使用多个交互图来对系统整体及其子系统、操作、类、用例和协作的动态进行建模。
- 一个结构良好的交互图应具备以下特点:
- 专注于传达系统动态的一个方面。
- 仅包含理解该方面所必需的元素。
- 提供与抽象级别一致的细节,并且只展示理解所必需的修饰。
- 不过于简约,以免误导读者关于重要的语义。
- 绘制交互图时:
- 给它一个能传达其目的的名称。
- 如果你想强调消息的时间顺序,使用序列图;如果你想强调交互中涉及的对象的组织,使用协作图。
- 布局元素以减少交叉线。
- 使用注释和颜色作为视觉提示,以吸引对图中重要特征的注意。
- 谨慎使用分支;使用活动图可以更好地表示复杂的分支。
#### 3. 活动图概述
活动图是 UML 中用于对系统动态方面进行建模的五种图之一。它本质上是一个流程图,展示了从一个活动到另一个活动的控制流。活动图用于对系统的动态方面进行建模,主要涉及对计算过程中的顺序(可能还有并发)步骤进行建模。通过活动图,还可以对对象在控制流的不同点从一个状态移动到另一个状态的流程进行建模。活动图可以单独用于可视化、指定、构建和记录对象集合的动态,也可以用于对操作的控制流进行建模。与交互图强调对象之间的控制流不同,活动图强调活动之间的控制流。活动是状态机内正在进行的非原子执行。活动最终会导致一些动作,这些动作由可执行的原子计算组成,会导致系统状态的改变或返回一个值。
活动图不仅对于建模系统的动态方面很重要,而且对于通过正向和逆向工程构建可执行系统也很重要。
#### 4. 活动图示例:建造房屋工作流
以建造房屋的工作流为例,首先选择一个场地,接着委托建筑师设计房屋。确定方案后,开发商会招标确定房屋价格。一旦就价格和方案达成一致,就可以开始施工。获取许可证、破土动工、浇筑基础、搭建框架等等,直到一切完成。最后,你会拿到钥匙和入住证书,从而拥有这所房子。
虽然这是对实际施工过程的极大简化,但它确实抓住了工作流的关键路径。在实际项目中,各个行业之间有很多并行活动。例如,电工可以与水管工和木匠同时工作。你还会遇到条件和分支。例如,根据土壤测试的结果,你可能需要爆破、挖掘或打桩。甚至可能会有循环,例如,建筑检查可能会发现违反规范的情况,导致报废和返工。
在建筑行业,甘特图和 PERT 图等技术常用于可视化、指定、构建和记录项目的工作流。在对软件密集型系统进行建模时,也有类似的问题,即如何最好地对工作流或操作进行建模,这两者都是系统动态的方面。答案是有两个基本选择,类似于使用甘特图和 PERT 图。一方面,可以构建涉及某些有趣对象的交互以及它们之间可能调度的消息的场景故事板。在 UML 中,可以通过两种方式对这些故事板进行建模:强调消息的时间顺序(使用序列图)或强调交互对象之间的结构关系(使用协作图)。这样的交互图类似于甘特图,专注于随时间执行某些活动的对象(资源)。另一方面,可以使用活动图对这些动态方面进行建模,活动图首先关注对象之间发生的活动,在这方面,活动图类似于 PERT 图。活动图本质上是一个强调随时间发生的活动的流程图。可以将活动图看作是一个翻转的交互图。交互图关注传递消息的对象,而活动图关注对象之间传递的操作。语义差异很微妙,但会导致看待世界的方式非常不同。
#### 5. 活动图的术语和概念
活动图展示了从一个活动到另一个活动的流程。活动是状态机内正在进行的非原子执行。活动最终会导致一些动作,这些动作由可执行的原子计算组成,会导致系统状态的改变或返回一个值。动作包括调用另一个操作、发送信号、创建或销毁一个对象,或进行一些纯计算,如计算一个表达式。从图形上看,活动图是顶点和弧的集合。
#### 6. 活动图的常见属性和内容
活动图是一种特殊的图,与所有其他图共享相同的常见属性,即一个名称和作为模型投影的图形内容。交互图与所有其他类型的图的区别在于其内容。活动图通常包含:
- 活动状态和动作状态
- 转换
- 对象
活动图基本上是活动图中元
0
0
复制全文
相关推荐










