速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

UML2.5 值得期待吗

  • 2013-12-17
  • 本文字数:2301 字

    阅读完需:约 8 分钟

UML2.5 的 Beta 版自 2012 年底发布以来在开发社区中引起了不少争议,其正式版本预计会在最近发布。Scott W. Ambler认为,UML 虽然已经成为业界的通用标准,但是其实际的存在价值和意义并不是很高。

Scott 是一位有着三十多年开发经验的开发者和布道师,他编写了不少 UML 的著作,包括《UML 2.0 Style》(2005)、《The Object Primer》(2004)、以及荣获 Jolt 奖的“生产力奖”的《Building Object Applications that Work》(1997)。他认为尽管 OMG 已经在营销 UML 上取得了成功,但它在生产一些人们觉得有用的产品上变得不尽如人意了。

从 1996 年开始,对象管理组织(OMG)的统一建模语言(UML)标准已经成为 IT 界内的普遍标准。UML 对我们行业的影响令人印象深刻——有数十种 UML 的书籍被出版、数以千计的博客和文章被发表、还有成千上万的的培训课程因此开展——其中有些是我开办的。而现在 UML v2.5 版本即将发布,但我甚至不确定我是否关心(它的发布)。

对于 UML 的发展历史,Scott 做了简要总结:

UML 最初由 Rational Software 公司所开发,现在则是 IBM 公司(我的前任雇主)的一个部门分支。1996 年时,UML 处于“The Three Amigos”(三个朋友)的领导之下,即 Jim Rumbaugh、Grady Booch、和 Ivar Jacobson。UML 版本 1.0 在 1997 年的一月被提出,并在那年的晚些时候被 OMG 正式通过。此后,UML 已经经历了多次版本修改,如 2005 年发布的 UML 2.0 版以及最近于 2001 年 8 月发布的 UML 2.4.1 版本。一个“处理中版本”的 UML 2.5 已经在 2012 年的十月被发布了,并且预计不久将会正式发布。我猜测正式版本将在下次 OML 技术会议中被发布,此次会议将在十二月于 Santa Clara(圣克拉拉)举行。

虽然 Scott 丝毫不怀疑每个参与发布 UML 2.5 版本的人都做了大量的工作,但他仍需要努力寻找一个理由来对这个版本产生兴趣。首先就是 UML 的简化,Scott 指出,UML 2.5 的目标是简化并阐明一个规范文档来减少实施中的问题并且促进工具间的互用性。由于曾经因为 UML 2.0 版本的复杂性而产生过显著的反对,因此简化规范是朝着正确方向迈出的一步。

UML 中的复杂性之一的表现是增加了图表,似乎这对于大多数使用者来说几乎没有任何价值。举个例子,你有没有见过,更别说用过组合结构图(composite structure)、交互概览图(interaction overview)或者通信图(communication )?你是不是甚至不知道我在说的是什么?好消息是在 UML 2.5 版中,语言本身基本保持不变。然而新的图表已经被增加到总共 19 个了(由 UML 2.0 中的 16 个图)。

新增的图分别是:

  • 模型图(Model)。这是包图中的一个特例(类似于自由形式的架构图)。
  • 表现形式图(Manifestation)。是部署图或者组件图的一个特例,展示了组件在物理解决方案中是如何体现的。
  • 网络架构图(Network Architecture)。这实际上是一个高层次的部署图。

但是,令 Scott 失望的是,依然没有特定用于用户界面或者数据库开发的图。

UML 2.5 的第二个复杂之处,至少对于工具厂商来说,是规范本身在语义方面的不一致。UML 2.5 版本发布的主要重点将是清理规范,也就是理论上说,应该使工具的互通性变得更好。

由于 SysML 空间中的一些意外,自从计算机辅助软件工程(CASE)工具在 80 年代末期问世后,工具的互通性一直维持在“构架(marchitecture-- marketing 和 architecture 的复合词)”水平上。我会让基于 UML 模型驱动架构(MDA)工具的市场份额为自己说话。对于我来说,工具互通性的底线意味着我可以在工具 A 中编辑一个模型,将其导出到工具 B 中,并在那里更新,然后再将其导入回工具 A 中,并且这过程中不会有任何信息的损失。此外,工具 B 并不一定得是一个建模工具。我真正需要的是在我的整个工具包中都能达到这种级别的互通性,而且无论我是用于捕捉高层次的需求还是一路下降到底层运行代码中都应该可以满足。不过更好的是工具能够真正做到无缝的即插即用并且提供一个功能齐全的传递解决方案的堆栈。

Scott 指出,除了在那种定义非常良好的,如在典型要用到 SysML 的地方之外,他怀疑到底能不能理解有意义建模工具的互通性。互通性的主要挑战并不是技术性质的,而是政治上的挑战。

建模工具的厂商,无论他们的营销主张是什么,都不愿去生产与其它工具兼容的很好的工具,因为这对他们来说也是失去顾客群的方式之一。更糟糕的是,甚至有一些厂商提供了很多甚至不与自身兼容互通的工具,更别说与其它厂商的产品互通了。因此建模工具的互通性已经“指日可待”了十多年,并且我怀疑它很长一段时间都可能会停在那了。

为了支持自己的观点,Scott 之前针对 UML 的实际意义做了调查:

我并不是唯一一个对 UML 感到厌倦不堪的人。在 2013 年 10 月的最后一周里,我进行了一个小型的调查来探索出人们是如何进行建模的,包括同时使用 UML 和业务流程建模与标注(BPMN)的人。此次调查总共有 162 个回应,并且调查的详情可以免费下载。每位受访者都听说过 UML(如同我之前说的,UML 确实是无处不在的),但是有 26% 的人从来没听说过 BPMN。只有 13% 的人认为 UML 是非常有用的,并且 45% 的人表示 UML 是有用的,不过他们如果没有 UML 也可以完成自己的任务。另外 20% 的人表示 UML 带来的麻烦比它的价值还要多,并且 22% 的人表示他们根本不用 UML(尽管这些人里 10% 的人表示他们曾在过去的一个月中看过一个 UML 图)。总之,OMG 已经非常成功的推广了 UML,但并没有成功的生产出人们觉得有用的东西。

Scott 认为,也许有一天,基于 UML 的工具将真正提供长期有保证的更高水平的抽象层,从而使软件开发的生产力产生飞跃。但在这个阶段,他怀疑任何这种类型的生产力的提高都将来自于一个完全不同的方向。

2013-12-17 05:334732
用户头像

发布了 501 篇内容, 共 257.1 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

Test

bobcatzoo

在C++中,你真的会用new吗?

华为云开发者联盟

c++ 内存 new new operator operator new

推荐一个MySQL宝藏网站

Simon

MySQL 网站

UC生态系统APP开发详情

泪目!跳槽太不容易,蚂蚁金服三轮面试,四个小时灵魂拷问

Java 面试

百度关于EMP的探索:落地生产可用的微前端架构

百度Geek说

2021Android高级进阶学习资料,已拿意向书!

欢喜学安卓

android 程序员 面试 移动开发

2021Android高级面试题及答案,Android篇

欢喜学安卓

android 程序员 面试 移动开发

千亿级数据迁移 mongodb 成本节省及性能优化实践(附性能对比质疑解答)

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 架构 分布式数据库mongodb

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

Java 编程 程序员 架构 面试

浪潮云说丨浪潮云智能对话,想你所想,无限畅聊

基于 BDD 理论的 Nebula 集成测试框架重构(下篇)

NebulaGraph

分布式数据库 测试 图数据库 BDD

anyRTC视频连麦demo上线啦!

anyRTC开发者

音视频 WebRTC 直播 视频直播 直播连麦

Dapr:我不是Service Mesh!我只是长得很像

中原银行

云原生 Service Mesh istio Multi-Architecture dapr

内蒙古公安重点人员管控研判平台建设方案

区块链技术如何赋能医学成像?

CECBC

智安小区建设,智慧安防小区改造建设方案

7月日更,红心向党,党员入驻,即送马克杯~

InfoQ写作社区官方

7月日更 热门活动

我看 JAVA 之 线程同步(下)

awen

Java synchronized JOL 锁升级

扩展ADO.net实现对象化CRUD(.net core/framework)

Spook

.net ORM ado

GaussDB(for Redis)揭秘:Redis存算分离架构最全解析

华为云开发者联盟

redis 华为云 GaussDB(for Redis) 存算分离架构 中国系统架构师大会SACC

百度工程师手把手教你实现代码规范检测工具

百度开发者中心

百度 代码规范

圆梦腾讯之路!6面阿里、5面字节、4面腾讯,终斩腾讯Offer

Java 编程 架构 面试

秀出天际的SpringBoot笔记,让开发像搭积木一样简单

ONLYOFFICE-基本组成及工作原理

一个需求

onlyoffice

【全球软件大会】华为前端工程师分享:华为云官网的智能化实践

华为云开发者联盟

算法 智能化 华为云官网 全球软件大会 内容分发

测量电压调节器输出纹波和开关瞬变的方法

不脱发的程序猿

硬件研发 输出纹波测量 开关瞬变测量 电源测试 测量电压调节器

AI框架中图层IR的分析

华为云开发者联盟

mindspore IR

react native实践总结与思考

碗盆

android 跨平台 React Native

趣谈Java类加载器

程序猿阿星

Java ClassLoader 类加载器

项目案例--吃货联盟

加百利

Java 项目 案例 6月日更

UML2.5值得期待吗_架构_崔康_InfoQ精选文章