ATM系统的分析与建模面向对象+结构化不完全版要点.docx
《ATM系统的分析与建模面向对象+结构化不完全版要点.docx》由会员分享,可在线阅读,更多相关《ATM系统的分析与建模面向对象+结构化不完全版要点.docx(33页珍藏版)》请在冰豆网上搜索。
![ATM系统的分析与建模面向对象+结构化不完全版要点.docx](https://file1.bdocx.com/fileroot1/2023-2/24/79336353-e613-488d-b563-d426d07bd04a/79336353-e613-488d-b563-d426d07bd04a1.gif)
ATM系统的分析与建模面向对象+结构化不完全版要点
2012—2013学年第二学期
论文
课程名称:
软件工程导论
指导教师:
专业班级:
学生姓名:
学号:
教学部门:
计算机学院
ATM系统的分析与建模
写这篇论文有两个目的,一是为了让本学期学习了《软件工程导论》这门课程的同学能够在编写文章的时候总结这段时间所学知识,同时也能够在文章中考核同学的理论水平和发现在学习中存在哪一些问题,希望能够同学在写论文的时候发现并加以解决。
二是学生对于软件开发中结构化方法和面向对象的方法的认识仍然存在问题,对于这两种方法的区分不够明确。
所以为了能够加强理解软件开发中,结构化方法和面向对象方法的区别。
本文将对于ATM自动取款机分别用结构化方法和面向对象的方法来进行分析与建模。
结构化方法是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。
它的基本思想:
把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。
面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO方法,是建立在“对象”概念基础上的方法学。
对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。
而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。
所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
接下来首先用结构化的方法对ATM系统进行分析与建模
一.问题描述:
1.1.ATM系统网络
图1-1
1.2.ATM系统需求概述
某银行开发一个自动取款机系统,其组成:
自动取款机、中央计算机、分行计算机、柜员终端组成的网络系统。
ATM和中央计算机由银行投资购买。
银行拥有多台ATM,分别设在全市各个主要街道上以及各个银行分行中。
分行还要负责提供分行计算机和柜员终端。
柜员终端设在分行营业厅及分行下属的各个储蓄所内。
银行柜员使用柜员终端处理储户提交的储蓄事务。
柜员负责把储户提交的存款或取款事务输进柜员终端,接收储户交来的现金或支票,或付给储户现金。
柜员终端与相应的分行计算机通信。
分行计算机具体处理针对某个账户的事务并且维护账户。
用户可以用现金或支票向自己拥有的某个账户内存款或开新账户。
储户可以从自己的账户中取款,通常一个储户可能拥有多个账户。
拥有银行账户的储户有权申请领取现金兑换卡(即该银行的银行卡),使用现金兑换卡可以通过ATM访问自己的账户。
现在可以用现金兑换卡在ATM上提取现金,或查询有关自己账户的信息(如有没有余额),还可以使用ATM办理转账、存款等事务。
现金兑换卡是一张磁卡,上面有分行代码和卡号。
分行代码唯一标识总行下属的一个分行.卡号确定这张卡可以访问哪些账户。
通常,一张卡可以访问储户的若干个账户,但是不一定能访问这个储户的全部账户。
每张现金兑换卡仅属于一个储户所有,但是用一张卡可能有多个副本。
因此,必须考虑同时在若干台ATM上使用同样的现金兑换卡的可能性也就是说系统应当处理并发的访问。
当用户把现金兑换卡插入ATM之后,ATM就与用户交互,以获取有关这次事务的信息。
并与中央计算机交换关于事务的信息。
首先,ATM要求输入密码,接下来ATM把从这张卡上读到的信息以及用户输入的密码传给中央计算机,请求中央计算机核对这些信息并处理这些事务。
中央计算机根据卡上的分行代码确定这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密码。
若用户输入的密码是正确的,ATM要求用户选择事务类型(取款、查询等),当用户选择取款时,ATM请求用户输入取款额。
最后ATM从现金出口吐出现金,并且打印出账单交给用户。
二.需求获取:
ATM自动取款机系统将实现银行为广大用户提供的基本功能。
ATM系统一次服务一名用户。
用户插入一张现金兑换卡(银行卡)并输入个人账户密码,系统进行验证,通过系统验证后用户才能接下去执行一种或更多操作。
用户完成所有操作后,退卡。
ATM系统必须向储户提供如下服务:
1.用户可以在ATM机上进行取款操作(取款金额必须是100元人民币的整数倍),在现金被提取之前,需要确认取款金额数量。
在用户确认并且取出现金后,系统将会记录当前储户账户的相关信息如账号、取款的金额大小,取款时间等。
同时提示是否打印相关操作信息的凭条。
2.用户可以在ATM机上进行存款操作(存款金额必须是100元人民币的整数倍),储户想把存款量输入到ATM系统中。
在用户在放入现金后,系统会提示存入的现金的数量是否正确,完成操作后,系统将会记录当前账户的相关信息和存入现金的数量、存款的利率以及存入时间等信息。
同时提示是否打印相关操作信息的凭条。
3.用户可以在ATM机上进行转帐操作。
在用户输入要接收转账的银行兑换卡号、转账的金额数量后,系统在输入完金额与卡号后会让用户确认信息。
在用户确定完成后,银行才会进行转账,并且记录下本次转账的相关信息。
同时提示是否打印相关操作信息的凭条。
4.用户可以在ATM机上进行详细账户信息查询操作。
用户在成功登陆账号后,能够查询当前储户的账号信息包括账户余额、账户存款、取款、转账等操作记录。
但不能查询其他账号的信息。
5.用户通过有效验证后可以更改当前用户账号的个人密码。
用户在通过验证后,需要输入当前账户个人密码和新密码并且再次确认后才能完成修改密码的操作。
完成操作后,系统会记录下修改密码的时间等相关的信息。
ATM系统将把每一处理传达到银行并且获得银行许可。
如果银行确定用户个人账户密码错误的,用户将被要求再进行输入个人账户密码的操作。
如果用户输入多次密码错误之后,用户的卡将被机器没收并且账户将被锁定,而用户必须通过联系银行才能取回银行兑换卡。
三.需求分析
3.1.数据流图:
创建分层数据流图(功能建模)
数据流图是软件工程最流行的建模之一,从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变化过程,其基础是功能的分解。
功能分解是一种为系统定义功能过程的方法。
这种自顶向下的活动开始于环境图,结束于模块规格说明。
数据源或数据汇点表示图中要处理数据的输入来源或处理结果要送往何处。
数据源或数据汇点不是目标系统的一部份,只是目标系统的外围环境中的实体部分,因此称为外部实体。
在实际问题中它可能是组织、部门、人、相关的软件系统或硬件设备。
数据流表示数据沿箭头方向的流动。
数据流可表示在加工之间被传送的有名数据,也可表示在数据存储和加工之间的未命名数据,这些数据流虽然没有命名,但因其所连接的是有名加工和有名数据存储,所以其含义也是清楚的。
加工是对数据对象的处理或变换。
加工的名字是动词短语,以表明所完成的加工。
一个加工可能需要多个数据流,也可能会产生多个数据流。
数据存储在数据流图中起保存数据的作用,可以是数据库文件或任何形式的数据组织。
从数据存储中引出的数据流可理解为从数据存储读取数据或得到查询结果,指向数据存储的数据流可理解为向数据存储中写入数据。
图2-1ATM系统的环境图
银行ATM系统的环境图如图2-1所示。
环境图也称为顶层数据流图(或0层数据流图)。
环境图的作用是确定系统在其环境中的位置,通过确定系统的输入和输出与外部实体的关系确定其边界。
图2-2ATM系统的一层数据流图
对图2-1中ATM系统进行分解,从大的方面分解为取款、存款、转账、查询余额、修改密码5个部分,得到一层数据流图如图2-2所示。
用户插入银行卡后,输入密码通过验证后,能够选择这5部分对应的业务,在选择某个业务后,就会流入对应流入对应的部分。
。
在完成业务的操作后,用户可以选择打印业务凭条。
图2-3处理取款的数据流图
对图2-2中的“取款”进行进一步的分解,得到二层数据流图,如图2-3所示。
选择取款业务后,调用取款子系统需要从数据库中读取账户相关信息,在提取现金后,也要把信息记录到数据库中。
用户在操作完后可以选择打印凭条。
图2-4处理存款的数据流图
对图2-2中的“存款”进行进一步的分解,得到二层数据流图,如图2-4所示。
选择存款业务后,调用存款子系统,在存入现金后,要把存款的相关信息信息记录到数据库中。
用户在操作完后可以选择打印凭条。
图2-5处理转账的数据流图
对图2-2中的“转账”进行进一步的分解,得到二层数据流图,如图2-5所示。
选择转账业务后,调用转账子系统,需要输入转入账号和转账金额数量的信息,在确认这些信息后才能成功转账,需要自行通知收款人。
同时在转账后要把转账的相关信息记录到数据库中。
用户在操作完后可以选择打印凭条。
图2-6处理查询的数据流图
对图2-2中的“查询余额”进行进一步的分解,得到二层数据流图,如图2-6所示。
选择查询余额业务后,调用查询子系统,在选择货币的种类后,要把信息发送到数据库中。
数据库再把相应的账号信息回复显示出来。
图2-7处理修改密码的数据流图
对图2-2中的“修改密码”进行进一步的分解,得到二层数据流图,如图2-7所示。
选择修改密码业务后,调用修改密码纸子系统,在输入新旧密码后,旧密码得到验证是正确的之后再次确定新密码是否输入正确,确认后要把修改的密码相关信息记录到数据库中。
3.2.数据建模:
创建系统关系E-R图(数据模型)
结构化分析方法中,使用实体-关系建模技术来建立数据模型。
这些技术是在较高的抽象层次(概念层)上对数据库结构进行建模的流行技术。
实体-关系模型表示为可视化的实体-关系图,也称为ER图。
图中仅包含三种相互关联的元素:
数据对象(实体)、描述数据对象的属性及数据对象彼此间相互连接的关系。
ATM系统的ER图如图3-1所示。
由图可知,一个用户可以有多个账户即可以有多张的银行卡;一个账户只有一个户主;一个账户可对应多个存款凭条,而每张存款单必须对应一个账户;一个账户可对应多个取款凭条,也可能没有取款凭条,而每张取款凭条必须对应一个账户;一个账户可对应多个转账凭条,而每张转账凭条必须对应一个账户;一个账户对应一个查询余额;一个账户对应一个修改密码。
图3-1ATM系统ER图
3.3.状态建模:
创建状态模型(控制模型)
状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。
状态规定了系统对事件的响应方式。
系统对事件的响应,既可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。
以下为ATM系统的主要模块的状态图。
图4-1ATM系统登陆操作状态图
ATM系统登陆操作的状态图如图4-1所示。
图4-2取款过程的状态图
取款过程的状态图如图4-2所示。
图4-3存款过程的状态图
存款过程的状态图如图4-3所示。
图4-4转账过程的状态图
转账过程的状态图如图4-4所示
3.4.数据字典
数据字典以词条方式定义在数据模型、功能模型和行为模型中出现的数据对象及控制信息的特性,给出它们的准确定义,包括数据流、加工、数据文件、数据元素,以及数据源点和数据汇点等。
因此,数据字典成为把3种分析模型粘合在一起的粘合剂,是分析模型的核心。
数据字典精确地、严格地定义了每一个与系统相关的数据元素,并以字典顺序将它们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。
表4-1银行卡的数据字典
名字:
银行兑换卡
别名:
银行卡
描述:
用户可以通过该卡和ATM取款机进行交互
定义:
银行卡=账号+密码+用户名+卡内金额
位置:
ATM取款机插口
表4-2账户的数据字典
名字:
账户
别名:
用户、储户
描述:
持有银行卡的人
定义:
账户=账号+密码+用户名+卡内金额+其他信息
位置:
数据库
表4-3用户名的数据字典
名字:
用户名
别名:
账户名
描述:
银行所开户的名字
定义:
用户名=开户者的姓名
位置:
表4-4账号的数据字典
名字:
账号
别名:
描述:
每个用户都有一个,是每个用户的唯一标识
定义:
账号=19位整数数字
位置:
凭条、数据库
表4-5密码的数据字典
名字:
密码
别名:
描述:
每个用户都有一个密码,是进行验证的唯一标识
定义:
密码=6位整数数字
位置:
账户、数据库
表4-6凭条的数据字典
名字:
凭条
别名:
描述:
显示和已操作过的结果的信息
定义:
凭条=账号+金额+时间+业务类型
位置:
ATM取款机、数据库
四.设计
4.1.概要设计
4.1.1总体设计
图5-1
ATM系统的模块结构如图5-1所示。
ATM系统分三个大模块:
登陆模块、事务模块、退出模块。
其中登陆模块对应的有密码验证模块。
退出模块对应有退卡模块。
而事务模块则分为取款模块、存款模块、转账模块、查询模块、修改密码模块。
验证密码模块:
由于ATM机是出入银行卡,所以不需要输入账号,只需要输入对应的密码即可,这个模块是为了验证用户的账号对应的密码是否正确。
通过验证之后才能登陆到ATM系统中进行下一步的操作。
取款模块:
选择取款业务后,输入需要的金额,确定后用户能够取得现金。
存款模块:
选择存款业务后,可以存入现金。
转账模块:
选择转账业务后,输入转入账号和转入金额,可以进行转账。
查询模块:
选择查询业务后,可以查询当前账号的余额。
修改密码模块:
选择修改密码业务后,可以修改当前账户的密码。
退卡模块:
当用户完成业务的操作后,结束后把卡退出。
4.1.2逻辑数据:
数据库表和表的关联
图5-2ATM系统数据库表的关联
数据库中的四张表之间的依赖关系如图5-2所示。
有记录屏幕信息的表、记录账户信息的表、记录用户信息的表、记录凭据信息的表。
4.1.3界面设计:
界面的框架
图6-1ATM系统待机的屏幕
当ATM系统无人使用的时候显示如图6-1所示。
如果需要使用,则将银行卡插入即可。
图6-2ATM系统登陆页面1
ATM系统登陆画面如图6-2所示,用户需要输入正确的密码才能进入主界面。
图6-3ATM系统登陆界面2
当用户输入错误的密码屏幕将会显示如图6-3所示
图6-4ATM系统登陆界面3
当用户输入错误密码超过5次屏幕将显示如图6-4所示
图6-5ATM系统主界面
ATM系统主界面如图6-5所示,当用户登陆成功,才会跳转至次界面。
图6-6取款界面1
ATM取款界面如图6-6所示,需要把取款金额输入才能进行下一步。
图6-7取款界面2
当用户输入取款金额不符合规则时屏幕将会显示如图6-7所示的界面
图6-8取款界面3
当用户成功取得现金,屏幕将显示如图6-8所示的界面,并且用户能够选择打印取款的凭条。
图6-9存款界面1
用户选择存款的业务后,屏幕显示如图6-9所示。
用户把现金放入吐钞口即可进行下一步。
图6-10存款界面2
当用户把现金放入后,ATM系统经过点钞、验钞后,屏幕显示如图6-10所示,询问用户金额是否确定。
确定后存款。
图6-11存款界面3
用户存款成功后,屏幕显示如图6-11所示,用户可以选打印存款的凭条。
图6-12转账界面1
用户选择银行转账业务后,屏幕如图6-12所示输入转入账号和金额后才可以进行下一步操作。
图6-13转账界面2
用户完成上一步操作后,屏幕显示如图6-13所示,询问用户确定转账信息。
图6-14转账界面3
用户转账成功后,屏幕显示如图6-14所示。
用户可以选择打印转账的凭条。
图6-15修改密码界面1
用户在选择修改密码业务后,屏幕显示如图6-15所示。
图6-16修改密码界面2
用户在完成上一步操作后,屏幕如图6-16所示,用户再次输入新密码进行确认才能进行下一步。
图6-17修改密码界面3
用户成功修改密码后,屏幕显示如图6-17所示。
用户可以选择继续办理业务或退出系统。
图6-18查询余额界面
用户在选择查询余额业务后,屏幕显示如图6-18所示。
界面显示账户余额,用户可以选择币种清算。
4.2.详细设计
图7-1取款流程图
ATM系统的取款流程如图7-1所示。
输入取款金额之后再提取现金如果用户需要打印取款凭条,则打印一张取款凭条给用户,然后结束。
如果不需要打印凭条则直接结束。
图7-2存款流程图
ATM系统的存款流程如图7-2所示。
在放入现金到吐钞口后,系统进行验钞和点钞,如果验钞点钞过程中发现现金有假钞则会吐出,让用户知晓。
在确认点钞结果后进行下一步则存款成功,如果存入现金金额有误则吐出重来。
在成功存入现金后,用户可以选择打印存款凭条之后再结束业务,否则直接结束业务。
图7-3转账流程图
ATM系统的转账流程如图7-3所示。
用户在按提示输入转入账号和金额进行下一步,再次确认转账的信息后转账。
用户可以选择打印转账凭条后再结束业务,也可以选择不打印转账凭条直接结束业务。
图7-4修改密码流程图
账户修改密码的流程如图7-4所示。
输入新旧密码后,确认是否正确,之后修改账户密码。
结束业务。
图7-5查询流程图
用户查询账户余额可以选择币种,如果不选择默认币种为人民币,显示人民币余额。
如果选择外币则显示外币余额。
五.面向对象的分析建模
接下来使用面向对象的方法来对银行ATM系统进行分析与建模。
首先先建立用例模型。
建立用例模型的目的是提取和分析足够的需求分析,准备一个模型,该模型应能表述用户需要什么,而不涉及系统将如何构造和实现的特定细节。
然后是创建用例图,用例图是若干参与者和用例以及它们之间的关系构成的图形表示。
每个系统通常都有以一个总体视图。
如果总体视图过于复杂,则可以创建多个用例图,每个用例图也关注系统的某一方面,通常是围绕参与者创建用例图。
最后是对系统所用用例的规格说明。
5.1用例模型
5.1.1用例列表
表5-1-1用例列表
参与者
用例
说明
用户
存款
存入现金
取款
取得现金
转账
卡上金额转账
查询余额
查询账户剩余金额
修改密码
修改账户密码
打印凭条
打印业务凭条
银行人员
信息管理
管理用户信息
系统维护
维护ATM系统
配款
为ATM硬件设施放入现金
数据库服务器
记录信息
记录用户操作及业务内容
查找信息
查找用户账号信息
修改信息
修改用户账号信息
5.1.2用例图
图8-1用户用例图
用户请求事务的用例图如图8-1所示。
图8-2银行人员用例图
银行人员请求事务的用例图如图8-2所示。
图8-3数据库服务器用例图
数据库服务器请求事务的用例图如图8-3所示
5.1.3用例规格说明
以下为用户部分各个主要用例的规格说明。
用例的规格说明就是对用例的完整描述包括用例名称、执行者、前置条件、后置条件、一个主事件流以及零到多个备选事件流。
主事件流表示正常情况下执行者与系统之间的信息交互及动作序列,备选事件流则表示特殊情况或异常情况下的信息交互及动作序列。
所以要描述一个完整的用例应给出每个用例的规格说明。
用例名称:
登陆用例执行者:
用户
1.1前置条件:
用户插入银行卡
1.2后置条件:
用户成功登陆
1.3主事件流:
1)当用户在插入银行卡,系统验证账号通过,用例开始;
2)用户输入密码;
3)系统验证密码;
4)用户进入系统;
1.4备选事件流:
E-1:
账号无效,给出提示,退卡。
E-2:
密码错误,给出提示,重新输入或退卡。
E-3:
密码多次错误,给出提示,锁定账号,退卡。
用例名称:
取款用例执行者:
用户
1.1前置条件:
用户插入银行卡,输入正确密码,成功进入系统,选择取款业务。
1.2后置条件:
用户取款成功
1.3主事件流:
1)输入取款金额;
2)系统验证账号是否有足够余额和输入金额是否符合规则;
3)系统修改账户余额信息
4)系统出钞;
1.4备选事件流:
E-1:
输入金额超出账户余额数量,退出。
E-2:
输入金额的规格不符合规则,退出。
用例名称:
存款用例执行者:
用户
1.1前置条件:
用户插入银行卡,输入正确密码,成功进入系统,选择存款业务。
1.2后置条件:
用户存款成功
1.3主事件流:
1)放入现金;
2)系统点钞、验钞;
3)系统提示确认;
4)用户确认;
5)系统修改账户信息
6)提示存款成功;
1.4备选事件流:
E-1:
放入的现金有假,退出。
E-2:
点钞的结果有误,退出。
用例名称:
转账用例执行者:
用户
1.1前置条件:
用户插入银行卡,输入正确密码,成功进入系统,选择转账业务。
1.2后置条件:
用户转账成功
1.3主事件流:
1)输入转入账号和金额;
2)确认转账信息;
3)修改账户信息;
4)提示成功;
1.4备选事件流:
E-1:
输入的账号有误,退出。
E-2:
转账的金额有误,退出。
E-3:
账户余额不足,退出。
用例名称:
修改密码用例执行者:
用户
1.1前置条件:
用户插入银行卡,输入正确密码,成功进入系统,选择改密业务。
1.2后置条件:
用户修改密码成功
1.3主事件流:
1)输入新旧密码;
2)系统查找账户信息;
3)确认新密码;
4)系统修改账户信息;
5)提示修改成功;
1.4备选事件流:
E-1:
输入的旧密码有误,退出。
E-2:
输入的前后两次新密码有误,退出。
用例名称:
查询用例执行者:
用户
1.1前置条件:
用户插入银行卡,输入正确密码,成功进入系统,选择查询业务。
1.2后置条件:
用户查询账户余额成功
1.3主事件流:
1)选择币种;
2)系统查找账户信息;
3)屏幕显示账户余额;
1.4备选事件流:
5.2概念模型
图9-1主要用例关系图
ATM系统中用户、银行人员、服务器三个参与者的用例关系图如图9-1所示。
用例关系图包含了主要用例之间的关联和属性。
5.3分析模型(顺序图)
在开发交互式系统时,顺序图起着很重要的作用。
前面的用例图中的事件流是由文本表示的,事件流描述的是用例实现的过程,也称为场景,可以用顺序图表示场景。
顺序图按照时间顺序显示对象之间的交互关系。
它描述场景中的对象和类以及在完成场景中定义的功能时对象间要交换的信息。
顺序图中,纵轴从上到下表示时间顺序。
横轴从左到右安排有关联的各个相关对象,关系密切的对象应该安排在相邻位置。
对象之间的消息传递由实箭线表示,箭线上标记消息的名称,箭线从发送方指向接收方。
顺序图通常与用例相关联。
图10-1取款顺序图
用户取款业务顺序图如图10-1所示。
图10-2存款顺序图
用户存款业务顺序图如图10-2所示。
图10-3转账顺序图
用户的转账业务顺序图如图10-3所示。
图10-4修改密码顺序图
用户的修改密码业务顺序图如图10-4所示。
图10-5查询顺序图
用户的查询账户余额业务顺序图如图10-5所示。
六.总结
这篇论文用了一段时间才完成。
在做完之后,我自认为是收获良多。
在不断地查找资料和讨论中,许多问题从模糊到清晰最后解决,让我们这些参与者都得到了提升。
而且在编写过程中也都发现了各种各样的问题与不足,例如某个概念不明白啊,某种工具不会使用等等。
因为这次设计的内容比较