统一建模语言Word下载.docx
- 文档编号:20594550
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:15
- 大小:103.06KB
统一建模语言Word下载.docx
《统一建模语言Word下载.docx》由会员分享,可在线阅读,更多相关《统一建模语言Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
当阅读完本文时,您还不具备足够的知识可以在简历上声称自己掌握了UML,但是您已具有了进一步钻研该语言的良好起点。
一些背景知识
正如前面曾提到过的,UML的本意是要成为一种标准的统一语言,使得IT专业人员能够进行计算机应用程序的建模。
UML的主要创始人是JimRumbaugh、IvarJacobson和GradyBooch,他们最初都有自己的建模方法(OMT、OOSE和Booch),彼此之间存在着竞争。
最终,他们联合起来创造了一种开放的标准。
(听起来是不是很熟悉?
这个现象类似J2EE、SOAP和Linux的诞生。
)UML成为"
标准"
建模语言的原因之一在于,它与程序设计语言无关。
(IBMRational的UML建模工具被广泛应用于J2EE和.NET开发。
)而且,UML符号集只是一种语言而不是一种方法学。
这点很重要,因为语言与方法学不同,它可以在不做任何更改的情况下很容易地适应任何公司的业务运作方式。
既然UML不是一种方法学,它就不需要任何正式的工作产品(即IBMRationalUnifiedProcess?
术语中所定义的"
工件"
)。
而且它还提供了多种类型的模型描述图(diagram),当在某种给定的方法学中使用这些图时,它使得开发中的应用程序的更易理解。
UML的内涵远不只是这些模型描述图,但是对于入门来说,这些图对这门语言及其用法背后的基本原理提供了很好的介绍。
通过把标准的UML图放进您的工作产品中,精通UML的人员就更加容易加入您的项目并迅速进入角色。
最常用的UML图包括:
用例图、类图、序列图、状态图、活动图、组件图和部署图。
用例图
用例图描述了系统提供的一个功能单元。
用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的"
角色"
(actors,也就是与系统交互的其他实体)关系,以及系统内用例之间的关系。
用例图一般表示出用例的组织关系--要么是整个系统的全部用例,要么是完成具有功能(例如,所有安全管理相关的用例)的一组用例。
要在用例图上显示某个用例,可绘制一个椭圆,然后将用例的名称放在椭圆的中心或椭圆下面的中间位置。
要在用例图上绘制一个角色(表示一个系统用户),可绘制一个人形符号。
角色和用例之间的关系使用简单的线段来描述,如图1所示。
图1:
示例用例图
图字(从上到下):
CD销售系统;
查看乐队CD的销售统计;
乐队经理;
查看Billboard200排行榜报告;
唱片经理;
查看特定CD的销售统计;
检索最新的Billboard200排行榜报告;
排行榜报告服务
用例图通常用于表达系统或者系统范畴的高级功能。
如图1所示,可以很容易看出该系统所提供的功能。
这个系统允许乐队经理查看乐队CD的销售统计报告以及Billboard200排行榜报告。
它也允许唱片经理查看特定CD的销售统计报告和这些CD在Billboard200排行榜的报告。
这个图还告诉我们,系统将通过一个名为"
排行榜报告服务"
的外部系统提供Billboard排行榜报告。
此外,在用例图中,没有列出的用例表明了该系统尚未完成的功能。
例如,它不能提供给乐队经理收听Billboard200上不同专辑歌曲的途径--也就是说,系统没有引用一个叫做"
收听Billboard200上的歌曲"
的用例。
在用例图中提供清晰、简要的用例描述,项目赞助商或是需求者就很容易看出系统是否提供了必须的功能。
类图
类图表示不同的实体(人、事物和数据)如何彼此相关;
换句话说,它显示了系统的静态结构。
类图可用于表示逻辑类,逻辑类通常就是业务人员所谈及的事物种类--摇滚乐队、CD、广播剧;
或者贷款、住房抵押、汽车信贷以及利率。
类图还可用于表示实现类,实现类就是程序员处理的实体。
实现类图或许会与逻辑类图显示一些相同的类。
然而,实现类图不会使用相同的属性来描述,因为它很可能具有对诸如Vector和HashMap这种事物的引用。
类在类图上使用包含三个部分的矩形来描述,如图2所示。
最上面的部分显示类的名称,中间部分包含类的属性,最下面的部分包含类的操作(或者说"
方法"
图2:
类图中的示例类对象
根据经验,几乎每个开发人员都知道这个类图是什么,但是我发现大多数程序员都不能正确地描述类的关系。
对于像图3这样的类图,您应该使用带有顶点指向父类的箭头的线段来绘制继承关系1,并且箭头应该是一个完全的三角形。
如果两个类都彼此知道对方,则应该使用实线来表示关联关系;
如果只有其中一个类知道该关联关系,则使用开箭头表示。
图3:
一个完整的类图,包括了图2所示的类对象
在图3中,我们同时看到了继承关系和两个关联关系。
CDSalesReport类继承自Report类。
一个CDSalesReport类与一个CD类关联,但是CD类并不知道关于CDSalesReport类的任何信息。
CD类和Band类都彼此知道对方,两个类彼此都可以与一个或者多个对方类相关联。
序列图
序列图显示具体用例(或者是用例的一部分)的详细流程。
它几乎是自描述的,并且显示了流程中不同对象之间的调用关系,同时还可以很详细地显示对不同对象的不同调用。
序列图有两个维度:
垂直维度以发生的时间顺序显示消息/调用的序列;
水平维度显示消息被发送到的对象实例。
序列图的绘制非常简单。
横跨图的顶部,每个框(参见图4)表示每个类的实例(对象)。
在框中,类实例名称和类名称之间用空格/冒号/空格来分隔,例如,myReportGenerator:
ReportGenerator。
如果某个类实例向另一个类实例发送一条消息,则绘制一条具有指向接收类实例的开箭头的连线,并把消息/方法的名称放在连线上面。
对于某些特别重要的消息,您可以绘制一条具有指向发起类实例的开箭头的虚线,将返回值标注在虚线上。
就我而言,我总喜欢绘制出包括返回值的虚线,这些额外的信息可以使得序列图更易于阅读。
阅读序列图也非常简单。
从左上角启动序列的"
驱动"
类实例开始,然后顺着每条消息往下阅读。
记住:
虽然图4所示的例子序列图显示了每条被发送消息的返回消息,但这只是可选的。
图4:
一个示例序列图
通过阅读图4中的示例序列图,您可以明白如何创建一个CD销售报告(CDSalesReport)。
其中的aServlet对象表示驱动类实例。
aServlet向名为gen的ReportGenerator类实例发送一条消息。
该消息被标为generateCDSalesReport,表示ReportGenerator对象实现了这个消息处理程序。
进一步理解可发现,generateCDSalesReport消息标签在括号中包括了一个cdId,表明aServlet随该消息传递一个名为cdId的参数。
当gen实例接收到一条generateCDSalesReport消息时,它会接着调用CDSalesReport类,并返回一个aCDReport的实例。
然后gen实例对返回的aCDReport实例进行调用,在每次消息调用时向它传递参数。
在该序列的结尾,gen实例向它的调用者aServlet返回一个aCDReport。
请注意:
图4中的序列图相对于典型的序列图来说太详细了。
然而,我认为它才是足够易于理解的,并且它显示了如何表示嵌套的调用。
对于初级开发人员来说,有时把一个序列分解到这种详细程度是很有必要的,这有助于他们理解相关的内容。
状态图
状态图表示某个类所处的不同状态和该类的状态转换信息。
有人可能会争论说每个类都有状态,但不是每个类都应该有一个状态图。
只对"
感兴趣的"
状态的类(也就是说,在系统活动期间具有三个或更多潜在状态的类)才进行状态图描述。
如图5所示,状态图的符号集包括5个基本元素:
初始起点,它使用实心圆来绘制;
状态之间的转换,它使用具有开箭头的线段来绘制;
状态,它使用圆角矩形来绘制;
判断点,它使用空心圆来绘制;
以及一个或者多个终止点,它们使用内部包含实心圆的圆来绘制。
要绘制状态图,首先绘制起点和一条指向该类的初始状态的转换线段。
状态本身可以在图上的任意位置绘制,然后只需使用状态转换线条将它们连接起来。
图5:
显示类通过某个功能系统的各种状态的状态图
图5中的状态图显示了它们可以表达的一些潜在信息。
例如,从中可以看出贷款处理系统最初处于LoanApplication状态。
当批准前(pre-approval)过程完成时,根据该过程的结果,或者转到LoanPre-approved状态,或者转到LoanRejected状态。
这个判断(它是在转换过程期间做出的)使用一个判断点来表示--即转换线条间的空心圆。
通过该状态图可知,如果没有经过LoanClosing状态,贷款不可能从LoanPre-Approved状态进入LoaninMaintenance状态。
而且,所有贷款都将结束于LoanRejected或者LoaninMaintenance状态。
活动图
活动图表示在处理某个活动时,两个或者更多类对象之间的过程控制流。
活动图可用于在业务单元的级别上对更高级别的业务过程进行建模,或者对低级别的内部类操作进行建模。
根据我的经验,活动图最适合用于对较高级别的过程建模,比如公司当前在如何运作业务,或者业务如何运作等。
这是因为与序列图相比,活动图在表示上"
不够技术性的"
,但有业务头脑的人们往往能够更快速地理解它们。
活动图的符号集与状态图中使用的符号集类似。
像状态图一样,活动图也从一个连接到初始活动的实心圆开始。
活动是通过一个圆角矩形(活动的名称包含在其内)来表示的。
活动可以通过转换线段连接到其他活动,或者连接到判断点,这些判断点连接到由判断点的条件所保护的不同活动。
结束过程的活动连接到一个终止点(就像在状态图中一样)。
作为一种选择,活动可以分组为泳道(swimlane),泳道用于表示实际执行活动的对象,如图6所示。
图6:
活动图,具有两个泳道,表示两个对象的活动控制:
乐队经理,以及报告工具
图字(沿箭头方向):
报告工具;
选择"
查看乐队的销售报告"
;
检索该乐队经理所管理的乐队;
显示报告条件选择屏幕;
选择要查看其销售报告的乐队;
从销售数据库检索销售数据;
显示销售报告。
该活动图中有两个泳道,因为有两个对象控制着各自的活动:
乐队经理和报告工具。
整个过程首先从乐队经理选择查看他的乐队销售报告开始。
然后报告工具检索并显示他管理的所有乐队,并要求他从中选择一个乐队。
在乐队经理选择一个乐队之后,报告工具就检索销售信息并显示销售报告。
该活动图表明,显示报告是整个过程中的最后一步。
组件图
组件图提供系统的物理视图。
它的用途是显示系统中的软件对其他软件组件(例如,库函数)的依赖关系。
组件图可以在一个非常高的层次上显示,从而仅显示粗粒度的组件,也可以在组件包层次2上显示。
组件图的建模最适合通过例子来描述。
图7显示了4个组件:
ReportingTool、BillboardService、Servlet2.2API和JDBCAPI。
从ReportingTool组件指向BillboardService、Servlet2.2API和JDBCAPI组件的带箭头的线段,表示ReportingTool依赖于那三个组件。
图7:
组件图显示了系统中各种软件组件的依赖关系
部署图
部署图表示该软件系统如何部署到硬件环境中。
它的用途是显示该系统不同的组件将在何处物理地运行,以及它们将如何彼此通信。
因为部署图是对物理运行情况进行建模,系统的生产人员就可以很好地利用这种图。
部署图中的符号包括组件图中所使用的符号元素,另外还增加了几个符号,包括节点的概念。
一个节点可以代表一台物理机器,或代表一个虚拟机器节点(例如,一个大型机节点)。
要对节点进行建模,只需绘制一个三维立方体,节点的名称位于立方体的顶部。
所使用的命名约定与序列图中相同:
[实例名称]:
[实例类型](例如,"
:
ApplicationServer"
图8:
部署图。
由于ReportingTool组件绘制在IBMWebSphere内部,后者又绘制在节点内部,因而我们知道,用户将通过运行在本地机器上的浏览器来访问ReportingTool,浏览器通过公司intranet上的HTTP协议与ReportingTool建立连接。
图8中的部署图表明,用户使用运行在本地机器上的浏览器访问ReportingTool,并通过公司intranet上的HTTP协议连接到ReportingTool组件。
这个工具实际运行在名为的ApplicationServer上。
这个图还表明ReportingTool组件绘制在IBMWebSphere内部,后者又绘制在节点内部。
ReportingTool使用Java语言通过IBMDB2数据库的JDBC接口连接到它的报告数据库上,然后该接口又使用本地DB2通信方式,与运行在名为的服务器上实际的DB2数据库通信。
除了与报告数据库通信外,ReportTool组件还通过HTTPS上的SOAP与BillboardService进行通信。
UML-语言出现
公认的面向对象建模语言出现于70年代中期。
从1989年到1994年,其数量从不到十种增加到了五十多种。
在众多的建模语言中,语言的创造者努力推崇自己的产品,并在实践中不断完善。
但是,OO方法的用户并不了解不同建模语言的优缺点及相互之间的差异,因而很难根据应用特点选择合适的建模语言,于是爆发了一场“方法大战”。
90年代中,一批新方法出现了,其中最引人注目的是Booch1993、OOSE和OMT-2等。
Booch是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的概念。
1991年,他将以前面向Ada的工作扩展到整个面向对象设计领域。
Booch1993比较适合于系统的设计和构造。
Rumbaugh等人提出了面向对象的建模技术(OMT)方法,采用了面向对象的概念,并引入各种独立于语言的表示符。
这种方法用对象模型、动态模型、功能模型和用例模型,共同完成对整个系统的建模,所定义的概念和符号可用于软件开发的分析、设计和实现的全过程,软件开发人员不必在开发过程的不同阶段进行概念和符号的转换。
OMT-2特别适用于分析和描述以数据为中心的信息系统。
Jacobson于1994年提出了OOSE方法,其最大特点是面向用例(Use-Case),并在用例的描述中引入了外部角色的概念。
用例的概念是精确描述需求的重要武器,但用例贯穿于整个开发过程,包括对系统的测试和验证。
OOSE比较适合支持商业工程和需求分析。
此外,还有Coad/Yourdon方法,即著名的OOA/OOD,它是最早的面向对象的分析和设计方法之一。
该方法简单、易学,适合于面向对象技术的初学者使用,但由于该方法在处理能力方面的局限,目前已很少使用。
概括起来,首先,面对众多的建模语言,用户由于没有能力区别不同语言之间的差别,因此很难找到一种比较适合其应用特点的语言;
其次,众多的建模语言实际上各有千秋;
第三,虽然不同的建模语言大多雷同,但仍存在某些细微的差别,极大地妨碍了用户之间的交流。
因此在客观上,极有必要在精心比较不同的建模语言优缺点及总结面向对象技术应用实践的基础上,组织联合设计小组,根据应用需求,取其精华,去其糟粕,求同存异,统一建模语言。
1994年10月,GradyBooch和JimRumbaugh开始致力于这一工作。
他们首先将Booch93和OMT-2统一起来,并于1995年10月发布了第一个公开版本,称之为统一方法UM0.8(UnitiedMethod)。
1995年秋,OOSE的创始人IvarJacobson加盟到这一工作。
经过Booch、Rumbaugh和Jacobson三人的共同努力,于1996年6月和10月分别发布了两个新的版本,即UML0.9和UML0.91,并将UM重新命名为UML(UnifiedModelingLanguage)。
1996年,一些机构将UML作为其商业策略已日趋明显。
UML的开发者得到了来自公众的正面反应,并倡议成立了UML成员协会,以完善、加强和促进UML的定义工作。
当时的成员有DEC、HP、I-Logix、Itellicorp、IBM、ICONComputing、MCISystemhouse、Microsoft、Oracle、RationalSoftware、TI以及Unisys。
这一机构对UML1.0(1997年1月)及UML1.1(1997年11月17日)的定义和发布起了重要的促进作用。
UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。
它溶入了软件工程领域的新思想、新方法和新技术。
它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
面向对象技术和UML的发展过程可用图形来表示,标准建模语言的出现是其重要成果。
在美国,截止1996年10月,UML获得了工业界、科技界和应用界的广泛支持,已有700多个公司表示支持采用UML作为建模语言。
1996年底,UML已稳占面向对象技术市场的85%,成为可视化建模语言事实上的工业标准。
1997年11月17日,OMG采纳UML1.1作为基于面向对象技术的标准建模语言。
UML代表了面向对象方法的软件开发技术的发展方向,具有巨大的市场前景,也具有重大的经济价值和国防价值。
UML是一个标准的图形表示法,它不是面向对象的分析和设计,也不是一种方法,它仅仅是一组符号而已。
面向对象技术和UML的发展过程可用上图来表示,标准建模语言的出现是其重要成果。
UML-语言内容
首先,UML融合了Booch、OMT和OOSE方法中的基本概念,而且这些基本概念与其他面向对象技术中的基本概念大多相同,因而,UML必然成为这些方法以及其他方法的使用者乐于采用的一种简单一致的建模语言;
其次,UML不仅仅是上述方法的简单汇合,而是在这些方法的基础上广泛征求意见,集众家之长,几经修改而完成的,UML扩展了现有方法的应用范围;
第三,UML是标准的建模语言,而不是标准的开发过程。
尽管UML的应用必然以系统的开发过程为背景,但由于不同的组织和不同的应用领域,需要采取不同的开发过程。
作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分。
(1)UML语义描述基于UML的精确元模型定义。
元模型为UML的所有元素在语法和语义上提供了简单、一致、通用的定义性说明,使开发者能在语义上取得一致,消除了因人而异的最佳表达方法所造成的影响。
此外UML还支持对元模型的扩展定义。
(2)UML表示法定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。
这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。
标准建模语言UML的重要内容可以由下列五类图(共9种图形)来定义:
第一类是用例图,从用户角度描述系统功能,并指出各功能的操作者。
第二类是静态图(Staticdiagram),包括类图、对象图和包图。
其中类图描述系统中类的静态结构。
不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)。
类图描述的是一种静态关系,在系统的整个生命周期都是有效的。
对象图是类图的实例,几乎使用与类图完全相同的标识。
他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。
一个对象图是类图的一个实例。
由于对象存在生命周期,因此对象图只能在系统某一时间段存在。
包由包或类组成,表示包与包之间的关系。
包图用于描述系统的分层结构。
第三类是行为图(Behaviordiagram),描述系统的动态模型和组成对象间的交互关系。
其中状态图描述类的
对象所有可能的状态以及事件发生时状态的转移条件。
通常,状态图是对类图的补充。
在实用上并不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。
而活动图描述满足用例要求所要进行的活
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 统一 建模 语言