UML的目标是以面向对象图的方式来描述任何类型的系统,具有很宽的应用领域。其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。总之,UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模。
此外,UML适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。在需求分析阶段,可以用用例来捕获用户需求。通过用例建模,描述对系统感兴趣的外部角色及其对系统(用例)的功能要求。分析阶段主要关心问题域中的主要概念(如抽象、类和对象等)和机制,需要识别这些类以及它们相互间的关系,并用UML类图来描述。为实现用例,类之间需要协作,这可以用UML动态模型来描述。在分析阶段,只对问题域的对象(现实世界的概念)建模,而不考虑定义软件系统中技术细节的类(如处理用户接口、数据库、通讯和并行性等问题的类)。这些技术细节将在设计阶段引入,因此设计阶段为构造阶段提供更详细的规格说明。
编程(构造)是一个独立的阶段,其任务是用面向对象编程语言将来自设计阶段的类转换成实际的代码。在用UML建立分析和设计模型时,应尽量避免考虑把模型转换成某种特定的编程语言。因为在早期阶段,模型仅仅是理解和分析系统结构的工具,过早考虑编码问题十分不利于建立简单正确的模型。
UML模型还可作为测试阶段的依据。系统通常需要经过单元测试、集成测试、系统测试和验收测试。不同的测试小组使用不同的UML图作为测试依据:单元测试使用类图和类规格说明;集成测试使用部件图和合作图;系统测试使用用例图来验证系统的行为;验收测试由用户进行,以验证系统测试的结果是否满足在分析阶段确定的需求。
总之,标准建模语言UML适用于以面向对象技术来描述任何类型的系统,而且适用于系统开发的不同阶段,从需求规格描述直至系统完成后的测试和维护。
发展历史
1997年,OMG组织(Object Management Group对象管理组织)发布了统一建模语言(Unified Modeling Language,UML)。UML的目标之一就是为开发团队提供标准通用的设计语言来开发和构建计算机应用。UML提出了一套IT专业人员期待多年的统一的标准建模符号。通过使用UML,这些人员能够阅读和交流系统架构和设计规划--就像建筑工人多年来所使用的建筑设计图一样。
2003年,UML已经获得了业界的认同。
UML的是要成为一种标准的统一语言,使得IT专业人员能够进行计算机应用程序的建模。UML的主要创始人是Jim Rumbaugh、Ivar Jacobson和Grady Booch,他们最初都有自己的建模方法(OMT、OOSE和Booch),彼此之间存在着竞争。最终,他们联合起来创造了一种开放的标准。UML成为"标准"建模语言的原因之一在于,它与程序设计语言无关。而且,UML符号集只是一种语言而不是一种方法学。因为语言与方法学不同,它可以在不做任何更改的情况下很容易地适应任何公司的业务运作方式。
UML不是一种方法学,不需要任何正式的工作产品。而且它还提供了多种类型的模型描述图(diagram),当在某种给定的方法学中使用这些图时,它使得开发中的应用程序的更易理解。UML的内涵远不只是这些模型描述图,但是对于入门来说,这些图对这门语言及其用法背后的基本原理提供了很好的介绍。通过把标准的UML图放进工作产品中,精通UML的人员就更加容易加入项目并迅速进入角色。最常用的UML图包括:用例图、类图、序列图、状态图、活动图、组件图和部署图。
UML语言开发始于1994年8月,当时Rational软件公司的Booch和Rumbaugh着手进行统一的Booch方法和OMT方法,以便以后得到一种统一的建模语言。1995年10月,他们发布了统一方法(UM)的初级版本。同年秋天,Jacobson加盟联合开发小组,并力图把OOSE方法也统一进来。
经过Booch、Rumbaugh和Jacobson的努力,UML0.9和0.91版在1996年的6月和10月出版。1996年,OMG(对象管理组)发布了向外界征集关于面向对象建模标准方法的消息。UML的3位创始人开始与来自其它公司的软件工程方法专家和开发人员一道制定了一套OMG感兴趣的方法,并设计了一种被软件开发工具提供者、软件开发方法学家和开发人员这些最终用户接受的建模语言。与此同时,其它一些相关人员也在做这项富有竞争性的工作。1997年9月1日产生了UML1.1,并提交到OMG进行讨论。
OMG于1997年11月正式接纳了UML1.1,然后成立任务组不断的修订,并产生了UML1.2、1.3和1.4版本,其中UML1.3是较为重要的修订版本。该组织正在对UML进行重大修订,其目标是推出UML2.0,做为向ISO提交的标准方案。
[8] 公认的面向对象建模语言出现于20世纪70年代中期。从1989年到1994年,其数量从不到十种增加到了五十多种。在众多的建模语言中,语言的创造者努力推崇自己的产品,并在实践中不断完善。但是,OO方法(Object-Oriented Method,面向对象的方法)的用户并不了解不同建模语言的优缺点及相互之间的差异,因而很难根据应用特点选择合适的建模语言,于是爆发了一场“方法大战”。20世纪90年代中,一批新方法出现了,其中最引人注目的是Booch 1993、OOSE和OMT-2等。
Grady Booch是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的概念。1991年,他将以前面向Ada的工作扩展到整个面向对象设计领域。Booch 1993比较适合于系统的设计和构造。
James Rumbaugh等人提出了面向对象的建模技术(OMT,一种软件开发方法)方法,采用了面向对象的概念,并引入各种独立于语言的表示符。这种方法用对象模型、动态模型、功能模型和用例模型,共同完成对整个系统的建模,所定义的概念和符号可用于软件开发的分析、设计和实现的全过程,软件开发人员不必在开发过程的不同阶段进行概念和符号的转换。OMT-2特别适用于分析和描述以数据为中心的信息系统。
Jacobson于1994年提出了OOSE方法,其最大特点是面向用例(Use-Case),并在用例的描述中引入了外部角色的概念。用例的概念是精确描述需求的重要武器,但用例贯穿于整个开发过程,包括对系统的测试和验证。OOSE比较适合支持商业工程和需求分析。
此外,还有Coad/Yourdon方法,即著名的OOA/OOD,它是最早的面向对象的分析和设计方法之一。该方法简单、易学,适合于面向对象技术的初学者使用,但由于该方法在处理能力方面的局限,截至2013年已很少使用。
概括起来:首先,面对众多的建模语言,用户由于没有能力区别不同语言之间的差别,因此很难找到一种比较适合其应用特点的语言;其次,众多的建模语言实际上各有千秋;第三,虽然不同的建模语言大多雷同,但仍存在某些细微的差别,极大地妨碍了用户之间的交流。因此在客观上,极有必要在精心比较不同的建模语言优缺点及总结面向对象技术应用实践的基础上,组织联合设计小组,根据应用需求,取其精华,去其糟粕,求同存异,统一建模语言。
1994年10月,Grady Booch和Jim Rumbaugh开始致力于这一工作。他们首先将Booch 93和OMT-2 统一起来,并于1995年10月发布了第一个公开版本,称之为统一方法UM 0.8(Unitied Method)。1995年秋,OOSE 的创始人Ivar Jacobson加盟到这一工作。经过Booch、Rumbaugh和Jacobson三人的共同努力,于1996年6月和10月分别发布了两个新的版本,即UML 0.9和UML 0.91,并将UM重新命名为UML(Unified Modeling Language)。
1996年,一些机构将UML作为其商业策略已日趋明显。UML的开发者得到了来自公众的正面反应,并倡议成立了UML成员协会,以完善、加强和促进UML的定义工作。当时的成员有DEC、HP、I-Logix、 Itellicorp、 IBM、ICON Computing、MCI Systemhouse、Microsoft、Oracle、Rational Software、TI以及Unisys。这一机构对UML 1.0(1997年1月)及UML 1.1(1997年11月17日)的定义和发布起了重要的促进作用。
UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
面向对象技术和UML的发展过程可用上图来表示,标准建模语言的出现是其重要成果。在美国,截止1996年10月,UML获得了工业界、科技界和应用界的广泛支持,已有700多个公司表示支持采用UML作为建模语言。1996年底,UML已稳占面向对象技术市场的85%,成为可视化建模语言事实上的工业标准。1997年11月17日,OMG采纳UML 1.1作为基于面向对象技术的标准建模语言。
图
图聚集了相关的事物及其关系的组合,是软件系统在不同角度的投影。图由代表事物的顶点和代表关系的连通图表示。下面对常用的几类图[2-12]进行简单介绍。
(1)类图(ClassDiagram)。展现了一组对象、接口、协作和它们之间的关系。类图描述的是一种静态关系,在系统的整个生命周期都是有效的,是面向对象系统的建模中最常见的图。
(2)对象图(ObjectDiagram)。展现了一组对象以及它们之间的关系。对象图是类图的实例,几乎使用与类图完全相同的标示。
(3)用例图(UseCaseDiagram)。展现了一组用例、参与者(actor)以及它们之间的关系。用例图从用户角度描述系统的静态使用情况,用于建立需求模型。
(4)交互图。用于描述对象间的交互关系,由一组对象和它们之间的关系组成,包含它们之间可能传递的消息。交互图又分为序列图和协作图,其中序列图描述了以时间顺序组织的对象之间的交互活动;协作图强调收发消息的对象的结构组织。
(5)状态图(StateDiagram)。由状态、转换、事件和活动组成,描述类的对象所有可能的状态以及事件发生时的转移条件。通常状态图是对类图的补充,仅需为那些有多个状态的、行为随外界环境而改变的类画状态图。
(6)活动图(ActiveDiagram)。一种特殊的状态图,展现了系统内一个活动到另一个活动的流程。活动图有利于识别并行活动。
(7)组件图(ComponentDiagram)。展现了一组组件的物理结构和组件之间的依赖关系。部件图有助于分析和理解组件之间的相互影响程度。
(8)部署图(DeploymentDiagram)。展现了运行处理节点以及其中的组件的配置。部署图给出了系统的体系结构和静态实施视图。它与组件图相关,通常一个节点包含一个或多个构建。
需要指出的是,UML并不限定仅使用这9种图,开发工具可以采用UML来提供其他种类的图,但到目前为止,这9种图在实际应用中最常用的。综合建模类型、模型图种类、建模机制,UML的建模体系见表1。
表1 UML建模体系
模型类型
模型图种类
建模机制
用例模型
用例模型图
静态建模
静态模型
类图、对象图、包图
静态建模
行为模型
状态图、活动图
动态建模
交互模型
序列图、协作图
动态建模
实现模型
组件图、配置图
静态建模
应用
目前,UML已成功应用于电信、金融、政府、电子、国防、航天航空、制造与工业自动化、医疗、交通、电子商务等领域中。在这些领域中,UML的建模包括大型、复杂、实时、分布式、集中式数据或者计算,以及嵌入式系统等,而且还用于软件再生工程、质量管理、过程管理、配置管理的各方面。在软件无线电技术中,UML的应用是可行的,而且具有优势。
建模语言可被不同种类的无线电通信和H/S(Hardware/Software)描述语言所应用。软件无线电的对象需要具有可配置性及组件可重用性。系统设计阶段对语言的要求表现在功能和结构两个方面。功能设计需要一种对通信规范进行建模的语言,而结构设计要求一种对软件和硬件组件进行建模的语言。软件无线电可以选择许多语言,一般来讲,UML的性能在面向对象和适应性方面是较好的。
进行联合设计的UML在序列图、状态图、合作图以及实时扩展的帮助下,能很好地为组件和模块之间的相互联系构造模型,而且能在整个设计周期中使用,以帮助设计者缩短设计时间、降低改进成本并使软/硬件分割最优。与UML相比,一些建模语言有其自身的缺陷。比如SDL在传统意义上缺乏模块性,VHDL对软件建模来说效率不高等。
UML将硬件和软件作为一个整体来进行建模。例如,由于规范的不稳定性,设计者可以从硬件移动一些协议到软件。在UML的帮助下,硬件组件和软件组件之间将会有更大的透明度。便携性和综合效率将会增加。
通常来讲,对于使用UML进行硬件软件联合设计而言可以应用下面的技术[46]:
(1)UML的模型特性可帮助设计者将协议分割成硬件模块和软件模块,它们之间的相互关系可以用UML的类图或组件图进行描述;
(2)UML状态图或序列图可使交互处理的通信更加简明扼要;
(3)软件综合和硬件综合可通过使用实时嵌入式UML而被建模,实时嵌入式UML以将并行任务分配给一个特定的处理器为目标,并将计算步骤分解到各个时钟周期中;
(4)一旦设计者通过使用类图或组件图获得接口和组件的信息,则不同种类规范的并发执行和联合仿真都将变得更容易。
综合来看,UML作为一种最合适的建模语言,其应用于软件无线电之中是可实现的,也是非常有前途的。UML在软件无线电中得以应用,必将极大地促进软件无线电技术的发展。
建模工具
ProcessOn在线设计器支持UML统一建模语言的定义和语义,同时支持UML的用例图和静态图在线建模。