贵阳医学院计算机教研室 唐翠娥
UML(Unified Modeling Language)作为一个优秀的“交流语言”、“代码生成工具”和“系统设计工具”自1997年诞生以来,受到无数厂商、组织、专家学者的追捧和拥护,它提供的用例图、状态图、活动图、类图等功能各一,基本涵盖了软件工程的各个方面。它不但支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。但国内的正规大型软件项目比较少,软件工程技术起步很晚;市场上也难以找到一本有“中国特色”的能够上程序员快速掌握自己所需的知识的教材,所以国内的在项目中使用UML的都是凤毛麟角,即便使用了,也是在很小的范围内,完全没有发挥出UML1%的功效。作者在参阅大量的文献资料以及最具权威性的文章,将UML相关知识和UML建模技术的目的与原则、使用对象以及使用UML建模应该注意的事项概述如下,供UML初学者共享。
70年代中期,公认的面向对象的建模语言开始出现,从1989年到1994年,其数量从不到十种增加到了五十多种。在众多的建模语言中,语言的创造者努力推崇自己的产品,并在实践中不断完善。但不同的建模语言大多雷同,各有千秋,并且存在某些细微的差别。OO方法的用户并不了解不同建模语言的优缺点及相互之间的差异,因而很难根据应用特点选择合适的建模语言,极大地妨碍了用户之间的交流。因此极有必要在精心比较不同的建模语言优缺点及总结面向对象技术应用实践的基础上,组织联合设计小组,根据应用需求,取其精华,去其糟粕,求同存异,统一建模语言。UML的出现既统一了Booch、OMT、OOSE,以及其他方法,又统一了面向对象方法中使用的符号,并且在提出后不久就被OMG接纳为其标准之一。从而改变了数十种面向对象的建模语言相互独立且各有千秋的局面,使得面向对象的分析技术有了空前发展。
UML(Unified Modeling Language)作为一种建模语言,是面向对象开发中的一种通用的图形化、可视化的建模语言,它能让系统构造者用标准的、易于理解的方式建立起能够表达出他们想象的系统蓝图。它提供一种机制,以便不同人之间有效地共享和交流设计结果。
UML统一建模语言包括语义和表示法两个部分。
(1)UML语义描述基于精确元模型定义,元模型为所有元素在语法和语义上提供了简单、一致、通用的定义性说明,使开发者能在语义上取得一致,消除了因人而异的最佳表达方法所造成的影响;
(2)UML表示法定义符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。
UML的重要内容可以由下列五类图(共9种图形)来定义:
第一类是用例图,从用户角度描述系统功能,并指出各功能的操作者。
第二类是静态图(Static diagram),包括类图、对象图和包图。
类图定义系统中的类,表示类之间的联系如关联、依赖、聚合等类,用于描述系统中类的静态结构,在系统的整个生命周期都是有效的。
对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。
包图由包或类组成,表示包与包之间的关系。包图用于描述系统的分层结构。
第三类是行为图(Behavior diagram),包括状态图和活动图,用于描述系统的动态模型和组成对象间的交互关系。
状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件,通常是对类图的补充。在项目设计中并不需要为所有的类画状态图,只需对那些有多个状态,其行为受外界环境的影响并且发生改变的类画状态图。
活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。
第四类是交互图(Interactive diagram),包括顺序图和合作图(合称为交互图),用于描述对象间的交互关系。
顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互。
合作图描述对象间的协作关系,可显示信息交换和以及对象之间的关系。合作图和顺序图相似,用于显示对象间的动态合作关系。在项目设计中,如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择合作图。
第五类是实现图(Implementation diagram),包括构件图和配置图。
其中构件图描述代码部件的物理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。它包含逻辑类或实现类的有关信息。
配置图定义系统中软硬件的物理体系结构。它可以显示实际的计算机和设备以及它们之间的连接关系,也可显示连接的类型及部件之间的依赖性。
UML作为一种建模语言,主要用于系统开发人员之间、开发人员与用户之间的交流,其主要功能如下:
(1)为软件系统的产生建立可视化模型;
(2)规约软件系统的产出;
(3)定义再开发软件系统过程中需要做的重要分析、设计和实现的规格说明,使建立的模型准确、无歧义并且完整;
(4)构造软件系统的产出;
(5)为软件系统的产出建立文档;
(6)可以为系统的体系结构及其所有细节建立文档。
UML的目标是以面向对象的方式来描述任何类型的系统,具有很宽的应用领域。其中最常用的是用于建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机械系统、企业机构或业务过程,具有实时要求的工业系统或工业过程等。此外,适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。总之,UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模。
UML建模技术就是用模型元素来组建整个系统的模型,模型元素包括系统中的类、类和类之间的关联、类的实例相互配合实现系统的动态行为等。UML提供了多种图形可视化描述模型元素,同一个模型元素可能会出现在多个图中对应多个图形元素,人们可以从多个视图来考察模型。
UML建模技术主要分为结构建模、动态建模。
结构建模是从系统的内部结构和静态角度来描述系统的,在静态视图、用例视图、实施视图和配置视图中适用,采用了类图、用例图、组件图和配置图等图形。
动态建模是从系统中对象的动态行为和组成对象间的相互作用、消息传递来描述系统的,在状态机视图、活动视图和交互视图中适用,采用了状态机图、活动图、顺序图和合作图等图形。
3.2.1 建模技术的目的与原则
(1)帮助项目设计人员按照实际情况或按需要的样式对系统进行可视化设计;提供一种详细说明系统的结构或行为的方法;给出一个指导系统构造的模板;对所做出的决策进行文档化;
(2)仅当需要模型时,才构建它;
(3)选择要创建什么模型对如何动手解决问题和形成解决方案有着意义深远的影响;每一种模型可以在不同的精度级别上表示;最好的模型是与现实相联系的;单个模型是不充分的,对每个重要的系统最好用一组几乎独立的模型去处理。
3.2.2 UML建模技术的使用对象
(1)业务建模:以领域专家为主,需求分析人员是主力,系统分析员、架构师可参与;
(2)需求模型:以需求分析人员为主,系统分析员是主力,领域专家提供指导,架构师和资深开发人员参与;
(3)设计模型:高层设计模型以架构师为主,系统分析员从需求方面提供支持,资深开发人员从技术实现方面提供支持。详细设计模型则以资深开发人员为主,架构师提供指导;
(4)实现模型:以资深开发人员(设计人员)为主,架构师提供总体指导;
(5)数据库模型:以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员)予以配合。
3.2.3 建模需要注意的问题
建模时,对软件开发过程是有要求的,必须是用例驱动,以架构为中心,迭代和递增的开发,如果软件开发组织的软件开发过程不能满足这三点要求,那么的使用效果就会大打折扣。
综上所述,建模虽然是软件建模的有利武器,也要遵循一定的规则来使用,否则就不能很好地发挥它的价值,也会事倍功半。理解使用的前提,并认真按照这些方法进行实施,相信会有理想的效果。
通过对大量的文献资料以及最具权威性的文章分析,可以对UML建模技术的特性和发展现状作出如下判断:
(1)已进入全面应用阶段的事实标准;
(2)应用领域正在逐渐扩展,包括嵌入式系统建模、业务建模、流程建模等多个领域;
(3)成为“产生式编程”的重要支持技术。
[1]Bailey,Diane E.and Barley,Stephen R.Return to work:Toward post-industrial engineering[J].IIE Transactions,2005,37:737-752.
[2]Yves vanderperren,Wol fgang Mueller an d Wim Pehaene.UML for electronic systems design:a comprehensive overview[J].Design Automation for Embedded Systems.2009,12(4):261-292.
[3]Yyan Labiche.The UML is more than Boxes and Lines[M].Canada:Lecture Notes in Computer Science,2009,275-386.
[4]Object Management Group.UML Specif i cation l.5[EB/OL].http://www.omg.org/uml,2003-11-05.
[5]周飞,杨根兴,蔡立志.基于UML的测试用例生成方法研究[J].计算机应用与软件,2009,26(2):107-110.
[6]张庆,雷航.一种基于UML状态图的面向对象类级测试模型[J].计算机工 程,2005,31(21):75-77.
[7]覃钊璇,曾一,柴艳欣等.基于UML活动图的多态性测试用例生成[J].计算机工程,2010,36(11):83-84.
[8]李留英,王戟,齐治昌.UML statecharts的测试用例生成方法[J].计算机研究与发展,2001,38(6):691-697.
[9]蒋俊.基于UML的面向对象建模技术的研究[J].信息与电脑,2010(4):148.
[10]李兴鹏.基于UMI高校教务管理系统的分析与设计[J].电脑知识与技术,2007,22:899-900
[11]赵雪峰.基于UML的教学评价系统建模[J].计算机与信息技术,2010.
[12]张从亮.基于UML的面向对象软件分析与建模[J].信息与电脑(理论版),2010(4):74-75.