3.1 UML简介
UML(Unified Modeling Language,统一建模语言)是非专利的第三代建模和规约语言,它是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品。UML展现了一系列最佳工程实践,这些最佳实践在对大规模、复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。
3.1.1 UML的发展
面向对象方法在20世纪80年代末至90年代中期得到了广泛的应用,与此同时还出现了多种建模语言,其中最引人注目的是Booch93、OOSE和OMT-2等。
GradyBooch是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的概念。1991年,他将以前面向Ada的工作扩展到整个面向对象设计领域,提出了适合于系统的设计和构造的Booch93建模语言。James Rumbaugh等人提出了面向对象的建模技术(OMT-2)方法,该方法采用了面向对象的概念,并引入了各种独立于语言的表示符,这种方法用对象模型、动态模型、功能模型和用例(use-case)模型,共同完成对整个系统的建模,所定义的概念和符号可用于软件系统开发的分析、设计和实施的全过程,系统开发人员不必在开发过程的不同阶段进行概念和符号的转换。Ivar Jacobson于1994年提出了OOSE方法,其最大特点是面向用例,并在用例的描述中引入了外部角色的概念,OOSE方法比较适合支持商业工程和需求分析。面对这些建模语言,首先,用户没有能力区别不同语言之间的差别,很难找到一种比较适合其应用特点的语言;其次,这些建模语言实际上各有千秋;再次,虽然不同的建模语言大多类同,但仍存在某些细微的差别,这极大地妨碍了用户之间的交流。因此在客观上,极有必要在精心比较不同的建模语言优缺点及总结面向对象技术应用实践的基础上,组织联合设计小组,根据应用需求,取其精华,去其糟粕,求同存异,统一建模语言。
1994年11月,Grady Booch和James Rumbaugh开始致力于这一工作,他们首先将Booch93和OMT-2统一起来,并于1995年11月发布了第一个公开版本,称为统一方法UM0.8(Unified Method)。1995年秋,OOSE的创始人Ivar Jacobson加盟到这一工作中,经过Booch、Rumbaugh和Jacobson三人的共同努力,于1996年6月和11月分别发布了两个新的版本,即UML0.9和UML0.91,并将UM重新命名为UML(Unified Modeling Language)。1997年,由多家软件公司组成的UML联合组织正式成立,制定UML第1版,并呈交对象管理组(Object Management Group,OMG)通过,成为公开标准。1997年底,又修订成1.1版,即现今国际软件工业界的标准UML1997,此后,OMG的专家对UML不断进行扩充与完善,相继推出了UML1.2、UML1.3、UML1.4、UML1.5等版本。2003年6月12日在法国巴黎的OMG技术会议上通过了UML第2版,它是比UML1有显著改进的新版本,此后相继形成了4个UML2.0规范,并在OMG的组织下修订产生了UML2.1-2.4一系列版本。2005年以后UML2的4个规范陆续进入ISO的标准化日程,UML成为建模语言国际标准,目前常用的UML建模工具有Sybase Power Designer 16.5、IBM Rational Software Architect 9.0和Microsoft Office Visio 2019。
UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言,它融入了软件工程领域的新思想、新方法和新技术,它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件系统开发的全过程,它代表了面向对象软件系统开发技术的发展方向,具有巨大的市场前景和经济价值。
3.1.2 UML的特点
1. UML是一种可视化语言
面向对象建模方法的一大优势就是广泛利用可视化元素描述模型,UML符号的表示法定义了规范的可视化元素,并为开发者使用这些可视化元素进行系统建模提供了标准。UML只是一组图形符号,确切地讲,UML表示法中的每个符号都有明确语义,这样,一个开发者可以用UML绘制一个模型,而另一个开发者(甚至工具)可以无歧义地解释这个模型。
2. UML是一种可用于详细描述的语言
这里详细描述意味着所建的模型是精确的、无歧义的和完整的,特别是,UML适合于对所有重要的分析、设计和实现决策进行详细描述,这些是软件系统在开发和部署时所必需的。
3. UML是一种构造语言
UML不是一种可视化的编程语言,但用UML描述的模型可与各种编程语言直接相连,这意味着可把用UML描述的模型映射成编程语言,如Java、C++和Visual Basic等,甚至映射成关系数据库的表或面向对象数据库的记录。这种映射允许进行正向工程,从UML模型到编程语言的代码生成,也可以进行逆向工程,由编程语言代码重新构造UML模型,但逆向工程需要工具支持和人的干预,以保证生成结果的一致性。
4. UML是一种文档化语言
UML适于建立系统体系结构及其所有的细节文档,它提供了用于表达需求和测试的语言,也提供了对项目计划和发布管理的活动进行建模的语言。
3.1.3 UML的功能
1. 为软件系统的开发提供可视化模型
UML符号具有定义良好的语言,不会引起歧义,并且UML是一种统一的、标准的建模语言,使得交流更加方便。UML是可视化的建模语言,它为系统提供了图形化的可视模型,使系统的结构变得直观、易于理解。利用UML为软件系统建立模型不但有利于交流,还有利于对软件的维护。
2. 规约软件系统的开发过程
规约意味着建立的模型是准确的、无歧义的、完整的,UML定义了在开发软件系统过程中所做的所有重要的分析、设计和实现决策的规格说明。
3. 构造软件系统的实施框架
UML不是可视化的编程语言,但它的模型可以直接对应于各种各样的编程语言,即可以从UML的模型生成Java、C++等语言的编码,甚至可以生成关系数据库中的表。