UML软件工程组织

用可行性研究论证您的项目

作者:Scott W. Ambler

在任何项目的开始阶段,项目组都要为项目的总体工作做一些准备工作。在 Rational Unified Process(RUP)和面向对象的软件过程(OOSP)中,这个阶段称为启动阶段。本周,我们考虑如何确定一个项目是否值得启动。本文由《Process Patterns》的第五章改编而来。

启动项目的一个重要环节就是对项目进行论证;也就是说,确定是否应该立项。遗憾的是,论证经常是完成得最差的一项任务。85% 以上的大型项目以失败告终(请参阅《Patterns of Software Systems Failure and Success》一书),这一事实表明大多数项目在论证阶段就应该中止,而不是在为其作了大量投资(并造成损失)之后。论证阶段的主要目标是,确定项目的最佳实施方案,如果存在这样的方案,还要论证它为什么是最佳的。

图1描绘了针对论证阶段的过程模型的解决方案。论证项目时需要完成几项工作,论证项目的主要结果便是可行性研究。为了进行可行性研究,您将重复下列步骤:

图 1. 论证阶段的过程模型


确定可选的实施方案


可行性研究的第一阶段是确定项目潜在的可选实施方案。与流行的观点正好相反,实现应用时总有多种选择,包括什么都不做、使用多种技术实现它、购买一种类似的系统或者将开发工作外包。重要的是,为您的项目确定几个可行的可选实施方案,以便您进行评估和比较,从而最终为自己的公司选择最佳的实施方案。

评估经济可行性
在评估一项可选实施方案的经济可行性时,要回答的基本问题是,“该应用何时能收回成本?”您可以通过进行成本/收益分析来回答这个问题。顾名思义,成本/收益分析就是将应用的全部实际成本与其全部实际财务收益相比较。在《The Squandered Computer》一书中,Strassmann 指出,应该根据可选方案对净现金流量 — 即收益超过成本的总金额 — 的贡献来评价各个方案,因为所有投资的首要目标就是提高公司的整体业绩。

评估技术可行性
除了经济可行性之外,您还必须确定每项可选实施方案的技术可行性。此时需要回答的基本问题是,“是否能够创建该应用?”首先,您必须调研该项目要使用的各项技术。技术方面的问题在于,每项技术在行销演示中都能完美地完成工作,而一旦将它购买回来,往往又是另一种情况。因此,您应该鉴定每一种可供选择的技术。请注意,为了进行合理的评估,您可能需要实现一个微型项目,并且创建一个概念验证 (proof-of-concept) 原型来检验这些技术是否能协同工作。这是 RUP 的描述阶段的基本任务,它可能持续几周或者几个月,但是只有在检验出您选择的技术能否协同工作时才会体现出它的价值。

评估运行可行性
一个应用不应该在经济和技术上行得通,它还必须在运行上行得通。此时要回答的问题的,“应用一旦成为产品,是否能够对该应用提供维护和支持?”创建一个应用与运行一个应用完全是两码事;因此,您必须确定是否能够有效地运行和支持它。

选择一项可选方案
一旦完成对每项可选实施方案的经济、技术和运行可行性评估,就应该从中选择一种实施方案。请记住 — 可行性研究的目标是,比较和对比各项可选实施方案,提出一个最佳的实施方案。执行该项任务的第一步是,排除任何在经济上、技术上或者运行上不可行的方案。这意味着您可能没有剩下任何可选方案。但是什么都不做可能也是不可行的,它意味着您必须从头再来,鉴定更多的可选方案。如果只剩下一个可选方案,则很容易做出决策;如果最后剩下多个可选方案,则必须选择一个最适合您的公司的实施方案。您还可以只确定可行的可选方案,而将决策权留给上级主管部门。

确定潜在的风险
项目论证工作包括定义潜在的风险,特别是那些与项目的技术和运行可行性相关的潜在风险。关键的一点是应该将它们加入您的风险评估文档,以便在项目实施过程中能够妥善处理它们,这也是今后的技巧要讨论的主题。