银行业务模型.docx

上传人:b****6 文档编号:8228511 上传时间:2023-01-30 格式:DOCX 页数:17 大小:158.71KB
下载 相关 举报
银行业务模型.docx_第1页
第1页 / 共17页
银行业务模型.docx_第2页
第2页 / 共17页
银行业务模型.docx_第3页
第3页 / 共17页
银行业务模型.docx_第4页
第4页 / 共17页
银行业务模型.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

银行业务模型.docx

《银行业务模型.docx》由会员分享,可在线阅读,更多相关《银行业务模型.docx(17页珍藏版)》请在冰豆网上搜索。

银行业务模型.docx

银行业务模型

银行业务模型

作者:

RichardFelsinger著,盖九宇译   本文选自:

UMLChina  2002年11月07日

在前面的文章中,我们从RationalRose开始,启动并建立了一个类图。

今天我们的任务就是要通过BankAPP实例来了解如何用Rose构造业务模型。

业务企业模型

业务前景,目标,组织-分别提供

业务事件[UML信号事件-指定的激励表格或文档]和过程(UML用例)

过程名

参与者

事件/输入

转换

事件/输出

约束

描述

引用

联系点

WithdrawFromAccount

Customer,Teller,BankDB

WithdrawRequest

UpdateAccount

WithdrawRecord

 

 

 

 

[译注:

Customer:

客户;Teller:

出纳员;withdraw:

取款;account:

账户;BankDB:

银行数据库]

BusinessActors,BusinessWorkers,业务实体(问题域实体)

业务参与者(UML参与者)

业务员(UML参与者)

业务实体(UML类)

Customer

Teller

Account,SavingsAccount,CheckingAccount

[译注:

saving:

储蓄;checking:

支票]

业务规则目录

规则标识符

参与者,实体,过程

描述:

IF条件..then动作

区域

引用

联系点(PointofContact)

ValidAccount

Account

IfAccountNum有效,thenAcccount有效

 

 

 

业务接口(指定操作集)-由架构师提供

业务模式目录-参见《BusinessModelingwithUML》(Eriksson和Penker著)。

业务术语-待完备

业务系统体系结构-由架构师提供

需求模型

需求:

BankApp应该管理支票和存款账户的存款和取款。

将来(还要提供)查询,转账,透支,等等从TellerGUI到BankApp的输入/输出:

sAcctNum,nDeposit,nWithdraw,sText。

从BankApp到BankDB的输入/输出:

sAcctNum,nDeposit,nWithdraw.

需求可追踪性表:

需求号,名称,引用,用例名,UML元素,测试用例,描述,职责。

需求可追踪性表(部分)

需求编号

需求名

引用

用例名

UML元素

测试实例

描述

职责

1.1

DepositToSavingsAccount

 

DepositToSavingsAccount

BankPkg

 

 

 

1.2

DepositToCheckingAccount

 

DepositToCheckingAccount

BankPkg

 

 

 

1.3

WithdrawFromSavingAccount

 

WithdrawFromSavingAccount

BankPkg

 

 

 

1.4

WithdrawFromCheckingAccount

 

WithdrawFromCheckingAccount

BankPkg

 

 

 

需求-用例图-所有用例

Rose用例图:

在浏览器窗口,选择UseCaseView;MainUseCaseDiagram;在图上放置参与者,用例,关系[Rose单向关联(UnidirectionalAssociation)],泛化;选择每一个参与者-单击鼠标右键键入参与者的操作;选择Tools-CheckModel;选择File-Save.

需求-高级别协作图[环境图(ContextDiagram)]

Rose高级别协作图:

在浏览器窗口,选择UseCaseView;选择Browse-InteractionDiagram(交互图)-UseCaseView-;选择CollaborationDiagram;键入图名;在图上放置对象表示参与者;双击每个对象,然后从下拉列表中选择参与者名;在图的中央放置一个对象以表示系统;双击对象,键入系统名;选择RoseObjectLink(对象连接符)并且在参与者和系统之间拖曳;选择Rose文本框TextBox"ABC",键入传递的对象/数据;选择Tools-CheckModel;选择File-Save。

 需求-用例增量

增量1:

支票和储蓄账户的存款和取款

增量2:

查询和转账

增量3:

透支

每个增量内进行迭代:

乐观的,正常的,悲观的

需求用例规约:

名称,触发器,输入参数,输出返回值,出现的前置条件/异常,出现的(raised)后置条件/异常,基本的/乐观场景,替代性可选的/悲观的场景,业务规则,测试实例。

WithdrawFromCheckingAccount用例的用例规约

用例名:

WithdrawFromCheckingAccount

触发器:

WithdrawFromCheckingAccount

输入参数:

sAcctNum,nWithdraw

输出返回值:

sText

前置条件:

ValidAccount=trueandnWithdraw<=nCurrentBalance

出现的前置条件异常:

待定的

描述/转换:

nCurrentBalance=nCurrentBalance-nWithdraw

后置条件:

nCurrentBalance

后置条件异常:

相关用例:

Generalization,Includes,Extends/ExtensionPoint:

基本场景/乐观场景:

Text(文本)-待定;Diagram(图)-见WithdrawFromCheckingAccount乐观场景顺序图

替代性可选场景/被动场景:

Text-待定;Diagram-见WithdrawFromCheckingAccount活动图

业务规则:

ValidAccountRule,AdequateBalanceRule

测试实例:

1-乐观的:

输入:

sAcctNum-BGates001,nWithdraw-100,nCurrentBalance-1000Conditions:

None,输出:

"BGates001withdraw$100OKandrecorded";2...待定

输入/输出表单:

WithdrawFromCheckingAccount用例的输入/输出表单

WithdrawRequestForm(取款需求表单)

CustomerAccountNumber(客户账号)__________

WithdrawAmount(取款数量)________

Button-Submit(提交按钮)Button-Clear(清除按钮)

WithdrawResponseForm(取款响应窗体)

CustomerAccountNumber__________

WithdrawAmount__________

Status(状态)________________________

Button-OK(OK按钮)

需求-顺序图WithdrawFromCheckingAccount-乐观场景

注:

getApp的第一笔事务需要达到应用程序的最高级别

Rose顺序图:

在浏览器窗口,选择UseCaseView;选择UseCaseDiagram;选择一个用例;选择Browse-InteractionDiagram-UseCaseView-;选择SequenceDiagram;键入图名,例如WithdrawFromCheckingAccount-OptiminticScenario;在图上放置对象以表示参与者;双击每个对象,然后从下拉列表中选择参与者名;

在图的中央放置一个对象以表示系统;双击对象,从下拉列表中键入系统名;选择RoseObjectLink(对象连接符),在参与者和系统之间拖曳;选择Tools-CheckModel;选择File-Save.

4-WithdrawFromCheckingAccount用例-所有场景的需求活动图

注:

getApp的第一笔事务需要达到应用程序的最高级别

Rose状态-活动图:

在浏览器窗口,选择UseCaseView;

选择UseCaseDiagram显示图;

选择一个用例;选择Browse-StateDiagram;

如果"StateDiagram"是灰色,则返回到用例图并重新选择一个用例;

在图上放置活动状态(activitystates);通过在两个状态之间拖曳,放置转移;

选择Tools-CheckModel;

选择File-Save。

需求-产品性能:

高可靠性,10个并发的用户,2秒响应时间。

需求/分析-高阶概念模型(HOCM--HighOrderConceptModel)

外部参与者:

TellerGUI,BankDB.内部实体(InternalEntities):

BankApp,Account,CheckingAccount,SavingsAccount

Rose高级别概念模型图:

推荐使用铅笔和纸做HOCM。

作为替代,创建不含属性和操作的Rose类图。

分析模型-草图

分析类图-最简结构

Rose类图:

见〈使用RationalRose〉

分析包图

Rose包图:

在浏览器窗口选择LogicalView;选择Browse-ClassDiagram-LogicalView-。

输入包图名;在图上放置包;从工具条中选择依赖箭头然后从源包到目的包拖曳,放置依赖关系。

在浏览器中,拖动每个类到适当的包;选择Tools-CheckModel;选择File-Save。

分析WithdrawFromCheckingAccount顺序图-乐观场景

注:

getApp的第一笔事务需要达到应用程序的最高级别

Rose顺序图:

见〈使用RationalRose〉

8-分析Account类的状态图

Rose状态-活动图:

在浏览器窗口,选择UseCaseView;选择UseCaseDiagram显示;选择一个用例;选择Browse-StateDiagram;如果"StateDiagram"是灰色,则返回到用例图并重新选择一个用例;在图上放置活动状态(activitystates);通过在两个状态之间拖曳,放置转移;选择Tools-CheckModel;选择File-Save.

分析-复杂操作:

待定的-每一个操作的活动图和/或操作规约:

名称,输入,前置条件/异常,转换,后置条件/异常,业务规则,描述。

Rose规约:

显示类图;选择一个类;按鼠标右键显示SpecificationDialogBox;选择一个标签,例如Operations;双击一个操作;填写操作信息;选择Tools-CheckModel;选择File-Save.

设计模型-编码的基础

设计过程环境:

Linux6.2版,GNUC++6.2版,C++标准库,CORBA3。

设计潜在模式

企业级:

基于分布式CORBA,具有公共接口的组件

系统(组件到组件):

分层,会话-实体(Session-Entity),回调(Callbacks),发行者-订阅者(Publisher-Subscriber)

组件:

应用-文档,控制器-实体-边界,虚包(Facade)

类设计:

UML,Factory(工厂),事务

JAVA语言:

JavaBean,EnterpriseJavaBean,Servlet,RMI

设计包图

设计类图说明类型和参数-目标是完成编码

注:

CheckingAccount和SavingsAccount提供多态操作的实现。

设计顺序图WithdrawFromCheckingAccount-乐观场景

注:

getApp的第一笔事务需要达到应用程序的最高级别

设计协作图WithdrawFromCheckingAccount-乐观场景

在RationalRose中打开顺序图,按F5自动创建协作图。

设计CheckingAccount类withdraw()操作的操作规约

用例名:

withdraw

触发:

withdraw

输入参数:

nWithdraw:

int

输出返回值:

boolean

前置条件:

nWithdraw<=nCurrentBalance

出现的前置条件/异常:

exInsuffientFunds

描述/转换:

nCurrentBalance=nCurrentBalance-nWithdraw

后置条件:

nCurrentBalance

后置条件异常:

exIncorrectBalance

基本/乐观场景:

见WithdrawFromCheckingAccount顺序图

替代性场景/悲观场景:

见WithdrawFromCheckingAccount活动图

业务规则:

ValidAccountRule,AdequateBalanceRule

设计异常类(exceptionclasses)异常超类(操作:

Exception()/Exception(string);异常子类:

exInsufiicientFunds[操作:

exInsufiicientFunds()、exInsufiicientFunds(string)];exIncorrectBalance[操作:

exIncorrectBalance()、exIncorrectBalance(string)]。

设计CheckingAccount类的状态图

实施模型(ImplementationModels)

实施模型

设计过程环境

实施组件图

实施文件(ImplementationFiles):

TellerGUI.exe,BankApp.exe,BankDB.exe

组件接口选择:

1)BankApp具有单接口IbankApp,其所有操作都是公有的(exposed)

2)BankApp暴露(exposes)IBankApp,ICheckingAccount,&ISavingAccount接口

3)BankApp暴露(exposes)IBankApp,IWithdraw,IDeposit,ICheckingAccount,&ISavingAccount接口

CORBAIDL/C++需要对接口进行描述

Rose组件图:

在浏览器窗口,选择ComponentView;,将"Main"重命名为"ComponentView";双击图名显示该图;在图上放置组件和依赖关系(从client组件到supplier组件拖曳);在浏览器中把每个类拖到相应的组件中;选择Tools-CheckModel;选择File-Save.

实施部署图

Rose部署图:

在浏览器窗口选择DeploymentView;双击以显示该图;在图上放置节点和关系;选择Tools-CheckModel;选择File-Save.

//使用CORBA的BankApp系统的接口

//SampleIDLInterfaceCode(IDL接口代码样本)

moduleBankApp{

interfaceIBankApp{

exceptionexInsuffientFunds;

IBankAppgetApp();

booleandepositToCheckingAccount(instringsAcctNum,inintnDeposit);

booleandepositToSavingAccount(instringsAcctNum,inintnDeposit);

booleanwithdrawFromCheckingAccount(instringsAcctNum,inintnWithdraw)raises

(exInsuffientFunds);

booleanwithdrawFromSavingAccount(instringsAcctNum,inintnWithdraw)raises

(exInsuffientFunds);

};};

//SampleJavaInterfaceCodeUsingRemoteMethodInvocation

//(使用RMI的Java接口样本)

importjava.rmi.*;

packageBankApp;

publicinterfaceIBankAppextendsjava.rmi.Remote{

booleandepositToCheckingAccount(StringsAcctNum,intnDeposit)throws

java.rmi.RemoteException;

booleandepositToSavingAccount(StringsAcctNum,intnDeposit)throws

java.rmi.RemoteException;

booleanwithdrawFromCheckingAccount(StringsAcctNum,intnWithdraw)throws

java.rmi.RemoteException;

booleanwithdrawFromSavingAccount(StringsAcctNum,intnWithdraw)throws

java.rmi.RemoteException;

}

//SampleMicrosoftIDLInterfaceCodeforCOM-Simplified

//(MicrosoftIDL的COM接口编码样本-简化版)

libraryBankAppLib{

dispinterfaceIBankApp{

IBankAppgetApp();

booleandepositToCheckingAccount(BSTRsAcctNum,intnDeposit);

booleandepositToSavingAccount(BSTRsAcctNum,intnDeposit);

booleanwithdrawFromCheckingAccount(BSTRsAcctNum,intnWithdraw);

booleanwithdrawFromSavingAccount(BSTRsAcctNum,intnWithdraw);

};

coclassBankApp{

dispinterfaceIBankApp;

};};

//SampleSOAP(SimpleObjectAccessProtocol)SDL(ServiceDescriptionLanguage)

withXML-Incomplete

//包含XML的SOAPSDL样本-不完全

xmlversion='1.0'?

>

xmlns='urn:

schemas-xmlsoap-org:

sdl.2000-01-25'

xmlns:

dt='http:

//www.w3.org/1999/XMLSchema'

xmlns:

IBankApp='IBankApp'>

schemas-xmlsoap-org:

soap-sdl-2000-01-25'>

WithdrawFromCheckingAccount'/>

WithdrawFromCheckingAccountResponse'/>

//myserver/IBankApp.asp'/>

schemaid='IBankApp'targetNamespace='IBankApp'

xmlns='http:

//www.w3.org/1999/XMLSchema'>

boolean'/>

schema>

构建

编码/命名标准;接口代码-CORBAIDL;C++代码;CASE工具脚本/定制报告的VBA/代码生成

Rose代码生成-需要Rose专业版或企业版.见HelpTopicCodeGeneration(帮助主题-CodeGeneration)。

步骤:

1-检查模型;

2-创建组件;

3-映射/分配类到组件;

4-设定代码生成特性;

5-选择一个类、组件或包

6-生成代码;

7-检查生成的代码。

Rose逆工程-需要Rose专业版或企业版.见HelpTopic-Reverse

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1