为什么需要顺序图建模
我们描述过程一般有2种方式:
1. 按照时间顺序,把活动编排顺序,这就是活动图。参见:活动图
2. 列出对象,按照时间的顺序,描述各个对象的交互,这就是交互图。
而顺序图属于交互图的一种(除此之外,还有:通信图、交互概览图、时间图,参见:UML概览)。描述活动的过程,大家一般想到的是活动图,为什么还需要顺序图呢?
这是因为只是描述过程,而不知道过程的各个活动由谁负责,这样的过程是无法执行的。所以,必须把过程分解为多个角色/类/模块的职责。类的关系和职责的描述用类图(参见:类图),而活动图和类图是完全不同的视角,这就需要一个以对象交互视角描述活动过程的图。
请看下面2个图例的对比:
下面是引入了顺序图的分析设计方法:
可见,借助顺序图,我们可以把活动清晰的分解为对象的交互,然后在定义类图,这样每个行为都有了负责者,这无论是对业务流程分析还是软件流程分析都是关键的一环:
业务流程的交互分析可以让每个业务工作有人负责。
软件流程的交互分析可以让每个软件功能有模块负责。
顺序图有什么
任何UML图都有语义、元素、关系和用途,下面对顺序图做个列表描述:
语义 |
描述几个对象随时间顺序而进行的交互 |
元素 |
对象
(object) ,生命线(lifeline),端点(endpoint),图的门口(diagram
gate),状态(state) |
关系 |
对象之间的消息(message),分为同步调用(call)、异步消息(message)和自身消息(self
message) |
用途 |
可以描述业务对象之间的交互,用户和系统的交互,也可以描述系统对象之间的交互。 |
图例:贪吃蛇游戏的顺序图
为了让读者看的更形象,采用图例的方式介绍顺序图的用法,下面是贪吃蛇游戏的顺序图:
顺序图说明:
对象交互而不是类交互,因为对象才能在时间上存在,才具有生命。
按照时间上下位置编排消息的先后次序
顺序图的交互过程是不可逆的,因为时间是流逝的、历史不可以重来。
|
对象的说明:
对象一般是属于某个类的,一个顺序图上可以具有同类的多个对象。
对象最好具有名字,这样我们才能区分同类的多个对象。
分配过程到对象交互的过程,就是职责分配的过程,这会造就类的职责(参见:类图);
职责分配的原则是:高内聚、低耦合,这样的关系简单清晰、互相影响小、执行效率高。 |
消息的说明:
消息一定是被对象发出或者接收的,所以消息也是有存在时长的;
消息不能超越对象的生命周期。
交互消息的存在3种:
同步消息: 发出消息的对象,会等待接收消息的对象的响应,有了响应后才继续Next。
异步消息:发消息的对象,发出消息后就继续做自己的事情,不等待接收消息的对象的响应。
自身消息:对象发给自己的消息,也就是执行自己的职责。
|
顺序图的要素说明:
如下是顺序图中的对象的说明字典:
序号 |
对象 |
说明 |
1. |
player1:Player |
游戏的对象,可以启动游戏,控制蛇的方向。 |
2. |
Timer1:Timer |
定时器的对象,可以产生时钟心跳,驱动蛇爬动。 |
3. |
map1:Map
|
地图的对象,可以被打开,上面有一个食物对象和一个蛇对象。 |
4. |
snake1:Snake |
蛇的对象,被地图创建,可以爬动,还可以吃食物。 |
5. |
Food1:Food |
食物的对象,可以被地图创建,也可以被蛇吃掉。 |
说明:本文的模型采用建模工具EA建模。
|