软件项目管理【UML-时序图】

一、什么是时序图

时序图是基于交互的对象行为建模,是 UML 用于描述对象之间信息的交互过程的方法,是描述对象间协作关系的模型。

时序图更多只是一种叫法,平常我们所说的顺序图、序列图也是在称呼它

时序图用于捕获系统运行中对象之间有时间顺序的交互,是由生命线和消息组成。

时序图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线上加上矩形框。消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。

二、组成元素

1.角色

这个角色可以是用户、外部系统、机器等等。

用一个小人表示

2.对象和生命线

对象:类的实例,当然在时序图里面可以是类,也可以该类的某个对象

关于对象的命名:

  1. 对象名和类名,例如:dispatcherServlet:DispatcherServlet
  2. 只显示类名,即表示它是一个匿名对象,例如::DispatcherServlet
  3. 只显示对象名不显示类名,例如:dispatcherServlet

生命线:在时序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间。

3.活动条(激活条)

在生命线的虚线上可以用活动条来表示某种行为(功能)的开始和结束,一般用小矩形来表示。

4.消息(交互行为)

什么是消息?

在面向对象的分析和设计中,对象的行为也被称为消息,因为对象之间的行为的交互擢用也可以看成是对象之间发送消息实现的。通常,当一个对象调用另一个对象中的行为时,即完成了一次消息传递。

时序图中关注生命线之间的通信,这些通信就是对象发送的消息。UML用生命线间带有实心箭头的实现表示消息,每条消息从发送对象指向接收对象。

消息的分类

  • 简单消息:就表示控制如何从一个对象发送给另一个对象,并不包含控制的细节。
  • 同步消息:意味着阻塞和等待。如:A向B 发送一个消息后,对象A 必须一直等到B执行完成后返回才能继续往下执行。这就是同步消息。(同步消息需要建立同步通道,由发起方发起,等待接收方确认,确认后开始交互,交互完后断开通道)
  • 异步消息:就意味着是非阻塞。如:A向B发送消息后,直接可以执行下面代码,无需等待B的执行。

消息的表示

同步消息用实心箭头表示,异步消息用开放式箭头表示。

自我调用消息

消息的返回值:

三、交互框

UML在2.0时在时序图中加入了交互框。交互框用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。

类型参数含义
ref表示交互被定义在另一个图中。可将一个规模较大的图划分为若干个规模较小的图,方便图的管理和复用。
assert表示发生在交互框内的交互式唯一有效的执行路径,有助于指明何时交互的每一步必须被成功执行,通常与状态变量一起使用来增强系统的某个状态。
loopmin times,max times,[guard_condition]循环片段,当条件为真的时候执行循环。也可以写成loop(n)来表示循环n次,与java或者C#等中的for循环比较相似。
break如果交互中包含break,那么任何封闭在交互中的行为必须被推出,特别是loop片段,这与java中的break语句比较相似。
alt[guard_condition1]...
[guard_condition2]...
[else]
选择片段,在境界中表达互斥的条件逻辑,与if...else...语句相似。
neg展示了一个无效的交互。
opt[guard_condition]可选片段,当警戒值为真的时候执行。
par并行片段,表达并行执行。
region区域,表示区域内仅能运行一个线程。

alt (选择片段)

简单说就是 将 if/else 在图示中表示出来了

opt

包含一个可能发生或不发生的序列;

只要当我成绩score小于60时,老妈打我这件事情肯定会发生。

大于就不会发生。

Loop (循环)

片段重复一定次数,可以在临界中指示片段重复的条件

Par(并行)

四、例子

<think>好的,用户想查找关于教务系统的时序图,可能是为了了解工作流程或进行系统设计。首先,我需要确定用户的具体需求是什么。教务系统涵盖多个模块,比如选课、成绩管理、学籍管理等,用户可能需要其中某个模块的时序图,或者整个系统的高层时序图。 接下来,我应该回顾已有的引用资料。引用[1]提到教务管理系统的UML模型,包括类图、用例图等,但未明确提到时序图。引用[2]讨论了选课系统的UML类图、对象图、用例图和部署图,但同样没有时序图的具体信息。引用[3]描述了学历学籍管理系统的角色和模块,但没有直接涉及时序图。引用[5]提到网上购物系统的时序图,这可能对用户有帮助,但需要关联到教务系统。 考虑到用户需要教务系统的时序图,可能需要根据现有资料中的模块和流程进行推断。例如,选课流程的时序图可能包括学生、系统界面、课程数据库、验证服务等对象之间的交互。同样,成绩录入流程可能涉及教师、教务系统、成绩数据库等。 另外,用户可能需要了解如何绘制时序图,或者具体的示例。引用[5]中的网上购物系统时序图可以作为参考,说明时序图的结构和元素。同时,引用[2]中的选课系统功能描述可以帮助构建选课流程的步骤,进而转化为时序图。 还需要考虑用户可能的深层需求,比如系统设计中的交互细节,或者如何确保各个组件之间的正确通信。例如,在选课过程中,系统需要验证课程容量、时间冲突等,这些步骤在时序图中应明确展示。 最后,应该建议用户参考现有的UML资源,如引用[1]和[5],或者提供具体的步骤来指导他们绘制教务系统的时序图。如果现有资料中没有现成的时序图,可能需要引导用户根据功能描述自行构建,或推荐相关工具和模板。</think>### 教务系统时序图设计解析 教务系统的时序图(Sequence Diagram)主要用于描述系统中不同角色或组件之间的动态交互流程。以下是基于UML标准的教务系统时序图设计要点及示例: --- #### 1. **典型教务系统时序图场景** - **选课流程时序图** 对象包括:学生、选课界面、课程数据库、学分验证服务。 交互步骤: 1. 学生提交选课请求 → 系统验证课程容量 → 检查时间冲突 → 更新选课记录 → 返回结果[^2][^5] ```plantuml @startuml actor 学生 participant "选课界面" as UI participant "课程数据库" as DB participant "验证服务" as VS 学生 -> UI: 选择课程 UI -> VS: 验证课程容量 VS -> DB: 查询当前选课人数 DB --> VS: 返回人数 alt 人数未满 VS -> UI: 允许选课 UI -> DB: 更新选课记录 DB --> UI: 操作成功 UI --> 学生: 显示成功提示 else 人数已满 VS -> UI: 拒绝选课 UI --> 学生: 显示失败提示 end @enduml ``` - **成绩录入流程时序图** 对象包括:教师、教务系统后台、成绩数据库。 交互步骤: 1. 教师提交成绩 → 系统验证权限 → 存储成绩 → 触发学分计算[^3] --- #### 2. **时序图设计步骤** 1. **识别参与对象** - 角色:学生、教师、管理员 - 系统组件:界面、数据库、验证服务[^1][^3] 2. **定义交互消息** - 同步消息(实线箭头) - 异步消息(虚线箭头) - 返回消息(虚线箭头) 3. **标注条件分支** 使用`alt/else`片段表示逻辑分支(如选课成功/失败) --- #### 3. **参考资源建议** - **GitCode开源项目**:引用[5]提供了网上购物系统的时序图模板,可类比教务系统交互逻辑 ``` 项目地址:https://gitcode.com/Open-source-documentation-tutorial/2c86e ``` - **UML工具推荐** - PlantUML(代码生成时序图- Visual Paradigm(图形化设计工具) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值