《UML三大“硬伤”》这篇高展先生2002年发表在程序员杂志第5期的文章曾引起UML支持者、反对者、中立者之间的激烈辩论,这恰恰也是我旧事重提的原因。我现在和大家要讨论的是UML之死。
是的,草木会败,人会苍老,太阳会燃尽……甚至是宇宙在若干亿年后也会消失不见,那么作为一门建模语言,UML也终究会死。
据《论语 先进第十一》记载,孔子曾对子路说“未知生,焉知死?”,既然现在我们讨论UML之死,那么我们先从UML的出现说起。
20世纪中期计算机技术快速推动着科技的发展,但随着计算机硬件性价比的逐步提高,所需的软件在成本、性能等方面很难满足要求。到了20世纪60年代末,落后的软件生产方式已经成为制约计算机发展的“瓶颈”,亦即出现了大家所熟知的“软件危机”。
为了解决“软件危机”引发的一系列问题,一些更好的软件生产方法和语言出现了,其中20世纪70年代出现的面向对象程序设计语言虽然开始并未引起多少人的重视,但最终对软件工程领域做的贡献大家有目共睹。20世纪80年代出现了一些面向对象的建模语言,经过十余年的知识沉淀,在Booch、Rumbaugh、jacobson三人的努力下于1996年发布了UML(Unified Modeling Language)这个一年后被OMG采纳为基于面向对象技术的标准建模语言。
从UML的诞生我们可以看出,UML是在面向对象技术环境下生根发芽的。现在是2014年,UML已经足足发展了18年。如果把面向对象技术和UML比作人,那么OO早已是不惑之年,正奔走在通往知天命的路上;UML则在现代已是成年人,在孔子时代也马上弱冠了。现在UML具体是个什么样子呢?我想先从一个岗位来说——系统架构设计师。
最近十年“首席架构师”、“软件架构师”等一些舶来词越来越受大家的推崇,甚至比尔盖茨对自己最满意的称呼并非什么世界首富而是“首席软件架构师”。就这样“系统架构设计师”自然而然地进入我国大门并被纳入国家水平资格认证体系中,成为高大上的象征。如果面试程序员应聘者的话问他职业规划的话,答案若非“称为架构师”大家会感到非常意外。作者也是随着大流在2011年也考了个“系统架构设计师”这个软件高级资格证书。
那么我们不禁要问,系统架构设计师都做些什么?这个问题经常会成为论坛、群里面比较热的话题,大家的回答也往往很默契,那就是写写文档、画画图。
好吧,据说架构师就是做这些工作,至少听说很多大型软件公司都有架构组专门来写文档、画图。写文档、画图的目的是什么呢?当然是描述系统的框架、网络架构、方案设计等这些内容,用一个比较专业的词语就是“系统建模”,而其中比较常用的工具就是UML。比如针对系统使用者或者其它角色和系统进行交互的行为我们可以用用例图结合说明来描述。建模主要是起到承上启下的作用,上接客户下接开发人员,让客户的需求能顺利体现在开发出来的产品上。听起来确实蛮不错的,起到桥梁的作用,可实际操作起来并非那么完美。试问,有多少客户懂得UML呢?甚至我要问,有多少开发人员懂得UML呢?好吧,怀疑产生了。
确确实实,UML的普及存在很多问题。一来很多客户不懂UML但是又希望开发商能给出比较上档次的方案文档,另一方面开发人员难以忍受这些文档先行的事情发生,于是UML就这么被动地在夹缝里挣扎着。幸运的是UML并没有被折腾跨,而是一步步成长起来,IBM等那些软件巨头的开发体系就是佐证。所以UML现在不会死,刚成为成年人嘛,以后是青壮年时期。也就是说,UML在未来10-20年将大展身手,不怕你函数式编程的复苏,也不用担心革面向对象的命的技术出现。
那么以后呢?面向对象会不会死?基于面向对象技术的UML会不会接着死?答案无疑是肯定的。文章开头我已经说过,任何事物都有其固有的生命周期,但面向对象现在很成熟,而人类在计算机软件发展方面很长时间没有颠覆式创新了。所以我们可以很乐观地估计,面向对象会继续为软件工程做着贡献,至少20年内面向对象不会死,那么UML也至少会存活20年之久。
那么UML什么时候会真的死掉,这才是我们文章的议题?或许是面向对象技术死亡的那一刻起吧,谁知道呢?我只知道UML终究会死,到底何时死掉我一无所知。人向来对未知充满恐惧,而对UML的何时死亡我却充满兴趣。我所能想到的是,我孩子的孩子某天在我眼前空气中画了几个横竖线然后骄傲地告诉我:“爷爷、爷爷,我给您画出个好玩的游戏您快看看?”。
作者:忆辛,2014年11月27日写于羊城
相关推荐
如果有人以“他会死”(没错,这确实是事实)来攻击一个人的人品,您觉得这样的攻击能够服人吗?《程序员》杂志有一篇《UML三大硬伤》(以下简称《程》文)。我们认为,《程》文作者在文中把建模语言,方法,工具,...
死亡项目。 我接管的任何人! AVR 8位RISC。 工具箱-类似于UML的样式。 以UML,类,属性和属性启动项目。 扫描XXXdef.inc文件,获取整数向量。 添加注释,源代码。 导出为HTML和ASM文件。 Java。
不只很多的设计被嘲笑为 "Big Up Front Design "[译注1],连很多技术像UML、富有弹性的程序架构 (framework),甚至连模式 (pattern) 都不受重视,或是近似忽略了。事实上,XP内含很多设计理念,但是它与现有的软件...
3.1 UML设计图 3.2 绘制网格 3.2 标记网格功能属性 3.3 地图数据的序列化与反序列化 4)核心功能实现 4.1 基础类 4.2 动画播放 4.3 寻路算法 4.4 到达目标点判断 5)怪物 5.1 UML设计图 5.2 怪物类实现 5.3 怪物...
SSNVä.R°º‚µú–A7¾\Jx‡}~®b*{µ*WÜÆ.ñ².¯.&ºä"ª†=G.Q›>` ÇÏDD».kÚE4Ïwröì?ˆŸ=ºt.....
"以及 "小国寡民……邻国相望,鸡犬之声相闻,民至老死,不相往来"。 第13页/共30页 Java面向对象程序设计杨晓燕面向对象基本原则和模式全文共30页,当前为第13页。 开放-封闭原则 所谓"开放-封闭原则"(Open-Closed...
传智播客版贪吃蛇游戏、俄罗斯方块、JNI、UML、FTP服务器架设视频教程 下载地址:http://www.verycd.com/topics/249195/ 张孝祥java系列:java基础、java高级、javascript、javaweb视频教程 下载地址:...
UML系统分析与设计作业,贪吃蛇游戏,只有一条蛇~
4、关于“关卡“ 我想的是,数据库记录玩家当前的玩的关卡,重新开游戏的时候,只能从当前关卡重头开始,关卡会显示在游戏界面上,就和《消灭病毒》很像,我当时是直接把
我们使用UML建模语言工具来设计应用程序。 移动应用程序的技术架构使用各种技术和系统开发工具,例如用于Web应用程序的PHP编程语言,MySQL数据库管理系统和Android Studio移动应用程序开发平台。
操作系统中的死琐,信号量等等 数据结构的树,散列等等 再准备点例如什么是光电效应、请用一阶逻辑谓词描述Euclidean第5定理、中心极限定理得意义、什么是算法等 无环有向简单图最多多少条边。 改错 ×××(int a) { ...
事实上,把我砸死了。 我的答案将不会改变。” Invierno皱着眉,退了一步。“你必须非常爱她,”他说,不是很冷漠。” 来自 Emacs的主模式。 快速指南 使用Mx package-install 当前缓冲区Mx plantuml-mode启用...
UML真的已死?我并不这么认为。在本文中,我将探索在敏捷时代,建模方法依然适用并且扮演关键角色的所在。尤其在开发规模扩张到多个团队后,对整个系统的“Big Picture”达成共识将变得非常关键。虽然代码表现了事实...
状态命令行界面用于TUI客户端工具用Go编写的TUI json编辑器和查看器用于创建JSON对象的小型实用程序生成源代码图像 -Google翻译CLI 用Go语言编写的文件管理器使用模糊查找器杀死特定过程使用编辑器复制多个文件将xml...
项目符号-查找并杀死N + 1个查询和未使用的快速加载的宝石 Bundler-audit-Bundler的补丁程序级别验证 更快-有助于Ruby更快运转的宝石 RailRoady-帮助您生成Rails 3/4/5模型(ActiveRecord,Mongoid,Datamapper)和...
UML 图(类和序列) Source - 项目源代码(.java 文件)和 JUnit 测试文件 工作量 查看 -> & 控制器 -> & 节点按钮 -> 植物 -> & & MoneyPlant -> & & NPC -> 僵尸 -> 板 -> & 初始屏幕 -> InitialScreenController ...
实验室目的创建基于UML(统一建模语言)描述的面向对象的应用程序,并基于迭代和增量过程在JAVA中实现。 学生每4-5人一组,并根据给定的时间表准备文件。 文件必须以指定的格式提交,通常是纸质副本。任务说明板条箱...