需 求
需求分析是软件开发中的第一个步骤,也是整个项目的龙头。用一些资深项目经理的口头禅来说,其重要性怎么强调也不过分(could never be over-estimated)。许多失败项目(包括我自己经历过的)中,总结原因,往往会追本溯源到需求分析阶段的重大失误。即使是在新兴的敏捷方法中,对需求也是极为看重的,用户故事(User Story)的发明就说明了这一点。然而,我从与国内朋友的交流中,感觉业界对此的重视程度很不够,不仅专业的需求分析师非常少见,就连用户在开发过程中的参与和沟通都很有限。一个直观的对比,就是A鄄mazon上需求类的图书不少都在总排行的3000-7000名,可以说销售极佳,而国内相应图书的境遇就差得远了,在网上书店几乎是在集体特价甩卖,让人唏嘘不已。我们将需求这个类别置于本文下半部分之首,也是希望提醒广大读者能够共同努力,改变这种“危险”的现状。
软件需求(第2版)作者:(美)Karl E.Wiegers译者:刘伟琴 刘洪涛定价:39.00清华大学出版社
如果软件需求方面只能选择一本书的话,当非本书莫属。如果你长期订阅《Software Development》杂志,一定早已经熟悉了作者作为项目管理和需求分析的权威人士点穴似解决问题的风格。本书不仅全面(涵盖了传统的数据流图、E R图到现代的类图、用例、业务规则、原型法等各种工具),而且贴近实际(注重实践和可操作性,兼及技术与客户沟通,包含了文档模板和检查清单)。要想成为优秀的需求分析师,由此入手是非常明智的。普通的开发人员日常主要面对的是如何理解和满足需求,所以往往并不需要掌握多么高深的需求知识,必要的工具和实践就足够了。对于这样的读者,本书也是一个非常好的选择。本书还值得向更大的读者群推荐――广大软件开发项目的用户。我的经验表明,如果用户具备一些基础的需求表达素养,对于开发过程往往能够达到事半功倍的效果。
顺便提及,本书的第一版(机械工业出版社出版)其实也并不过时,囊中羞涩的读者可以到一些网上书店购买特价书,几块钱而已,绝对物超所值。
掌握需求过程作者 (英)Suzanne Robertson James Robertson译者:王海鹏定价:40.00人民邮电出版社
本书的名气很大。看见封面上Gerald Weinberg(就是那个这两年大红大紫的所谓软件思想家温伯格啊)为本书写的序了吗?作者Suzanne Robertson也可以算得上软件工程界的泰斗级人物,拥有30多年从业经验(不要被这张照片欺骗了)。她与Tom De Marco和Tim Lister(《与熊共舞》和《最后期限》的作者)以及自己的丈夫和合著者James Robertson合创了著名的智库大西洋系统协会(Atlantic SystemGuild)。与Wiegers的方法不同,本书围绕Robertson自创的一种完整需求过程Volere进行。这样写的好处当然是某种程度上你可以由此闭着眼睛跟随大师的教导亦步亦趋,一般情况下都不会有大问题,而且阅读大师著作永远都会开卷有益。但是缺点也是十分明显的:如果你的具体环境不适合采用Volere,你不仅需要自我奋斗,而且某些情况下还要花力气免除套路的干扰。书中很精彩的是对用例的阐述。总体而言,实用性不如Wiegers,然而翻译质量过之。
分析模式:可复用的对象模型作者 Martin Fowler译者:樊东平 张路定价:40.00机械工业出版社
Martin Fowler的著作,当然值得推荐(《UML Distilled》,《重构》,《企业应用架构模式》,哪本不是大书?)。当年我购买本书英文原版的时候,还没有涉足过正儿八经的企业级开发,更多地是冲Fowler的名气去的,加上那时候正在迷模式,大以为这与“四人帮”(GoF)《设计模式》和《重构》应该是异曲同工的东西。不料略略读过,得到的却是一头雾水。而今天,作为一名企业级开发老兵,我几乎已经离不开这本书,而且为新入行的同事或者朋友开列的读书清单中也少不了它。我能想象本书的写作实际上是收集了众人的成果(这正是MartinFowler的擅长),绝非一日之寒。否则,企业级开发涉及那么多的领域,如何选材都是一个大课题。显然,阅读本书是有一定难度的,尤其是如果你缺乏经验积累,但这是一个必须跨越的门槛,同初读如嚼蜡的《设计模式》一样。按现在的标准来看,好的程序员编程能力和经验肯定重要,但是往往还不如对领域的把握能力重要。本书有影印版(中国电力出版社),48元。涉及领域知识的书往往不容易翻译好,我建议读者中英文对照阅读,有能力的直接读英文好了。此领域还有一本书值得一看:机械工业出版社的《UML业务建模》(ISBN:7-111-13478-8,45元)。
编写有效用例作者 Alistair Cockburn译者:王雷 张莉定价:35.00机械工业出版社
在当代面向对象开发项目中用例已经和UML一样必不可少,而本书正是首选。用例虽然是Ivar Jacobson(UML之父之一,前不久访问过中国)当年在爱立信开发大型电信软件时的独家发明,但在此领域Cockburn可以说是青出于蓝而胜于蓝,形成了自己的流派。在其个人网页上,Cockburn(按苏格兰读法,中间的ck不发音)是这样自命的:“国际知名的项目巫医和IT策略家,最著名的成就是……最终定义了用例,……”。不错,如今通用的用例定义并不是Jacob鄄son的而是Cockburn的。本书体现了Cockburn在用例技术方面和写作方面的双重造诣,主文字、实例、提示、准则以及困难梯度安排得恰到好处,井井有条,言简意赅,看得出,非有丰富的培训经验和功力不能为此。本书也因此获得2000年Jolt生产效率奖。对于已经有一定实践的读者,本书也能起到很好的整理思路、提升内力的效用,这是我本人再次阅读的亲身经验。本书有影印版,网上特价10元左右可以购得,这样的推荐真让人有些啼笑皆非。
用例方面还有一本姐妹篇,值得推荐:
有效用例模式作者:Steve Adolph,Paul Bramble译者:车立红定价:36.00清华大学出版社
软件架构与设计模式
软件架构和设计模式其实是密不可分的,它们共同构成了设计阶段的基石。有些书,比如《面向模式的软件体系结构》和《企业应用架构模式》,你说是软件架构方面的还是设计模式方面的呢?所以我们将原定的两部分合二为一。
这样做其实还有一个原因:我最终发现,软件架构方面几乎没有值得推荐的图书――绝大多数都似乎属于学术研究范畴。实际上,要做出优秀的设计,软件架构的基础知识是非常必要的,很好地理解设计模式同样必不可缺。没有大局观、千岩万壑在胸中,就很容易迅速堕入细节,只见树木而难见森林;不将常用的套路烂熟于心,面对千变万化的实际问题,更是难免不知所措,失去章法。就以如今国内系统分析师(其对象应该是对应于国际通行的架构师)的考试内容来说,看似包罗万象,但是最关键的软件架构和设计模式这一层次却非常薄弱,可以看出目前学界和产业界之间的深深鸿沟。软件架构方面,蜀中既然无大将,我只能列举几个“廖化”作“先锋”了。
软件体系结构――一门初露端倪学科的展望(英文影印版)作者:Mary Shaw定价:15.00清华大学出版社
本书是软件架构方面的开山之作,看看书名就知道了,似乎没有中文版。从了解概念的角度来看,是不错的,比较全面地介绍了各种层次的架构。清华版比较老,如果找不到的话,还有科学出版社的版本(一本书怎么会有两个版本呢?我也在纳闷呢),ISBN:7 03 012497 9,27元。软件体系结构的艺术作者:Stephen T.Albin译者:刘晓霞郝玉洁定价:35.00机械工业出版社
此书作者虽然是产业界的,书名也极吸引人,可实际上却有些令人失望。偏学术性的概念罗列太多,泛泛而谈太多,却几乎没有多少实际的例子。只能用来了解相关知识。
软件构架实践(第2版)作者 Len Bass,Paul Clements Rick Kazman译者:车立红定价:49.00清华大学出版社
卡耐基-梅隆大学软件工程研究院编撰的系列图书之一,名气不小。不少学校(国外,国内似乎也有)的研究生院在使用此书。但是本书具有与这套书一样的通病,就是学术气太重。对于一线的开发人员来说,我个人意见,阅读本书可能很难有直接和立即的效果。
相比之下,模式的情景就完全不同了,宏篇佳构数不胜数,这使我的简单罗列方法不再适用。多年来我读过不少模式图书,走过的弯路可谓多矣,毕竟各家出版社并不可能有一个整体的出版规划,先给你出一本入门的,再出提高的、深入的……现在回想起来,如果按这样的顺序行进,恐怕是一个比较缓的路线:《设计模式精解》→《面向模式的体系结构》卷1→《设计模式》→《面向模式的体系结构》卷1→《企业应用架构模式》。按知识体系,《面向模式的体系结构》卷1应该是在《设计模式》一书之后,因为前者主要讲述的架构层次也就是更高层次的模式。但是从我的经历来看,先读其中的一些章节是有好处的。《设计模式》出版较早,又脱胎于Gamma的博士论文,在许多大背景和来龙去脉的叙述方面,都不如《面向模式的体系结构》卷1。我当年也是读到后者第8章,才对整个模式有了比较全面的认识。另一方面,先了解高层次的模式,也有利于建立大局观。
设计模式精解作者 Alan Shalloway,James R.Trott译者:熊节定价:35.00清华大学出版社
将本书放入面向对象类中推荐也是合适的。作者通过自身的教学经历从面向对象概念讲起,带领读者通向设计模式,是不可多得的透彻之作。由于《设计模式》一书的不易读和设计模式概念的不易参透,本书的出现可以说是入门者的福音。如果要推荐面向对象和模式的最佳入门书的话,我的答案会和Martin Fowler不同(他选择《UML与模式应用》),本书是我的首选,篇幅和定价都合适。在国外,O Reilly所出的《Head First Design Patterns》也非常火爆(Amazon排名竟然高达500多名),那是用图说话的典范,我个人认为,并不符合中国技术人员的习惯。
令人遗憾的是,本书中文版居然是在原版第二版出版之后两个月才出版的。我的一位朋友正在翻译本书中文第二版,将由人民邮电出版社出版,相信很快会和大家见面。中国电力出版社出版了第一版影印版,ISBN-7-5083-1505-7,39元。
面向模式的软件体系结构卷1:模式系统作者 Frank BUSCHMANN等译者:贲可荣 郭福亮等定价:45.00机械工业出版社
本书有时称为PoF(Party of Five,“五人党”),与《设计模式》的GoF(Gangof Four,“四人帮”)对应,都来源于作者的人数。这两本书的确堪比作模式方面相对峙立的双峰。相比之下,本书之美似乎更少人能够认识到。当然,国内没有影印版,中文版翻译质量难如人意也是一个重要原因。这是一个翻译毁书的“经典案例”――这样一本好书,居然已经out of print(绝版),真是读者们的大不幸。
设计模式:可复用面向对象软件的基础作者 Erich Gamma等译者:李英军 马晓星 蔡敏 刘建中定价:35.00机械工业出版社
本书无需我多言了。唯一值得提及的是一些题外话,可能对如何阅读本书有些好处。在OOPSLA(面向对象编程、系统、语言与应用)2004年年会上,为了纪念本书出版10周年专门举行了一个活动。根据MartinFowler在Blog(网上日记)上透露的活动情况,四位作者似乎并无修订本书的计划,虽然出版社曾经如此预告过。活动上参加者(当然包括四位作者和业界的各位大腕)举行了一个投票活动,目的却是要选出要淘汰的模式。我们熟悉的Factory Method(工厂方法)、Bridge(桥接)、Interpreter(解释器)和Flyweight(享元)赫然成为大家一致同意踢出局的四个不幸者,原因当然多种多样(主要是常用程度,目的和意义是否清晰,是否有更好的替代)。也有不少人提议Singleton(单件)和Chain of Responsibility(职责链),但是没有达成一致。遗憾的是,活动上没有时间提出应该增加的新成员。此外,由模式先驱(据说他和Kent Beck首先从Alexander建筑学模式中吸取了灵感)Ward Cunningham加盟微软后创建的Pattern Share网站(是一个设计很精巧的模式学习网站)中,也只列出了本书中12个模式。其中透露的消息,值得我们高度注意。本书也推荐中英对照,虽然中文翻译中规中矩。英文版机械工业出版社,38元。书号7-111-09507-3。
企业应用架构模式作者 Martin Fowler译者:王怀民 周斌定价:49.00机械工业出版社
又是一本无需多言的书。企业级应用程序开发人员必读。
此外,本专栏4月10日《Java的盛宴(下)》中介绍的《J2EE核心模式》(最近中文版第二版已经出版,ISBN:7 111 15942 X,55元)和《JAVA与模式》以及本文上部分讲到的《UML与模式应用》也是模式方面值得推荐的著作。