序 言 软件开发经历了一个漫长的发展过程。 “在黑暗中摸索”的年代里,我们墨守着沿袭传统项目管理方法的旧模型,即首先指定需求,然后将其“冻结”,直到结束前都不再改动需求。虽然开发周期十分清晰,即计划工作,然后再按计划工作,但其结果却乱作一团。 问题常变得扑朔迷离,软件开发组织声称成功完成了任务,并演示是根据需求规范交付的。但从商业的角度来看,系统必然是失败的,而且这在交付时会变得显而易见。为什么呢? 因为事情并非是一成不变的。所有大型软件开发项目都会持续相当长的时间,它们势必受到外界环境变化的影响:新技术的涌现、新竞争对手的出现、经济驱动力量的变化等。有时在外界压力的驱使下追求创新,而外界压力并非始终恰好落在软件开发周期范围内。在今天的快节奏世界里,如果您完全照搬最初的需求构建系统,事必会构建出一个错误的东西,导致自己在市场竞争中一败涂地。 虽然也存在执行不当的问题(根本原因可能也是原始需求模棱两可),但是一个经过无数次讨论总结出的结论是:即使执行过程完美无缺,也可能不会成功,原因是最初的方法足以导致所有管理者一败涂地。显然,我们需要一种新方法,这种方法应该着重于取得商业方面的成功,而不只是软件开发方面的成功。 现在,如果以顺应变化的能力来确定一个软件开发组织是否成功,我们将对这个问题有一个新的看法。变化会在需求中体现出来,因此软件开发组织所面临的最根本问题是处理需求波动的能力。此外,需求变化会随机出现,而且变化范围和出现时间由外界因素决定。也许您的项目节奏和周期井井有条,但需求的变化可能与项目的进展不同步。就像生活中无法加以控制的其他事情一样,您需要采取应对之策。有句话掷地有声:“要么顺应变化,要么被逼上绝路!” 本质上,这正是迭代开发关注的问题。它是软件开发对“交付有价值的软件系统”这一根本商业问题做出的回应。是的,“系统”是一个移动靶。我们放弃了将这个靶子钉死在墙上的不明智想法;我们努力地跟踪它并击中靶心。 迭代开发是一种较新的方法,它从20世纪80年代开始起步。到了20世纪90年代,采用该方法的公司发现它比旧方法能够更好地交付价值。事后看来,迭代开发的发展历程似乎一帆风顺,但实际上,迭代方法与其他技术进步一样,经历了一条坎坷不平的发展之路,其中一些方法如昙花般短暂地盛开后迅速凋谢了,有很多方法经试用后终被抛弃。留下的方法是吸收许多项目的经验的结晶,我们要向那些先驱管理者和坚持使用该方法的管理人员致敬,感谢他们给后来者留下了一套可靠的现代软件开发项目管理方法。 历经了数十年的发展,总要停下来反思和总结一番。思想领袖们危襟正坐,苦苦地总结学到的精髓。Walker Royce于1998年编写的《软件项目管理,一个统一的框架》(由机械工业出版社引进并出版)堪称经典大作。我本人在The Software Development Edge (Addison-Wesley于2005年出版)中发表了自己的见解。现在,Kurt Bittner和Ian Spence合著的此书又给大家带来了新的惊喜。 Kurt 和Ian是此领域的行家里手,他们拥有多年的迭代开发经验。Kurt曾在Rational Software最早的“统一过程”开发组中工作,并且指导许多团队应用迭代方法。Ian的技术经历与Kurt相似,他多年来亲自加入到应用迭代开发的项目团队中。两人都工作在一线,本书呈现的指导内容浓缩了他们的宝贵经验。 他们也是经验老到的作家。两人于2002年合著的《用例建模》(由清华大学出版社引进并出版)使一代分析师和开发人员了解到如何合理地指定要求。此书中的方法全面、系统,论述透彻,不会给人带来沉重或迂腐之感。这本实用的书籍受到了广大读者的热烈欢迎。当得知他们要撰写这本描述迭代开发的权威著作时,我迫不及待地想给他们写书评。 这是帮助读者理解原则并在实践中取得成功的书藉。它不是泛泛而谈的科普类著作,而是货真价实的权威指南。在此向所有热切期望提升职业素质的软件开发管理者推荐本书。不管您拥有多少经验,您总能从本书中学到不少东西。最后谨祝各位工作愉快! Joe Marasco Ravenflow公司董事长兼CEO