本节书摘来自异步社区《敏捷迭代开发:管理者指南》一书中的第1章1.1节软件是新产品开发,作者【美】craig larman,更多章节内容可以访问云栖社区“异步社区”公众号查看。
第1章 概述
敏捷迭代开发:管理者指南
逻辑是一种用信心面对错误的艺术。
{--:}—约瑟夫·伍德·克鲁奇(joseph wood krutch)
概述
本书中有哪些内容?
预见性开发与新产品开发。
本书介绍了迭代(iterative)和敏捷(agile)方法,你能从中获得哪些有用的知识呢?
第一,你会知道4种著名方法的关键实践:scrum、极限编程(extreme programming,xp)、统一过程(unified process,up)和evo(一种早期的迭代方法)。本书提供了一些软件开发方法的思路和实践的总结,对于使用开发方法的管理人员、开发人员以及学生来说,每一章都会有一些有用的内容。(scrum参见第7章,极限编程参见第8章,统一过程参见第9章,evo参见第10章)。
第二,因为本书能够提供很好的帮助,所以可以缩短你的学习曲线。阐述这4种方法的章节都具有相同的结构,便于快速理解与比较。此外,还有一章faq(见第12章)和一章常见的实践技巧(见第11章)。
第三,你将了解到敏捷与迭代开发的动机(见第5章)和证据(见第6章)。有些组织重视迭代开发的价值,但是有一些组织则不以为然。如果你需要为一次迭代项目实验找到充分的理由,那么你会发现本书提供了迭代开发的关键原因、研究成果、大型项目示例、标准团体认可、商业案例,以及著名编程思想领袖们几十年以来的推动历程。研究成果与历史阐述部分也适合学习软件工程方法的学生进行研读。
注意
敏捷方法是迭代方法的子集,本书涵盖这两种类型。
阅读本书可以不按章节顺序,本书的大致内容是下面这样的。
第1章:介绍,以及预见性开发和创新性开发。
第2章:基本迭代和渐进方法实践。
第3章:总结敏捷原则和方法。
第4章:通过一个敏捷项目的故事,阐述一些理念。
第5~6章:迭代和敏捷方法的动机和证据,对某些人非常有用。
第7~10章:总结scrum、xp、up和evo等4种方法。注意,实践中可能会混合使用。
第11章:技巧,扩展了某些方法实践,还加入了其他方法实践。
第12章:常问的问题(faq)。
最后,人终究胜于过程。每一种介绍过程的书籍可能都包括这样的标准免责声明:
过程的影响只是第二位的1。只有人、人的情感、品质和沟通能力才更有影响力。
有些问题真的很难,有些人真的很固执。方法不是救世主。
1引自敏捷方法学家alistair cockburn。
1.1 软件是新产品开发
考虑在一个装配线上生产移动电话:在这种情况下,可以毫无二义性地定义规范和构造步骤。在生产一批电话之后,做一些相关的测量,就能够可靠地估算和规划未来电话的生产过程。
下面考虑另一个问题:建造一个定制的房屋。业主想要采用新型的环保材料和方法,但他们的实际需求并不明确,当他们看到房屋、成本以及工期时,还会逐步改变或者澄清他们的决策。
开发领域的一种极端的情况类似于生产电话,在整个过程中几乎没有创新或变动,只是大量地重复创造或者近乎雷同地创造—批量制造(mass manufacturing)或者预见性制造(predictable manufacturing)。
另一种极端的情况是变化频率很快、创新性很强。在这种情况下,没有以前的类似案例可供借鉴,无法进行估算或者计划。这就属于新产品开发(new product development)或者创新项目(inventive project)的范畴。
这两个领域极端的开发过程、管理理念、计划和估算模型是截然不同的(参见表1-1)。

当然,关键在于:
大多数软件都不是预见性制造或者批量制造,软件开发属于新产品开发范畴。
此外,许多工程采用新的带有bug的技术,这加剧了新颖性和不可预见性。同时还要注意,对于没有经验的人来说,它就是新产品,即使以前也有过这样的产品。
对于软件而言,预见性制造是错误的范例,因此基于这方面的实践和理念没有什么指导意义。
这种错误的匹配往往是许多难题的症结所在,而这些问题总是与运作软件项目的传统方式有关。
“瀑布型”的生命周期、大的前期规格说明、估算、推测性计划等适用于预见性制造,却无法套用在软件项目上,因为后者属于发明性质的、高度可变的、高度创新的工作。
拒绝采用那些“可靠的”前期规格说明的理由[cp86]包括:
客户或者用户不确定他们想要什么;
他们很难陈述所有的需求和所知道的;
他们想要的许多细节只能在开发过程中逐步展现;
细节对于他们来讲过于复杂;
当他们看到产品开发时,会改变想法;
外部压力(例如,竞争者的产品或者服务)导致需求变更或者增强。
更深入的认识—构建软件是复杂的新产品开发,修改频度很高,不是预见性制造—这就是敏捷和迭代方法动机的核心。
当然,另一种采用迭代和敏捷方法的动力是提高竞争力,成为竞争中的赢家。迭代和敏捷方法促进了灵活性和机动性—竞争优势。在agile competitors and virtual organizations[gnp97]中,作者检讨了批量制造模型(mass manufacturing model)的局限性,以及敏捷必要性:
敏捷……意味着成功与收益:成功是指在竞争的对手中脱颖而出;收益是指在许多公司望而生畏的竞争风暴中,获得利润、市场份额和客户。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。