`
itwangxinli
  • 浏览: 146142 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

UML入门(转载IBM)

    博客分类:
  • Java
阅读更多

UML基础: 统一建模语言简介

developerWorks
文选项
  <noscript></noscript>

级别: 初级

Donald Bell, IBM 全球服务, IBM

2004 年 2 月 01 日

回顾20世纪晚期--准确地说是1997年,OMG组织(Object Management Group对象管理组织)发布了统一建模语言(Unified Modeling Language,UML)。UML的目标之一就是为开发团队提供标准通用的设计语言来开发和构建计算机应用。UML提出了一套IT专业人员期待多年的统一的标准建模符号。通过使用UML,这些人员能够阅读和交流系统架构和设计规划--就像建筑工人多年来所使用的建筑设计图一样。
<!----><!----><!---->

到了21世纪--准确地说是2003年,UML已经获得了业界的认同。在我所见过的专业人员的简历中,75%都声称具备UML的知识。然而,在同绝大多数求职人员面谈之后,可以明显地看出他们并不真正了解UML。通常地,他们将UML用作一个术语,或对UML一知半解。大家对UML缺乏理解的这种状况,促进我撰写这篇关于UML 1.4的快速入门文章。当阅读完本文时,您还不具备足够的知识可以在简历上声称自己掌握了UML,但是您已具有了进一步钻研该语言的良好起点。

正如前面曾提到过的,UML的本意是要成为一种标准的统一语言,使得IT专业人员能够进行计算机应用程序的建模。UML的主要创始人是Jim Rumbaugh、Ivar Jacobson和Grady Booch,他们最初都有自己的建模方法(OMT、OOSE和Booch),彼此之间存在着竞争。最终,他们联合起来创造了一种开放的标准。(听起来是不是很熟悉?这个现象类似J2EE、SOAP和Linux的诞生。)UML成为"标准"建模语言的原因之一在于,它与程序设计语言无关。(IBM Rational的UML建模工具被广泛应用于J2EE和.NET开发。)而且,UML符号集只是一种语言而不是一种方法学。这点很重要,因为语言与方法学不同,它可以在不做任何更改的情况下很容易地适应任何公司的业务运作方式。

 

既然UML不是一种方法学,它就不需要任何正式的工作产品(即IBM Rational Unified Process?术语中所定义的"工件")。而且它还提供了多种类型的模型描述图(diagram),当在某种给定的方法学中使用这些图时,它使得开发中的应用程序的更易理解。UML的内涵远不只是这些模型描述图,但是对于入门来说,这些图对这门语言及其用法背后的基本原理提供了很好的介绍。通过把标准的UML图放进您的工作产品中,精通UML的人员就更加容易加入您的项目并迅速进入角色。最常用的UML图包括:用例图、类图、序列图、状态图、活动图、组件图和部署图。

深入讨论每类图的细节问题已超出了这篇入门文章的范围。因此,下面仅给出了每类图的简要说明,更详细的信息将在以后的文章中探讨。 序列图显示具体用例(或者是用例的一部分)的详细流程。它几乎是自描述的,并且显示了流程中中不同对象之间的调用关系,同时还可以很详细地显示对不同对象的不同调用。

序列图有两个维度:垂直维度以发生的时间顺序显示消息/调用的序列;水平维度显示消息被发送到的对象实例。

序列图的绘制非常简单。横跨图的顶部,每个框(参见图4)表示每个类的实例(对象)。在框中,类实例名称和类名称之间用空格/冒号/空格来分隔,例如,myReportGenerator : ReportGenerator。如果某个类实例向另一个类实例发送一条消息,则绘制一条具有指向接收类实例的开箭头的连线,并把消息/方法的名称放在连线上面。对于某些特别重要的消息,您可以绘制一条具有指向发起类实例的开箭头的虚线,将返回值标注在虚线上。就我而言,我总喜欢绘制出包括返回值的虚线,这些额外的信息可以使得序列图更易于阅读。

阅读序列图也非常简单。从左上角启动序列的"驱动"类实例开始,然后顺着每条消息往下阅读。记住:虽然图4所示的例子序列图显示了每条被发送消息的返回消息,但这只是可选的。


一个示例序列图

图4:一个示例序列图

通过阅读图4中的示例序列图,您可以明白如何创建一个CD销售报告(CD Sales Report)。其中的aServlet对象表示驱动类实例。aServlet向名为gen的ReportGenerator类实例发送一条消息。该消息被标为generateCDSalesReport,表示ReportGenerator对象实现了这个消息处理程序。进一步理解可发现,generateCDSalesReport消息标签在括号中包括了一个cdId,表明aServlet随该消息传递一个名为cdId的参数。当gen实例接收到一条generateCDSalesReport消息时,它会接着调用CDSalesReport类,并返回一个aCDReport的实例。然后gen实例对返回的aCDReport实例进行调用,在每次消息调用时向它传递参数。在该序列的结尾,gen实例向它的调用者aServlet返回一个aCDReport。

请注意:图4中的序列图相对于典型的序列图来说太详细了。然而,我认为它才是足够易于理解的,并且它显示了如何表示嵌套的调用。对于初级开发人员来说,有时把一个序列分解到这种详细程度是很有必要的,这有助于他们理解相关的内容。

状态图表示某个类所处的不同状态和该类的状态转换信息。有人可能会争论说每个类都有状态,但不是每个类都应该有一个状态图。只对"感兴趣的"状态的类(也就是说,在系统活动期间具有三个或更多潜在状态的类)才进行状态图描述。

 

如图5所示,状态图的符号集包括5个基本元素:初始起点,它使用实心圆来绘制;状态之间的转换,它使用具有开箭头的线段来绘制;状态,它使用圆角矩形来绘制;判断点,它使用空心圆来绘制;以及一个或者多个终止点,它们使用内部包含实心圆的圆来绘制。要绘制状态图,首先绘制起点和一条指向该类的初始状态的转换线段。状态本身可以在图上的任意位置绘制,然后只需使用状态转换线条将它们连接起来。


显示类通过某个功能系统的各种状态的状态图

图5:显示类通过某个功能系统的各种状态的状态图

图5中的状态图显示了它们可以表达的一些潜在信息。例如,从中可以看出贷款处理系统最初处于Loan Application状态。当批准前(pre-approval)过程完成时,根据该过程的结果,或者转到Loan Pre-approved状态,或者转到Loan Rejected状态。这个判断(它是在转换过程期间做出的)使用一个判断点来表示--即转换线条间的空心圆。通过该状态图可知,如果没有经过Loan Closing状态,贷款不可能从Loan Pre-Approved状态进入Loan in Maintenance状态。而且,所有贷款都将结束于Loan Rejected或者Loan in Maintenance状态。

活动图


活动图表示在处理某个活动时,两个或者更多类对象之间的过程控制流。活动图可用于在业务单元的级别上对更高级别的业务过程进行建模,或者对低级别的内部类操作进行建模。根据我的经验,活动图最适合用于对较高级别的过程建模,比如公司当前在如何运作业务,或者业务如何运作等。这是因为与序列图相比,活动图在表示上"不够技术性的",但有业务头脑的人们往往能够更快速地理解它们。

活动图的符号集与状态图中使用的符号集类似。像状态图一样,活动图也从一个连接到初始活动的实心圆开始。活动是通过一个圆角矩形(活动的名称包含在其内)来表示的。活动可以通过转换线段连接到其他活动,或者连接到判断点,这些判断点连接到由判断点的条件所保护的不同活动。结束过程的活动连接到一个终止点(就像在状态图中一样)。作为一种选择,活动可以分组为泳道(swimlane),泳道用于表示实际执行活动的对象,如图6所示。

组件图

组件图提供系统的物理视图。它的用途是显示系统中的软件对其他软件组件(例如,库函数)的依赖关系。组件图可以在一个非常高的层次上显示,从而仅显示粗粒度的组件,也可以在组件包层次2上显示。

 

组件图的建模最适合通过例子来描述。图7显示了4个组件:Reporting Tool、Billboard Service、Servlet 2.2 API和JDBC API。从Reporting Tool组件指向Billboard Service、Servlet 2.2 API和JDBC API组件的带箭头的线段,表示Reporting Tool依赖于那三个组件。


组件图显示了系统中各种软件组件的依赖关系

图7:组件图显示了系统中各种软件组件的依赖关系

部署图


部署图表示该软件系统如何部署到硬件环境中。它的用途是显示该系统不同的组件将在何处物理地运行,以及它们将如何彼此通信。因为部署图是对物理运行情况进行建模,系统的生产人员就可以很好地利用这种图。

部署图中的符号包括组件图中所使用的符号元素,另外还增加了几个符号,包括节点的概念。一个节点可以代表一台物理机器,或代表一个虚拟机器节点(例如,一个大型机节点)。要对节点进行建模,只需绘制一个三维立方体,节点的名称位于立方体的顶部。所使用的命名约定与序列图中相同:[实例名称] : [实例类型](例如,"w3reporting.myco.com : Application Server")。


部署图

图8:部署图。由于Reporting Tool组件绘制在IBM WebSphere内部,后者又绘制在节点w3.reporting.myco.com内部,因而我们知道,用户将通过运行在本地机器上的浏览器来访问Reporting Tool,浏览器通过公司intranet上的HTTP协议与Reporting Tool建立连接。

图8中的部署图表明,用户使用运行在本地机器上的浏览器访问Reporting Tool,并通过公司intranet上的HTTP协议连接到Reporting Tool组件。这个工具实际运行在名为w3reporting.myco.com的Application Server上。这个图还表明Reporting Tool组件绘制在IBM WebSphere内部,后者又绘制在w3.reporting.myco.com节点内部。Reporting Tool使用Java语言通过IBM DB2数据库的JDBC接口连接到它的报告数据库上,然后该接口又使用本地DB2通信方式,与运行在名为db1.myco.com的服务器上实际的DB2数据库通信。除了与报告数据库通信外,Report Tool组件还通过HTTPS上的SOAP与Billboard Service进行通信。

分享到:
评论

相关推荐

    UML入门提高.rar

    《UML入门提高》 UML(统一建模语言,Unified Modeling Language)是软件开发过程中常用的一种图形化建模工具,它为系统分析和设计提供了一种标准的、直观的表示方式。本教程旨在帮助初学者快速理解并掌握UML的基础...

    uml入门提高.rar

    《UML入门提高》是一份全面且易于理解的教程,旨在帮助初学者快速掌握统一建模语言(Unified Modeling Language,简称UML)的基础知识。UML是软件工程领域中广泛使用的建模工具,用于可视化、构造和文档化系统的设计...

    UML 入门级 PPT

    这份"UML入门级PPT"是由武汉大学国家重点实验室编写的,特别针对初学者设计,旨在介绍基本的UML图的使用方法。 **UML的主要元素和图类型:** 1. **类图(Class Diagram):** 类图是UML中最常见的图,它展示了类的...

    UML入门教程(中文版).rar

    本教程“UML入门教程(中文版)”是一份全面介绍UML基础知识的资料,适合初学者入门学习。这份教程包含了五个PDF文件,总计约413页,涵盖了UML的各个核心概念。 **UML的基本概念**: 1. **模型与建模**:UML是一种...

    UML课程指南(IBM版)

    《UML课程指南(IBM版)》是一份深入学习统一建模语言(Unified Modeling Language,简称UML)的重要参考资料,特别适合对软件工程感兴趣的学生和从业者。这份IBM认证的课件,不仅涵盖了UML的基本概念,还深入探讨了在...

    UML入门教程,适合新手入门学习

    **UML(统一建模语言)入门教程** UML,全称为Unified Modeling Language,是一种用于软件系统分析和设计的标准化图形表示法。它为软件开发人员、分析师和项目管理者提供了一种可视化工具,以共同理解和描述软件...

    UML入门教程(中文版).pdf

    软件工程项目开发,UML入门教程!可以帮初学者很好的理解,学习,并应用到实际项目中!

    UML入门,赠送迷人的设计两张

    **UML(统一建模语言)入门指南** UML,全称为Unified Modeling Language,是一种用于软件工程的标准化建模语言,旨在提供一个图形化的表示方式来描述系统的设计、架构和行为。UML作为IBM推崇的标准建模工具,已经...

    UML入门提高

    **UML(统一建模语言)入门提高** UML,全称为Unified Modeling Language,是一种用于软件工程的标准化建模语言,旨在提供一个图形化的表示方式来描述、构建和文档化软件系统。它允许开发者和非技术人员以可视化的...

    UML 课件(IBM)

    IBM 提供的这个 UML 课件系列是针对软件开发人员进行深入学习和理解 UML 的宝贵资源。 在IBM的UML课件中,我们可以期待涵盖以下几个关键知识点: 1. **UML基本概念**:首先,课程会介绍UML的基本元素,如类、对象...

    UML入门教程(中文版)(带书签)

    UML(统一建模语言)是一种用于软件系统分析和设计的标准化建模语言,它通过一系列的图示来帮助开发者、分析师和设计师可视化系统的设计。UML的应用非常广泛,适用于各种软件开发方法、工具和应用程序的开发。本教程...

    uml 入门教程 pdf

    **UML(统一建模语言)入门教程** UML,全称为Unified Modeling Language,是一种用于软件工程的标准化建模语言,旨在提供一个通用的图形化表示法,以便于设计、交流和理解软件系统。UML作为一种强大的工具,适用于...

    UML入门电子书PDF版本

    在《UML入门电子书》中,你可以找到关于以下主要知识点的详细讲解: 1. **基本概念**:UML的基本构成单元,如类图、对象图、用例图、序列图、协作图、状态图、活动图、组件图和部署图等。这些图型分别用于描述系统...

    UML入门提高1.jar

    《UML入门提高》课程是为那些希望深入理解和掌握统一建模语言(Unified Modeling Language,简称UML)的初学者及有一定经验的开发者设计的。UML是一种图形化建模工具,广泛应用于软件工程领域,它能帮助我们清晰地...

    UML参考手册 UML入门教程

    通过学习《UML参考手册》和《UML入门教程》,你不仅可以掌握UML的基本语法和图表类型,还能理解如何将UML应用于实际项目中,提高团队间的沟通效率,减少误解和错误,进而提升软件开发的质量和成功率。无论你是学生、...

    UML基础教程和UML入门教程打包下载

    **UML基础教程和UML入门教程** UML(统一建模语言)是软件工程领域中一种用于系统建模的标准语言,它通过图形化的方式帮助开发者理解和表达软件系统的结构和行为。UML提供了多种图表类型,包括用例图、类图、序列图...

Global site tag (gtag.js) - Google Analytics