价值驱动的软件开发:低风险、高回报
将软件开发和价值创造联系起来,同时优化投资回报率。
软件开发从本质上说是在创造价值,但是在现实中,各种应用软件往往难以交付客户所需要的商业价值。本书直接将软件开发和价值创造联系起来,有助于开发人员改变这种状况。通过学习本书,您将学会如何确定哪些特性能够增值,而哪些不能,并将整个开发过程的重点重新放到更快更多地交付价值的层面上。
《价值驱动的软件开发》一书向读者展示了:
● 确定MMF(最小适销特性)——软件开发中价值的基本单元
● 通过将迭代开发与迭代投资联系起来,以加速价值交付
● 通过渐进体系结构技术优化回报
● 在开发过程中有效地包含商业涉众
● 基于“最小投资回报率”评估来安排待交付特性的优先级
● 在开发过程中的每一步量化金融风险
● 在整个软件开发过程中处理“无形因素”
不管您使用了什么方法——RUP还是XP——本书都将会告诉您如何实现对业务至关重要的目标:降低风险、保证充裕的现金流量,以及取得更高的投资回报率。
第1章dot.com之后的软件开发
1.1软件开发并不简单
1.2从新的视角考虑软件开发
1.3吸取历史教训
1.4最小适销特性
1.5MMF的选择
1.6打开软件开发的黑匣子
1.7风险控制
1.8六西格玛技术
1.8.1可测量的客户需求
1.8.2依靠数据做出决策
1.8.3结合客户的意见
1.8.4挑战现状
1.8.5跨越组织结构
1.8.6持续可测进度
1.9小结
1.10参考资料
第2章新型ROI
2.1应用程序和ROI(投资回报率)
2.2为什么ROI如此重要
2.3商业案例
2.4现金流量预测
2.5回收期
2.6未来货币的现值
2.7净现值
2.8损益平衡时间
2.9内部回报率
2.10术语小结
2.11一个例子
2.12将MMF结合到金融案例中来
2.13基于MMF的ROI与传统ROI的比较
2.14考虑风险因素
2.15MMF排序的影响
2.16小结
2.17参考资料
第3章适销特性的确定与评估
3.1渐进投资方法
3.2最小适销特性
3.3候选MMF
3.4确定MMF的价值
3.5开发及交付先驱
3.6MMF优先图
3.7体系结构先驱
3.8小结
3.9参考资料
第4章渐进体系结构
4.1体系结构的地位
4.2体系结构与规则之间的比较
4.3有关体系结构的问题
4.4模式块
4.5价值驱动方法
4.6体系结构的相互依存关系
4.7用简单的层次构造体系结构
4.8不同的分解过程
4.9体系结构中一对多的依赖关系
4.10体系结构的一致性
4.11体系结构中的多重继承
4.12螺旋型体系结构
4.13小结
4.14参考资料
第5章IFM排序策略
5.1交付具有价值的特性
5.2成本与利润的对比分析
5.3MMF交付序列的成本-利润分析
5.4任务的复杂性
5.5MMF排序策略
5.6贪婪法
5.7简单的预测法
5.8加权预测法
5.9MMF与AE的排序
5.10风险迁移
5.11反复做出排序决策
5.12小结
5.13参考资料
第6章MMF类别与并行开发
6.1MMF运作方式的影响
6.2对时间敏感的交付
6.3指数级增长模式
6.4并行开发
6.5小结
6.6参考资料
第7章管理无形因素
7.1处理无形因素
7.2管理无形因素
7.3量化无形因素的成对法
7.3.1第一步:确定一组度量标准
7.3.2第2步:建立成对比较表格
7.3.3第3步:进行成对比较
7.3.4第4步:计算等价SANPV
7.4混合MMF
7.5无形因素对成本-利润分析的影响
7.6基本NPV
7.7潜在NPV
7.8丧失机会成本
7.9小结
7.10参考资料
第8章IFM和统一过程
8.1引言
8.2初始阶段
8.2.1定义远景描述
8.2.2定义业务实例
8.2.3MMF的引出
8.2.4将MMF分解为用例
8.2.5构造MMF图表
8.2.6确定和每个MMF相关的主要风险
8.2.7开发项目术语表
8.2.8周期目标里程碑
8.3细化
8.3.1体系结构的选择
8.3.2成本和工作量估计
8.3.3周期体系结构里程碑
8.4MMF的开发和交付
8.4.1MMF排序
8.4.2NPV里程碑
8.5MMF设计
8.5.1需求的引出
8.5.2设计
8.5.3MMF项目计划
8.5.4特性设计标志
8.6MMF的构建
8.6.1特性操作能力
8.6.2MMF转换
8.6.3特性发布标志
8.7对MMF选择的二次访问
8.8小结
8.9参考资料
第9章IFM与敏捷开发
9.1面临的挑战
9.2敏捷方式的渐进开发
9.3将用户故事融入MMF
9.4发布计划:将用户故事结合到发布过程中
9.5评估发布计划的NPV
9.6发布计划会议
9.7有关体系结构的问题
9.8简单方案与预测方案的对比
9.9其他敏捷开发环境
9.10SCRUM
9.11小结
9.12参考资料
第10章做出灵活决策
10.1一种协作方法
10.2获得项目投资
10.3操纵项目的特征
10.41FM窗
10.5实现IFM过程
10.61FM策略对商业框架的影响
10.7管理行为如何从IFM中获益
10.8当项目出现问题时
10.9运用IFM
10.10小结
10.11参考资料
第11章案例研究:IFM的运作
11.1引言
11.21FM元素定义阶段
11.2.1选择MMF
11.2.2定义MMF串
11.2.3引出体系结构元素
11.2.4定义体系结构依赖关系
11.2.5构建IFM优先图
11.3金融运行阶段
11.4计算阶段
11.4.1调整序列的NPV
11.4.2序列选择
11.4.3贪婪试探法
11.4.41FM试探法
11.5衡量IFM试探法的有效性
11.6R01分析
11.7现金流量和损益平衡时间
11.8小结
附录AIFM术语总结
附录B渐进投资方法的快速入门
“您绝对应该写这本书!”
这就是我的经理,Stu Stem,Sun公司专业服务中心副总经理对这本书的热情回应。这本书吸收了应用开发方法中的最新观点,并将这些方法主要应用于获取经济利益而不是技术利益。
尽管我们在创造开发方法这一过程中作出了努力并取得了成功,但只有少数创业者认识到了利用这些技术使经济利益最大化的潜力。毕竟经济利益在软件开发中通常是成功的永久度量,至少在商界中是如此。
本书采用了近几年来在赢得几个富有竞争性的系统集成和应用开发项目的合同方面的经验。虽然赢得这样的合同无疑是利用创新的方法在竞争中取胜,但是同样事关利润的获取。价格必然存在于用户的预算之中,那么投资者要想得到高额利润,就必须尽量降低开发成本,并且必须在应对风险时调整利润值。这些观点并无新意,它们对于任何竞争采购都是正确的。
有关软件开发的不同之处是我们恰好学会了理解价值创造。最普遍的看法是软件开发要承担风险和损失。尽管如此,即使最顽固的反对风险的开发机构都会意识到软件开发会带来固有的价值。如果不能创造价值,就没有人会投资软件开发。遗憾的是,开发机构的所有创造热情和商业热情通常都集中于降低成本和风险。无论是在投标阶段还是在实际运作阶段都是如此。开发人员运用最新的软件方法,创立最新的项目管理策略,并且不断地发展风险缓解技术,主要只是为了实现一个目标:即控制成本。
相反,大部分的运作过程对客户来说是不可见的,在这些范围内,客户很少参与作出重要项目决议的商讨。
在20世纪90年代,我为东南亚某国政府做大规模的竞争性采购工作。这个项目的本质是,由于评估参数被紧紧地束缚住了,因此技术创新过程中的区别就很有限,我们得用另外一种不同的方法赢得竞争。最后我想到,如果我们对将价值返还给客户的时间进行优化,而不是仅仅关注控制风险和成本,也许能够提出一种与众不同的价值方案。于是,我们根据价值单元,对客户的要求进行重新分析和分类,最后发现我们确实可以调整开发次序,这样一来,与优化总成本相比,我们就可以更快地交付实际价值。同时,我们可以将成本分为更多可控部分来分期偿还,每一部分都与它的利润值有关。
客户的介入是很有影响的。此方案能有效地降低借款底线和利息支出,便于产品更早地进入市场,并且依据经济前景创造一个更好的模式。
商业银行需要重新计算项目经费数目,开发人员需要理解为什么我们明显要对用户的要求重新排序,当然,客户自身也要看到、理解并会计算这种方法带来的好处。在这段时间内发生了极不寻常的讨论。开发人员就投资利润的问题参与到与银行家的讨论中;项目经理将数据分析表与金融家和投资者进行交易;分析家根据“价值的转化”而不是根据功能效率来衡量此体系结构;在这个过程的结尾,不需要分别向客户做技术方面和经济方面的两种陈述,只需给出一种涵盖这两方面的陈述,包括这一组讨论所表现的所有方面。我们赢得了时间,赢得了业务!
这就是渐进投资软件开发的起源,此后诞生了本书所要介绍的渐进投资方法(1FM,Incremental Funding Methodology)。自然,这个方法要用几个月的时间才能产生效果。任何观点的酝酿都是一个不可预知的过程,在它产生作用之前谁都不清楚会发生什么。虽然渐进投资软件开发的观点已经初步显示出了一些成功的迹象,但是还需要更全面地加以证实。1999年末我受命负责Sun Microsystems公司的纽约“Java中心”。这个Java中心是Sun公司的全球Java咨询机构的一个实践,为客户提供体系结构和设计方面的的专业知识来解决在Java和J2EE中遇到的问题。很快我们就会看到,通过将最初的IFM观念写成应用软件开发工作的提议,就能够获得并成功交付几宗大合同,特别是有关金融产业的用户。然而,我们了解到渐进的投资和早期的价值发布严格依赖于需求本质和价值优化的重分配能力。需求工程本身就是一门学科。
本书的宗旨是希望它能给开发人员、经理、商业主管和风险投资者的成功提供一定的帮助。如果它提供了一个所有开发机构都能用来交换观点的通用的专业词汇表,这些观点是以提高经济上的成功率,降低应用程序开发项目的风险为目的的,那么它就达到了它最主要的目标。可以进一步帮助读者的是,本书有一个相关网站http://vvw.softwarebynumbers.org,在这个网站上您可以得到更多的信息和可下载的工具来帮助您取得进步。
我们相信您会发现本书的内容富有挑战性,能让读者轻松愉快地学习。我们欢迎您通过网站给我们发来反馈信息。
祝愿您所有的软件项目都取得成功,并且有利可图。
MarkDenne