一个UML的例子

news2024/11/25 14:37:20

一、需求分析

1.概念定义

需求分析,要明确以下4个概念的具体内容:
资源是指使用或产生的对象,如人、物料、信息、产品等。
目标是指希望资源处于什么样的状态。
过程是指被执行的活动,这些活动会改变资源的状态。
规则是指在某些方面进行规定或约束的声明,如一个过程应该怎样执行、资源的结构应该是怎样的等。

2.需求描述

储户在ATM机上插入银行卡进行身份验证。合法的储户可以在ATM机上进行存款、取款、账户余额查询、转账等事务。储户在ATM机上不能进行信用付款、修改密码等操作。

3.需求分析

资源有银行卡、账户和现金。进一步分析可知,银行卡和现金是物理产品,账户是电子信息。

目标有以下两种类型:
目标1:账号、密码、账户余额,三者构成一个一对一的整体。
目标2:账户余额正确反映储户在银行中的存款数目。

过程有登录、存款、取款、账户余额查询、转账。
"登录"过程包括以下活动:储户在ATM机的读卡终端上插入银行卡,储户在ATM机的键盘上输入密码。如果密码正确,则成功登录系统。储户可以进行后续的操作:存款、取款、账户余额查询、转账。
"存款"过程包括以下活动:储户在ATM机的存款终端上放入现金,系统验证现金的真伪,并统计现金的总额,系统修改账户余额数目。
”取款"过程包括以下活动:储户在ATM机的键盘上输入取款金额,系统判断账户余额是否足额,储户从ATM机的存款终端上取走现金,系统修改账户余额数目。
”账户余额查询"过程包括以下活动:储户在ATM机的键盘上输入查询选项(1表示查余额;2表示查历史记录),ATM机的显示终端上显示账户余额数目或存取操作历史记录。
"转账"过程包括以下活动:储户在ATM机的键盘上输入转账选项,储户在ATM机的键盘上输入他人的账号,储户在ATM机的键盘上输入转账金额,系统判断账户余额是否足额,系统修改账户余额数目。

规则有以下7种类型:
规则1:账号由1519位的数字09组成。
规则2:密码由6位的数字0~9组成。
规则3:每天每次输人密码时,正确性验证三次。三次错误,则禁止当天的ATM机的操作。
规则4:无论是进行存款、取款还是转账,对最终的操作给予确认提示。
规则5:每次取款或转账时,当账户余额不足时,终止后续操作。
规则6:每天取款最多2万元,每次取款最多5千元。
规则7:每次存款或取款时,对现金进行真币验证,禁止伪币流通。

二、UML图型概览

附:UML术语标准和分类_pingcode的博客-CSDN博客

2.1用例图(Use Case Diagram)

用例图是被称为参与者的外部用户所能观察到的系统功能的模型图。
参与者是系统的主体,表示提供或接收系统信息的人或系统。
用例是系统中的一个功能单元,可以被描述为参与者与系统之间的一次交互作用。
用例图的用途是列出系统中的参与者与用例,并显示哪个参与者参与了哪个用例的执行。

在本例中,参与者是储户,系统有5个功能:登录、存款、取款、账户余额查询、转账。实际上对应5个过程,因为每个过程体现了参与者与系统的一次交互行为。所以,系统有5个用例。

下面展示了本例的用例图:

在这里插入图片描述

2.2活动图(Activity Diagram)

用活动图描述业务流程,对应于某个用例的用例描述
前者用图型表达参与者与系统功能的交互行为,后者用自然语言表达参与者与系统功能的交互行为

在活动图中定义了流程从哪里开始,到哪里结束,以及在这之中包括哪些活动,并描述了活动发生的顺序。

每个过程对应一个活动图,在本例中,存在5个过程,分别对应5个活动图。
限于篇幅,下面只展示了本例的“登录“和“存款“活动图:

在这里插入图片描述

在这里插入图片描述

2.3顺序图(Sequence Diagram)

顺序图描述了对象之间传递消息的时间顺序,表达了用例的用例描述是如何用对象及对象间的消息传递来实现的。

每一个对象用一条竖直虚线代表其生命周期,即生命线;
生命线上的矩形表示一个交互活动所占用的时间段;
生命线之间的箭头连线表示消息。从上到下,消息的位置关系表达了消息之间的时间顺序。

每个用例的用例描述对应一个顺序图,在本例中,存在5个用例的用例描述,分别对应5个顺序图。
限于篇幅,下面只展示了本例的“登录“和“存款“用例的用例描述对应的顺序图:

在这里插入图片描述

在这里插入图片描述

读卡机对象代表读卡机驱动程序,完成从银行卡中读取储户的账号及银行信息。显示屏对象代表显示器驱动程序,完成信息的显示输出。键盘代表键盘驱动程序,完成从键盘上读取输入的数字信息。存款机对象代表存款机驱动程序,完成从存款机中获取现金、验钞、统计现金金额。账户信息对象代表在银行数据库中储存的储户账户实体类,包括账号、密码、银行行号、存款余额等信息。

在本例中,每个用例的用例描述对应一个顺序图。它是在对象层次上用图型表达参与者与系统功能的交互行为。对于同一个用例的用例描述,存在3种表达方式:用例描述、活动图、顺序图。用例描述和活动图在描述参与者与系统功能的交互行为时,基本单位是活动。顺序图在描述参与者与系统功能的交互行为时,基本单位是对象及对象间消息。若干个对象及它们之间的消息传递完成一个活动的任务。
例如,图一中的“储户“对象、“读卡机“对象,以及“插入银行卡“消息,共同完成了2.2活动图图一中的“储户插入银行卡“活动。

2.4通信图(Communication Diagram)

通信图对在一次交互中有意义的对象和对象间的链建模。
在通信图中,直接相互通信的对象之间有一条直线,没有画线的对象之间不直接通信。
附在直线上的箭头代表消息(发送者和接收者),消息的编号代表消息的发生顺序。
一般情况下,顺序图和通信图可以互相转换。

下面展示了本例的“存款“用例的顺序图对应的通信图:

在这里插入图片描述

另外,通信图的一个重要用途是表示一个类操作的实现。通信图可以说明类操作中用到的参数和局部变最及操作中的永久链。
当实现一个行为时,消息编号对应了程序中嵌套调用结构和信号传递过程。

2.5类图(Class Diagram)

类图描述系统的静态结构,展现了一组类、接口、协作和它们之间的关系。
需要永久储存的实体类之间的关系用关联关系表示,主要反映对象(类的实例)之间的结构连接多重性。其他类(边界类、控制类、实体类)之间的关系常用依赖关系表示,主要反映一个对象使用另一个对象的属性和/或方法。

下面展示了银行ATM系统的类图:

在这里插入图片描述

在本例中,“账户信息”类和“交易记录”类之间是一对多的关联关系,其他类之间(这些类包括读卡机、键盘、显示屏、存款机、账户信息)是依赖关系。这些依赖关系对应着顺序图中的消息传递,这些消息传递属于操作调用类型。例如,“读卡机”类依赖于“账户信息”类,是因为前者要调用后者的verifyFunds()方法。

2.6状态机图(State Machine Diagram)

状态图是一个类对象所经历的所有历程的模型图,它由对象的各个状态和连接这些状态的变迁组成。
每个状态对一个对象在其生命周期中满足某种条件的一个时间段建模。当一个事件发生时,它会触发状态间的变迁,导致对象从一种状态转化到另一种状态。

下面展示了本例的“账户信息”类对象的状态图:

在这里插入图片描述

在本例中,“账户信息”类对象可以有几种不同的状态:打开、可用、透支、关闭。
如果储户没有插入银行卡,则”账户信息”类对象是不可用的,即无法进行存款、取款、账户余额查询、转账等操作。插人银行卡后,“账户信息”类对象处于“打开“状态,此时,还没有进行任何操作的选择,所以处于等待状态。如果储户选择的操作是存款或账户余额查询,则”账户信息”类对象不会发生异常现象,所以不用描述这两类操作引起的状态变迁。如果储户选择的操作是取款或转账,则在取款额大于存款余额的情况下,”账户信息”类对象会发生异常现象,所以要描述这两类操作引起的状态变迁。取款或转账可以连续操作,只要存款余额充足即可,所以“可用“状态可以有自反变迁(也称为递归变迁)。“透支“状态会引发程序的异常处理,其实质就是取消当前的取款或转账操作。无论在“打开“状态、“可用“状态、“透支“状态中的哪个状态,只要出现“退卡”事件,就可以结束“账户信息”类对象的本次活动期。

针对一个具体的软件系统,通常情况下,不会对所有的类对象都建立一个状态图,只有那些需要刻画属性取不同值的类对象,才有可能和必要建立状态图。此外,状态图的一个重要用途是表示一个类操作的实现。在模型转换和代码生成自动化技术的支持下,从状态图可以自动生成类操作的代码。此外,状态图也支待测试用例的设计和测试活动的进行。

2.7构件图(Component Diagram)

构件图描述了系统中的各种组件(也称为组件图),用于描述系统的体系架构。
组件可以是源代码组件、二进制文件组件或可执行文件组件。
组件之间也存在着依赖关系,利用这种依赖关系可以方便地分析一个组件的变化会给其他组件带来怎样的影响。

下面展示了本例的构件图:

在这里插入图片描述

通常在开发一个软件系统时,不一定要对所有的类的操作编写代码。有些类操作的实现可以通过接口来实现。最常见的接口实现是厂商提供的某类应用的驱动程序。因此,构件图可以准确地表达出软件系统的“软“模块的积木结构特征。就好比一台计算机硬件系统中,CPU部件可以用兼容的不同厂商的产品互换一样,软件系统中的“软“模块也可以实现不同厂商的技术互换。

图中,组件”读卡机”、“显示屏”、”键盘”、“存款机”可以是公开的任何接口,组件ATM.EXE是个任务规范,表示处理线程。在这里,处理线程是个可执行文件,除了调用其他4个组件完成相应的任务外,主要负责存款、取款、账户余额查询、转账功能的代码实现。

2.8部署图(Deployment Diagram)

部署图描述了位于结点实例上的运行组件实例的安排,描述系统的实际物理结构
结点是一组运行资源,如计算机、设备、存储器、显示器、打印机等。有些资源具备运算能力,有些资源不具备运算能力。

下面展示了本例的部署图:

在这里插入图片描述

图中展示了ATM系统的主要布局。ATM系统采用三层结构,分别针对银行数据库服务器、地区ATM服务器和客户机。

ATM客户机结点上的可执行文件主要是ATM系统,在不同地点的多个ATM客户机上运行,完成存款、取款、账户余额查询、转账功能。ATM客户机结点通过专用网与地区ATM服务器结点通信。

地区ATM服务器结点上的可执行文件主要是多用户分布式操作系统,完成不同储户在不同地点的ATM客户机上的同时操作响应,并提供与银行数据库的统一的事务处理功能。地区ATM服务器结点通过局域网与银行数据库服务器结点通信。

银行数据库服务器结点上的可执行文件主要是大型关系型数据库管理系统,完成数据库的事务处理功能(包括新增、修改、删除、查询各种数据表中的记录,备份和恢复数据库,数据库操作权限管理和日志管理等)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023-02-09 - 3 Elasticsearch基础操作

本章主要介绍ES的基础操作,具体包括索引、映射和文档的相关操作。其中,在文档操作中将分别介绍单条操作和批量操作。在生产实践中经常会通过程序对文档进行操作,因此在介绍文档操作时会分别介绍DSL请求形式和Java的高级REST编码形式。 1 索引…

VIF原理

文章目录一、VIF公式和原理对于R方一般回归模型皮尔逊相关系数中的方差VIF原理:一、VIF公式和原理 所谓VIF方法,计算难度并不高。在线性回归方法里,应用最广泛的就是最小二乘法(OLS),只不过我们对每个因子…

锁的优化机制了解嘛?请进!

点个关注,必回关 文章目录自旋锁:自适应锁:锁消除:锁粗化:偏向锁:轻量级锁:从JDK1.6版本之后,synchronized本身也在不断优化锁的机制,有些情况下他并不会是一个很重量级的…

Open AI登录,可以使用ChatGPT!

目录 第一步:准备好上网工具 1、确认自己的IP 二、登录 三、无法登录的问题 第一步:准备好上网工具 1、确认自己的IP 先查看自己的电脑的IP,使用https://www.ip138.com/,看看,然后就可以将自己电脑的IP改成国外的IP&#x…

Word处理控件Aspose.Words功能演示:使用 C++ 拆分 MS Word 文档

Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外,API支持所有流行的Word处理文件…

利用 ChatGPT 回答 R 相关问题

最近小编也尝试使用了 ChatGPT,下面给出一些知乎上常见 R 语言相关问题的回答。供大家参考: 目录 文章目录目录经典问题预测数据科学软件排名数据科学的 10 个常用 R 包R 语言入门书籍和网站推荐回答专业问题绘图绘制正负柱状图动态散点图构建 Shiny 程…

Java学习笔记-03(API阶段)

前言 目前我们看到的是Java基础部分的一个新的部分API,这是个啥,又能做啥呢? 其实可以概括成一句话:帮助我们站在巨人的肩膀上,实现更加高效的开发,那么我们来一探究竟吧~ API API(Application Programming Interface,应用程序接口)是一些预…

如何使用HTTP远程连接DOCKER?

/etc/systemd/system/docker.service.d/override.conf 写入文件 ##Add this to the file for the docker daemon to use different ExecStart parameters (more things can be added here) [Service] ExecStart ExecStart/usr/bin/dockerd默认情况下使用 systemd 时&#xff0…

报表生成器 FastReport .Net 用户指南 2023(十):Band的属性

FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。 FastReport.NET官方版…

HTTP协议基础知识(URL,请求响应格式,状态码,方法,cookie和session等)

目录 URL urlencode和urldecode http请求格式 http响应格式 http请求解析 http响应发送 http的方法 GET vs POST http的状态码 重定向 http常见报头属性 cookie和session URL 首先我们需要知道以下几点, 1.我们请求的图片,html,…

spring-webflux5 使用websocket

换做平常springboot程序中使用websocket的话是很简单的,只需要三步就能实现前后端的实时通讯。而在spring5中则更简单了,并且支持定点推送与全推送的灵活运用。在这里就分常规编程与响应式编程两种使用,进行记录下。一、非响应式编码1、引入W…

第十节 使用设备树插件实现RGB 灯驱动

Linux4.4 以后引入了动态设备树(Dynamic DeviceTree),我们这里翻译为“设备树插件”。设备树插件可以理解为主设备树的“补丁”它动态的加载到系统中,并被内核识别。例如我们要在系统中增加RGB 驱动,那么我们可以针对R…

深入理解Android图形系统

一、图形系统简介图形系统是计算机中最重要的子系统之一。我们平时使用的电脑、手机都是图形界面的。对于普通人来说,没有图形界面的计算机几乎是没法用的,今天我们就来讲一讲图形系统背后的原理。1.1 图形系统的诞生早期的计算机是没有图形界面的&#…

一种基于深度学习的单导联心电信号睡眠呼吸暂停检测方法

在R峰识别的基础上,加入S峰的识别,并论正了该策略对检测结果的有效性。 1、大致方法 将数据集(ECG信号)划分为每五分钟的一个片段,为了减少噪声和信号伪影,首先对信号应用了一个有限脉冲响应(…

使用python加密主机文件几种方法实现

本文主要介绍了使用python加密主机文件几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧数据加密是一种保护数据安全的技术,通过对数据进行编…

你所不知道的Number()、parseInt()、parseFloat()转换细则

为什么要写这篇文章 最近在阅读《javascript高级程序设计》(第6版)这本书,以写代记。同时刚刚入职新公司,发现自己对于number类型转换的细节掌握不足 使用场景 我们常常对于很多字符串类型的数字需要转换成Number,一…

2023春节,蔚来高速免费换电累计达37万余次

2023年春节放假前,蔚来官方宣布高速换电免费消息: 在高速公路上(含高速出入口)的所有蔚来汽车换电站将为蔚来用户,提供不限次免费换电服务。 消息发布后,部分电动车企也进行了跟进,提供了特定区…

二十四、Gtk4-GtkExpression

GtkExpression是一种基本类型。它不是GObject的后代。GtkExpression提供了一种描述对值的引用的方法。GtkExpression需要求值才能获得值。 它类似于算术计算。 1 2 3 12是一个表达式。给出了计算的方法。3是来自表达式的值。求值是计算表达式并得到值。 GtkExpression是一种…

【大厂高频真题100题】《有效的井字游戏》 真题练习第26题 持续更新~

有效的井字游戏 给你一个字符串数组 board 表示井字游戏的棋盘。当且仅当在井字游戏过程中,棋盘有可能达到 board 所显示的状态时,才返回 true 。 井字游戏的棋盘是一个 3 x 3 数组,由字符 ,X 和 O 组成。字符 代表一个空位。 以下是井字游戏的规则: 玩家轮流将字符…

CODESYS开发教程10-文件读写(SysFile库)

今天继续我们的小白教程,老鸟就不要在这浪费时间了😊。 前面一期我们介绍了CODESYS的文件操作库CAA File。这一期主要介绍CODESYS的SysFile库所包含的文件读写功能块,主要包括文件路径、名称、大小的获取以及文件的创建、打开、读、写、拷贝…