尽管最近一直下班时间没有条件静下心来读书,但是在公司里上班时间之外还可以可以通过CSDN、博客园及51CTO来了解一下行业的发展趋势和动态的。在最近一个月时间里看到不少讲UML的,甚至还有观点认为UML会消失。我个人认为UML不会消失,就像很多人多年前就认为C/C++还有Java会消失一样,实际上C/C++及Java到现在适用范围仍很广泛,在相当长的时期内它们仍会存在,UML也是如此。尽管在最近几年出现的敏捷开发中(如XP和Scrum)对文档的要求比较少,但是也不是完全取消了文档。并且尽管现在有不少公司开始尝试敏捷,但是在中国这个大范围内,据本人及朋友间交流情况所知,绝大部分情况下大型软件开发中文档仍是少不了的。如果有正在学习设计模式的朋友,可以看到在设计模式中大量使用到了UML中的类图,通过类图可以很方便地表示各类之间的关系,如果用文字的话就不太容易达到相同的效果。
国人有一种现象:当一种新的技术出现时就捧上天去,记得早年我学习Java的时候曾经一度言必谈EJB(Enterprise JavaBean),时间不长马上就有人写文章说Without EJB,之后大家大家对EJB的态度慢慢趋于理性。后来我又遇到一个设计模式的狂潮,很多连“Hello world”的语法都不十分清楚的初学者一句一个设计模式,明明不存在什么变化却非要去套一个模式,幸好最近也逐渐趋于理性。我相信大家对于UML的态度也会理性的。至于我自己,很少迷信和盲从,只根据自己职业发展状态去选择学习合适的技术。
从去年至几年,我共看过两本UML方面的书,一本是一个来自中国宝岛台湾的姓邱的老师写的,另外一本就是我现在人仍在看的《大象——Think In UML》。对于UML我接触的时间不算晚,不过在早年总是抱着基本够用的目的去学习和运用,没有太多的自己的想法。在后来做管理的期间用得更少了。去年从外地回到家乡湖北之后,在光谷软件园一家公司上班,因为工作的需要又拿起了UML。正好借着这个机会我又重新捡起了UML,除了温故而知新之外,也想带着思考的目的去学习,在学习的过程中去分析和总结以前的用法,这也是我一向的习惯,我习惯工作几年之后再回头用自己的方式总结。
学习一门技术首先要了解它的产生背景(即为什么需要它)、如何掌握它(了解定义并学以致用)及带着自己的思维去发散和延伸,正如太极生两仪、两仪生四象一样,只有这样才算是真正掌握了这门技术。从邱老师的那本UML的书中我学到了一些关于用例描述的原则,而在《大象——Think In UML》中带给我更多的是思考,这本书的第一部分准备篇和第二部分基础篇讲述了UML的产生原因和特点并且具体介绍了UML的核心元素等,不过我更多关注地是第三部分进阶篇,在这部分中讲解了一些在做需求分析时遇到的一些问题,书中的很多问题当年我也曾经遇到过和思考过。关于设计UML分析建模中的一些原则可能需求分析人员都熟悉,就像数据库设计人员之于数据库范式一样,不过在不同的开发人员那里可能会得到不同的结果,了解一下别人的经验和做法对自己也算是一种提高吧。
关于UML的设计工具有很多,比如老牌的Rose,还有Visio及EA(如果没有记错的话全称应该是Enterprise Architecture),当然如果是.NET开发人员的话还可以使用最新版的VS2010中的UML工具,我个人最近一直在用的是StarUML,这是一个免费开源的UML设计工具。如果开发人员进想进一步提高自己,我觉得还是应该在理解并掌握了OOP的基础上再学习UML——特别是那些想成为需求分析师的开发人员。
之于我,我计划对UML进行温故知新之后,再好好学习一下Siverlight和MVC2(其实一直在学,只不过没有系统地学),除此之外就是稍微深入了解一下F#和Scala。
作者:周金桥