软件方法(上):业务建模和需求(第2版)
上QQ阅读APP看书,第一时间看更新

前言(2013版)

光阴匆匆似流水,它一去不再回。

《浪子归》;词:黄小茂,曲:崔健,唱:崔健;1985

1999年还是一名程序员时,我创建了UMLChina,从那时开始关注软件工程各方面的进展。2001年12月,阿里巴巴的吴泳铭来email询问是否有UML方面的训练,我开始准备训练材料。2002年3月,我去杭州给阿里巴巴做了这个训练。虽然与后来我给阿里集团各公司做的许多次训练相比,这第一次讲课从内容到形式都算是糟透了,但是我现在还记得当时的心情——迈出自己事业第一步的心情。

截至2013年7月,我已经上门为超过190家软件组织提供需求和设计技能的训练和咨询服务(2017年注:2017年10月的数字为超过260家)。训练结束后,学员们常会问:“潘老师,上完课后我们应该看什么书?”我总是回答:“先不用看杂七杂八的书,还是要复习我们留下的资料,那些幻灯片、练习题、模型就已经是最好的书了,按照改进指南先用一点点在具体项目上,带着出现的具体困惑和我讨论。”虽然一再这样强调,有的学员还是情不自禁地拿着一本《***UML***》之类的书来问我问题,不管书上说得对不对。看来写在正式出版物上的效果就是不一样。

其实现在出书也不难,UMLChina一直在和出版社合作推介国外优秀的软件工程书籍,目前UMLChina的标记已经出现在三十多本软件工程书籍上。不过我一直没有自己写一本书,主要原因还是觉得积累不够,思考的深度也不够,对软件开发的认识还在不断变化。如果没有自己成形的东西,不能站在别人的肩膀上看得更远,只是摘抄别人的观点,这样的书有什么意义呢?

另外一个原因是,UMLChina后来采取了“隐形、关门”的策略,秉持“内外有别”的原则。我关闭了已经有4万多人的Smiling电子小组(也是为了降低某些风险),网站不再有公开的社区,在网站上也找不到“客户名单”,所有更细致的服务以非公开的方式对会员提供。在这种情况下,出一本书也不是那么迫切。

现在距离第一次提供服务已经超过10年(2017年注:已经超过15年了),也有了一些积累,所以硬着头皮也要开始写书了。在这些年的服务过程中,和开发团队谈到改进时,我发现一个有趣的现象:很多开发团队(不是每个团队)或多或少都会有人(不是每个人)或明或暗地表达出这样的观点——自己团队的难处与众不同,奇特的困难降临在他们身上,偏偏别人得以幸免。

尽管UMLChina一直强调自己的服务是“聚焦最后一公里”,坚信每一个开发团队都会在细节上和其他团队有所不同,而且也应该有所不同,但很多时候,我还是感觉到,开发团队高估了自己的“个性”,低估了“共性”。本书就是归纳这样一些“共性”,作为我的一家之言,供大家参考。感谢曾经选择我的服务的伙伴们。他们一次次地给我机会来实践、发展和锤炼技艺,才有了这本书。

本书中所讲述的技能集合也是我本人身体力行的。例如,您可能已经注意到,为本书写推荐序的正是本书的“老大”,他不是什么大师专家名人,而是一名经历了入职、升职和创业,不断成长的软件开发人员。

一些书籍作者喜欢在书中每一章的开头放上和该章内容相关的一幅画或一句名人名言,我也效仿一下,不过没那么“高雅”——每章的开头放上和该章内容相关的一句歌词。

书中的模型图,如果是我为了讲解知识而画的,用的建模工具是Enterprise Architect 9(2017年注:改为Enterprise Architect 13);如果是截取真实模型的图片,可能会涉及各种工具。我不像Robert C. Martin那样,女儿已经长大到可以帮画插图,所以书中的手绘插图,我都自己用Wacom笔来画,可能丑了一些,请见谅。

潘加宇

2013年10月