内 容 提 要
敏捷迭代开发:管理者指南
本书是敏捷和迭代开发方法的权威指南。著名软件方法大师Craig Larman在书中不但说明什么是敏捷/迭代方法,其运作机制、实施策略以及原因,而且通过具有统计意义的重要研究数据,以及大规模的项目案例分析,为读者呈现了最具有说服力的采用迭代开发的有力证据。本书主要内容包括:大量实用的敏捷和迭代技巧,面向敏捷/迭代项目主管的新管理技能,敏捷与迭代的价值与实践,Scrum、XP、UP和Evo的关键实践,以及常见问题的问答。
无论是对IT主管、项目经理,还是对软件开发人员,这都是了解敏捷和迭代开发最理想的一本书。
版权声明
敏捷迭代开发:管理者指南
Authorized translation from the English language edition, entitled: Agile and Iterative Development: A Manager's Guide, 9780131111554 by Graig Larman, published by Pearson Education, Inc., publishing as Addison-Wesley Professional, Copyright © 2004 Pearson Education, Inc.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.
CHINESE SIMPLIFIED language edition published by PEARSON EDUCATION ASIA LTD. and POSTS & TELECOM PRESS Copyright © 2013.
本书中文简体字版由Pearson Education Asia Ltd.授权人民邮电出版社独家出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容。
本书封面贴有Pearson Education(培生教育出版集团)激光防伪标签,无标签者不得销售。
版权所有,侵权必究。
前 言
敏捷迭代开发:管理者指南
谢谢你阅读这本书!我真心希望这本书对你有用——优质信息,易于理解。
此外,访问 www.craiglarman.com可以找到一些相关的文章和链接。如果你有什么问题,请与我联系,我的电子邮箱是craig@craiglarman.com。
排版约定
使用楷体排版的是强调的基本观点和需要引起重点关注的地方,我希望读者比较容易看到它,这样,就可以快速浏览,挑选关键思路。
在一句话中排成黑体的部分指的是术语。
类似于 [Bob67]的形式,是指在参考文献中列出的某本书。
作者简介
Craig Larman是Valtech公司的首席科学家。Valtech公司是一家国际化的咨询和技能转移公司,在欧洲、亚洲和北美洲都设有分支机构。同时,他还在全球范围内担任独立顾问、团队教练和演讲人。
Craig是Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design(《UML和模式应用:面向对象分析与设计导论》)的作者。此书是OOA/D和迭代开发方面全球最畅销的教科书,被译成多种语言,在全球业界和大学中被广泛使用。
Craig有过一段做街头音乐家的失败经历,从那之后,也就是20世纪70年代,他开始用APL语言、PL/I语言和第四代语言构建软件。20世纪80年代初期,经过全面的调整之后,他开始对人工智能和知识表示产生了浓厚的兴趣,并用Lisp机器、Lisp、Prolog和Smalltalk构建了知识系统。他业余时间还在一支名为Changing Requirements的业余乐队(这个乐队曾被称为Requirements,但有一些乐队成员已经有了变动……)中担任主奏吉他手。
Craig毕业于加拿大温哥华美丽的西蒙弗雷泽大学(Simon Fraser University),获得了计算机科学学士和硕士学位。
致谢
敏捷迭代开发:管理者指南
特别感谢我在Valtech的朋友和同事,他们都是世界级的迭代开发者,尤其是Tim Snyder。
非常感谢审读这本书的专家们,包括Alistair Cockburn、Claudia Frers、Tom Gilb、Jim Highsmith、Ron Jeffries、Philippe Kruchten、Niels Maloteaux、Gary Pollice、Ken Schwaber和Jeff Sutherland。
还要感谢Paul Petralia和Patti Guerrieri两位编辑的引导。
译 者 序
敏捷迭代开发:管理者指南
“过去几十年的大型系统开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。他们中大多数开发出了可运行的系统——不过,其中只有非常少数的项目满足了目标、时间进度和预算的要求。各种团队,大型的和小型的,庞杂的和精干的,一个接一个淹没在了焦油坑中。”1传统的瀑布型软件工程方法将软件业等同于传统的大规模制造业,试图回避软件领域固有的复杂性以及变化性,不顾及实际情况而套用一些所谓“银弹”的开发方法,以至于削足适履、南辕北辙,陷入泥潭中而不能自拔。事实上,软件开发属于新产品研发的范畴,你所面对的犹如一片混沌的海洋,需要因地制宜,根据实际情况对各种条件进行权衡与博奕,从而探索出一种行之有效的解决之道。
面对复杂与变化的软件开发,“敢问路在何方?”
UP、XP、水晶、Scrum、DSDM、FDD、ASD以及精益开发等都给出了相应的答案。然而,“忽如一夜春风来,千树成树梨花开”,一下子涌现出这么多琳琅满目的软件工程方法,让人眼花缭乱,无所适从。需要说明的是,许多标榜自己采用“敏捷与迭代方法”的组织,其实是在追逐时髦,并没有真正领会其要旨,甚至断章取义,陷入教条主义,甚至重蹈瀑布型的覆辙。
本书列举了大量的证据,溯根求源,将各种方法的缘由与适用性娓娓道来,令人茅塞顿开,许多积压在心里的困惑一下子释然。全书共分12章:在前6章的描述中,作者列举了大量的证据和文献,揭示了瀑布型的症结,以及敏捷与迭代开发的动机与成功案例;第7章到第10章,则具体讨论了Scrum、XP、UP、Evo等4种敏捷方法,它们的原理与适用性,以及成功的案例与历史,还在章节后面列出大量的参考文献。这4章内容的组织形式相仿,便于读者进行比较学习;第11章更具有操作性,介绍了许多行之有效的敏捷与迭代开发的实践技巧;第12章是FAQ,读者可以将它作为独立的章节,对实践中遇到的问题进行查询。
我们还注意到在本书英文版的封面上,是一名芭蕾舞演员。其寓意在于软件开发不仅是一门技术,同时也是一门艺术。作者希望通过他的努力,开发出漂亮的软件来。随便提一句,这本书在亚马逊网站上被评为五星2。
本书的作者Craig Larman先生相信大家不会陌生。他的《UML和模式应用:面向对象与设计导论》深受中国读者欢迎。Philippe Kruchten博士(国际著名过程大师,IBM Rational名士,前RUP产品总监)这样评价道: “Craig是一位杰出的授业者,一位卓越的方法学家,一位对象技术的精神导师(guru)。” Martin Fowler(国际著名OO大师,ThoughtWorks首席科学家)曾说过:“人们常常问我,哪本书是引领他们进入OO(面向对象)设计壮丽殿堂的最佳著作。自从幸获Craig的《UML和模式应用》,它就成为了我的倾力之荐。”。
阅读Larman先生的书可以说一种享受,而翻译他的书则是一种压力。2004年我有幸接手这部书的翻译工作,并期望向读者呈现原汁原味儿的译著。翻译过程中,对于书中的一些疑惑之处,Larman先生给予了热情的帮助和鼓励,并欣然为本书的中文版作序。事隔8年,也就是2012年,人民邮电出版社期望再版,并请了冯春丽协助进行全文的审校。尽管大家都非常努力,也难免有疏漏之处,希望大家批评指正!此外,我要感谢我在北京魔笛创新科技发展限公司的团队,并给我试验敏捷方法的机会。最主要的还是要感谢读者朋友,只有你们的认同,才是这项工作最终成功的标志。
张晓坤
2013年5月于北京师范大学辅仁校区
摘自Frederick P. Brooks,Jr.著,UMLChina翻译组汪颖译,清华大学出版社出版的《人月神话》。
2参见:Larman的个人网站http://www.craiglarman.com以及亚马逊网站http://www.amazon.com/exec/obidos/ASIN/0131111558/qid%3D1063687928/sr%3D11-1/ref%3Dsr%5F11%5F1/103-3958085-8199045。
敏捷软件开发宣言
敏捷迭代开发:管理者指南
敏捷软件开发宣言
人和交互 重于 过程和工具
可以工作的软件 重于 面面俱到的文档
客户合作 重于 合同谈判
随时应对变化 重于 遵循计划
虽然右侧的各项也有价值,但我们认为左侧的项更加重要。
敏捷软件开发遵循的原则
我们遵循以下原则。
1.我们最优先要做的是通过尽早地、持续地交付有价值的软件来满足客户需要。
2.我们欢迎需求的变化,即使到了开发后期。敏捷过程能够驾驭变化,为客户创造竞争优势。
3.经常交付可以工作的软件,从几个星期到几个月,时间间隔越短越好。
4.在整个项目开发期间,业务人员和开发人员必须朝夕工作在一起。
5.依靠斗志高昂的人构建项目。给他们提供所需的环境和支持,并且信任他们能够完成任务。
6.在团队内部,最有效率也最有效果的信息传达方式,就是面对面的交谈。
7.可以工作的软件是进度主要的度量标准。
8.敏捷过程提倡可持续开发。
9.出资人、开发者和用户应该总是保持稳定的开发速度。
10.对卓越技术和良好设计的不断追求有助于提高敏捷性。
11.简单——尽量减少工作量的艺术是至关重要的。
12.最好的构架、需求和设计都源自自我组织的团队。
13.每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
目录
前言
第1章 概述
1.1 软件是新产品开发
1.2 后续内容预告
1.3 Web资源
第2章 迭代和渐进
2.1 迭代开发
2.2 风险驱动和客户驱动的迭代计划
2.3 时间箱迭代开发
2.4 迭代期间,外部利益相关者不能变更迭代内容
2.5 渐进开发和自适应开发
2.6 渐进需求分析
2.7 早期排名前十的高级需求和技能分析
2.8 渐进和自适应计划
2.9 增量交付
2.10 渐进交付
2.11 最常见的错误
2.12 特定的迭代和渐进方法
2.13 后续内容预告
2.14 推荐读物
第3章 敏捷
第4章 故事
第5章 动机
第6章 证据
第7章 Scrum
第8章 极限编程
第9章 统一过程
第10章 Evo
第11章 实践技巧
第12章 常见问题解答
参考文献