时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的。顺序图中显示的是参与交互的对象及其对象之间消息交互的顺序。时序图中包括的建模元素主要有:对象(Actor)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)等等。
时序图的主要元素
-
生命线 (Lifeline):
- 表示参与交互的对象或参与者,通常以一条垂直虚线表示,并在顶部标注对象的名称和类型。如果对象是匿名的或者其具体实例不重要,则可以只用类名来标识。
-
激活期 (Activation):
- 生命线上的一段水平矩形,表示该对象在一个特定时间段内处于活跃状态,即正在执行某个操作或处理消息。
-
消息 (Message):
- 消息是从一个对象发送到另一个对象的动作,用带箭头的线连接两个生命线,箭头指向接收消息的对象。消息可以是同步的(实心箭头),也可以是异步的(开口箭头)。此外,还可以有返回消息,用来表示方法调用的结果。
-
创建和销毁:
- 可以显示对象的创建(通过构造函数调用)和销毁(如垃圾回收)时刻,这通常会出现在生命线的开始或结束位置。
-
自我消息 (Self Message):
- 对象内部的方法调用,可以用箭头指向同一个生命线来表示。
-
条件分支 (Conditional Branches):
- 使用框内的文字(如
alt
、opt
)来表示选择性执行的消息序列。例如,alt
用于表达互斥条件,而opt
则表示可选操作。
- 使用框内的文字(如
-
循环 (Loop):
- 当需要重复执行某些消息时,可以在框内标记出循环条件。
-
组合片段 (Combined Fragment):
- 用于组织复杂的交互模式,比如并行执行、选择性执行等。组合片段包括但不限于
par
(并行)、loop
(循环)、opt
(选项)、alt
(替代)。
- 用于组织复杂的交互模式,比如并行执行、选择性执行等。组合片段包括但不限于
-
注释 (Comment):
- 为图表中的元素添加说明文字,帮助理解复杂的行为逻辑。
时序图的应用场景
- 设计阶段:帮助开发团队理解系统内部的工作流程,特别是不同对象之间的通信机制。
- 文档化现有系统:作为逆向工程的一部分,记录已有软件系统的交互细节。
- 测试计划:基于时序图制定详细的测试案例,确保所有预期的行为都被验证。
- 需求分析:与利益相关者沟通,确保对系统功能的理解一致。
时序图示例