《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(统一建模语言)是一种强大的工具,用于可视化、构建和文档化软件系统。本文将深入探讨如何使用UML对塔防游戏进行建模,包括用例图、类图、活动图和序列图的构建,以帮助理解游戏的各个组成...
UML设计模式笔试题 UML 设计模式笔试题是 Java 程序设计的重要组成部分,本文档涵盖了 UML 设计模式、Java 基础知识、多线程编程、Struts2 框架、MVC 模式、设计模式等多方面的知识点。 一、选择题 1. UML 设计...
- 分析并发和同步状态,确保所有状态可达且无死端状态。 7. **活动图(Activity Diagram)**: - 识别业务对象,分配泳道表示工作流程。 - 定义工作流起始和结束状态,明确流程边界。 - 将活动和动作表示为活动...
- **绘制和验证状态图**:确保所有状态可达,无死状态。 7. **活动图的建立**: - **确定业务对象**:为业务流程涉及的对象分配泳道。 - **定义起始和结束状态**:设定流程边界。 - **构建活动状态**:用活动和...
在设计并行测试系统时,需要解决多个测试任务可能会竞争共享资源的问题,这些问题可能会导致死锁、饿死等错误的发生,且问题难以复现。为了解决这些问题,UML提供了用例模型,它是并行测试系统需求分析阶段的首要...
### 设计已死——Extreme Programming中的设计理念探讨 #### 一、引言 在软件开发领域,尤其是对于那些初次接触极限编程(Extreme Programming, XP)的人来说,“设计已死”这一论断常常令人困惑甚至恐慌。很多人...
而在这个过程中,UML建模和流程图的作用不容忽视,它们不仅为团队提供了一种沟通和规划的工具,还帮助团队成员更清晰地理解游戏机制,以及如何在有限的资源下更好地实现游戏设计。 团队协作的重要性在《打死小偷》...
死亡项目。 我接管的任何人! AVR 8位RISC。 工具箱-类似于UML的样式。 以UML,类,属性和属性启动项目。 扫描XXXdef.inc文件,获取整数向量。 添加注释,源代码。 导出为HTML和ASM文件。 Java。
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 怪物...
1. **标记清除(Mark and Sweep)**:这是最简单的GC算法之一,分为两个阶段。首先标记所有需要回收的对象,然后清理这些被标记的对象。 2. **复制算法(Copying)**:将内存空间划分为两个相等的部分,每次只使用...
SSNVä.R°º‚µú–A7¾\Jx‡}~®b*{µ*WÜÆ.ñ².¯.&ºä"ª†=G.Q›>` ÇÏDD».kÚE4Ïwröì?ˆŸ=ºt.....
《贪吃蛇游戏的UML系统分析与设计》 贪吃蛇游戏,作为一个经典且深受玩家喜爱的小游戏,其设计和实现过程蕴含了许多IT领域的核心知识点。在这个项目中,我们主要关注的是使用UML(统一建模语言)进行系统分析与设计...
线程,作为进程中的独立控制流,是现代操作系统(如Mac、Windows NT、Windows 95等)和Java平台的核心概念之一。本文将深入探讨线程的基本概念、属性、状态以及在Java中的具体实现。 ### 线程概念 线程是进程中的...
两次考试试题分析表明,考试的难度逐年提升,更注重知识的实际应用,减少对死记硬背内容的考察。 【主要知识点】 1. **计算机与软件工程综合知识** - **数据流图**:用于系统分析阶段,表示系统中数据的流动路径...
UML(统一建模语言)在描述并发系统时也发挥着重要作用,例如用状态图描绘线程或进程的状态变迁,用顺序图和协作图表示线程间交互,用类图定义并发对象的关系等。理解和应用UML可以帮助开发者清晰地表达并发程序的...
传智播客版贪吃蛇游戏、俄罗斯方块、JNI、UML、FTP服务器架设视频教程 下载地址:http://www.verycd.com/topics/249195/ 张孝祥java系列:java基础、java高级、javascript、javaweb视频教程 下载地址:...
本资源摘要信息涵盖了 Java 编程、Spring 框架、Servlet 和 JSP、J2EE 事务、Java 线程、UML 类图、数据结构等多个方面的知识点。 一、访问权限控制等级 Java 中存在四种访问权限控制等级,按从最宽松到最严格控制...
1. 模型的一致性:保持模型与代码的一致性至关重要,避免模型成为“死文档”。 2. 模型的适时性:根据项目阶段和需求变化,适时更新模型。 3. 模型的简洁性:避免过度建模,确保模型足够简单,易于理解。 4. 团队...
本文档概括了Java笔试题,涵盖了Java的基础知识、Java集合框架、Spring框架、J2EE事务、Java多线程、UML类图等多个方面的知识点。 访问权限控制 在Java中,存在五种访问权限控制等级,从最宽松到最严格控制等级...