软件工程中的经济学规律(1)
写在最前面:软件开发本应是一个创造价值的过程,但是众所周知,很多项目由于没有遵循经济学规律失败了。其实,绝大多数软件开发行为并不是技术驱动的,而是由商业需求驱动的,因此,商业驱动的机制是任何一个价值创造过程所要服从的机制。
一、 换个角度考虑问题
1、 吸取历史教训:
20世纪90年代末,出现了.com的高风险投资为基础的商业主张,而这些主张存在严重的缺陷。在当时那个时期,投资者和软件开发人员很少关注传统的投资回报率(ROI - Return on Investment)思想。那时最流行的看法是,投资于软件业的投资者是通过公司在市场上增加的资本价值(常说的上市套现)来获得回报的,而不是通过更好的方式(如真正的公司盈利)来获得回报。
事实上,传统ROI的特定概念本身有很多值得商榷的地方,例如:现在很多机后不会容忍超过一年的ROI。而在.com繁荣兴旺的时代,三到五年的ROI标准已经被证明是风险极大的。
对于一个大的软件开发项目而言,几乎不可能在短于一年的时间内收回投资。如果短期ROI是唯一可以接受的ROI,而典型的软件开发则要求更长时间的ROI,那么如何在.com泡沫破灭后进行软件开发的投资呢?如何才能将必要的资金投入大的软件开发项目上而仍旧使开发人员和投资者都能赚到钱呢?
答案在于对软件的传统ROI模型进行重新评估,并掌握软件设计方法中进行短期开发的基本原理。
在过去的大约十年内,软件开发的方法轮方案无论在本质上还是在手段上都有重大的变化。从一开始的“瀑布”方案,到后来的迭代或分阶段需求定义的方法。在许多方面,迭代方法是成功的,然而,迭代方法最初在很大程度上是以技术为基础的,而且主要从技术角度来衡量。有一种观点是,软件开发的测量和管理应该基于迭代的基础之上,当这种观点被广泛接受时,软件开发应如何投资的问题却很少得到关注。正如下面即将阐述的那样,从新的经济角度定义组件是十分必要的。这些经济成分在软件组件中扮演了一个十分不同的角色,他们代表适销价值单元,而不是类,也不是用例或模式。
2、最小适销特性(MMF – Minimum Marketable Feature)
软件应用程序可以分解成适销价值单元,这一点不足为奇。从根本上来说,商业软件是一种产品,并且买方以许多不同的方式去察觉产品的价值。软件产品的独特之处就是,它的各个特性通常是可分开交付的。换句话说,对于一个复杂的软件应用程序而言,即使它还没有全部完成,它也会对客户产生价值。事实上,经常有人声称软件就其本质而言总会是不完整的。
通过对软件组件的组装方式进行谨慎选择,我们能在应用程序完成之前的任何时候很好的创造出某些已确定的适销价值单元。通常,MMF在以下一个或几个方面创造市场价值:
- 竞争差异
- 收益形成
- 成本节约
- 品牌规划
- 较高的诚心度
很明显,并不是所有的软件特性都是MMF,这意味着如果要在构建软件的时候优化价值创造过程,那么谨慎确定和选择MMF是非常重要的。
3、MMF的选择
在选择MMF是的中心原则就是MMF应决定设计和开发规程的迭代。与之形成对比的是,传统RUP的迭代过程取决于对用例的考虑。在XP中最小迭代过程受用户故事的主观选择的驱使,并且受到技术特性和经常进行的集成测试需求的限制。这里所用的方法没有试图取代RUP或XP,而是通过某种程度的经济考虑来对这些方法进行补充。
MMF的选择和排序是软件开发业务中最重要的步骤之一。实际上,我们的方法致力于准确分析MMF的定义、选择和排序的过程。
关于这一点,有许多重要原因:
(1)如果适销价值单元存在于软件应用程序之中,那么价值创造过程需要认可它们并清晰的表述他们。
(2)将软件开发看作价值创造单元的集合,这一思想能够使投资更加细化,并且和迭代交付更加紧密地联系起来。
(3)如果能够确定并量化MMF,那么我们就有可能定义单位时间内创造最佳价值的机制,从而促使迭代软件开发过程更多地从经济因素上考虑问题。一种可能的优化过程是:为MMF所创造的价值进行排序,以便尽早创造最大价值。确定MMF的最佳顺序是这个优化过程的关键部分。
(4)通过对MMF进行谨慎排序,我们能够得出与之相关的最小ROI,这个最小ROI意味着更细粒度的投资。这意味着软件开发项目可以根据其MMF进行排序,从而出现自我供给状态——这是一种最佳的但不一定总能达到的状态。
参考资料:《价值驱动的软件开发》、《软件成本估算 COCOMOII模型方法》
浙公网安备 33010602011771号