uml业务建模实例分析5545.docx
《uml业务建模实例分析5545.docx》由会员分享,可在线阅读,更多相关《uml业务建模实例分析5545.docx(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、UML业业务建模模实例分分析在我国国十年前前ATMM(自动动取款机机)还是是一个很很新鲜的的事物,现现在在城城市的大大街小巷巷随处可可见。我我们在日日常生活活中也经经常和AATM打打交道。本本章我们们将以简简化的AATM系系统为例例将前面面几章中中学到的的用例图图、类图图、顺序序图、状状态图、活活动图及及协作图图知识运运用到此此例中。5.1用例图参与者银行储户和ATM机。简化后的ATM机仅有取款、存款及其余功能。其余功能不做详细说明。图5.11 自动动取款机机(ATTM)系系统用例例图 银行行储户在在ATMM机上完完成取款款、存款款及其他他业务。5.2类图图5.2所示的银行系统类图和图3.5是
2、类似的,只是将工作人员换成了ATM。整个银行系统包括了帐户库、银行储户库及ATM系统。许多单个的帐户组成了帐户库。帐户具有帐户类型、帐户号、余额三个属性,均为private,其类型分别为char,int,double。六个操作分别为setType、getType、getAccountNumbe、setAccountNumbe、caculateBalance、getBalance,除caculateBalance为protected其余均为public。 setType设置帐户类型,返回类型为void,参数类型为char,输入帐户类型。 getType获取帐户类型,返回类型为char,无参数。
3、setAccountNumbe设置帐户号,返回类型为void,参数类型为int,输入帐户号。 getAccountNumbe获取帐户号,返回类型为int,无参数。 caculateBalance计算余额,返回类型为void,参数为double,第一个参数为输入存取款数额,第二个参数为存款余额,既为输入也为输出。 getBalance获取帐户余额,返回类型为double,无参数。许多银行储户组成了储户库。ATM系统包含了许多ATM机。银行储户及ATM机两个类包含哪些属性,哪些操作,它们的可见性及操作的返回类型、参数个数、参数类型从类图上都一目了然。更多的属性及操作都可以一一加上,使这个类图更详细
4、更完整,从而使参与项目的每个成员都能无歧义的明了整个设计的类的结构。同样对于一个真正的银行系统,这个类图过于简单。比如帐户类型我们可以先定义一个abstract class,它包含一个帐户最基本的属性及操作。而有些操作先定义为abstract,如余额的计算。然后再继承这个abstract class,我们可以有saving account 和checking account等等。不同的帐户有不同的余额计算方法,我们可以加上具体的算法。对于不同的帐户可能还有一些它特有的操作,我们也可以加上,比如saving account在存款达到多少时可以享受机票打折的优惠。通过类图不仅可以使设计者明确的表达
5、自己的设计意图,也能帮组自己整理思路,充实及优化自己的设计。 图5.22 银行行系统类类图5.3顺顺序图图55.3描描述了顾顾客在AATM机机上取款款时信息息的流动动情况。以以时间为为顺序。因因为仅是是示例,所所以整个个过程是是没有出出现任何何故障时时的流程程,并且且只画到到了取款款结束。通通过这个个图,我我们可以以看出消消息是如如何在系系统中不不同对象象之间进进行交互互。通过流流程图我我们可以以很清楚楚地看到到系统是是如何工工作的,系系统各部部分之间间的信息息及控制制是如何何发送的的,整个个流程是是否合理理。流程程图对我我们的设设计起到到了很好好的帮助助作用。注注意在本本图没有有一个生生命线
6、终终端有一一个XX,这这是因为为这个流流程中还还未遇到到有对象象生命结结束。当当有对象象生命结结束时需需在对应应的生命命线终端端画XX,表表明这个个对象在在这时被被销毁。首先银行储户将ATM卡插入读卡机,读卡机将信息传给客户管理,客户管理提出查询密码,显示部分将输入密码请求显示出来.因为这个顺序图较长,且很清晰,即便是初学者也很容易读懂,在此就不对本图做过多的解释。图5.33 ATTM取款款顺序图图图5.4描述述了顾客客在ATTM机上上进行操操作会经经历的几几种状态态,及各各种状态态之间转转换的条条件。因因为是简简化了的的例子,所所以除了了等待顾顾客插入入磁卡的的起始状状态和结结束服务务的终止
7、止状态,顾顾客会处处于输入入密码、选选择服务务类型、存存款及取取款四种种状态。 插入磁卡卡后进入入输密码码状态,当当密码输输入正确确时进入入选择服服务类型型状态,当当输入密密码不正正确时,停停留在原原状态,但但如果三三次不正正确,服服务结束束。进入入选择服服务类型型后根据据选择的的不同,顾顾客可进进入存款款和取款款状态。存存、取款款结束后后,顾客客既可以以选择结结束服务务到最终终状态,也也可以选选择继续续服务回回到选择择服务类类型状态态。通过状态态图我们们可以无无歧义的的了解各各个活动动角色是是如何在在不同状状况下转转换的,转转换的条条件是什什么,是是否会出出现死锁锁现象,是是否有条条件没考考
8、虑周全全,是否否有状态态无法达达到。状状态图可可以帮助助我们发发现问题题,并及及时改正正。 5.5活活动图图5.55参考了了Ranndy Milllerr的AA Haandss-Onn Inntrooducctioon ffor Devvelooperrs一一文,55.3图图中的客客户管理理和事物物管理对对应于55.5图图中的BBankk,图55.3中中的读卡卡机、显显示、输输入设备备及点钞钞机对应应于5.5图中中的ATTM MMachhinaa,银行行储户就就是Cuustoomerr。初看看活动图图和顺序序图表达达的意义义很接近近。但我我们可以以注意到到顺序图图着重时时间的顺顺序,而而活动图
9、图侧重于于各部分分之间的的相互制制约,对对于一些些并行的的活动能能够有效效的表示示出来。例例如5.5图中中forrk和jjoinn处,我我们可以以很清楚楚的看到到一些并并行活动动的存在在。这个活动动图以顾顾客插入入卡为开开始,以以顾客取取卡结束束。我们们可以看看到活动动图的重重点虽然然不在时时间顺序序,但我我们同样样可以得得到时间间的信息息。 图5.55 ATTM银行行系统活活动图5.6协协作图在第四章章中我们们知道协协作图和和顺序图图是可以以无信息息损失的的相互转转换,只只是它们们的侧重重点是不不一样的的。顺序序图着重重于对象象间消息息传递的的时间顺顺序,协协作图着着重于表表达对象象之间的的
10、静态连连接关系系。图55.6将将5.33图转换换为协作作图。1. 插入ATTM卡2. 接受ATTM卡3. 查询密码码4. 显示输入入密码请请求5. 输入密码码6. 密码传递递7. 请求确认认密码合合法性8. 确认密码码合法性性9. 询问服务务类别10. 显示输入入服务服服务类别别请求11. 输入取款款请求12. 取款请求求 13. 询问取款款数额14. 显示输入入数额请请求15. 输入取款款数额16. 传递取款款数额17. 询问取款款数额确确认18. 显示确认认数额请请求19. 输入确认认20. 传递确认认信息21. 数额合法法性确认认请求22. 确认数额额和法性性23. 出钞请求求24. 计
11、算帐户户余额25. 出钞26. 取钞27. 传递余额额并询问问是否还还需要其其他服务务28. 显示帐户户余额并并提示选选择下面面的服务务 从图上我我们可以以看出协协作图的的角色和和顺序图图的对象象是一一一对应的的,而协协作图上上的各对对象上的的协作关关系和顺顺序图上上的消息息传递是是一一对对应的。 例解基于于UMLL的面向向对象分分析与设设计摘要 本文文以实例例的方式式,展示示了如何何使用UUML进进行面向向对象的的分析与与设计。本本文将假假设读者者对UMML、面面向对象象等领域域的基本本内容已已了然于于胸,所所以将不不会过多多阐述,而而将重点点放在应应用过程程上。本本文的目目的是通通过一个个
12、完整的的实例,展展现基于于UMLL的OOOA&DD过程的的一个简简化模式式,帮助助朋友们们更好的的认识UUML在在OOAA&D中中起的作作用。前前言 经常常听到有有朋友抱抱怨,说说学了UUML不不知该怎怎么用,或或者画了了UMLL却觉得得没什么么作用。其其实,就就UMLL本身来来说,它它只是一一种交流流工具,它它作为一一种标准准化交流流符号,在在OOAA&D过过程中开开发人员员间甚至至开发人人员与客客户之间间传递信信息。另另外,UUML也也可以看看做是OOO思想想的一种种表现形形式,可可以说“OO是是神,而而UMLL是型”。所以以,想用用好UMML,扎扎实的OOO思想想基础是是必不可可少的。然
13、然而,在在UMLL应用到到开发过过程中时时,还是是有一定定的模式式可以遵遵循的。(注注意,是是模式而而不是教教条,我我下面给给出的流流程只是是一个启启发式过过程,而而不是说说一定要要遵循这这个流程程。)下下面,我我们通过过一个CCMS系系统的分分析设计计实例,看看看如何何将UMML应用用到实际际的开发发中。11.从需需求到业业务用例例图 OOOA&DD的第一一步,就就是了解解用户需需求,并并将其转转换为业业务用例例图。我我们的CCMS系系统需求求非常简简单,大大致课做做如下描描述:这这个系统统主要用用来发布布新闻,管管理员只只需要一一个,登登录后可可以在后后台发布布新闻。任任何人可可以浏览览新
14、闻,浏浏览者可可以注册册成为系系统会员员,注册册后可对对新闻进进行评论论。管理理员在后后台可以以对新闻闻、评论论、注册册会员进进行管理理,如修修改、删删除等。 通过以上需求描述,我们画出如下的业务用例图: 这里要注意三点:1.业务用例是仅从系统业务角度关注的用例,而不是具体系统的用例。它描述的是“该实现什么业务”,而不是“系统该提供什么操作”。例如,在实际系统中,“登录”肯定要作为一个用例,但是这是软件系统中的操作,而用户所关注的业务是不包含“登录”的。 2.业务用例仅包含客户“感兴趣”的内容。 3.业务用例所有的用例名应该让客户能看懂,如果某个用例的名字客户看不懂什么意思,它也许就不适合作为
15、业务用例。2.从业务用例图到活动图 完成了业务用例图后,我们要为每一个业务用例绘制一幅活动图。活动图描述了这个业务用例中,用户可能会进行的操作序列。活动图有个很重要的使命:从业务用例分析出系统用例。例如,下面是“新闻管理”的活动图: 可以看到,一个“新闻管理”这个业务用例,分解出N多系统操作。这里要特别注意这些操作,其中很多“活动”都很可能是一个系统用例(当然,不是每个都是)。例如,由这个活动图可以看出,系统中至少要包含以下备选系统用例:登录、注销登录、查看新闻列表、修改新闻、删除新闻。 这样,将每个业务用例都绘制出相应的活动图,再将其中的“活动”整合,就得出所有备选系统用例。3.从活动图到系
16、统用例图 找出所有的备选系统用例后,我们要对他们进行合并和筛选。合并就是将相同的用例合并成一个,筛选就是将不符合系统用例条件的备选用例去掉。一个系统用例应该是实际使用系统的用户所进行的一个操作,例如,“查看新闻列表”就不能算一个系统用例,因为他只是某系统用例的一个序列项。 最终我们得出的系统用例图如下:4.从系统用例图到用例规约 得出系统用例图后,我们应该对每一个系统用例给出用例规约。关于用例规约,没有一个通用的格式,大家可以按照习惯的格式进行编写。对用例规约唯一的要求就是“清晰易懂”。 下面给出“登录”这个系统用例的一个规约:5.绘制业务领域类图 完成了上面几步,下面应该是绘制业务领域类图了
17、。所谓业务领域类图要描述一下三点: 1.系统中有哪些实体。 2.这些实体能做什么操作。 3.实体间的关系。 这里要特别强调:这里的实体不是Actor,而是Actor使用系统时使用的所调用的实体,是处在系统边界之内的实体。例如,管理员就没有作为一个实体出现在这里,因为管理员处在系统边界之外,它所有的工作都可以通过调用这三个类的方法完成。并且,这里的“注册会员”实体也不是刚才用例图中注册会员这个Actor,而是作为一个系统内的业务实体,供Actor们使用的。例如,其中的注册功能是给注册会员这个Actor使用,而移除则是给管理员这个Actor使用的。 理解以上这段话非常重要,我经常看到由于混淆了实体
18、和Actor的关系而导致画出的领域类图不准确或职责分配不准确。大家可能还注意到,我们这里没有给出每个实体的属性。其实,在领域分析阶段,实体的属性并不重要,重要的是找出实体的操作。6.绘制实现类图 以上这几步,就是分析的过程。而下面的步骤就是设计了。 设计没有分析那么好描述,因为分析是“客户面”,它只关心系统本身的功能和业务,而不关心任何和计算机有关的东西。但是,设计和平台、语言、开发模型等内容关系紧密,因而很难找出一个一致的过程。但是,一般在设计过程中实现类图是要绘制的。 实现类图和领域类图不一样,它描述的是真正系统的静态结构,是和最后的代码完全一致的。因此,它和平台关系密切,必须准确给出系统
19、中的实体类、控制类、界面类、接口等元素以及其中的关系。因此,实现类图是很复杂的,而且是平台技术有关的。所以,我在这里不可能给出一个准确的实现类图,不过为了描述,我还是给出一个简化了的实现类图,当然,它是不准确的,而只是从形式上给出实现类图的样子。 我们假设这个系统建构于.NET 3.5平台上,并且使用ASP.NET MVC作为表示层,整体使用三层架构。那么,用户模块体系的实现类图大体是这样子(不准确):7.绘制序列图 有了静态结构,我们还要给出动态结构,这样,才能看清系统间的类是如何交互的,从而有效帮助程序员进行编码工作。 上图给出的是用户登录的序列图。首先注册会员作为Actor,调用User
20、Controller的Login方法启动序列,然后序列按图示步骤执行。其中UserServices作为业务组件,首先调用数据访问组件的GetByName确定用户是否存在,如果存在,再调用GetByNameAndPassword确定输入密码是否是此用户的密码。从而完成业务功能。 要注意,序列图在实际中是很多的,几乎每个类方法都配有相应的序列图。8.后面的步骤 在完成了上面的过程后,就可以进行编码、调试、测试等工作了。但这些已经超出了本文讨论的范围。总结 本文简要给出了使用UML进行OOA&D的过程。当然,由于示例较小,而且本人水平有限,所以给出的相关内容可能不是很准确。而且软件分析设计本来就不是
21、一个固定模式的过程,随着系统的不同整个过程会有变化。本文只是想起到一个抛砖引玉的作用,让朋友们大致了解UML的使用流程。至于实际的分析设计,还需要深入的学习和实践的积累。UML业业务建模模实例分分析作者: 范里程程 出处处:软件件世界对于大中型信息系统,很难直接进行需求分析设计,需要借助模型来分析设计系统,根据系统调研数据,建立起目标系统的逻辑模型。 在软件工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中最简单的一个步骤,但在过去十年中越来越多的人认识到它是整个过程中最为关键的一个过程。假如在需求分析时分析者们未能正确地认识到客户的需求的话,那么最后的软件实际上不可能达到客户的要求
22、,或者导致需求的频繁变更,而软件无法在规定的时间里完工。 在需求分析阶段,要对经过可行性分析所确定的系统目标和功能作进一步的详细论述,确定系统“做什么?”的问题,最终建立起目标系统的逻辑模型。 首先是获得当前系统的物理模型。物理模型是对当前系统的真实写照,可能是一个由人工操作的过程,也可能是一个已有的但需要改进的计算机系统。首先是要对现行系统进行分析、理解,了解它的组织情况、数据流向、输入输出,资源利用情况等,在分析的基础上画出它的物理模型。然后抽象出当前系统的逻辑模型。 逻辑模型是在物理模型基础上,去掉一些次要的因素,建立起反映系统本质的逻辑模型。接下来建立目标系统的逻辑模型。通过分析目标系
23、统与当前系统在逻辑上的区别,建立符合用户需求的目标系统的逻辑模型。最后补充目标系统的逻辑模型。对目标系统进行补充完善 ,将一些次要的因素补充进去,例如出错处理等。 UML(The Unified Modeling Language,即统一建模语言)是一种编制系统蓝图的标准化语言,可以对复杂的系统建立可视化的系统模型,目前已经被工业标准化组织OMG(Object Management Group)接受,一经推出便得到许多著名的计算机厂商如Microsoft、HP、IBM、Oracle等的支持,也在逐步开始应用到需求分析过程中。 在使用UML建立当前系统逻辑模型过程中,初学者通常会遇到一些问题:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- uml 业务 建模 实例 分析 5545
限制150内