本书讲的是如何管理软件开发项目,从经济学的角度介绍了如何有效地管理有限的资源以达到最优结果,描述了在迭代式的项目中频繁修正航向的好处,以及如何统筹兼顾和度量中间结果。
本书第一部分讲述在当今商业气候下软件开发和管理的情景、成功的难点以及失败的结果。第二部分介绍了以迭代式开发原则和实践为基础的软件工程的现代方法。第三部分更详细地讲解了如何通过度量来确定所采用技术的作用。本书适合商业组织中的各级领导人以及任何希望成功管理软件项目的人员阅读。
软件开发经济学
The Economics of Iterative Software Development
Steering Toward Better
Business Results
(美)Walker Royce Kurt Bittner Mike Perrow 著
苏敬凯 金振林 译
用有限的资源获得更好的结果
高效的软件开发不再仅仅是IT人员关注的事:今天,它对于整个企业都至关重要。然而,商务人员通常没有准备好如何对软件活动做出明智的决定,本书将帮他们做好准备。作者利用自己几十年的经验来展示如何利用实用的、以经济学为基础的技术来计划和管理软件项目,从而得到最大的技术投资回报。
作者从破除那些广为流传的软件成本神话开始,解释了在当前的开发环境下传统的以工程为基础的软件管理为什么会产生令人无法接受的低效率。接下来,作者展示了业务经理和技术经理如何将经济原则与迭代式的开发相结合,从而利用有限的资源得到最佳的结果。只要使用这些技术,就能构建出那些能使业务创新和过程改进最大化的系统。
本书重点包括:
如何反复地量化项目所要交付的价值,如何在需要时迅速调整方向。
如何降低软件项目的规模、复杂度以及其他一些会导致项目失败的因素。
如何确定并淘汰那些不起作用的软件开发过程。
如何改进开发过程、减少返工、规避风险和识别低效率。
如何通过提高个人技能、团队交互和组织级能力来建立一支更熟练的团队。
如何使用集成的自动化工具改进效率。
在项目的起始阶段、细化阶段、构造阶段和交付阶段,分别该度量什么。
本书能够帮助业务经理和技术经理在软件开发的整个过程中做出更好的决策,并帮助团队领导和项目领导随时跟踪一个项目或创新活动,从而更快地交付更多的价值。
作者简介
Walker Royce 是IBM全球服务的副总裁,他管理过许多大型的软件工程项目,为许多软件开发组织提供咨询,在软件管理方面发明了许多创新方法,并编著了《Software Project Management: A Unified Framework》(Addison-Wesley, 1998)一书。
Kurt Bittner 是Ivar Jacobson咨询公司在美国的首席技术官,他在软件行业工作了27年,所从事的工作包括开发人员、团队领导、项目经理、架构师和业务领导,与人合著出版了《Use Case Modeling》(Addison-Wesley, 2003)和《Managing Iterative Software Development Projects》(Addison-Wesley, 2007)。他还撰写过很多篇文章,特别是改进需求和软件开发管理实践等领域的文章。
Mike Perrow 是IBM软件集团中Rational组织的一位撰稿人和编辑,是《The Rational Edge》在线杂志的创办人。
假设你是一位富有并且经验丰富的旅行家,正在计划一个为期一个月的多国假期。听起来不错吧!接下来,你要选择一个大陆,世界上总有些你想要去探索的地方。你会从哪里开始呢?如果你实际地考虑一下这个打算,可能很快就能决定自己这个假期的起点和终点。你会想象对某些著名城市、名山大川及海滨胜地的一连串的小旅行。但是,当你开始确定这次旅行的总体路线时,你会开始计划每一顿饭、每一次晚间散步和每一次购物吗?当然不会。没有人能预先准确地计划在那些陌生的地方做些什么,或者一路上如何使用时间和资源。另外,你也知道,如果你执著于出发前设计好的那份严格的计划,那么游览的质量肯定会受到损害。
本书讲的是如何管理软件开发项目,这确实很难与悠长的假期相提并论。但从管理的角度来看,两者有很多共同点,这些共同点都与不熟悉有关——不熟悉的地区、语言、个人行为、习惯、成本和基础设施。本书所基于的经验涉及那些软件开发团队在每个项目中都会遇到这些不确定性的遭遇。那些最成功的团队会先在高层次上对自己的项目进行计划,然后(就像那些经验丰富的旅行者一样),他们会随着旅程的进展而以一些较小的步骤进行计划,这就是迭代。
对于大多数对改进业务结果感兴趣的经理们,我们将尽量使用一些他们能理解的词汇来解释这些成功。考虑到这种情况,对于这部分读者而言,我们没有假设他们有大量的技术经验,但是我们必须假设他们承诺要成为成功的领导者。本书的目标读者是那些在某个商业组织中处于不同领导职位的人,特别是那些要采购、管理或开发软件并以此作为业务策略一部分的组织。我们的目标是描述在迭代式的项目中频繁修正航向的好处,如何度量那些中间结果,以及统筹兼顾的方法是如何对底线做出有意义的贡献的。
最后这一点使得所有的事情都与本书的根本主题有关,那就是:经济学。从最广泛的意义上来讲,良好经济性意味着有效地管理有限的资源以获得最优结果。软件经济学同样以这些原则为基础。我们花了些时间来探索差的经济学——以老式的管理风格为基础的,包括那些把软件项目当作传统工程项目(例如造桥)来管理所发生的低效率。当到了软件构造阶段,这些低效率在时间、预算和在市场上失去的机会方面都代价高昂。相反,现代的迭代式开发方法能够以实用性地管理团队的有限资源为基础来改进这一结果。因此就有了本书的书名。
本书安排章节的顺序很显而易见。第一部分“软件驱动的经济”讲述在今天这样的商业气候下的软件开发和管理的情景、成功的难点以及失败的结果。第二部分“提高软件开发的经济效益”关注的是以迭代式开发的原则和实践为基础的软件工程的现代方法。当然,我们并非无所不知。但是,通过几十年对于“我们知道什么不起作用”的观察,我们对于“什么能起作用”也了解了很多。第三部分“软件工程的实用度量”更详细地讲解了如何通过度量来确定这些技术能够起作用。正如“你不能管理你不能度量的东西”这句更新过的箴言那样,本书的最后一部分关注度量的目的,包括可以用怎样的方式在整个项目周期中降低差异。
无论你是一位正在寻找迭代式开发原则概述的经验丰富的软件项目经理,还是一个正在寻找这些概念的入门知识的新手,你都会发现本书的价值。
Mike Perrow
Medford, Massachusetts
计算机\软件工程
基于结果的软件管理——用有限的资源获得更好的结果。
高效的软件开发不再仅仅是IT人员关注的事:今天,它对于整个企业都至关重要。然而,商务人员通常没有准备好如何对软件活动做出明智的决定,本书将帮他们做好准备。作者利用自己几十年的经验来展示如何利用实用的、以经济学为基础的技术来计划和管理软件项目,从而得到最大的技术投资回报。
作者从破除那些广为流传的软件成本神话开始,解释了在当前的开发环境下传统的以工程为基础的软件管理为什么会产生令人无法接受的低效率。接下来,作者展示了业务经理和技术经理如何将经济原则与迭代式的开发相结合,从而利用有限的资源得到最佳的结果。只要使用这些技术,就能构建出那些能使业务创新和过程改进最大化的系统——不仅如此,你所执行的软件过程还能使你始终如一地做到这一点。
本书重点包括:
· 如何反复地量化项目所要交付的价值,如何在需要时迅速调整方向。
· 如何降低软件项目的规模、复杂度以及其他一些会导致项目失败的因素。
· 如何确定并淘汰那些不起作用的软件开发过程。
· 如何改进开发过程、减少返工、规避风险和识别低效率。
· 如何通过提高个人技能、团队交互和组织级能力来建立一支更熟练的团队。
· 在哪里使用集成的自动化工具能够改进效率。
· 在项目的起始阶段、细化阶段、构造阶段和交付阶段,分别在何时度量哪些特定的度量元。
本书能够帮助业务经理和技术经理在软件开发的整个过程中都能做出更好的决策,它还能帮助团队领导和项目领导随时跟踪一个项目或创新活动,从而更快地交付更多的价值。
作者简介
Walker Royce是IBM全球服务的副总裁,他管理过许多大型的软件工程项目,为许多软件开发组织提供咨询,在软件管理方面发明了许多创新方法,并编著出版了《Software Project Management: A Uni?ed Framework》(Addison-Wesley)一书。
Kurt Bittner是Ivar Jacobson咨询公司在美国的首席技术官,他在软件行业工作了27年,担任过各种角色,包括开发人员、团队领导、项目经理和业务领导,与人合著出版了《Use Case Modeling》(Addison-Wesley)和《Managing Iterative Software Development Projects》(Addison-Wesley)。他还撰写过很多篇文章,特别是改进需求和软件开发管理实践等领域的文章。
Mike Perrow是IBM软件集团中Rational组织的一位撰稿人和编辑,是《Rational Edge》在线杂志的创办编辑。
(美)Walker Royce, Kurt Bittner, Mike Perrow 著:暂无简介
苏敬凯 金振林 译:暂无简介
前言
第一部分软件驱动的经济
第1章软件项目管理的挑战
11软件开发中的高风险
12制度上的关注
13传统的软件项目管理
14瀑布方式的问题
15小结
第2章达成结果:软件经济学的案例
21迭代式开发
22基于结果的方式的益处
23成功的标志
24小结
第二部分提高软件开发的经济效益
第3章软件经济学的趋势
31软件经济学的简化模型
32软件工程:40年历史回顾
33改进的关键:平衡的方法
34小结
第4章降低软件项目的规模或者复杂度
41管理范畴
42降低人工编写的代码的规模
43使用面向服务的架构增强复用
44小结
第5章改进开发的过程
51项目过程
52使用迭代式的过程
53及早应对重大风险
54增量式地改进实践以达到目标
55小结
第6章提高团队效率
61提高个人绩效
62改进项目的团队协作
63提高组织级能力
64小结
第7章通过集成工具来提高自动化
71提高个人生产力
72减少错误源
73使过程改进可能进行
74小结
第8章通过常识来加速文化的改变
81成功组织的特征
82成功的关键
821低中级管理者是关键的执行者
822需求、设计和计划要可变并且具体
823鼓励进行雄心勃勃的演示
824项目性能的好坏在生命周期的早期更明显
825早期的迭代应该是不完全的
826详细完整的工件在早期不太重要,在后期比较重要
827真正的问题会系统化地出现,也应系统化地加以解决
828质量保证是每个人的职责,不是一个单独的行当
829应该把在自动化方面的投资看作是必要的
83建议:选择正确的项目、正确的人、正确的目标
84小结
第三部分软件工程的实用度量
第9章实用的软件开发度量观
91度量与目标
92易变性和目标
93度量与迭代开发
94度量工作何时会出错
95事先制定详细计划错在哪里
96在每个阶段分别确定要度量什么
97小结
第10章在起始阶段度量什么
101评估财务可行性
102评估技术可行性和估计总体项目成本
103起始阶段中的迭代
104其他度量
105小结
第11章在细化阶段和构造阶段度量什么
111细化阶段的度量工作
112如何度量风险的降低
113如何度量进展情况
114构造阶段的度量工作
115如何度量backlog
116如何度量测试覆盖率
117如何度量构建稳定性
118构造阶段的预期进展趋势
119小结
1191细化阶段
1192构造阶段
第12章在交付阶段度量什么
121交付阶段的度量工作
1211度量什么
1212分析趋势和评估测试结果
1213影响可发布性的其他一些需要考虑的事项
122如何对交付阶段进行总结
123小结
第13章在嵌入规划的项目中度量什么
131将项目组织起来构成规划
132如何度量规划的进阶
133小结
附录A迭代式项目管理起步
推荐书目