UML顺序图的建模技术及应用示例

新书速览|《UML 2.5基础、建模与设计实践》

顺序图是强调消息时间顺序的交互图,它描述了对象之间传送消息的时间顺序,用于表示用例中的行为顺序。顺序图将交互关系表示为一个二维图,横轴代表在协作中各独立对象的类元角色;纵轴是时间轴,时间沿竖线向下延伸。

顺序图主要用于展示对象间交互发生的顺序,通过这些交互来显示对象之间的动态关系。虽然开发者通常认为顺序图主要对他们有用,类似于类图的功能,但实际上,组织中的业务人员也会发现顺序图很有价值。顺序图能展示不同业务对象之间是如何相互作用的,这对于理解和交流当前的业务流程非常有帮助。

除了记录组织当前的活动之外,业务级别的顺序图还可以作为需求文档使用,传达实现未来系统所需的需求。在项目的需求分析阶段,分析师可以利用顺序图提供更正式和详细的表达,将用例推进到更深一层的详细设计阶段。在这种情况下,用例往往会被细化成一个或多个顺序图。

画顺序图的一般步骤

(1)确定交互的范围。

(2)确定参与交互过程的活动者与对象。

(3)确定活动者、对象的生命周期。

(4)确定交互中产生的消息。

(5)细化消息的内容。

下面看两个顺序图建模示例。

【例6.1】

家用汽车都会配备那种能够遥控锁车、开锁、打开后备箱的钥匙。当按下“锁车”按钮时,汽车会闪动一下车灯并发出一声蜂鸣,说明车门上锁了。这里涉及3个类:CarOwner(车主)、CarKey(车钥匙)和Car(车)。现在我们就用这样一个实例介绍顺序图的设计。

1)应用场景

该建模场景的描述如下:

(1)从CarOwner到CarKey的请求,要求CarKey实现getButtonPress(b)操作,登记CarOwner按下的按钮(通常用b引用)。

(2)CarKey发送消息给Car,通知Car实现其pressKeyMessage(b)操作,如果按下的按钮b是“lock”,Car就会向它自己发送执行lock()操作的请求。然后,Car发送两个信号BlinkLights和Beep给CarOwner。

2)实现

首先,绘出3个匿名对象,它们分别是CarOwner、CarKey和Car的实例。然后,把它们放在顺序图的最顶层,再为每个对象绘制一条生命线,如图6.17所示。

图6.17  顺序图的初始

根据场景描述,绘制的顺序图如图6.18所示。

图6.18  汽车和车钥匙顺序图

【例6.2】

ATM取款看起来是件很简单的事情,首先插入银行卡,然后按照提示输入密码,再选择“取款”,接着输入数额,最后提出现金,但是整个过程中各个对象之间要涉及很多的消息。

1)应用场景

ATM取款应用场景描述如下:

(1)银行储户将银行卡插入读卡机insertCard()。

(2)读卡机将信息传给客户管理acceptCard()。

(3)客户管理提出查询密码checkPass()。

(4)显示屏要求银行储户输入密码inputPassRequest()。

(5)储户在输入设备输入密码inputPass()。

(6)输入设备将输入的密码传递给客户管理transPass()。

(7)客户管理请求事务管理确认密码的合法性requestPassLegal()。

(8)事务管理确认密码的合法性并返给客户管理passLegal()。

(9)客户管理通过显示屏询问服务类别queryKind()。

(10)显示屏要求储户输入服务类别请求showServiceRequest()。

(11)储户输入取款请求inputTakeRequest()。

(12)输入设备向客户管理发出取款请求takeRequest()。

(13)客户管理提出取款金额qureyMoney()。

(14)显示屏向银行储户发出取款数额请求showMoneyRequest()。

(15)储户输入取款数额inputMoney()。

(16)输入设备将储户输入的数额传递给客户管理transMoney()。

(17)客户管理确认取款额数并返给显示屏queryMoney()。

(18)显示屏呈现给储户确认信息showOKRequest()。

(19)储户输入确认信息inputOK()给输入设备。

(20)输入设备将确认信息传递给客户管理OKInformation()。

(21)客户管理请求事务管理确认数额的合法性requestMoneyLegal()。

(22)事务管理确认数额的合法性并返给客户管理moneyLegal()。

(23)事务管理向点钞机发出出钞请求requestTake()。

(24)点钞机出钞票outMoney()。

(25)储户取出钞票takeMoney。

(26)取卡outCard()。

2)实现

在整个场景中,用到7个对象,分别是“银行储户”“读卡机”“显示屏”“输入设备”“客户管理”“点钞机”和“事务管理”。它们之间通过消息传递保障其功能正常运行。对应的顺序图如图6.19所示。

图6.19  ATM取款顺序图

《UML 2.5基础、建模与设计实践》(李波,姚丽丽,朱慧)【摘要 书评 试读】- 京东图书 (jd.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/800489.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎样在 PostgreSQL 中优化对大表的并发读取操作?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 怎样在 PostgreSQL 中优化对大表的并发读取操作?一、了解 PostgreSQL 中的大表和并发读取&…

Linux C语言基础 day10

目录 学习目标: 学习内容: 1.指针指向数组 1.1 指针与数组的关系 1.2 指针与一维数组关系实现 1.2.1 指针与一维数组的关系 1.2.2 指针指向一维整型数组作为函数参数传递 课外作业: 学习目标: 一周掌握 C基础知识 学习内…

mysql-connector-java 8.0.33 反序列化漏洞

前言 经过与oracle官方沟通,在最新的mysql-connector-j 9.0.0里不存在这个问题,所以他们不认为这是个漏洞 不过确实,mysql-connector-java这个分支已经迁移到mysql-connector-j了,当时没注意,交的时候只注意了mysql-c…

C#知识|账号管理系统:添加账号的功能笔记

哈喽,你好啊,我是雷工! 本节记录账号管理系统中添加账号的逻辑过程,以下为学习笔记。 01 实现内容 ①:实现当点击【保存到数据库】按钮时,将账号名称、原创篇数、账号简介、账号类型显示的内容存储到LGAccountManagerDB数据库的Account表中; ②:实现点击【保存到数据库…

从LeetCode215看排序算法

目录 LeetCode215 数组的第K个最大元素 ① 第一反应:java的内置排序Arrays.sort() ② 冒泡排序 ③归并排序(先分解再合并) ④快速排序(边分解边排序) ⑤堆排序 LeetCode215 数组的第K个最大元素 给定整数数组 nums…

LLM(大语言模型)解码时是怎么生成文本的?

Part1配置及参数 transformers4.28.1 源码地址:transformers/configuration_utils.py at v4.28.1 huggingface/transformers (github.com) 文档地址:Generation (huggingface.co) 对于生成任务而言:text-decoder, text-to-text, speech-…

详解MySQL中的递归查询

MySQL中的递归查询主要通过WITH RECURSIVE语句来实现,这在处理具有层级关系或树形结构的数据时非常有用。下面将通过一个具体的例子来详细解释如何在MySQL中使用递归查询。 示例场景 假设我们有一个部门表(departments),其中包含…

Zynq系列FPGA实现SDI编解码转SFP光口传输(光端机),基于GTX高速接口,提供6套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案在Xilinx-Kintex7上的应用 3、详细设计方案设计原理框图输入Sensor之-->OV5640摄像头输入Sensor之-->HDMIVDMA图像缓存RGB转BT1120GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGBHDMI输…

Rust 通过 Deref trait 将智能指针当作常规引用处理

通过 Deref trait 将智能指针当作常规引用处理 实现 Deref trait 允许我们重载 解引用运算符(dereference operator)*(与乘法运算符或通配符相区别)。通过这种方式实现 Deref trait 的智能指针可以被当作常规引用来对待&#xff…

基于IDEA的Lombok插件安装及简单使用

lombok介绍 Lombok能以注解形式来简化java代码,提高开发效率。开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护。而Lombok能通过注解的方式,在编译…

Qt中文个数奇数时出现问号解决

Qt中文个数奇数时出现问号解决 目录 Qt中文个数奇数时出现问号解决问题背景问题场景解决方案 问题背景 最近在开发一个小工具,涉及到一些中文注释自动打印,于是摸索如何把代码里面的中文输出到csv文件中,出现了乱码,按照网上的攻…

供应链管理(SCM):如何在颜值和体验上发力

要在供应链管理系统(SCM)中在颜值和体验上发力,让用户感觉耳目一新,可以采取以下措施: 界面设计优化: 对供应链管理系统的界面进行优化,注重界面的美观、简洁和易用性。采用现代化的设计风格、…

Python酷库之旅-第三方库Pandas(026)

目录 一、用法精讲 65、pandas.bdate_range函数 65-1、语法 65-2、参数 65-3、功能 65-4、返回值 65-5、说明 65-6、用法 65-6-1、数据准备 65-6-2、代码示例 65-6-3、结果输出 66、pandas.period_range函数 66-1、语法 66-2、参数 66-3、功能 66-4、返回值 6…

Gooxi受邀参加第三届中国数据中心服务器与设备峰会

7月2-3日,第三届中国数据中心服务器与设备峰会在上海召开,作为国内最聚焦在服务器领域的专业峰会,吸引了来自全国的行业专家、服务器与机房设备厂家,企业IT用户,数据中心业主共同探讨AIGC时代下智算中心设备的设计之道…

【Linux】03.权限

一、权限的概念 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以在 linux 系统下做任何事情,不受限制普通用户:在linux下做有限的事情超级用户的命令提示符是“#”,普通用户的命…

Linux驱动开发-04LED灯驱动实验(直接操作寄存器)

一、Linux 下LED 灯驱动原理 Linux 下的任何外设驱动,最终都是要配置相应的硬件寄存器。驱动访问底层的硬件除了使用内存映射将物理地址空间转化为虚拟地址空间,去进行读写修改,还可以通过各种子系统函数去进行操作 1.1 地址映射 MMU 全称…

JavaWeb后端学习

Web:全球局域网,万维网,能通过浏览器访问的网站 Maven Apache旗下的一个开源项目,是一款用于管理和构建Java项目的工具 作用: 依赖管理:方便快捷的管理项目以来的资源(jar包)&am…

vue2学习笔记5 - 表单类元素的单向数据绑定和双向数据绑定

前言 上一节我们学到,可以通过v-bind:指令,将标签体属性值通过js表达式绑定到vue实例中的某data上,读取该data数据,并通过vue模板中指定的页面元素,展示在页面上。 但是,我们在使用网页表单的时候&#x…

Ctrl+C、Ctrl+V、Ctrl+X 和 Ctrl+Z 的起源

注:机翻,未校对。 The Origins of CtrlC, CtrlV, CtrlX, and CtrlZ Explained We use them dozens of times a day: The CtrlZ, CtrlX, CtrlC, and CtrlV shortcuts that trigger Undo, Cut, Copy, and Paste. But where did they come from, and why do…

文件安全传输系统,如何保障信创环境下数据的安全传输?

文件安全传输系统是一套旨在保护数据在传输过程中的安全性和完整性的技术或解决方案。通常包括以下几个关键组件: 加密:使用强加密算法来确保文件在传输过程中不被未授权访问。 身份验证:确保只有授权用户才能访问或传输文件。 完整性校验…