关于UML的个人见解——答周筠和霍炬两位老师
谢谢周老师和霍总的抬爱,我觉得很惭愧,
UML在02-04年的时候,非常爱用。但是在后来到北大青鸟做教师,上了一遍UML课程下来,备课过程中,甚至是在批改学生作业的时候,才深感以前对很多基础的UML组成,根本就理解错了。也就是说那个时候所有的同事、客户都在乱用。我抛弃了UML之后,不但没觉得损失,还觉得写代码就写代码,直接、清晰了很多。在这样一个领悟后,我彻底戒除了IDE和UML。反而感觉工作能力有所提升。
对UML的立场,我也处于一个反复和深入的过程。一方面觉得像以前那样错用UML,真的是有害无益。但是经历很多同行企业,确实就是在这样误用。大家仅仅是处于对工具的生产力迷信,这其实是跟我早年盲目相信用VS或Delphi等RAD工具就一定比手写代码高效一样。特别是IT业涉及的生产领域非常广大,管理方式也越来越丰富。很多场合根本不依赖UML这样的图例工具,文本就足够整个团队进行沟通了。但是另一方面,看到一些企业也确实成功的使用UML进行工作。客观上来说,所有这样的团队都是在假装一种获得满足的状态?似乎不可能。我很困惑。
从自己意识到UML被自己误用的体验来看。我认为UML作为软件工程的一个发展成果,肯定还是有它的意义。特别是大型团队中的内外沟通。有一些软件开发工作,特别是我们通常说的大型企业应用项目。有些工作还很难靠开发人员的才华来突破,而是要靠一个团队去完成客观的工作量。这个时候,如果整个团队有一个大家都能理解的,可以图形化的,比较直观的沟通方式,确实是有积极作用。单纯个图形和线段。我想能完成的作用还是有限。但是围绕UML,是有一套基于文本的,清晰的定义方式和描述标准。只是了解这样一个标准,同样需要学习代价。更糟糕的是往往UML在团队中的使用价值,取决于平均甚至最差的那个使用者,而不是最好的那个。
从我的经验来说,我教过的ACCP的学生,几个班里能正确理解Use Case的不超过10人。能很漂亮的运用Use Case的,不超过3个。从我个人来讲,我用过各种UML工具,没有一个让我觉得很方便的可以帮助我快速画出我的想法。所有的图例工具都让我有一种跟不上思路的感觉。类似类图和代码之间互相转换的功能,更是让我觉得画蛇添足,华而不实。
要发挥UML的作用,我想首先应该推广学习最容易,对工作最有价值的那部分,如用例图,泳道图等。作为工作团队,不应该追求尽可能多的使用UML,相反,只在UML比文本好的时候才用它。尽可能的在纸上、白板上画图,哪怕画完再拍照或扫描。不必推崇完备的UML工具。特别是听过一些讲软件工程的课,老师们总是很推崇从ROSE之类的工具中,用UML生成代码,这种技术的实用价值我持怀疑态度。对于我所经历过的所有的工作场景,会用到的UML知识都只是非常非常小的一个子集。UML的最大价值应该是帮助人理解问题,把文本不易描述的问题直观化,让技术能力不同,知识背景不同的人形成共识。而不是帮助机器去构建。或许在J2EE风格鼎盛的年代这样的能力很好很强大。但是在现代这些动态语言面前,无论使用怎样的开发工具,Java/C#这样的静态、强OO、编译语言与之相差一两个数量级的开发效率,总是很难弥补。
另一点说,有个题外话。我有个朋友,他是个DIY发烧友,从我五岁认识他起,他就热衷各种手工制作。有次他给我看一个欧洲论坛上的文章。一个德国朋友讲如何在自家车库里制作涡轮风扇发动机。燃烧室腔体形状如何,可以从那些日用品中找到替代材料,涡扇要有几片桨叶,要扭多大的角度,为什么这样,数学公式如何,三视图如何。都一清二楚。这位德国老兄并不是克虏伯或奔驰的工程师,更不是什么航空专家。他就是一个普通的老百姓,一个单纯的机械爱好者。做这样的DIY,不是单靠说我喜欢或者我手巧就可以达成的,它需要一种工程师的思维能力,一种可以把想法实现出来,一步步的变成现实的思维和实践训练。想到欧洲,特别是德国英国这样的老牌工业国家,遍地是这样的普通人。就让我产生一种复杂的感情。我们和他们之间的差距,不是一个问题两个问题的解决方法,而是更大的能力差距。当这种差距从一个人两个人扩大到国民这么大的一个团体,发达国家的竞争优势就体现出来了。
在软件开发的领域,这样的差距同样表现的非常明显。为什么人家的团队可以用的很好的各种开发模式和工具,包括敏捷、UML等,到我们这里来就一塌糊涂。这个并非我们不聪明,但是我们缺少真正的工程师的训练。
这些方面我见识少,说的比较混乱。再不打住,就不知道跑出十万八千里了。简单的说,UML,我承认他有用,但是应该在不增加负担的情况下有限使用。UML是一个中间过程,不是IT开发团队最终的产物,不应该因为它给团队带来负担。大家能读懂到什么程度,能用到什么程度,就到那个程度为止。因地制宜非常重要。不能削足适履。特别是对于我们身边常见的开发团队,和项目领域,如果不是复杂的,需要长期维护、需要大量的跟客户深度沟通的企业应用项目,UML的意义并不大。
关于UML的个人见解——答周筠和霍炬两位老师相关推荐
- 【重磅】阿里巴巴创新中心一周内迎两位省委书记视察指导
开春之际,阿里巴巴创新中心在一周内先后迎来了两位部级领导参观指导,分别是江苏省委书记李强以及黑龙江省委副书记.省长陆昊. 2月23日,江苏省委书记李强来到阿里巴巴创新中心南京高新基地,在阿里巴巴创新中 ...
- Roadstar.ai陷罗生门!内斗升级,周光与另两位创始人各执一词
这场创业"内战"愈发迷离,自动驾驶圈纷争内幕也瞬间浮出水面! 在昨天以措手不及的速度"被开除"的国内知名无人驾驶创业公司联合创始人周光,对外表示 "之 ...
- Roadstar.ai陷罗生门!内斗升级,周光与另两位创始人各执一词...
这场创业"内战"愈发迷离,自动驾驶圈纷争内幕也瞬间浮出水面! 在昨天以措手不及的速度"被开除"的国内知名无人驾驶创业公司联合创始人周光,对外表示 "之 ...
- 保留两位小数除法算式_北师大|五年级上册|第一周周测·小数除法(1)
北师大·五年级上册·第一周周测·小数除法(1) 一.计算题 3.6÷1.2= 0.72÷0.9= 2.6÷13= 4.8÷0.4= 4.4÷4= 0.78÷6= 7.2÷0.4= 1÷0.25= 5. ...
- 年度国家科学技术奖:高文周志华王海峰唐杰等上榜,两位“30后”院士获最高奖...
梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 刚刚,年度国家科学技术奖结果新鲜出炉. 由顾诵芬.王大中两位院士共同获得国家最高科学技术奖. 一同颁发的还有国家自然科学奖.国家技术发明奖. ...
- LeetCode/LintCode 题解丨一周爆刷双指针: 两数之和
描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. ...
- 盛大创新院霍炬:UML——一种体系和一种思想
盛大创新院程序员 霍炬 早年我也喜欢过UML,觉得是对复杂工程的解决之道.后来碰上越来越多的实际问题,发现UML并不能很好地解决.一方面,要能精确地用UML定义问题,需要长时间的训练.就好像用一门不 ...
- C语言编程>第十周 ⑧ 请编写函数fun,其功能是:将两个两位正整数x、y合并成一个整数放在z中。合并的方式是:将x的十位和个位依次放在z的十位和千位上,y十位和个位依次放在z的百位和个位上。
例题:请编写函数fun,其功能是:将两个两位正整数x.y合并成一个整数放在z中.合并的方式是:将x的十位和个位依次放在z的十位和千位上,y十位和个位依次放在z的百位和个位上. 例如,当x=12,y=3 ...
- 软件需求工程与UML建模14组14周工作情况
工作进展小结 一.原始工作计划 第11周:定项目主题:完成了人员分工和工作计划:与甲方沟通进行简单的需求获取. 第12周:通过课程学习的知识进一步进行需求获取:确定app概要设计,包括软件所实现的功能 ...
最新文章
- Redis源码解析——Zipmap
- 【数据源】如何应用“紧急联系人”数据
- python文本编辑pycharm_PyCharm的基本使用
- c# 四舍五入、上取整、下取整
- python算法与数据结构-顺序表(39)
- 看到这一幕,我甚至都想戒烟了。。 | 今日最佳
- Spring笔记——数据源配置
- magento开启模板路径提示
- 华为云优秀伙伴展示--2020-08-12
- 互联网产品一网易网站设计(思想)
- [一步一步MVC]第二回:还是ActionFilter,实现对业务逻辑的统一Authorize处理 OnActionExecuting内如何获取参数...
- python程序设计课后答案第二版_智慧职教APPPython程序设计(深圳信息职业技术学院)课后答案...
- hive中统计某列数组的元素个数
- 排序系列 之 堆排序算法 —— Java实现
- OpenGL与gl glu glut freeglut glew glfw封装库关系(十五)
- js 的push 方法
- 20165208 2017-2018-2 《Java程序设计》第九周学习总结
- yii2基础之分页的基本使用及其配置详解
- it is not your reason to quit.
- 计算机视觉教程 章毓晋 pdf,计算机视觉教程 教学课件 章毓晋 CCV08.pdf
热门文章
- 送你九年经验,我的Java学习之路你也可以复制
- 大数据和人工智能,入门书籍推荐
- 个人开发者,APP一样可以有很精致的Icon图片
- Web项目(Vue)部署到阿里云服务器【超详细】
- linux 分区 GUID 8304,UEFI下安装Archlinux
- 电子科技大学计算机硕士平均薪水,心酸!电子科大硕士码农晒出月工资,到手才1.3万,还不如去北京...
- python语言高空坠球_”健身铁球高空坠落,遂宁女婴被砸身亡之谜?“
- 清华博士计算机视觉,清华姚班本科生荣获国际计算机视觉与模式识别大会最佳论文奖...
- JavaFX之Controll用法
- Domain-Driven Design 学习笔记