
2.1.2 UML的主要特点
作为一个通用的模型语言,UML使用了统一的建模标准;UML使用了面向对象模型,能够全面支持面向对象的开发过程和各种面向对象开发方法;UML使用了图形化的模型语言,为问题描述提供了直观和无二义性的模型表示方法。从开发方法的角度来看,由于UML不依赖于任何一种特定的开发方法,因此,UML也减少了对用户的限制,使用户可以更加灵活地使用UML进行软件开发。
从UML本身的结构、通用性和体系结构的角度来看,UML还具有如下几个方面的特点。
(1)提高抽象层次
UML使开发人员可以在更高的抽象层次上进行工作,从而为他们提供帮助。一个模型可以通过隐藏或掩盖细节、展现大图,或者聚焦于原型的不同方面来实现这一点。
使用UML,可以将应用程序的详细视图缩小到它执行的环境中,可视化到其他应用程序的连接,或者进一步扩展到其他站点。或者可以使人们关注应用程序的不同侧面,如它自动化的业务流程或业务规则视图等。
使用UML可以建模任何类型的应用软件,包括运行在任何类型硬件及其组合上、运行在不同操作系统环境下、使用不同程序设计语言实现的和运行在各种网络环境下的应用软件。UML的灵活性可以在建模时使用任何中间件的分布式应用程序。
由于UML是在基本的面向对象的概念基础之上的模型语言,它当然适用于面向对象的程序设计语言,如C++、Java以及C#等。但它也可以用来非面向对象的应用程序建模。如FORTRAN、VB或COBOL等。UML中的概要文件(Profile,即针对特定目的而定制的UML子集)可以帮助人们以自然的方式建模,并使之具有事务性、实时性和容错性系统。
(2)使用UML做其他有用的事情
使用UML也可以做一些软件建模以外的事情,如分析源代码,UML可以将源代码反向转换成一组UML类图。又如,市场上的某些工具软件也可以运行UML模型,这些工具可以分成模型分析器和代码生成器两类。模型分析器用于分析UML模型,帮助用于确认模型中不满足性能需求的部分。代码生成器的目标则是从UML模型生成程序语言代码,生成无错误、运行速度快并且可部署的应用程序。例如,事务数据库操作或其他常见的编程任务等。
(3)UML和OMG的模型驱动体系结构
为了更有效地支持模型驱动的开发方法,避免开发过程中的重复劳动,国际对象管理组织(OMG)于2001年提出了模型驱动开发的体系结构(Model Driven Architecture,MDA)的概念,并给出了完整的结构定义。该体系结构的结构由核心层、中间层和外部层三个层次的构件组成。
1)核心层。MDA结构的核心层为模型的抽象表示提供了平台无关的概念模型。该层的结构被定义成元对象设施(Meta Object Facility,MOF)、公共数据仓库元模型(Common Warehouse Metamodel,CWM)和统一建模语言(Unified Model Language,UML)三种构件组成的结构,形成了支持MDA所需要的核心技术。
2)中间层。该层次包含的是与模型实现平台相关的构件,其内容是目前常用的实现平台,如CORBA、XML、JAVA、Web Services和.NET等,并且随着技术的发展,层次的内容将会得到不断扩充。
3)外部层。外部层被定义成MDA的服务层,用于对外提供服务,其构成元素包括MDA提供的各种公共服务,例如事务处理(Transaction)等。
外部层的服务对象是MDA在不同垂直领域的各种应用,例如电子商务、电信和制造业等。MDA的主要工作就是要把基于这些技术建立的PIM转换到不同的中间件平台上,得到对应的PSM。
这个体系结构的核心思想是:首先抽象出一个与实现技术无关的平台无关模型(Platform Independent Model,PIM),然后根据特定的转换规则将平台无关模型转换成与具体实现技术相关的平台相关模型(Platform Specific Model,PSM),最后再将经过充实的平台相关模型转换成相应的程序代码。
依靠这样的体系结构,使得建立UML模型既可以是平台独立的,也可以是平台相关的,甚至还支持两种模型的同时使用。这极大地提高了模型的通用性和可复用性,并且模型在不同平台之间的相互转换也变得极为容易。
在标准情况下,每个MDA标准或应用均是平台独立的,这意味着对业务功能和行为的描述可以是非常精确的,同时还不包括平台相关的实现。
对于平台独立模型,遵循了OMG规范的MDA开发工具可以启用映射来将它们比较容易地转换成一个或多个平台相关的模型。
平台相关模型通常包含了与实现相关的信息,但这样的模型并不能代替具体的程序代码。在后续工作中,模型工具可以从平台相关模型生成可运行的程序代码及其他必要的文件(包括必要的接口定义文件、配置文件、生成文件和其他类型的文件)。
MDA应用还可以是组合的,即建模人员可以在他们的模型中引进某些平台独立、相关的,甚至是跨平台的模型、服务或其他的MDA应用,只要通过必要的接口或协议,都可以将它们组合起来,构建新的更完整的模型或应用。