浅析UML(统一建模语言)的现状与发展
摘要:uml(统一建模语言)是软件工程领域的一种建模语言,是在多种面向对象建模方法的基础上发展起来的。
uml现在已成为软件企业事实上的工业标准。
uml采用元模型对其进行描述,它是4层元模型体系结构模式中的一层。
此模式还有另外三个层次,分别是元-元模型层、模型层和用户对象层。
uml既有其无可比拟的优势,也存在一些不足,在未来发展中uml定能扬长避短发挥其优势。
关键词:uml对象建模元模型模型层用户对象层
1 uml的提出
uml是软件工程领域的一种建模语言,是在多种面向对象建模方法的基础上发展起来的。
在1995年,gray booch和janes rumbaugh 将他们的面向对象建模方法统一为unified method v0.8。
一年之后ivar jacobson加入其中,共同将该方法统一为二义性较少的uml 0.9。
同时,这三位杰出的方法学家被称为“三友(three amigos)”。
很快用户也认识到可对软件系统进行可视化、描述、构造和文档化的通用建模语言所带来的益处。
他们充满激情地将这种语言的早期草案应用于不同的领域。
受用户强烈需求的驱动,建模工具厂商也很快在它们的产品中加入了对uml的支持。
uml成了事实上的工业标准。
1996年,一个由建模专家组成的国际性队伍“uml伙伴组织”开始同“三友”一起工作,计划将uml提议作为omg(object management group)的标准建模语言。
1997年1月,伙伴组织向omg
提交了最初的提案uml 1.0。
经过了九个月的紧张修订,于1997年9月提出了最终提案uml 1.1,这个提案在1997年11月被omg正式采纳为对象建模标准。
在一个规范被采纳后不久,将成立一个修订任务组,负责该规范的修订。
1997年9月,omg采纳uml 1.1规范之后不久,特许成立了第一个uml修订任务组(revision task forces,rtf),负责收集有关评论,并且提出修改建议。
该rtf提交的第一个主要产品是一个编辑版本uml 1.2,它改编了规范,使之与其他omg规范更为一致。
尽管这一版本纠正了印刷和语法错误,以及某些明显的逻辑上的不一致,但还是没有涉及对重要技术的改进。
该rtf的第二个主要的产品是其技术版本uml 1.3,它修正和改善了uml 1.1的遗留问题,并矫正了在此之后发现的许多小错误。
该rtf一致推荐omg批准其uml 1.3最终草案,并于1999年6月提交了一份最终报告。
被推荐的规范随后被提交给组织委员会和平台技术委员会以获得批准。
2 uml体系结构演变
uml采用元模型对其进行描述,它是4层元模型体系结构模式中的一层,其他层次分别是元-元模型层、模型层和用户对象层。
其中元模型层由元-元模型层导出,uml的元-元模型层在omg mof的元-元模型中定义,而uml元模型中的元类是mof元-元类的实例。
元模型的体系结构模式可以用来定义复杂模型所要求的精确语义,这种复杂模型通常需要被可靠地保存、共享、操作以及在工具
之间进行交换。
它具有如下特点。
①它在每一层都递归地定义语义结构,从而使语义更精确、更正规。
②它可以用来定义重量级和轻量级扩展机制。
③它在体系结构上将uml元模型与其他基于4层元模型体系结构的标准(比如mof和用于模型交换的xmi facility)统一起来。
在元模型层,uml元模型又被分解为3个逻辑子包:基础包、行为元素包和模型管理包。
其中基础包是描述模型静态结构的语言底层结构,支持类图、对象图和构件图和部署图等结构图。
行为元素包是描述模型动态行为的语言上层结构,支持不同的行为图。
模型管理包则定义了对模型元素进行分组和管理的语义,它描述了几种分组结构,包括包、模型和子系统。
行为元素包和模型管理包都依赖于基础包。
uml 1.3是建模语言规范第一个成熟的发布。
它纠正并调整了从uml 1.1中继承下来的遗留问题,而且修正了最终提交后的一年来所发现的大多数错误。
解决uml 1.1的遗留问题:①完善活动图的语义和表示法增加了状态的动态激发语义,定义了执行条件线程的语义和表示法,而且增加了对象流功能。
为了做这些修订,还需要对活动图所依赖的状态机语义做以下修改:为同步并发的活动加入“同步状态”、精化信号的语义、为合并状态转换定义附加的伪状态。
②清理关系的标准元素。
引入关系元类来组织各种类型的关系,并且把依赖构造型
改造为依赖和流。
依赖和其他关系名称的一致性也有所改进。
③体系结构的一致性。
通过加入物理元模型和xmi(xml metadata interchange)、dtd(document type definition)定义,提高了uml l.3元模型的体系结构跟mof和xmi facility的一致性。
从uml语义逻辑元模型导出的物理元模型包含了一些支持产生
idl(interface definition language)和xmi dtd的修改(例如将关联类转化为类)。
其他变化:①静态结构图。
放宽了限制,使类和接口之间可以关联,并且在类中可以声明信号。
信号被定义为一个类元,可以操作。
另外,还重新定义了模板和强类型的语义。
②用例图。
用例之间的关系被重新定义为三种主要类型:泛化、包含和延伸。
③交互图。
放宽了限制,使用户可以描述角色或实例。
而且协作也可以泛化。
④模型管理图。
改进了模型和子系统的语义和表示法,将它们从包中分离出来,并使之更容易使用。
澄清了对包的访问和引入权限的区别。
尽管uml规范的核心是语法和语义定义,但它还包括模型交换、语言扩展以及约束等方面的定义。
uml 1.3对这些相关规范都进行了错误纠正,并使之与核心语言的改进保持一致。
为uml 2.0确立路标:该rtf在最终报告中明确了因为超出其范围或时间不允许而不能做的各种改进。
他们建议下一个rtf应特别注意扩展性和文档管理方面的问题。
对目前的扩展机制,用户和工
具开发商已经发现了一些重要问题,而涌入新uml外围的提案可能会加剧这些困难。
在文档管理方面,物理元模型和xmi dtd规范的加入大幅度地增加了uml规范的长度,并使它变得笨拙难用。
下一次uml修订将会把物理建模规范拆分为单独的文档。
该rtf还进一步建议负责起草uml 2.0 rfp的工作组考虑以下问题:①体系结构:使用严格的元模型方法定义一个与mof元一元模型严格一致的物理元模型。
给出改进的指导方针,以决定哪些部分应该定义在核心语言中,哪些部分应定义在uml的外围或标准模型库中。
②扩展性:提供同4层元模型体系结构一致的扩展机制。
提高外围规范的严密程度,使其支持用户对语言定制能力不断增加的要求。
③构件:增强基于构件的软件开发的语义和表示法。
④关系:提供“精化”和“追踪”依赖关系的基本语义。
在多个抽象层次上定义关联的语义。
⑤状态图和活动图:定义独立于状态图语义的活动图语义。
在活动图和状态图中提供更随意的并发。
详细说明状态机的泛化。
⑥模型管理:重新定义模型和子系统的表示法和语义,以增强对企业体系结构视图的支持。
⑦总体机制:定义一种模型版本管理的机制。
详细说明图的互换机制。
3uml的应用与未来
uml是在多种面向对象建模方法的基础上发展起来的软件建模语言,在软件领域使用很广泛。
从uml面世以来,便引起了计算机业界的重视,omg的采纳和大公司的支持把它推上了事实上的工业标
准的地位,使它拥有越来越多的用户。
它被广泛地用于应用领域和多种类型的系统建模。
近几年以来,uml还被运用于软件再工程、质量管理、过程管理和配置管理等方面。
对uml的讨论和评价,无论是在internet上的交流讨论,还是uml研讨会,或是学术期刊上发表的文章,都是既肯定其成绩,又指出其缺点和错误,并且积极地给出建设性意见。
总的来说:①uml 取得重要成功是毋庸置疑的,它已成为在软件工业中占主导地位的建模语言,并在许多领域的软件开发中得到应用。
②uml还存在一些问题,自它产生之日起就从未离开过批评:用户和教师抱怨它内容庞大、难学难教而且太过复杂;学者认为它缺乏一个精练的核心和定义良好的外围;建模实践者认为它缺少支持自己领域建模要求的机制;工具开发商则因为规范本身的不确定性而产生理解上的偏差。
③uml的关键问题是过于庞大和复杂,以及在语言体系结构、语义等方面仔在理论缺陷。
产生这些问题的一个重要原因是在形成规范的过程中不得不照顾多种方法流派的观点和多家公司的利益。
尽管存在一些问题,但瑕不掩瑜,uml在未来定会克服不足,扬长避短,为软件开发做出有力的支持!
参考文献:
[1]《软件工程》张海藩.清华大学出版社.2009.8.
[2]《软件构件技术》夏榆滨.清华大学出版社.
[3]《软件构件技术研究》.贾春花,刘晓英.中国商务出版社,
2010.9.。