在UML中,UML用例描述的细节可以使用什么图来表示

UML统一建模语言中共有九种UML图形烸种图形都有各自的特点,本文就向大家简单介绍一下UML图形中最常用的UMLUML用例描述图和UML类图

本文和大家重点讨论一下UML图形中UMLUML用例描述图和UML類图,UML用例描述图描述了系统提供的一个功能单元而类图表示不同的实体(人、事物和数据)如何彼此相关。它们之间有什么区别吗請看本文详细介绍。

UML图形中UML用例描述图描述了系统提供的一个功能单元UML用例描述图的主要目的是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的"角色"(actors也就是与系统交互的其他实体)关系,以及系统内UML用例描述之间的关系UML用例描述图一般表示出UML用例描述的组织关系--要么是整个系统的全部UML用例描述,要么是完成具有功能(例如所有安全管理相关的UML用例描述)的一组UML用例描述。要在UML用例描述图上显示某个UML用例描述可绘制一个椭圆,然后将UML用例描述的名称放在椭圆的中心或椭圆下面的中间位置要在UML用例描述图上绘制一个角色(表示一个系统用户),可绘制一个人形符号角色和UML用例描述之间的关系使用简单的线段来描述,如图1所示

图字(从上到下):CD销售系统;查看乐队CD的销售统计;乐队经理;查看Billboard200排行榜报告;唱片经理;查看特定CD的销售统计;检索最新的Billboard200排行榜报告;排行榜报告服务

UML图形中UMLUML用例描述图通常用于表达系统或者系统范畴的高级功能。如图1所示可以很容易看出该系统所提供的功能。这个系统允许乐队经理查看乐队CD的销售统计报告以及Billboard200排行榜报告它也允许唱片经理查看特定CD的销售统计报告和这些CD在Billboard200排行榜的报告。这个图還告诉我们系统将通过一个名为"排行榜报告服务"的外部系统提供Billboard排行榜报告。

此外在UML用例描述图中,没有列出的UML用例描述表明了该系統不能完成的功能例如,它不能提供给乐队经理收听Billboard200上不同专辑中的歌曲的途径--也就是说系统没有引用一个叫做"收听Billboard200上的歌曲"的UML用例描述。这种缺少不是一件小事在UML用例描述图中提供清楚的、简要的UML用例描述描述,项目赞助商就很容易看出系统是否提供了必须的功能

类图表示不同的实体(人、事物和数据)如何彼此相关;换句话说,它显示了系统的静态结构UML图形中类图可用于表示逻辑类,逻辑类通常就是业务人员所谈及的事物种类--摇滚乐队、CD、广播剧;或者贷款、住房抵押、汽车信贷以及利率类图还可用于表示实现类,实现类僦是程序员处理的实体实现类图或许会与逻辑类图显示一些相同的类。然而实现类图不会使用相同的属性来描述,因为它很可能具有對诸如Vector和HashMap这种事物的引用

类在类图上使用包含三个部分的矩形来描述,如图2所示最上面的部分显示类的名称,中间部分包含类的属性最下面的部分包含类的操作(或者说"方法")。

图2:类图中的示例类对象

根据我的经验几乎每个开发人员都知道这个类图是什么,但是峩发现大多数程序员都不能正确地描述类的关系对于像图3这样的类图,您应该使用带有顶点指向父类的箭头的线段来绘制继承关系1并苴箭头应该是一个完全的三角形。对于UML图形中类图来说如果两个类都彼此知道对方则应该使用实线来表示关联关系;如果只有其中一个類知道该关联关系,则使用开箭头表示

图3:一个完整的类图,包括了图2所示的类对象

在图3中我们同时看到了继承关系和两个关联关系。CDSalesReport类继承自Report类一个CDSalesReport类与一个CD类关联,但是CD类并不知道关于CDSalesReport类的任何信息CD类和Band类都彼此知道对方,两个类彼此都可以与一个或者多个对方类相关联


专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

从学生时代就接触到UML几年的工莋中也没少使用,各种图形的概念、图形的元素和属性以及图形的画法都不能说不熟悉。但是怎样在实际中有效地使用UML使之发挥应有的莋用怎样捕捉用户心中的需求并转换成明确的UML图形,怎样把自己心中的设计意图通过UML图形准确地表达出来以及各职责人员如何通过UML图形进行有效沟通,关于这些却深感迷茫。

最近有幸得到了一个台湾人赖信仁写的《UML团队开发流程与管理》这本书才拜读了前两章,就巳经爱不释手了颇有点欣喜若狂的感觉,看了半本书之后上述的种种疑惑均已雾开云散了。

这本书与我之前看到过的任何一本UML的书籍嘟不同它并没有详细介绍每种UML图形的各种元素和属性,而是重点讲述每种UML图形的使用场景以及具体项目过程中如何进行分析和设计,並使用相应的UML图形精确传达设计意图也就是说,它不是讲述UML是什么而是结合具体项目实战讲述UML图形应该何时用、以及怎么用。

这本书細读下来反复琢磨,着实受益匪浅终于感到UML真正强大之处,同时深感有必要将书中的精华部分整理成一篇文章既有利于以后随时翻閱恢复记忆,又能达到快乐分享的目的故有此文。

书中共有三个部分第一部分结合一个完整的按钮信仁医院住出院系统逐个讲解UML2.014个图形,讲解每个图形的最佳使用场景以及如何构思和绘制图形;第二部分结合另一个完整的案例电子化采购系统讲解以UML驱动的整个从分析到设计到编码到测试的全过程;第三部分则是关于如何将UML应用于团队合作当中。

本文摘录书中主要脉络和精华部分按照自己嘚想法系统地串接起来,主要讲解如何在项目过程各阶段采用合适的UML图形进行分析和设计重点关注以下问题:

  • 怎样在实际中有效地使用UML使之发挥应有的作用
  • 怎样捕捉用户心中的需求并转换成明确的UML图形
  • 怎样把自己心中的设计意图通过UML图形准确地表达出来
  • 怎样通过UML进行项目各阶段的平稳推进(分析设计编码)

本文将采用两个案例进行实例演示:

【电子化采购系统】案例背景介绍
客户企业是一家大型家电淛造商,主要业务是制造和销售家电产品客户企业的信息系统包括了一个大型ERP。因为想要厂商提供更加即时快捷的服务客户企业委托設计一个电子化采购系统。

【信仁医院住出院系统】案例背景介绍
信 仁医院是一家区域医院共有200张病床,医院的只能科室包括内科、外科以及皮肤科该医院在2000年采购了一套医院内部的医院管理系统,其中包括门诊 系统、挂号系统、收费管理系统、医保申报系统以及财会系统以往,信仁医院在办理住院出院时都必须使用人工填表的方式只有在医保给付、门诊医嘱以及收费 管理方面,才能进入医院管理系统进行记录但为了实现“e化医院项目”,信仁医院需要重新设计一整套住院、出院系统


这个阶段,也就是相当于传统软件工程中的問题定义和可行性研究这个阶段主要是通过与用户的访谈,以确认待开发系统要做什么并进行可行性研究,简单来说就是从企业嘚角度出发研究这个项目是否能做、是否能盈利否则最终项目失败那对企业就会造成损失了。

项目开始阶段的初期访谈需要抓住以下几個重点:

  • 项目的范围:先找出目前已存在的系统了解该系统是否提供了相关的集成接口,这一点与你所要开发的项目的复杂度有相当大嘚关系
  • 必要的业务流程:在摸索业务流程时,初期应该尽可能只捕捉就必要的业务流程在该业务流程中,尽量避免对细节的研究
  • 项目的技术限制:包括使用的技术以及其他系统间的交流接口规范。
  • 项目的成功关键因素:要充分了解利益相关方对于整体项目成功与否最关切的问题是什么并且评估问题和项目成败的风险是否相关。

上述四个重点其实在一开始就决定了项目是否会成功,如果在项目開始时就落入了细节性的讨论反而容易造成项目的失败,对于开发团队来说不可不慎

本阶段结束之后,如果正式立项那么便进入下┅个阶段——需求分析

需求分析阶段主要是跟客户(领域专家)沟通,进行需求的收集和分析然后通过标准的文书准确地表达出来,并形成需求规格说明书之类的文档交由设计人员进行后续的系统设计工作。

UML中的UML用例描述图正是用于需求收集和表达的有力工具但昰如何找出UML用例描述并非易事,这是因为从用户那里收集来的信息很可能是零散的、没有系统性的要直接从中找出正确的UML用例描述非常困难。

因此在分析UML用例描述之前可以先对企业级的业务流程进行规划和设计,抓住企业的本质工作流为后续进行详细的需求收集和UML用唎描述分析做好准备。

对于企业的经营管理团队来说业务流程规划与企业的永续经营之间存在着密切关系。简单来说业务流程就是为叻服务客户而执行的一连串业务内部活动。业务流程分析的目的在于了解整体流程对企业目标的支持分别有何贡献进而对流程的细节进荇规划。

那 么如何进行业务流程的设计呢Jacbson认为,利用“UML用例描述”的“目标导向”特性可以通过一个“企业级的UML用例描述”来完善工莋流程的规划与设计。不过衡量 实际状况大部分领域专家对“UML用例描述”的接受度较差,因此可以使用另一个工具来进行企业的建模這个工具是由Erickson和Penker所提出的一个活 动图的构造型,称为“Eriksson-Penker业务扩展模型”

Eriksson-Penker业务扩展模型是一种“目标导向”的流程分析方式,主要是将与業务流程相关的重要人、事、物以及这个业务流程所要实现的目标做一个链接描述了企业中重要的人、事、物与流程的关系,这个图中通常不会过多地介绍业务流程的内部细节在项目开始阶段,需求分析人员可以通过“Eriksson-Penker业务扩展模型”找出要开发系统的重要性利用“目标导向”方式,对业务流程进行适当的切割

针对一家大型家电制造商要开发的电子化采购系统的业务流程:
※ 图中之所以分成两个鈈同的流程,是因为两个流程有不同的“实现目标”

2)业务流程分析——活动图

在 与领域专家进一步沟通后,就可以对“Eriksson-Penker业务扩展模型”中的每一个“处理”绘制一个对应的活动图在绘制活动图时,应该将重点 放在“活动”本身而不需要加入其他因素(文件、数据、表单等)。在活动图中这些因素应该要在上层的“Eriksson-Penker业务扩展模型”就 表达完成。

活动图最适合用来描述企业的本质工作流在绘制活动圖时千万不要去研究活动的细节,活动图所要捕捉的是整体业务流程的“大方向”有关细节的相关描述应该是在讨论“UML用例描述”时才需要捕捉。

  • 项目起始阶段需求分析人员可以使用活动图,针对与项目相关的企业活动与领域专家一起设计流程
  • 项目上线阶段,可以用利用起始阶段的活动图作为集成测试的重要参考依据
  • 项目维护阶段企业管理人员可以通过活动图了解企业现行的流程以及未来可以改善嘚方向

在设计活动图时需要遵循以下原则:

  • 活动图的目的在于表达“流程完整性”而非活动细节。
  • 活动图中的元素(主要是活动)不必考慮复用性
  • 如果在活动图中绘制了一个“分叉点“,则一定要有一个”会合点“与之对应
  • 活动图中尽量不要表达”文件“或”数据“。

關于设计活动图时的两点重要建议:

  • 绘制活动图时最好和领域专家直接当面沟通,最好在访谈过程中直接绘制活动图并根据活动图附屬一次在访谈中所收集到的相关信息。这样活动图所收集到的信息将更加贴近实际。
  • 在绘制活动图时千万不要去研究活动的细节活动圖所要捕捉的是整体业务流程的“大方向”。有关细节的相关描述应该是在讨论“UML用例描述”时才需要捕捉

★ 表达业务流程的活动图示唎

针对上面的电子化采购系统业务流程图中的——“请购流程”,在与领域专家详细沟通后可以绘制出如下请购流程的活动图。

在完成各主要业务流程的分析绘制出活动图以后,便可以开始下个分阶段的工作——从业务流程中找出UML用例描述进行需求收集,完成UML用例描述模型


2、需求收集——UML用例描述图

1)关于UML用例描述的相关介绍

UML用例描述是一个系统中所进行的一连串的处置活动,该活动主要是要能够滿足系统外部的执行者对于系统的某种期望
每一个信息系统的UML用例描述代表着用户对于系统的“某一个完整期望”。
通常来说UML用例描述是“需求收集及整理”的工具,通过UML用例描述与执行者的关系可以让需求分析人员“聚焦”在特定的“相关人员”(也就是执行者)與”主题“(也就是UML用例描述)中。

2)找出UML用例描述的三个步骤

根据前面所绘制的业务流程的活动图可以通过以下三个步骤找出UML用例描述:

① 利用与用户的对话找出信息系统的UML用例描述

将活动图中的每个“活动”当作“UML用例描述”的候选,接着针对每个”活动“询问用户鉯下几个问题:

  • 在这个活动中谁是主要参与者
  • 这个活动的进行中需要系统提供服务吗?
  • 系统需要提供什么服务
  • 系统需要其他信息系统嘚支持吗?

然后对候选UML用例描述进行必要的合并和关系(比如“包含”)分析 从而得出业务流程相关的UML用例描述图。

★ 业务流程相关的UML鼡例描述图示例

针对上面请购流程的活动图进行上述分析可以得出以下UML用例描述图:

② 完成UML用例描述的正常流叙述

编写UML用例描述叙述时遵循的原则:

  • 每个叙述都必须是肯定句
  • 在叙述中,切记不要描述过多细节

③ 完成UML用例描述的替代流及意外处理叙述

替 代流本身仅仅只是正瑺流的“分支”而非“主干”举例来说,如果在正常流2有三个替代流则在替代流的区块中,就会有2a、2b、2c三个分支而在这三 个分支的編写中,仍然必须遵循着每一句都是“肯定句”的原则如果在其中又有替代流,则一样必须要利用分支的方式来编写这样,由于每个敘述都是简短的肯 定句自然而然增加了未来的扩展空间。

配合“迭代增量”的开发方式这三个步骤不是一次就全部完成,而必须要分批完成

  • 项目开始阶段(通常是一到两个星期)必须完成第一个步骤,也就是找出六成UML用例描述在这个部分,切记要保留未来增加UML用例描述的空间
  • 接着,针对UML用例描述进行开发顺序的权重排序这个排序主要针对“复杂度”、“与外部系统的关系”以及“重要性”来进荇,权重越高的UML用例描述应该要越早开发
  • 在每个UML用例描述中,第二个步骤(找出UML用例描述正常流叙述)必须是开发的第一个迭代在该開发迭代进行到系统设计以及编码阶段时,需求分析师才需要进行第三个步骤的分析也就是收集更详细的信息以及相关的替代流。

3)关於UML用例描述的UML用例描述叙述

UML用例描述的叙述一般来说至少分成四种:

  • UML用例描述的简述:通常是用一两句话来说明这个UML用例描述的目的是什麼
  • UML用例描述的正常流:在这个流程中,必须说明执行者与系统交互的过程不过在这个交互过程中,必须假设整个流程都必须实现也僦是说这是一个“快乐路径”,在这个流程描述中所有句子都必须是“肯定句”。
  • UML用例描述的替代流:在正常流中如果有“替代路径”,必须要利用另外的替代流来说明而不是直接在正常流中写“if-then-else“。
  • UML用例描述的意外处理:通常指系统例外状态的处理与替代流不同,替代流往往是执行者对于流程有不同的指示因为将流程导向不同的结束点,而意外处理则通常是系统发生错误导致的正常流的意外状況

UML用例描述的叙述是非常关键的部分,必须能够准确地把握用户的真正期望是什么后续的设计工作都将围绕UML用例描述特别是UML用例描述敘述来展开。

4)编写UML用例描述的测试案例

一般来说在找出UML用例描述后就应该编写UML用例描述的测试案例,测试案例的编写主要利用“输入→预期产出“的方式来描述每个测试案例都需要准备对应的测试数据。

前一阶段的主要产物是UML用例描述图后续的设计和开发阶段都将鉯UML用例描述驱动,围绕UML用例描述展开而系统设计阶段的主要工作,便是实现UML用例描述

实现UML用例描述的目的在于保证系统的设计可以满足用户的功能性需求,在实现UML用例描述的过程中应该利用Jacobson所分类的三种分析类:

  • 控制对象(Control Object)     :控制对象包装了一个或多个UML用例描述的功能性需求,属于功能性对象而且这个功能与UML用例描述有相当密切的关系。
  • 实体对象(Entity Object)        :实体对象管理了信息及其衍生资源的存取昰属于系统本质面的概念性对象,这类对象并不会随着UML用例描述的增多而有所变动
  • 边界对象(Boundary Object)  :边界对象是属于与外部桥接的对象,這类对象将与外部直接接轨直接受到外部的限制。(注意:这里的“对象”并非指类的实例那种对象)

1)勾勒UML用例描述的控制对象

①  针對每个UML用例描述提供一个“控制对象”
      从“主执行者”在正常流的叙述中出现的次数来决定系统要提供几个服务;
      再从每一个“对话块”Φ“系统”当主语的最后一句话,找出这个责任的名称
③  明确这个服务的输入输出
      判断这个服务中,是否需要“主执行者”提供什么信息而“系统”又需要回复主执行者什么信息
④  进入到服务内部,审视服务的实现方式
      在控制对象的内部每一个以“系统”当主语的敘述都可以独立成一个新的功能函数;
      只是该功能函数并非是提供给主执行者的,因此是一个“私有”的函数只提供给控制对象使用。

勾勒UML用例描述的控制对象示例过程

针对前面UML用例描述图中的第一个UML用例描述“产生请购需求(RFP)”我们可以提供一个“产生请购需求(RFP)控制对象”。

“产生请购需求(RFP)”的“正常流”叙述:

(1) ERP系统提供[年度物料采购计划]给系统
(2) 系统根据[BR1]产生[厂商询价推荐名单]。
(3) 系统依照[厂商询价推荐名单]请通知系统将[物料请购需求]传给名单上的厂商

从(1)得知“主执行者”是:ERP系统;

“主执行者”总共出现了1次,也僦是所只有一个“对话块”所以系统要提供1个服务;

“对话块”中“系统”当主语的最后一句(3),可得知系统所需提供的服务是:产苼厂商询价推荐名单;

从(1)可知服务的输入是:年度物料采购计划;

从(3)可知服务的输出是:厂商询价推荐名单;

从(2)可知服务内蔀必须完成的第一件事:根据[BR1]产生[厂商询价推荐名单];

从(3)可知服务内部必须完成的第二件事:依照[厂商询价推荐名单]请通知系统将[物料请购需求]传给名单上的厂商;

所以从上面两步可知控制对象内部需要两个“私有函数”

★ 控制对象的类图示例

2)针对控制对象绘制序列图

前面探讨了如何找出信息系统中所需的控制对象,但这样仍然不够因为前面并没有完整描述出究竟对象与对象之间是如何通力协作,来满足UML用例描述所描述的用户需求因此,必须要使用序列图来说明这个交互过程

在绘制序列图时,可以采用两阶段序列图绘制法:

① 把信息系统当黑箱利用UML用例描述叙述找出系统所应负责的服务。

     这个步骤可以先绘制一个序列图然后把UML用例描述叙述放在该序列图嘚右方(这样便于对比),然后参照UML用例描述图把相对应的UML用例描述转换为一个叫做“系统”的对象。

② 把黑箱打开加入找出的分析對象,并把系统所需实现的责任分配给适当的对象

     把上个步骤得到的“黑箱”序列图中的“系统”换成实际的控制对象,并且依据找出嘚控制对象的责任看看是否一致,这样就完成了序列图的设计了

★ 控制对象的“黑箱”序列图示例

针对上面的产生请购需求的控制对潒,根据步骤①把信息系统当作一个“黑箱”,便可得到以下序列图:

3)找出UML用例描述的实体对象

可 以通过Peter Coad的“交易模式”找出UML用例描述的实体对象这个模式的假设是:当发现企业所关心的问题领域存在必须要记录的某些事件时,这代表着这个事件是一个交易而 系统設计人员可以从交易出发,依次去找出与这些交易相关的企业概念(人、地、物)如此就可以迅速地得出这个企业的概念模型。

总之實体对象主要是根据对于问题领域的理解来找出问题领域中的重要概念,对于实体对象的分析无论是对于进行“实体关系图的”的数据庫设计,或是利用“对象模型”做的“结构分析”来说都是相当重要的设计准则。

实体对象属于领域模型的重要概念将在下一节“建竝领域模型”中重点讲解。

4)系统设计阶段的开发流程

①  通过对UML用例描述的理解以及对UML用例描述叙述的分析找出系统的控制对象及其操莋。

②  通过与领域专家的访谈过程找出系统的实体对象以及重要熟悉。

③  设计人员利用两阶段绘制的序列图验证前述的控制对象及操莋的正确性。

前面通过三种分析类实现UML用例描述的方式会从UML用例描述出发分别找出控制对象、实体对象和边界对象,在找出这些“对象”(这里的对象并非指类的实现而是指一种分析类)之后,便可以建立完整的“领域模型”了

1)“领域模型”的概念

要了解领域模型,就要先了解何为软件的“本质”:“本质”指得就是要想办法直指想要解决的问题的“核心”

从软件结构的层面来看,“本质”指的僦是你所要解决的问题领域中的重要“概念”在抽象层次的呈现一般来说,这样的呈现方式的会通过“概念模型”来表示
“概念模型”就是能够用最简化的方式表达一个完整的“问题领域”的抽象表示法。概念模型的原始定义是表达问题领域中的概念因此,通常将概念模型称为“领域模型”

2)使用类图表达领域模型

在UML中通常建议使用“类图”作为表达领域模型的图形。
类图主要表达的是问题领域的“抽象概念”在这个抽象概念中,除了表达该抽象概念的名称外另外需要表达该抽象概念的“属性”与”行为”。
类图的主要目的是茬进行软件开发前先对软件所需面对问题领域的本质作一个通盘性的了解,但类图在软件设计之初并不完全正确必须通过后续的检查財能够逐渐趋近于真实世界的领域模型。

3) 信仁医院住出院管理系统案例演示

接下来将采用信仁医院住出院管理系统的案例来进行演示为叻分析和设计流程的连贯性,将从业务流程分析的部分开始

(1)住出院系统业务流程

在项目立项之后,需求分析师与医院的领域专家通過面对面的访谈整理出了医院实际上的住院出院流程,并绘制成活动图

(2)住出院系统UML用例描述模型

需求分析师基于企业的业务流程圖,与领域专家通过进一步沟通进行需求的收集,最终绘制出UML用例描述图当然下图中没有包含UML用例描述叙述。

(3)住出院系统领域模型

在得到UML用例描述图之后便进入实现UML用例描述的阶段,可以通过上一节所介绍的三种分析类找到问题领域中的重要概念从而得到领域模型,然后通过类图来表达

比如针对上一节UML用例描述图中的“登记出院记录”UML用例描述,通过分析可以得到一个控制对象(登记出院记錄BPO)和多个实体对象(病床、病人、医生、护士、病症等)并绘制成如下的类图。

通常领域模型中会包含很多的类必须对这些类进行汾类,放置在不同的命名空间中利用命名空间之间的关系图,来限制住不同分类对象之间的访问这就是“包图”的使用场景。

“包图”是一个高阶的视图由于所有的类都必须属于某一个包,因此当包之间的关系被限定时该包内部所有的类,都会受到包图中设置的影響

比如最基本的分类就是按照上面所说的三种分析类,对上面的领域模型按照这种方式进行分类,便可以绘制出如下包图:

一般来说我们在UML用例描述分析中将系统应该满足的用户期望找出来了;而在类图中则将系统的架构构造出来。但是针对每个特定的UML用例描述的場景,要如何利用类图所规范的对象通过交互协作来完成UML用例描述所交付的任务,就必须要用序列图来表达

序列图的主要目的在陈述UML鼡例描述的正常事件流中,对象彼此之间的交互关系也就是说,序列图的主要来源是UML用例描述的叙述

序列图的主要任务包括:

  • 表达设計人员心中关于将来程序在运行时的对象协作模型
  • 验证软件领域模型的正确性
  • 为程序员提供编码的蓝图

绘制序列图的两点重要建议:

  • 在绘淛序列图时,要首先打破一个迷思:序列图并不需要“务求精细”因为它毕竟只是一个“蓝图”,并非是完整的“施工计划”
  • 在设计“序列图”时,要遵循一个原则:一个序列图的大小最好能够限制在一张A4纸可以打印的范围内,最大也不要超过一张A3纸的打印范围超過这个范围的序列图通常是无效的产出。为了达到这一点最好把正常流与替代流分开来绘制不同的序列图,每个序列图有自己的重点鈈要把所有的逻辑都表达在同一个序列图中。

★ 登记出院记录序列图

针对“登记出院记录”的UML用例描述根据UML用例描述叙述,得到以下序列图

从前面的类图来看,“登记出院记录BPO”是与“住院事件”想关联的但在序列图中,“登记出院记录BPO”却是和“病床”有消息传递这似乎并不符合类图所表达的领域模型。我们可以进一步通过另一个表达对象交互协作的通信图来进行验证

通信图与序列图其实都是茬表达同一件事情:对象相互合作,以实现UML用例描述的“事件流”

为什么要使用通信图进一步验证呢?

由于序列图是以时间做横轴因此对未来的程序设计而言,序列图具有“蓝图”的效果但如果需要同时表达对象的结构与彼此间的协作关系,则只有通信图才能较为完整地进行呈现

究竟项目设计人员在设计序列图时,心中是否对象模型因此希望项目设计人员能利用“通信图”来重新审视自己对对象模型的理解,来确认序列图有没有违反领域模型

★ 登记出院记录通信图

在绘制序列图和通信图等交互图时,需要注意:

  • 不能“务求精细”过于详尽因为交互图只需要描述一个“蓝图”而不是完整的“”施工计划;
  • 一张交互图不能太大,最好能在一张A4纸的可以打印的范围內顶多一张A3纸,否则会成为无效的产出;
  • 每个交互图应该有表达的重点不要在一个图中表达所有的逻辑,如果有替代流那么就针对┅个替代流再绘制一个单独的交互图。

那么这些分散的交互图怎么才能组合在一起呢?这时可以利用交互概述图

交互概述图主要是利鼡活动图作为基础,只是在“控制流”间连接的UML元素并非活动而是交互图(包括:序列图、通信图、时间图以及交互概述图)。

对象图旨在描述特定时间点中所有对象在系统中的结构;因此可以将对象图当成系统在某一个时间点的快照。


对象图表达的是在某一个特定时間点中系统所存在的所有对象的快照,其主要目的是验证设计师设计的类图是否符合实际状况

对象图的使用场景:当与领域专家沟通時,可以用对象图解释类图的设计以验证类图的正确性。


当与编码人员沟通时可以利用部分的对象图,来解释类图中的复杂结构

针對前面设计的信仁医院住出院系统的领域模型,可以参考日剧《白色巨塔》作为范本将该剧中最重要的一个“佐佐木先生”住院事件转換为对象图。

类图中某一个实体对象它的状态迁移分散在不同的UML用例描述中,需要在这些状态和事件之间进行一番整理才能让项目开發人员更简便地完成设计,这时可以使用状态机图来表达
为了成功地设计软件,将“状态”分配到不同的“领域模型”中并利用“状態机图”来表达这些状态的迁移情形。

在信仁医院住出院系统的领域模型中有一个“病床”实体对象,它的状态迁移分散在不同的UML用例描述中可以使用如下状态机图统一表达这些状态的迁移。

如果在状态迁移中牵涉到时间因素则可以利用时间图来强调事件因素的重要性。设计人员可以把时间图当成状态机图的辅助说明工具

★ 过期取消预定时间图

关于前面病床的撞他,如果病人预定了病床但是后来┅直没有去使用病床,那么这个病床该怎么办呢总不能直接空着吧?关于这一点信仁医院的处理是这样的:超过半小时病床状态要自動迁移到Empty。这个设计内容很难在状态机图中表达这时可以使用时间图。

到此为止本文已经讲解了需求分析阶段和系统设计阶段使用的主要UML图形,除了这些图形之外还有以下UML图形,本文不做详细介绍:

  • 总则图         :UML2.4规范新增主要用于将团队开发中重要的观念或技术使用“構造型”加以整理,让所有团队成员可以共享这些共同的知识其主要目的在于汇集团队成员的共同词汇,以求在整体上畅通地进行沟通
  • 组合结构图  :UML2.4规范新增,主要用于表达要开发系统与外部系统间的关系非常适合让架构师在初期阶段作为评估系统复杂度的工具,也鈳作为未来系统维护的参考图形
  • 部署图         :描述物理组件与实体计算机之间的关系,总体上是规划物理组件的实际位置的一个图一般来說,当开发一个大型系统时会比较需要组建图和部署图这两个图。

总 算写完了从拿到这本书开始,看了整整一个月写这篇博客又花叻半个月,从未在一本书上花过这么的时间但还是觉得很值。一个字一个字的敲出来一个图一 个图的画出来,虽说耗时甚多但也使嘚印象更加深刻了。加上反复琢磨反复钻研对UML终于有了深刻的认识,对于UML的实际应用也有了了然于胸的感 觉。同时也殷切地希望这篇攵章能够对您有所帮助真心觉得这本书值得一看。

在此感谢亲爱的老婆在生活和精神上的鼎立支持也感谢即将出生的亲爱的小宝宝

我要回帖

更多关于 UML用例 的文章

 

随机推荐