首页 > 代码库 > UML9种图中的序列图和协作图
UML9种图中的序列图和协作图
序列图
序列图是系统动态模型中的一种交互视图,描述了执行系统功能的各个角色之间相互传递消息的顺序,侧重于强调时间顺序,从一定程度上更加详细地描述了用例的需求。
在面向动态行为进行建模时,通过描述一组相关联、彼此相互作用的对象之间的动作序列和配合关系,以及这些对象之间传递、接受的消息来描述系统为实现自身的某个功能而展开的一组动态行为。在面向控制流进行建模时,可以针对一个用例、一个业务操作过程、系统操作过程、整个系统。重点在于消息在系统内如何按照时间顺序被发送、接受和处理的。
序列图的作用:
1. 确认和丰富一个使用语境的逻辑表达:语境就是系统潜在的使用方式的描述,逻辑就是一个用例或一条控制流。
2. 细化用例的表达:把用例表达的需求转化为进一步、更加正式层次的精细表达。
3. 有效的描述如何分配各个类的职责以及各类具有相应职责的原因:根据对象之间的交互关系来定义类的职责,各个类之间的交互关系构成一个特定的用例。
序列图的组成:对象、生命线、激活、和消息。
对象:类的实例,可以是系统的参与者或任何有效的系统对象。
生命线:是一条垂直的虚线,每个对象的地步都有生命线,表现了对象存在的时间段。
激活:对象操作的执行,表示一个对象直接或通过从属操作完成操作的过程。在生命线上未激活的部分是虚线表示,激活的部分是一个矩形框表示。
消息:从一个对象向另一个对象发送信号,包括发送者,接受者和活动。
在标准UML中还支持以下三种扩展概念:
创建和销毁对象
创建一个对象指的是发送者发送一个实例化消息后实例化对象的结果。新的对象遵从其类的约束,并可以接受消息。
销毁对象指的是将对象销毁并回收其拥有的资源,但不会销毁一般关联或聚集关系的对象。
分支和从属流
分支指从同一点发出的多个消息并指向不同的对象;从属流指的是从同一点发出多个消息指向同一个对象的不同生命线。这两者都是非常常用的,在系统中一个对象有时候要实现多个功能,这将造成消息的堆叠和重复,按照一定的条件或其他规则,将这些信息分成这两种形式,可以很好的理清对象的功能,降低系统的复杂程度。
帧化序列图
在UML2.0中增加了一个框架的符号元件,被用于作为其他图元件的基础。当使用一个框架元件封闭一个图时,图的标签要按照“图形类型图名称”进行声明。目的是使用户能够在一张序列图中快速容易地复用另一张序列图的部分或全部内容。
协作图
协作图是对在一次交互过程中有意义对象和对象间的链建模,显示了对象之间如何进行交互以执行特定用例或用例中特定部分的行为。在协作图中类元角色描述了一个对象,关联角色描述了协作关系中的链,使用顺序号来判断消息的顺序以及并行线程,并通过几何排列表现交互作用中的各个角色所处的位置,显示对象间的协作关系。
协作图的作用:
1. 通过描述对象之间消息的传递情况来反映具体的使用语境的逻辑表达。
2. 显示对象及其交互关系的空间组织结构。
3. 表现一个类操作的实现。
协作图的组成:
对象:类的实例,可以是系统的参与者或任何有效的系统对象。
消息:从一个对象向另一个对象发送信号,包括发送者,接受者和活动。在协作图中,消息使用带有标签的箭头来表示,附在连接发送者和接受者的链上,箭头指向接受者。
链:是两个或多个对象之间的独立连接,是关联的实例。
两者对比分析:序列图和协作图虽然都表示了对象间的交互作用,彼此等价且可以互相转换,但是两者的侧重点不同。序列图侧重表达了交互作用中的时间顺序,没有明确表示对象间的关系,常用于表示设计方案。协作图侧重表达了对象间的关系,但时间顺序可以从消息的编号中获得,经常在过程的详细设计中使用。这两种图都是详细说明了软件功能实现的细节过程,对开发人员理解系统的功能实现非常有帮助,也规避了很多系统分析的错误。
UML9种图中的序列图和协作图