您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center 汽车系统工程   模型库  
会员   
   
基于SysML和EA进行系统设计与建模
7月16-17日 深圳+线上
UAF架构体系与实践
7月23-24日 北京+线上
Spec Driven Development 工程化实践
7月28-29日 北京+线上
     
   
 订阅
UML一步一个脚印
 
作者:Cris Kobryn
 
 
  110   次浏览      67 次
2002-12-12
 
编辑推荐:
本文主要介绍UML的现状及未来发展以及如何定义UML核心,希望对您的学习有所帮助。
本文来自于计算机世界报,火龙果软件Alice编辑,推荐。

随着软件系统复杂程度的提高,对好的建模语言的需求也越来越迫切,面向对象建模语言就是应这样的需求而生。其实早在 20 世纪 70 年代就陆续出现了面向对象的建模方法,在 80 年代末到 90 年代中期,各种建模方法如雨后春笋般从不到 10 种增加到 50 多种。但方法种类的膨胀,使用户很难根据自身应用的特点选择合适的建模方法,极大地妨碍了用户的使用和交流。

在如此众多的方法流派的竞争中, UML ( Unified Modeling Language ,统一建模语言)举起了统一的大旗。它融合了多种优秀的面向对象建模方法,以及多种得到认可的软件工程方法,消除了因方法林立且相互独立带来的种种不便。它通过统一的表示法,使不同知识背景的领域专家、系统分析和开发人员以及用户可以方便地交流。

它的出现为面向对象建模语言的历史翻开了新的一页,并受到工业界、学术界以及用户的广泛支持,成为面向对象技术领域占主导地位的建模语言。 OMG (对象管理组织)采纳它为标准建模语言 , 进一步将它推向事实上的工业标准的地位,目前它正向 ISO (国际标准化组织)提出标准化申请。

尽管目前我国计算机界对 UML 的推崇程度近乎崇拜,但我们应该客观地认识到 UML 依然存在许多缺憾甚至是错误,需要进一步完善。一个规范的标准化进程总是很漫长,在对它的修订过程中总会不断发现新问题,发现问题、解决问题是个循环反复的过程,在这个过程中,人们不断改进和完善 UML 。本期专题将追随 UML 标准化进程的脚步,介绍它修订过程中的每一个进步和缺憾 , 从而使读者较为客观地了解到 UML 的现状及未来发展。

本期专题包括下列文章:

1. UML 的现状及未来发展

2. UML 2001 : 标准化的《奥德赛》史诗

3. 定义 UML 核心

4. UML 2.0 之路: 快车道还是绕行?

UML 的现状及未来发展

北京大学计算机科学技术系 编译

UML 是在多种面向对象建模方法的基础上发展起来的建模语言,主要用于软件密集型系统的建模。它的演化,可以按其性质划分为以下几个阶段:最初的阶段是专家的联合行动,由三位 OO (面向对象)方法学家将他们各自的方法结合在一起,形成 UML 0.9 。第二阶段是公司的联合行动,由十几家公司组成的“ UML 伙伴组织”将各自的意见加入 UML ,形成 UML 1.0 和 1.1 ,并作为向 OMG 申请成为建模语言规范的提案。第三阶段是在 OMG 控制下的修订与改进, OMG 于 1997 年 11 月正式采纳 UML 1.1 作为建模语言规范,然后成立任务组进行不断的修订,并产生了 UML 1.2 、 1.3 和 1.4 版本,其中 UML 1.3 是较为重要的修订版。目前正处于 UML 的重大修订阶段,目标是推出 UML 2.0 ,作为向 ISO 提交的标准提案。

在多种面向对象建模方法流派并存和相互竞争的局面中, UML 树起了统一的旗帜,使不同厂商开发的系统模型能够基于共同的概念,使用相同的表示法,呈现彼此一致的模型风格。而且它从多种方法中吸收了大量有用(或者对一部分用户可能有用)的建模概念,使它的概念和表示法在规模上超过了以往任何一种方法,并且提供了允许用户对语言做进一步扩展的机制。

UML 在语法和语义的定义方面也做了大量的工作。以往各种关于面向对象方法的著作通常是以比较简单的方式定义其建模概念,而以主要篇幅给出过程指导,论述如何运用这些概念来进行开发。 UML 则以一种建模语言的姿态出现,使用语言学中的一些技术来定义。尽管真正从语言学的角度看它还有许多缺陷,但它在这方面所做的努力却是以往的各种建模方法无法比拟的。

从 UML 的早期版本开始,便受到了计算机产业界的重视, OMG 的采纳和大公司的支持把它推上了实际上的工业标准的地位,使它拥有越来越多的用户。它被广泛地用于应用领域和多种类型的系统建模,如管理信息系统、通信与控制系统、嵌入式实时系统、分布式系统、系统软件等。近几年还被运用于软件再工程、质量管理、过程管理、配置管理等方面。而且它的应用不仅仅限于计算机软件,还可用于非软件系统,例如硬件设计、业务处理流程、企业或事业单位的结构与行为建模。

不过 UML 在取得巨大成功的同时,也不断地受到批评。来自工业界的批评主要是,它过于庞大和复杂,用户很难全面、熟练地掌握它,大多数用户实际上只使用它一少部分的概念;它的许多概念含义不清,使用户感到困惑。来自学术界的批评则主要针对它在理论上的缺陷和错误,包括语言体系结构、语法、语义等方面的问题。

目前国内也有不少软件企业在学习并尝试使用 UML 。从总体上看,我国计算机界对 UML 的了解还相当初步,但是对它的崇拜程度却远远超过了西方发达国家。人们在学习和使用 UML 遇到和国外用户相同的疑难和困惑时,却不太敢怀疑 UML 有什么问题。所以国内几乎没有批评的声音,偶尔有一点,也会立即被捍卫的声音淹没,即使对 UML 一些最明显的缺点和错误也是如此。

相比之下,国际上对 UML 的讨论和评价则要客观得多。无论是 Internet 上的意见交流,或是每年一次的 UML 研讨会,还是学术期刊上发表的文章,都是既肯定其成绩,又指出其缺点和错误,并且以积极的态度提出建设性意见。在酝酿 UML 下一次的重大发布和筹划 UML 2.0 作为 ISO 标准提案的最近两年内,围绕 UML 的讨论更为活跃和热烈。

为了使我国计算机界对 UML 目前的状况有较为客观的了解,我们从大量的文献资料中选择了三篇最具权威性的文章,介绍给我国读者。从这组文章中,我们可以得到关于 UML 现状及未来发展的重要信息:

● UML 已经取得重要成功,它已成为在软件工业中占支配地位的建模语言,并在许多领域的软件开发中得到应用。

● UML 还存在许多问题,自它产生之日起就从未离开过批评:用户和教师抱怨它内容庞大、难学难教而且太过复杂 ; 学者认为它缺少一个精练的核心和定义良好的外围,有些语义定义得不够精确而且带有二义性 ; 建模实践者认为它缺少支持自己领域建模要求的机制 ; 工具开发商则因为规范本身的不确定性而产生理解上的偏差,它们对 UML 的自行诠释有可能误导用户。

● UML 的关键问题是过于庞大和复杂,以及在语言体系结构、语义等方面存在理论缺陷。产生这些问题的一个重要原因是,在形成规范的过程中不得不照顾多种方法流派的观点和多家公司的利益。

● 为了 UML 的下一次重大发布, UML 2.0 修订的主持者正在广泛收集各方面的意见。各界都给予了很高的关注,提出的意见涉及 UML 的各个方面。其中一个关键问题是 UML 是否需要简化,以及如何使之更精练,最终大部分意见是提供一个精练的核心,而把不常用的内容放到定义良好的外围或扩展机制中。此外, UML 2.0 还将对 UML 的底层结构、上层结构和对象约束语言( OCL )做重大改进。

原定 UML 2.0 在今年某个时间发布,但是在刚刚结束的本年度 UML 国际研讨会上,没有透露关于该版本最新进度的任何消息,看来它的面世要比预期的日程推后。

UML 2001 :标准化的《奥德赛》史诗

北京大学计算机科学技术系 蒋严冰 邵维忠 编译

Cris Kobryn --- Chief Technologist, Telelogic

一个规范的标准化进程通常是一个冗长的过程。在 UML 1.3 的最终草案被批准之际, OMG UML 修订任务组和 OMG 分析设计平台任务组联合主席 Cris Kobryn 于 1999 年 10 月在《 COMMUNICATION OF THE ACM 》上发表了本文,总结了 UML 的发展历程,并展望了其发展趋势。

在很短的时间内, UML 已经成为软件工业中占支配地位的建模语言。目前它不仅是事实上的建模语言标准,也正在快速地成为法律上的标准。 1997 年, OMG 采纳它作为标准建模语言。现在, OMG 正在以 ISO 公共可用规范提交者的身份,申请将 UML 规范作为国际标准。

不过,一个规范的标准化进程通常是正式而漫长的,因为它要满足各种各样的技术规范和商业需求。从商业角度看,标准化的时间尺度通常与尽早使用最新技术的竞争需求是冲突的。从技术角度看,为了力求达成共识,则赞成这种“由委员会设计”的进程。

标准化之前的历史

早在 1995 年, Gray Booch 和 Janes Rumbaugh 将他们的面向对象建模方法统一为 Unified Method V0.8 。一年之后 Ivar Jacobson 加入其中,共同将该方法统一为二义性较少的 UML 0.9 。同时,这三位杰出的方法学家被称为“三友 (Three Amigos) ”。

很快用户也认识到可对软件系统进行可视化、描述、构造和文档化的通用建模语言所带来的益处。他们充满激情地将这种语言的早期草案应用于不同的领域。受用户强烈需求的驱动,建模工具厂商也很快在它们的产品中加入了对 UML 的支持。

与此同时, UML 成了实际上的工业标准。 1996 年,一个由建模专家组成的国际性队伍“ UML 伙伴组织”开始同“三友”一起工作,计划将 UML 提议作为 OMG 的标准建模语言。

1997 年 1 月,伙伴组织向 OMG 提交了最初的提案 UML 1.0 。经过了九个月的紧张修订,于 1997 年 9 月提出了最终提案 UML 1.1 ,这个提案在 1997 年 11 月被 OMG 正式采纳为对象建模标准。

有必要指出的是,由于比较仓促地通过了 OMG 的提交过程,尽管语言的基层结构和大部分上层结构是合理的, UML 还是容忍了一些不尽如人意的负面因素:活动图的语义及表示法不完整;标准元素臃肿,其中有些元素是为了满足不同的、相互竞争的方法门派的需求而草率加入的,许多标准元素语义贫乏,而且命名和组织也不一致 ; 结构混乱,所提交的规范并没有达到提交者预期的目标——用一种严格的元模型方法实现 4 层元模型结构,相反使用了一种实用但不精确的、松散的元模型方法,不利于 UML 同其他 OMG 规范的结合,比如与 MOF ( Meta Object Facility )的结合。

不过提交者们并没有因此推迟 UML 的标准化进程,而是在该语言的下一个修订版中解决了上述一些问题。

发展进程

OMG 为修订标准而提供的基本机制是提案需求( RFP , Request for Proposals )和修订任务组( RTF , Revision Task Forces )。

其中 RFP 过程是 OMG 采纳新规范和改进已有规范的主要机制。任务组发布一个 RFP ,一个或多个提交团以规范草案作为初始提案响应该 RFP ,然后任务组对这些初始提案进行评估,并反馈给提交者,鼓励这些提交者与其竞争对手合作,从而形成最终提案。在任务组完成了对最终提案的评估后,就投票决定推荐众多提案中的哪一个。获得多数赞成票的提案就被送交组织委员会和主管该任务组的技术委员会去批准。

如果一个最终提案获得了所有的批准,它就成为被 OMG 采纳的技术。否则,任务组就有权重新发布一个修改过的 RFP 。

在一个规范被采纳后不久,将成立一个修订任务组,负责该规范的修订。 1997 年 9 月, OMG 采纳 UML 1.1 规范之后不久,特许成立了第一个 UML 修订任务组,负责收集有关评论,并且提出修改建议。

该 RTF 提交的第一个主要产品是一个编辑版本 UML 1.2 ,它改编了规范,使之与其他 OMG 规范更为一致。尽管这一版本纠正了印刷和语法错误,以及某些明显的逻辑上的不一致,但还是没有涉及对重要技术的改进。

该 RTF 的第二个主要的产品是其技术版本 UML 1.3 ,它修正和改善了 UML 1.1 的遗留问题,并矫正了在此之后发现的许多小错误。该 RTF 一致推荐 OMG 批准其 UML 1.3 最终草案,并于 1999 年 6 月提交了一份最终报告。被推荐的规范随后被提交给组织委员会和平台技术委员会以获得批准。

演变的体系结构

UML 是用元模型来描述的,元模型是 4 层元模型体系结构模式中的一层。此模式的其他层次分别是:元 - 元模型层、模型层和用户对象层。其中元模型层由元 - 元模型层导出, UML 的元 - 元模型层在 OMG MOF 的元 - 元模型中定义,而 UML 元模型中的元类是 MOF 元 - 元类的实例。

元模型的体系结构模式已被证明可以用来定义复杂模型所要求的精确语义,这种复杂模型通常需要被可靠地保存、共享、操作以及在工具之间进行交换。它的特点如下:

● 它在每一层都递归地定义语义结构,从而使语义更精确、更正规。

● 它可用来定义重量级和轻量级扩展机制,如定义新的元类和构造型。

● 它在体系结构上将 UML 元模型与其他基于 4 层元模型体系结构的标准(比如 MOF 和用于模型交换的 XMI Facility )统一起来。

在元模型层, UML 元模型又被分解为三个逻辑子包:基础包、行为元素包和模型管理包。其中基础包由核心、扩展机制和数据类型三个子包构成,它是描述模型静态结构的语言底层结构,支持类图、对象图、构件图、部署图等结构图。行为元素包是描述模型动态行为的语言上层结构,支持不同的行为图,包括 Use Case (用况)图、顺序图、协作图、状态图和活动图。模型管理包则定义了对模型元素进行分组和管理的语义,它描述了几种分组结构,包括包、模型和子系统。行为元素包和模型管理包都依赖于基础包。

UML 1.3 的修订

UML 1.3 是建模语言规范第一个成熟的发布。它纠正或调整了从 UML 1.1 中继承下来的遗留问题,并且修正了最终提交后的一年来所发现的大多数错误。从建模者的角度看,从 UML 1.1 到 UML 1.3 并没有很大变化,对语言的大部分改进是在底层对 UML 元模型语义的调整,只有很少量的变化是针对表示法的细枝末节的修改。底层结构上的变化对大多数用户来说是看不到的,但这使得 UML 在将来更容易实现和扩展。

解决 UML 1.1 的遗留问题

完善活动图的语义和表示法 增加了状态的动态激发语义,定义了执行条件线程的语义和表示法,而且增加了对象流功能。为了做这些修订,还需要对活动图所依赖的状态机语义做以下修改 : 为同步并发的活动加入“同步状态”、精化信号的语义、为合并状态转换定义附加的伪状态。

清理关系的标准元素 引入关系元类来组织各种类型的关系,并且把依赖构造型改造为依赖和流。此外,精练了泛化,不再需要以前的许多构造型(如继承、私有、子类、子类型等)。依赖和其他关系名称的一致性也有所改进。

体系结构的一致性 通过加入物理元模型和 XMI(XML metadata Interchange)DTD 定义,提高了 UML 1.3 元模型的体系结构跟 MOF 和 XMI Facility 的一致性。从 UML 语义逻辑元模型导出的物理元模型包含了一些支持产生 IDL 和 XMI DTD 的修改(例如将关联类转化为类)。尽管这样做与严格的元模型方法相左,但它为未来 UML 的修订达到这一目标提供了桥梁。

其他变化

静态结构图 放宽了限制,使类和接口之间可以关联,并且在类中可以声明信号。信号被定义为一个类元,可以操作。另外,还重新定义了模板和强类型的语义。

用况图 用况之间的关系被重新定义为三种主要类型:泛化、包含和延伸。

交互图 放宽了限制,使用户可以描述角色或实例。而且协作也可以泛化。

模型管理图 改进了模型和子系统的语义和表示法,将它们从包中分离出来,并使之更容易使用。澄清了对包的访问和引入权限的区别。

尽管 UML 规范的核心是语法和语义定义,但它还包括模型交换、语言扩展以及约束等方面的定义。 UML 1.3 对这些相关规范都进行了错误纠正,并使之与核心语言的改进保持一致。

为 UML 2.0 确立路标

该 RTF 在最终报告中明确了因为超出其范围或时间不允许而不能做的各种改进。他们建议下一个 RTF 应特别注意扩展性和文档管理方面的问题。对目前的扩展机制,用户和工具开发商已经发现了一些重要问题,而涌入新 UML 外围的提案可能会加剧这些困难。在文档管理方面,物理元模型和 XMI DTD 规范的加入大幅度地增加了 UML 规范的长度,并使它变得笨拙难用(它现在已有 800 多页了)。下一次 UML 修订将会把物理建模规范拆分为单独的文档。

该 RTF 还进一步建议负责起草 UML 2.0 RFP 的工作组考虑以下问题:

体系结构 使用严格的元模型方法定义一个与 MOF 元 - 元模型严格一致的物理元模型。给出改进的指导方针,以决定哪些部分应该定义在核心语言中,哪些部分应定义在 UML 的外围或标准模型库中。

扩展性 提供同 4 层元模型体系结构一致的扩展机制。提高外围规范的严密程度,使其支持用户对语言定制能力不断增加的要求。

构件 增强基于构件的软件开发的语义和表示法。

关系 提供“精化”和“追踪”依赖关系的基本语义。在多个抽象层次上定义关联的语义。

状态图和活动图 定义独立于状态图语义的活动图语义。在活动图和状态图中提供更随意的并发。详细说明状态机的泛化。

模型管理 重新定义模型和子系统的表示法和语义,以增强对企业体系结构视图的支持。

总体机制 定义一种模型版本管理的机制。详细说明图的互换机制。

体系结构的十字路口:是雕刻还是糊泥巴?

在 UML 1.3 最终报告中就体系结构问题强调指出: UML 正在靠近 OMG 体系结构的十字路口。 OMG 希望通过对体系结构进行改进来完成技术上层结构规范(例如应用框架或商业构件),以补充用于进程间通信和分布式操作系统服务的 CORBA 底层结构。虽然 CORBA IDL 对描述分布式计算底层结构特别有效,它可以用来刻画与界面关联的操作,但却不能用来定义方法、用况、协作、状态机、工作流以及通常与实际商业构件相关的各种关系。

因为 UML 允许用户定义 IDL 所缺乏的语义,所以可以用 UML 来补充 IDL 。(用 UML 完全代替 CORBA IDL 对大多数 OMG 成员而言变化太剧烈。)然而在这种情况下,对那些想用关系和行为升级 IDL 结构化规范的人而言, UML 将面临如下的挑战:

学习的曲折性 UML 是一种通用的建模语言,允许全面的语义表达。但尽管其基本的语言部分很容易掌握,更深层次的内容却需要足够多的时间去学习。

语义臃肿 作为一种通用的建模语言, UML 的复杂性和庞大是不可避免的,但其中也包含了大量词义模糊、语义贫乏的标准元素。

轻量级的可扩展性 UML 目前仅提供轻量级的扩展机制,如构造型、约束和标记。(相比之下元类是一种重量级的扩展机制。)这些机制将受到一些简单扩展的挑战,例如 CORBA IDL 接口的构造型,还将受到来自对扩展有更高需求的压力,诸如应用框架和分布式商业构件。

元模型癖好 由于元模型现在被认为是管理复杂的分布式体系结构的强有力技术,许多建模者都渴望用这种新式的重磅大锤来解决本来用砸核桃的锤子(例如构造型)甚至钉大头针的锤子(例如标准模型库中的一个类)就足以解决的问题。

这些挑战要求 OMG 采用一种雕刻的方法(少即是多)而不是糊泥巴的方法来提炼和扩展 UML 的体系结构。尤其是 OMG 需要采取有效的三层结构来决定哪些语言扩展可以处理为对 UML 核心的修订,哪些可以处理为独立的外围,而哪些可以处理为标准模型库。如果这个三层结构运行正常的话,核心部分将保持或提高其完整性,同时允许自然的选择(借助 OMG 过程)来遴选最可行的外围和标准化的模型库。

定义 UML 核心

◇ 北京大学计算机科学技术系 邵维忠 麻志毅蒋严冰 编译

面对 UML 不断增长的系统复杂性和更短的时间限制,新一代的建模者正在致力于消除,而不是增加这个已经很庞大的软件设计标准的复杂性。这是在 2000 年 6 月 15 日第二次国际年会上,《 SOFTWARE DEVELOPMENT 》技术编辑 Roger Smith 在主持完由工业界杰出人物组成的专门小组的圆桌讨论之后得到的结论,并于会后将讨论会的内容组织成本文,发表在《 SOFTWARE DEVELOPMENT 》上。

在第二次 UML 国际年会上,《 SOFTWARE DEVELOPMENT 》技术编辑 Roger Smith 主持了在下列人士之间展开的圆桌讨论,他们是 :Cris Kobryn , OMG UML 修订任务组和 OMG 分析设计平台任务组联合主席; Martin Fowler , Melrose 和 Mass.-based ThouhgtWorks 的首席科学家 ;Scott Ambler , Ronin 国际软件服务咨询公司总裁; Peter Coad , Togethersoft 公司的 CEO 。讨论的焦点是 UML 的变革途径,即 UML 的核心是什么,或者说应该是什么,以及如何来扩展它。

SD(software development): Kobryn ,什么是 UML 核心?我们可以怎样扩展它?

Cris Kobryn : 你可以将 UML 的核心看做实质的 UML ,它可以用来对 89% 的普通问题建模。该核心可以在元模型层次上用元类或其他具有丰富语义的元实体(相对于具有贫乏语义的元实体而言)来定义。

任何优秀的设计者的设想都是:下一代语言应该从这种语言中精简出来,而不是向其中添加。就是说,当没有东西可添加或者可删除的时候,设计就做完了。

我们对 2.0 发布版承诺的关键部分是 : 一个精简的核心,加强可定制性,以及改善对基于构件的开发(比如 EJB 、 CORBA 和 COM+ )的支持。特别是 2.0 发布版将从体系结构上精简核心,并使之与其他关于元数据集成和储存的 OMG 规范(例如元对象设施 MOF )更加一致。

此外,对模型管理的支持将有所改进,包括辅助分层、多视点和构件框架。目前的共识是,模型版本管理不属于新版 UML 的范围。版本和图的交换应该由 OMG 的另一个结构规范来处理,叫做 XMI (即 XML Metadata Interchange 格式规范,是一个通过 Internet 进行对象数据交换的标准协议)。 XMI 不但可以用来交换模型语义,还可以用来交换模型图。

开发商们对修订会支持到什么程度?很显然建模者希望 UML 易学易用, UML 的复杂性使他们晕头转向,他们指出了很多 UML 的错误和使用中出现的问题,其中许多都超出了微小修订的范围。用户因为缺少工具支持而经常混淆工具带来的局限和 UML 规范本身的局限,这使得他们很难明智地、准确地批评 UML 。 UML 开发应该是市场驱动的,如果用户要求支持 UML 1.3 、 1.4 或 2.0 ,开发商就应该提供。

Scott Ambler: 两天前,我和这里的 Norm Kerth 和 Neil Pitman 在“ UML 世界”的一个为期一天的实习班上一起工作,这是我和 Norm 第三次在这种实习班上工作,有件事引起了我的注意。今年参与的每个人几乎都做了同一件事:他们用了 Use Case 、顺序图和类图。此后另一个组做了活动图,但那是仅有的不同。而在 1999 年 UML 国际会议上,我和 Norm 教了同样的实习班,使用同样的笔记、同样的讲演,但是那些小组所用的方法要多得多,有些甚至超出了 UML 的界限。有人使用数据建模,还有人使用屏幕模仿。但是今年没有人做屏幕模仿。这些人都是职业的软件开发者,很有经验,也知道自己在做什么,但他们没有想要超出 UML 的范围。

Kobryn : Ambler ,他们做了一些元模型吗?

Ambler :没有,那正是问题所在。哪怕他们只做了元模型建模,事情也就好办了。学生们也反映到,他们需要一些方法、步骤或是一些关于如何使用 UML 的指导。客观地说, UML 并不是一种方法论或一种过程,但他们的意见恰恰显示了他们赞成所有能真正符合现实世界发展的软件过程。注意我没有提到 Rational 统一过程( RUP )。

所以我打算持相反的观点,并且要争辩说 UML 还不够复杂。根据我作为现实世界开发者的经验来看, UML 并不充分。我经常问:为了实际交付应用软件,我需要做什么?当我问自己这个问题时,我很快发现 UML 遗漏了一些可以提供的东西,例如数据模型或用户界面模型,为了交付软件,我几乎每天都要做这些东西。我需要理解用户界面,而且要知道如何存储数据。在 UML 中我没有看到这些东西。或许 Kobryn 可以帮助在 UML 2.0 中注意这一点。

我们也学着对适当的工作采用适当的工具,这些工具可以是白板或纸。而有的时候,我喜欢选用丰满的 CASE 工具,好的 CASE 工具可以简化对 UML 的应用,如果你精通它的使用方式的话。

SD : UML 是否应该考虑界面的设计或人类工程学因素?

Peter Coad : 在我的印象中, Ambler 在很多文献和演讲中提倡这样的观点 :UML 是一种建模语言,人们可能还要做其他一些事来勾勒出它的结构,例如描绘用户界面设计等。 Jared Spool 的《网站可用性:设计者指南》就是这方面的一部经典著作,它将用户界面设计和诸如类图、交互图、特征表之类的东西结合起来。但最终将在 UML 模型中放进这些商业的东西和用户界面吗?这必须是 UML 的一部分吗?我看不太合适,虽然这是好的工程实践的一部分。

Ambler : 我认为 UML 应该能够描述窗口导航图或用户界面流图。不管怎样,我们在一些 Web 扩展中看到了这些。如果能将它提取为用户界面元素而不是 Web 用户界面元素,那就更好了。说实在地,我很怀疑 Web 外围的必要性。

Martin Fowler : 我不同意这样的观点。如果不同的人用不相容的方法做相同的事,那应该在把它放到 UML 之前去统一它。我并没有看到在用户界面设计方面已经有这方面的尝试。许多有趣的用户界面设计思想正在浮现,但我不认为已经达到可以将其拉到标准中的程度。有些东西虽然重要,但并不意味着它必须进入 UML 核心。

SD : Fowler ,我确信你对此有独到的观点,因为你曾说过你全然没有高估 UML 工具。你说过你可以用黑板和粉笔做正规的建模。但是否 UML 正变得太复杂而不适合那样做呢?

Fowler : UML 肯定需要简化。不过因为各种技术和人为的因素,简化工作并不是很容易。现在 UML 之所以会庞大到这种地步,正是因为一帮方法学家都将他们喜欢的技术加进来。

而当 UML 日渐成熟,并不是所有好的技术都要成为其中的一部分, UML 的威力在于它允许人们做类似的事情并用通用的表示方法来表达。如果人们想做一些不同的东西,例如做 Doug Rosenberg 的健壮图,我认为不应该把它们并入 UML 。

即使这样 UML 还是有些庞大, Kobryn 有一项困难的工作摆在面前,那就是要想方设法将核心缩减到最小。因此,我尝试着提出一个核心。我在实践中发现,有三种技术应该包含在 UML 内: Use Case 、类图和交互图,剩下的可以进入某种扩展机制。这样我将其中很多东西都去掉了,不过还有更多需要去除的东西,在 Use Case 中真正有用的部分是它的文本描述,而 Use Case 图虽然使用起来很方便,但不是必需的,去掉 Use Case 图的 Use Case 严谨而简洁。

有很多符号是为特殊功用而设的,但哪些表示法能满足大多数的需求?我想它们应该是类、属性、操作、关联和泛化。我认为不大应该将交互图去掉,顺序图也用得比较广泛,或许可以去掉协作图,因为目前对它的使用并不多,虽然我也觉得这样有点激进。最后就剩下 Use Case 的标题、类图和顺序图,足够小了吧?

SD : 但是 Use Case 图很流行,有些人觉得 Use Case 图是沟通管理者和最终用户的最好方式 , 对他们来说该怎么办呢?

Fowler : 我不是说你只使用我提出的核心,你可以使用任何对你有帮助的技术。实际上,我甚至没有说你应该只用 UML 。但当我考虑 UML 核心的时候,我得问,“什么是我能让人轻松接受建模思想的最小数量?”在进行实际建模时并不会只使用核心,我自己也不会。但那是我提议的最低限度。

SD : 工具开发商们不应该支持比最低限度更多的内容吗?

Fowler : 每一个开发商都应该支持核心和不同的 UML 扩展片段。而购买者应该能将它们分出层次,并且知道自己需要什么。

Kobryn : 将核心与其扩展部分分开并不像人们所想像的那么困难。 UML 元模型的结构良好,虽然其中有缺陷,但要看怎么说。比如开发商完全或部分地遵守基础语义、行为语义和状态机了吗?他们将语义和表示法分开了吗?有很多这一类的问题,但开发商并不认为自己应该这么做,而用户也没有要求他们这么做。

Coad : 为争取更多的人使用 UML , OMG 可以提供预定义外围的方式。而 UML 的用户也应该学会选择自己想要的东西,即有较强的能力来定制他们的工具。

SD : 我们为什么需要一个 UML 核心?为什么不把实践这个最重要的东西摆在首位,或者让市场决定呢?

Kobryn: 自然选择是可以决定哪些在核心里面,哪些不在,但是我们必须首先处理那些语义贫乏的东西,我的意思是先清理语言本身然后再进行自然选择。此外,因为我们被卷到这个浑身长毛的东西的肠子里,所以一些清理工作必须从体系结构上进行,也要从用户层次上来做。办法就是通过围绕一个核心的若干外围来做这件事,就像 Unix 的内核思想一样。

SD : 如果状态图、活动图等元素不是核心的一部分,工具开发商们会不会找到一种方式,使用他们自己的外围来代替这些元素?

Fowler : 我想状态图等工具上的分歧不是问题,状态图作为核心的扩展,是标准的一部分,如果你想支持状态图,你可以将它作为 UML 标准的一部分来开发。再强调一遍,核心不是整个的 UML ,重要的是选出一小部分。让开发商来做互不兼容的东西,而当不兼容成为问题时, UML 的人就会站出来说:“好,让我们统一吧。”事实上, UML 的崛起就是由于许多人做了一些相互矛盾的事情,而我们统一了它们。

Kobryn : 我同意。 UML 中某些最丰富的语义与状态图和活动图有关,我们当然不会把孩子和洗澡水一起泼出去。状态图和活动图可以放到外围中,或者通过某种规则将其放到定义良好的元模型扩展中。因此,让我们明确一点 : 如果你想遵循 Fowler 和 Coad 建议的原则做一些简单的事情,你可以把这些原则作为依据。但它的定义必须清晰,这样当用户买一个工具的时候可以知道他得到了什么。

SD: 各位愿意看到 UML 2.0 发布中有些什么呢?

Ambler: 我对 OMG 加入更多的软件工程方法提出异议。我们为什么不首先对我们谈论的这些新的外围设立需求呢?这是我对 OMG 的异议:首先是需求,然后才是设计。

Fowler: 我不觉得 UML 目前需要很多修改。除了它以外还有很多更重要的东西:好的软件设计原则、理解模式、对软件过程的关注等。最主要的是 UML 能在一定程度上解决无聊的争论,那时我们就可以转移到更有趣的东西上。

Coad: 我发现以小组的方式进行工作能够导致复杂性的瓦解。在 17 世纪, Blaise Pascal 这样写道:“我应该写更短的信,但我没时间。”或许现在就是考虑更短书信格式的时候了,这对我们的工作会有所帮助。

Kobryn: 如果有团体的支持,核心的实现不是目前需要解决的主要问题。现在应该注意需求,要在几个月内将需求文档定稿,时间已经相当紧迫。它不是指令性的,也不能由任何一个开发商支配,我鼓励每个人都去评论它。我希望已经唤起了这样的公众意识: UML 并不一定是你在自己喜欢的建模工具中所实践的那样,问一问你的开发商,至少搞清楚它们的产品是否遵守 UML 1.1 、 1.3 或其他版本。最后,我想鼓励你直接参与,把你在 RTF 划定的范围内不能建模的特殊问题发送给我,我会关注它们。

UML 2.0 之路:快车道还是绕行?

北京大学计算机科学技术系 麻志毅蒋严冰 编译

Cris Kobryn Chief Technologist, Telelogic

UML 已经被迅速和广泛地接受,但 UML 1.X 系列修订版从来没有离开过批评。在 2000 年 6 月国际年会的讨论中,指出了它的很多缺点。这之后 UML 又经历了几个里程碑, 2000 年 9 月, OMG 发布了 3 个 UML 2.0 提案需求,详述了对下一次重大修订的 RFP 。今年 2 月, UML 1.4 修订任务组提交了 UML 1.4 规范的最终草案。对 UML 2.0 的重大修订到底进行得如何? Cris Kobryn 于 2001 年 4 月在《 SOFTWARE DEVELOPMENT 》上发表了本文,分析了 UML 1.4 的改进以及 UML 2.0 的修订状况。

最后的 1.X 系列

在历经 17 个月的讨论和解决问题之后,第二个 UML 修订任务组在今年 2 月结束了它的工作,并提交了一份名为《 OMG UML V1.4: 修订和建议》的报告。

UML 1.4 中最有意义变化的是对外围和扩展机制、构件和制品以及协作和模式方面所做的改动。对外围和扩展机制结构的修订是为了使用户和开发商能正确、有效地定制 UML; 修正构件建模结构是针对当前基于构件开发的需求 ; 修正协作建模结构则是为了改善语义组织并支持从属协作。

对扩展机制所做的改进包括用图形表示法和表格来描述构造型和标记值定义,对这些表示法的更新是为了支持大而复杂的外围,比如与企业分布式对象计算和企业系统集成 RFP 的提议相关的那些外围。图 1 定义了一个构造型《 Persistent 》,它可以用来详细说明其实例能永久地存储在数据库中的类。《 Persistent 》基于 UML 元模型中的元类 Class ,包括三个用于 Table 、 DB 和 isContainer 的标记定义(同性质列表中的性质相对比)。表 1 则显示了同一个构 造型及其中一个标记定义( Table )的表格形式。

提议对构件的修订则致力于允许建模者在软件生命周期的早期阶段详细说明构件,并且增强了对 EJB 和 COM+ 的支持。在修订的版本中可以更容易地区分可执行构件(如 EJB Entity Bean 、 Com Objects 等)和实现它们的制品(如 EJB JAR 文件、 DLL 等)。图 2 显示了一个构件图示例,其中包括构件 ShoppingCart 、 ShoppingSession 和 Catalog 。有意思的是 ShoppingCart 还包括三个寄居在其中的类: ShoppingCart 、 ShoppingCartPK (“ PK ”表示主关键字)和 ShoppingCartInfo 。 ShoppingCart 类用关键词《 focus 》标记,表明它是类的构造型《 focus 》的实例。同样地,在 ShoppingCartPK 和 ShoppingCartInfo 上的关键字《 auxiliary 》表明它们都是构造型《 auxiliary 》的实例,《 auxiliary 》也是类的构造型。构造型《 focus 》和《 auxiliary 》通常成对地使用,用以区别定义核心逻辑或控制流的类(例如中心类)和使用次要的逻辑或控制流的那些类(例如辅助类)。这些构造型对定义类簇通常很有用,特别是在设计或分析阶段。对构件、模式和框架建模感兴趣的读者,可以参考构件工作组的网页( www.celigent.com/omg/umlrtf )。

UML 1.4 的最终报告曾提到,由于 UML 2.0 RFP 的提交工作已经开始,应该考虑把 UML 1.4 作为 UML 1.X 系列最后的较小修改版。不过有一个例外,那就是集成 UML RFP 行为语义的最终提案,这一计划将在完成 UML 1.4 之后提交 UML 2.0 初稿之前完成。

修正路标

自去年举行的 UML WORLD 2000 讨论会以来,在 UML 的演化上最令人关注的发展之一,就是 OMG 决定将 UML 2.0 的工作划分为几个互补的、在系统体系结构上密切合作的 RFP :底层结构 RFP 、上层结构 RFP 和对象约束语言( OCL ) RFP 。将需求分类的好处在于使规范成果更加模块化,并能同时进行这些修订。不过这也对维护体系结构的完整性提出更大的挑战,并且会导致更多的集成开销。

1 . UML 2.0 底层结构 RFP

这个 RFP 致力于改进 UML 体系结构基础,包括其核心和扩展机制。其他的 UML 2.0 RTP 将在此基础上对上层结构和相关的设施(例如图形交互设施)进行修订。这个 RFP 的需求包括:在体系结构上改进与其他 OMG 建模规范的接口,例如 MOF 和 XMI; 重新构造该语言,使其容易理解、实现和扩展,当然仍保留已被证实的语义和表示法结构 ; 提供一级扩展机制(特别是元类)以及与元模型体系结构一致的外围。

2 . UML 2.0 上层结构 RFP

该提案要求改善对软件开发最优方法的支持,例如基于构件的开发、企业过程建模、体系结构建模和可执行的模型。它要求对很多体系结构和行为建模构造进行修订,特别是在以下领域:

● 改进对基于构件开发的支持,包括构件装配和运行时替换,能详细描述用于主流构件体系结构(例如: EJB 和 COM+ )的执行容器和外围。

● 增强对运行体系结构的支持(与可执行模型相比),包括对层次结构和动态行为的规范。

● 精化关系语义,包括泛化、关联和依赖关系。

● 改进对行为建模的封装和度量,特别是状态图和交互图。

● 精化与事件管理以及控制和对象流规范相关的活动图语义。

由于上层结构 RFP 在相当大程度上依赖底层结构 RFP ,计划底层结构 RFP 在上层结构 RFP 之前完成。

3 . UML 2.0 对象约束语言 RFP

本 RFP 主要关心与 UML 元模型密切联系的 OCL 元模型的定义。增加了 OCL 实现的精确性和一致性,并且便于在 UML 工具中交换 OCL 约束。尽管底层结构和上层结构 RFP 都可能使用 OCL 描述它们的形式化规则,但它们并不依赖于 OCL RFP 。

就在本文的写作阶段, OMG 又成立了第四个 RFP : UML 2.0 图交换 RFP 。其目的是在建模工具之间交互模型图,也包括布局。( UML 1.4 模型交换规范是 UML 1.4 的一部分,但它只描述了语义而没有图交换。)

是快车道还是绕行?

虽然 UML 1.X 系列的发展势头渐减, UML 2.0 正在崛起,但现在预测 UML 2.0 的提交过程是否会进展迅速还为时过早。标准化的过程是正式而漫长的,它需要寻求不同范围的技术和商业需求的融合,没有理由认为 UML 2.0 的提交过程将是一个例外。除了前面已经提到的关于集成多个 RFP 的问题之外,提交者还会遇到很多其他的挑战,其中包括:

● 在体系结构上与其他的 OMG 元模型体系结构的协作性 像 UML 一样, MOF 和 XMI 也在不断改进,因此应该注意修订周期中的协调问题。

● 与元模型相对的外围 在 UML 2.0 中,一级扩展机制(在用户层次上的元类)的引入,将进一步检验用于描述平台和领域定制语言的方法,这些方法多种多样,而且都很具竞争力。

● 体系结构建模 尽管都认为体系结构是个很好的概念,应该在这方面多做些工作,但对于它是什么以及应该怎样描述它,在工业上达成的一致意见并不多。

● 行为语义的集成性 没有明确将最终提交版与 UML RF

   
110   次浏览       67 次
 
相关工具

文档生成器(DocGenerator)
代码工程师 Code Engineer
模型检查器 Checker
WebEA
自动建模器(AutoModeler)
 
相关文章

ASPICE 4.0 过程指南
采用SysML对FPGA逻辑单元进行建模(对应到VHDL代码)
DoDAF建模图例(EA+UPDM)
EA集成第三方工具:Polarion、JIRA、AzureDevOps
UML建模指南(建模工具iSpace)
 
相关课程

ASPICE4.0核心开发过程指南
使用NML进行系统分析与建模
基于UML和EA进行系统分析设计
业务建模与业务分析
基于SysML和EA进行系统设计与建模

最新活动计划
UAF架构体系与实践 7-23[北京]
SysML和EA系统设计与建模 7-16[深圳]
Spec 驱动开发(SDD)实战 7-28[北京]
AI辅助软件测试方法与实践 7-31[在线]
AI智能体开发技术实践 8-6[上海]
基于UML和EA系统分析设计 8-20[上海]
 
 
最新文章
SysML图解
UAF 过程指南
代码逆向模型:QT插件Demo
基于企业架构的企业数字化指南
采用SysML对FPGA逻辑单元进行建模
DoDAF建模图例(EA+UPDM)
硬件模型:智驾域控制器(建模工具EA)
UML建模指南(建模工具iSpace)
更多...   
MBSE工具
MBSE平台
建模工具 EA
模型库-Model Center
需求管理-ReqManager
自动建模-Modeler
多级仿真-Sys Simulator
代码工程-Code Engineer
文档生成器-DocGenerator
更多...   
成功案例
某汽车整车企业 MBSE工具链和咨询服务
航天三院某研究所 建模工具、模型库和咨询
零跑汽车 建模工具EA及服务
赛力斯 MBSE工具链和培训服务
高合汽车研发部门 建模工具EA、WebEA、
广汽研究院 SysML+EA+软件分析设计
高合汽车研发部门 建模工具EA、WebEA、
国汽智联 建模工具EA、模型库、WebEA
更多...