为什么需要活动图建模
“生命在于运动”这句话说明了运动是人对世界的一种非常重要的观察视角,因为运动的世界对我们才有意义。人把过程描述为各种行为按照时间编排的序列,因为标定运动的相对顺序的需要,人类发明了时间的概念(本人认为:时间本不存在):
绝对时间:人们选择自然界的相对稳定的参照系定义了时间,例如地球围绕太阳公转一圈为一年,地球自转一圈为一天。公历采用耶稣的诞辰年份为公元元年。
相对时间:按照运动的先后次序,编排活动的顺序,例如一个人从早到晚的一天的生活过程。
人也发明了各种描述运动的形式:
1. 自然语言采用记叙文的方式描述一个故事的过程。
2. 数据流采用数据流动的过程描述处理之间的数据关系。
3. 流程图采用控制流的方式描述各个处理之间的关系。
4. … …
活动图是采用图形的描述行为过程的UML建模规范,综合了2和3的描述形式,能够完整的支持自然语言对过程的各种描述。当纷繁复杂的行为基于活动图理清顺序的时候,分析者也就有了清晰的思路,设计者也就会注意到行为顺序对于逻辑正确性和效率的影响,这可以大大提高人对行为的理解和掌控能力。
活动图有什么
任何UML图都有语义、元素、关系和用途,下面对活动图做个列表描述:
语义
|
按照活动的先后顺序,描述活动的流程 |
元素 |
开始(init),活动
(activity) , 判定(decision),结束(final)
分叉(fork),汇合(merge),同步(join) |
关系 |
控制流(control
flow),对象流(object flow) |
用途 |
可以描述业务流程,程序流程,用户操作流程 |
图例:活动图
为了让读者看的更形象,这里采用图例的方式介绍活动图的用法,下面是贪吃蛇游戏的活动图。
活动图说明:
下面是贪吃蛇游戏的活动图对应的自然语言文字说明:
贪吃蛇游戏过程的文本描述
|
1、用户执行《活动:启动游戏》
2、《活动:启动游戏》发送《对象流:开始指令给》 给 game的《活动:初始化地图活动》
3、Game执行《活动:初始化地图》
4、 Game执行《活动:创建食物》
5、 Game执行《活动:创建蛇》
6、 启动定时器,开始计时,
7、 用户执行《活动:按下方向键》,则设置《对象:方向》
8、《事件:1秒到时》 ,蛇《活动:执行爬动》,接收《对象:方向》
9、蛇执行《条件判定:遇到什么》
9.1 、如果遇到食物,蛇执行《活动:吃掉食物》
9.2 、如果遇到墙壁,蛇执行《活动:死掉》
10 、蛇吃掉食物后结束当前处理,等待下一个《事件:1秒到时》
11 、蛇死掉后游戏就结束了 |
上面的文本描述看起来很累,如果是复杂一些的行为过程描述起来就更难阅读了,看起来还是活动图更好些,或者借鉴活动图的形式,采用结构化文本描述,如下:
序号 |
用户 |
Game |
1. |
《活动:启动游戏》 |
|
2. |
《活动:启动游戏》
发送《对象流:开始指令》 |
|
3. |
|
《活动:初始化地图》
接收《对象流:开始指令给》 |
4. |
|
《活动:创建食物》 |
5. |
|
《活动:创建蛇》
|
6. |
|
《活动:启动定时器》
|
7. |
《活动:按下方向键》
设置《对象:方向》
|
|
8. |
|
《事件:1秒到时》
|
9. |
|
《活动:snake爬动》接收《对象:方向》 |
10. |
|
《条件判定:遇到什么》
如果遇到食物,蛇执行《活动:吃掉食物》 ; 蛇吃掉食物后结束当前处理;
如果遇到墙壁,蛇执行《活动:死掉》 ;
蛇死掉后游戏就结束了。
|
说明:本文的模型采用建模工具EA建模。
UML图解系列:
后记
希望您读了此文后有所受益。
如果您有经验乐于分享,欢迎投稿给我们
如果您对我们的培训、咨询和工具感兴趣:
|