建立顺序图(实例)

顺序图的应用

顺序图通常根据系统的用例创建,侧重按时间顺序对控制流建模。
注意:

一个系统的一个用例往往包含好几个工作流程,这样就需要创建几个顺序图进行描述。

因此对于一个复杂的控制流,可以建立一个主干顺序图和多个分支顺序图,通过包机制对这些顺序图进行组织管理。

建模过程

前提: 已经有用例规约

对于包含复杂控制流的用例,顺序图的建模过程:

  1. 分析用例的工作流程,确定基本工作流程和备选工作流程;

  2. 建立包,以便于对复杂控制流的多个顺序图进行组织管理;

  3. 创建顺序图,对于基本工作流程创建主干顺序图,对于每个备选工作流程分别创建分支顺序图;

  4. 绘制顺序图, 为每个工作流逐步绘制顺序图。

绘制顺序图的基本步骤

  1. 识别对象: 在顺序图上方从左到右依次排列
    (一般是按参与者、边界对象、控制对象、实体对象的顺序)

  2. 确定消息: 按照消息传递的过程依次在顺序图中绘制消息;

  3. 设置对象的激活期和生存期: 在每个对象的生命线上,可以用控制焦点标识激活状态,用符号“×” 标识生存期的结束。

建模实例

任务:对 查看学生成绩用例 建模
image

第一步:分析工作流程

用例:查看学生成绩
参与者:教师
控制流:

  1. 教师希望通过系统查询某名学生的学科成绩。
  2. 教师通过用户界面录入学生的学号以及学科科目。
  3. 用户界面根据学生的学号向数据访问层请求学生信息。
  4. 数据访问层根据学生的学号获取学生信息。
    • 4A:如果系统没有该学生的信息,数据访问层返回学生信息为空,系统提示教师该学生不存在。
  1. 数据访问层根据获取的学生信息和学科科目获取该名学生的成绩信息。
  2. 数据访问层将学生信息和成绩信息提供给用户界面。
    • 6A:如果该名学生没有学科成绩,数据访问层返回学科成绩为空,系统提示教师没有该学生的成绩。
  1. 用户界面将学生信息和成绩信息显示出来。

两个备选工作流程:
4A:系统没有该学生的信息
数据访问层返回学生信息为空
系统提示教师该学生不存在

6A:该名学生没有学科成绩
数据访问层返回学科成绩为空
系统提示教师没有该学生的成绩

第二步:建立包

“查看学生成绩”用例包含基本工作流和两个备选工作流程,因此需要建立包来对三个顺序图进行组织管理。

在Rose的逻辑视图中,创建一个名为“教师查看学生成绩交互图”的包。
image

第三步:创建顺序图

在包中,对于基本工作流程创建主干顺序图,对于两个备选工作流程分别创建分支顺序图。
image

第四步:绘制顺序图

首先,为基本工作流程绘制“教师查看学生成绩顺序图”。

(1)识别对象

工作流程如下:

  • 教师希望通过系统查询某名学生的学科成绩。
  • 教师通过用户界面录入学生的学号以及学科科目。
  • 用户界面根据学生的学号向数据访问层请求学生信息。
  • 数据访问层根据学生的学号获取学生信息。
  • 数据访问层根据获取的学生信息和学科科目,获取该名学生的成绩信息。
  • 数据访问层将学生信息和成绩信息提供给用户界面。
  • 用户界面将学生信息和成绩信息显示出来。

分析基本工作流程来识别对象

注意:

  • 在顺序图上方从左到右依次排列(一般是按参与者、边界对象、控制对象、实体对象的顺序)
  • 对象一般采用匿名对象
  • 对象不能是系统,对象名字不要出现“系统”
    image

(2)确定消息

按照时间的前后顺序确认
image

(3)设置对象的激活期和生存期

激活期按照最后一个消息的结束日期 调整即可;
对于明确指出用完销毁的,设置生命期;

image

备选工作流程绘制顺序图

其次,为备选工作流程4A绘制“教师查看学生成绩顺序图A”。

  • 教师希望通过系统查询某名学生的学科成绩。
  • 教师通过用户界面录入学生的学号以及学科科目。
  • 用户界面根据学生的学号向数据访问层请求学生信息。
  • 数据访问层根据学生的学号获取学生信息。

4A:如果系统没有该学生的信息,数据访问层返回学生信息为空,系统提示教师该学生不存在。(四个对象)
image

image

最后,为备选工作流程6A绘制“教师查看学生成绩顺序图B”。

  • 教师希望通过系统查询某名学生的学科成绩。
  • 教师通过用户界面录入学生的学号以及学科科目。
  • 用户界面根据学生的学号向数据访问层请求学生信息。
  • 数据访问层根据学生的学号获取学生信息。
  • 数据访问层根据学生信息和学科科目获取该名学生的成绩信息。
  • 数据访问层将学生信息和成绩信息提供给用户界面。

6A:如果该名学生没有学科成绩,数据访问层返回学科成绩为空,系统提示教师没有该学生的成绩。

image

image

高级应用-片段

用例: 用户登录

第一步:分析工作流程

用例:登录
参与者:用户
控制流:

  1. 用户在登录对话框中,输入账号和密码,请求登录。
  2. 登录对话框通知日志来记录用户试图登录的信息。
  3. 登录对话框验证用户的账号和密码。
  4. 验证通过,显示主界面,并在日志中记录用户登录成功信息。
    • 4A:如果验证未通过,提示用户登录失败,并在日志中记录用 户登录失败信息。
      • 4A-1:如果用户选择重新登录,可以重复步骤1~4,重新进行登录。如果用户连续登录失败达到3次,则锁定账号,系统提 示用户“连续错误三次,账号被锁定”。

第二步:建立包

“登录”用例包含基本工作流和备选工作流4A,4A还有备选工作流4A-1。

  • 考虑到基本工作流和备选工作流4A,流程也比较简单,可以合到一个顺序图中绘制。

  • 而4A的备选流4A-1的流程比较复杂,需要单独绘制一个顺序图。

因此,需要建立包来对两个顺序图进行组织管理。

如果系统的一个用例包含n个工作流程,则必须创建n个顺序图进行描述。

第三步:创建顺序图

以Rational Approach模式新建一个项目, 在逻辑视图中,创建一个名为“用户登录 交互图”的包。
image

在包中,分别创建主干顺序图和分支顺序图。

image

第四步:绘制顺序图1

首先,为基本工作流和备选流4A合起来绘制“用户登录顺序图”

确立对象和消息

image

设置片段

因为消息4到8不是顺序执行,
验证通过执行4,5,6,
不通过执行7,8
因此使用alt片段且设置对象的激活期和生存期后,如下图
image

第四步:绘制顺序图2

为备选流4A合起来绘制“用户登录顺序图2”

确立对象和消息

image

设置片段

使用loop片段
image

再使用opt片段
image

最后使用break片段且设置对象的激活期和生存期后,如下图
image

展示

image

也可以做成一个图

image

posted @ 2022-09-15 15:13  kingwzun  阅读(3101)  评论(0编辑  收藏  举报