UML软件工程组织

 

 

UML 2.0修成正果
 
2008-01-07 作者:马浩海 邵维忠 麻志毅 来源:5iuml.com
 

历时四年之久的UML 2.0规范制定过程终于临近尾声。6月12日,OMG(Object Management Group,国际对象管理组织)建议采纳了U2 Partners所提交的UML 2.0上层结构规范。加上4月15日通过的基础结构规范、对象约束语言和图交换协议,主流软件建模规范UML最重要的一次升级修订过程终于成功完成。

广义地看UML,它已经不仅仅是一种建模语言,而是一个可以用于定义语言家族的元元核心和一个通用建模元语言的结合体;作为狭义的UML,UML 2.0较之以前的版本,在基于构件的软件工程、实时和嵌入式系统、业务过程的描述能力等方面都有很大的增强。

OMG的UML修订任务组和分析设计组的联合主席Cris Kobryn表示,UML 2.0已经变成一个基础更坚实的规范,可以为未来的软件工程、测试和业务规则建模提供更强大的支持。

UML是OMG于1997年提出的用于软件系统的可视化、详述、构造和文档化的统一建模语言,是各种面向对象建模方法综合统一的必然产物。起源于Booch、OMT和OOSE三种面向对象建模方法的UML试图扩展到可以对任何类型的应用系统建模,其应用也从对面向对象系统建模扩展到了结构化设计系统、业务流程、事物系统、实时和嵌入式系Web应用,甚至是非软件系统领域的建模工作。

UML 1.X系列修订的结果使得UML被广泛接受。随着人们对UML寄予更大的期望,1999年OMG提出的UML 2.0修订信息需求得到了更多的回应,大多数回应者都建议应该对UML进行一次重大的修订。

提案需求与提案提交

OMG在发布2.0修订信息需求之后,广泛听取了来自建模工具提供商、用户、学术团体、咨询机构以及其他标准化组织的26个响应者的建议,并于2000年年初发布了UML 2.0的4个组成部分的提案需求(RFP),分别是:基础结构(Infrastructure)、上层结构(Superstructure)、对象约束语言(OCL)和图交换(Diagram Interchange)的需求。其中基础结构和上层结构构成了UML 2.0提案需求的主体部分。

在提案需求发布之后的三年里,一批提案组织向OMG的分析和设计任务组(the Analysis and Design Task Force,简称AD)提交了各自的提案文档。AD任务组不定时召开成员会议对各种提案进行研究,最后提案的采纳与否由成员投票决定。其中比较重要的提案组织有:U2P(UML2 Partners Consortium)、2U(Unambiguous UML Consortium)、3C(Clear、Clean、Concise UML)、DSTC(Distributed Systems Technology Centre)、Fujitsu、OCL 2.0 consortium等。

最终,U2P的基础结构和上层结构提案以及OCL 2.0 Consortium的OCL提案被AD建议采纳,这意味着UML 2.0正式被OMG接受。U2P的基础和上层结构提案之所以能被采纳,和U2P作为UML 2.0最大的提案团队是分不开的,该组织包括了19个提案者和33个支持者。

在UML 2.0规范文档从OMG发布之前,还要经历一个发行过程,这将由称为定案任务组(Finalization Task Force,简称FTF)的OMG机构经过六个月到一年的时间来完成。现在仍然有一些争论,包括是否应该将四个规范放到一个FTF中完成、以及基础结构如何与MOF(Meta Object Facility,元对象设施)协调一致等问题。

基础结构:商家的焦点

UML 2.0基础结构的设计目标是定义一个元语言的核心InfrastructureLibrary,通过对此核心的复用,除了可以定义一个自展的UML元模型,也可以定义其他元模型,包括MOF和CWM(Common Warehouse Model,公共仓库模型),如图1所示。由于共用核心库,所以UML和MOF、CWM在体系结构上更加一致。同时, InfrastructureLibrary还提供了定制UML更强有力的机制,允许用户定义针对不同平台(如.NET、J2EE等)和领域(如电信、金融、系统工程)的方言。

图2给出了InfrastructureLibrary包的内部结构。InfrastructureLibrary包由包含了高度可复用元模型构造物的Core包和用于定义UML在不同领域方言的Profiles包组成,Profiles包依赖于Core包。为了复用的目的,Core包进一步划分为一些子包:原子类型(PrimitiveTypes)子包包含了一些在元建模时会用到的预定义类型;抽象元素(Abstractions)子包主要包含可被进一步特化,或者被很多元模型复用的抽象元类;构造物(Constructs)子包主要包含着用于面向对象建模的具体元类;基础(Basic)子包则包含一些作为创建XML的基础构造物。

实际上,对基础结构而言,标准制定者和建模工具提供商的兴趣要远远大于普通建模者。

上层结构:用户的兴趣所在

上层结构是UML普通用户真正需要的部分,也是UML固有用户最感兴趣的部分。

UML 2.0上层结构的设计目标是:严格地复用基础结构InfrastructureLibrary包中的构造物;提高对基于构件开发和MDA(Model Driven Architecture,模型驱动体系结构)的支持;优化构架规约的能力;增强行为图的可伸缩性、精确性、集成性等。

图(Diagrams)

UML 2.0支持13种图(如图3所示),它们可以分成两大类:结构图和行为图。结构图包括:类图、组合结构图、构件图、部署图、对象图和包图;行为图包括:活动图、交互图、用况图和状态机图,其中交互图是顺序图、通信图、交互概览图和时序图的统称。

与UML 1.X相比,组合结构图、包图、交互概览图和时序图都是新增的图。而原来的协作图改名为通信图,状态图改名为状态机图。原来的集合词汇实现图(Implementation Diagram)被取消。

构件(Components)

UML 2.0最重要的修订之一就是增强了对基于构件的软件开发的支持。构件可以通过组合结构图描述其内部构造物,如部件/实现类目、连接器和端口的结构和关系。作为系统的一个模块化部分,构件通过接口封装了内部所包含元素的行为和状态,对外通过接口来定义它的行为,并且在其环境中可替换。

构件可以通过组装以及把协作构件之间的接口连接在一起来提供系统功能。在UML 1.X中,构件的概念主要用在系统实现的设计阶段,而2.0将构件用于整个生命周期的建模上,最后在部署和运行时(Run-time)环境中优化。

交互(Interactions)

根据使用交互的目的不同,UML 2.0可以用几种图来表达交互:顺序图、通信图、交互概览图和时序图。每种图提供适应不同情况的能力,不过顺序图是交互图中语义最丰富、表现力最强的一种图。

为了能够描述复杂的交互,UML 2.0中顺序图的伸缩能力有了显著的提高。其新增的核心构造物包括:交互发生(Interaction occurrence),允许从一个交互引用到另一个,这样避免了复制,结构上更优化;新增的组合片断、交互操作符等,使得在顺序图中可以表示诸如选择、循环、并行、有序、引用等复杂的控制结构;新增了对生命线(Lifeline)的分解能力,可以通过实例的内部结构来细化交互过程。

交互概览图就是新增的交互图之一,它描述交互(特别是关注控制流),但是抽象掉了消息和生命线。它使用活动图的表示法。纯粹的交互概览图中所有的活动都是交互发生,那样在图上就根本不会有任何消息和生命线了。

另一种新增的、特别适合实时和嵌入式系统建模的交互图称为时序图。时序图关注沿着线性时间轴、生命线内部和生命线之间的条件改变。它描述对象状态随着时间改变的情况,很像示波器,适合分析周期和非周期性任务。

活动和动作(Activities/Actions)

UML 2.0的活动图增强了对复杂过程的建模能力,既支持控制流模型,也支持对象流模型。其中实现了活动和动作的集成,活动定义了流图(过程),动作定义了执行行为的节点,使得行为建模更加直观有效。

其新增的核心构造物包括:用做动作输入和输出的栓(Pins);结构化节点(Structured Nodes)、可中断区域(Interruptible Regions)等。它对原来UML 1.X核心构造物的语义充实包括:在边上增加了标志、流、异常等参数;增进了对活动图进行多维、分层和扩展的分割法;控制节点支持分叉、汇合、决策、合并等。

状态机(StateMachines)

UML 2.0对状态机的主要改进是:通过状态机边界的出口/入口点,实现子状态机(状态机片断)的完全封装,实现可插拔替换能力;状态机可以特化。一个特化的状态机是一个泛化状态机的扩展;可通过协议状态机有效规约发生在构件的端口或者接口的约束操作序列。

·小资料·

针对UML 2.0的各种评论

Cris Kobryn(OMG的UML 2.0修订任务组和分析设计组的联合主席之一):这是一个更加平衡的语言,它将所有的行为图更好地集成在一起。构件技术的流行,使得UML有了更好的构件语义。其语言的增强,在很大程度上帮助了嵌入式和实时系统开发者和工具提供商。实际上,UML成为了MDA的通用语言。

Grady Booch(UML最早倡导者之一,Rational首席科学家):UML 2.0在针对系统实现上做了很多改进,同时也有很多改进是针对MDA用户的。

Martin Fowler(OO方法论者):从UML 1.X到UML 2.0发生了很大的改变,这是UML被接受以来最大的一次检查和修订。

Fred Waskiewicz(标准制定者):UML提高了可用性。随着UML的成长,它将越来越多地应用到应用系统建模之外的新领域中。

Stan Hendryx(OMG的“业务规则特殊兴趣”小组主席):UML 2.0 对大多数业务用户来说仍然太技术化,很难使用。

Sridhar Iyengar(MOF 2.0的规范领导者之一,来自IBM公司):UML和MOF现在集成在一个共有核心上,其内部结合也更紧密。

Jan Popkin(Popkin软件公司主席):UML正在成长,它正在演化为一种多维建模技术。这是一个很好的趋势,因为没有一种模型可以做所有的事情,特别是处理业务过程建模的表示法。

Cameron Skinner(Embarcadero公司首席构架师):UML的主要目标很多,其中之一就是更容易理解和实现,也就是说它要创建一个更明晰的、无二义性的语言。

Stephen Mellor(Project公司副总裁,xtUML方法论者)和Bruce Powell Douglas(I-Logix公司首席教育家):UML 2.0考虑了很多实时系统设计和代码生成的问题,会使UML的应用领域更广阔。

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号