可行性与计划研究 
凡事预则立,不预则废。在确定立项前,需要对拟研发软件进行可行性研究,并对经过
分析论证确定可行且必要的软件项目进行立项审批和计划方案准备,以便于软件项目研发
“有的放矢”,获得成功,避免软件项目研发的盲目性,减少研发失败风险,节省人力物力和资
金,简化后续软件需求分析与设计。
3.1 可行性研究
3.1.1 可行性研究的目的 
可行性研究是对拟研发软件项目或拟研发立项问题,调研分析论证其可行性和必要性
的过程。该过程将对拟研发项目进行软件业务处理需求的调研分析、专家评审论证,确定正
式立项研发的可行性和必要性,并预测可能取得的经济效益和社会效益。系统分析员需要
进行一次大的压缩和简化的系统分析和设计过程。主要从技术、经济、社会等方面分析其可
行性,并根据软件运行环境、软硬件及数据资源与处理要求、研发能力和效益等情况,确定立
项开发的必要性,并在确定可行性和必要性后提出初步方案,形成“可行性研究报告”,之后
还需要进行立项并制订研发计划,以便于进行有效研发。可行性研究具有预见性、公正性、
可靠性、科学性等特点。
可行性研究是软件项目开发前非常重要的一个关键环节,决定整个软件项目是否立项
及研发的成败,对于避免研发机构的重大经济损失及信誉危机,减少软件研发的盲目性、立
项失误,节省人力、物力和资金等资源,提高软件研发后续的需求分析与设计工作效率,减少
软件研发重大失误的风险都具有极其重要的经济意义和现实意义。
可行性研究的目的是围绕影响软件项目研发的各种因素的可行性进行全面、系统的知
识拓展和分析论证;以尽可能小的成本在较短时间和特定条件下确定软件项目是否值得研
发,是否可行;分析在当前条件下,开发新软件项目需要具备的必要资源和其他条件情况、关
键问题和技术难点、问题能否得到解决、技术路线和方法等。
可行性研究的结论,主要有3种情况。
(1)可行。可以按初步方案和计划进行立项并开发。
(2)基本可行。对软件项目内容或方案进行必要修改后,可以进行开发。
(3)不可行。软件项目不能进行立项或确定终止。
3

3.2 
可行性研究的内容
1.
可行性研究主要决定软件项目是否可行,以及可行项目的初步方案。主要工作由系统
分析员或软件分析员负责,最后邀请有关专家进行评审论证。由于可行性研究只是决策软
件项目是否可行,因此可行性研究阶段不宜花费过多时间和精力,所需时间取决于软件的规
模,一般可行性研究的成本只占预期总成本的5%~8% 。

可行性研究的主要内容是定义问题,经过调研与初步概要分析,初步确定软件项目的规
模和目标,明确项目的约束和限制,并导出软件系统的逻辑模型;然后从此模型出发,确定若
干可供选择的主要软件系统初步研发方案。

可行性研究主要包括5个方面的研究:技术可行性、经济可行性、运行可行性、社会可

行性和开发方案可行性。

1. 
技术可行性
技术可行性(y)主要分析在特定条件下,技术资源、能力、方法等方面
的可用性及其用于解决软件问题的可能性和现实性。技术可行性是可行性研究中最关键和
最难决断的问题。根据用户提出的软件功能、性能及各项需求与约束条件,从技术方面分析
软件实现的可行性,是软件开发过程中最重要且难度最大的一项工作。由于初步的系统需
求分析和问题定义过程与系统技术可行性评估过程时常同时进行,因此,软件系统目标、功
能和性能的不确定性给技术可行性研究与论证增加了很多困难。

应从项目研发与维护的技术角度,合理设计技术方案,并进行分析比较和评价。确
定使用现有技术开发实现新软件项目的可行性,需要对拟开发软件项目的功能、性能、可
靠性和限制条件进行技术方面的分析。技术可行性研究的内容包括对新软件功能的具
体指标、运行环境及条件、响应时间、存储速度及容量、安全性和可靠性等的要求,对网络
通信功能的要求,确定在现有资源条件下的技术风险及项目能否实现等。其中的资源包
括已有的或可以取得的硬件、软件和其他资源,现有技术人员的技术水平和已有的工作
基础。

technicalfeasibilit

2. 
经济可行性
经济可行性(economicfeasibility)分析也称为成本效益分析或投资效益分析,主要从资
源配置的角度衡量软件项目的实际价值,分析拟研发软件项目所需成本和项目开发成功后
所带来的经济效益。分析软件的经济可行性实际就是分析软件项目的有效价值,一方面是
市场经济、竞争实力及投资分析,另一方面是新软件开发成功后所带来的经济效益分析与
预测。

软件的总成本包括开发总费用和运行管理维护等费用,通常有4个组成部分。

(1)购置并安装软硬件及有关网络等设备的费用。考虑服务器、主机和外围设备等硬
件费用,并注意软件及隐性和潜在的费用。
可以参考2.
(2)软件系统开发费用。考虑研发软件所需要的一次性投资,1节中介绍
的代码行或任务分解方法,将开发过程分解为若干相对独立的任务,分别估计每个独立任务
的成本,从而得到软件开发项目的总成本。估计每个任务的成本时,应先估计完成该项任务
53 


所需的人力费用,以“人月”为单位,再乘以每人每月的平均工资得出每项任务的成本。除一
次性投资外,还需要考虑日常研发及文档等方面的其他费用,如耗材、人工、调研、测试、调试
和鉴定等费用。

(3)软件的安装、管理、配置、运行和维护等费用。
(4)推广及用户使用与人员培训等费用。
软件的效益包括直接效益和间接效益,分析软件开发对其他产品或利润所带来的效益
和影响,相当于因使用新系统而增加的收入加上使用新系统可以节省的运行费用。进行成
本效益分析时,投资是现在进行的,效益是将来获得的,将来的收益和现在已经投入耗费的
成本不宜直接比较,应在考虑货币的时间价值后,才能进行准确的分析。通常用利率的形式
表示货币的时间价值。

软件的成本效益分析需要比较新系统的开发成本和经济效益,以便从经济角度判断这
个项目是否值得投资,通常需要分析计算以下几个量。

(1)投入产出比。软件投资项目的“投入产出比”可以理解为“项目投入资金与产出资
金之比,即项目投入1个单位资金能产出多少单位收益”。其数量常用1∶
N 
的形式表达, 
N 
值越大,经济效果越好。对于这个静态指标,当项目建设期和运行周期确定之后,投入产
出比与内部收益率之间就确立了一一对应关系,可根据基准内部收益评估基准投入产出比。
通常,基准投入产出比为1∶3,小型项目可略低,大型项目可略高。
(2)货币的时间价值。可以用利率来估算货币的时间价值。假设年利率为i,若项目开
发所需经费即投资为
P 
元,则
n 
年后可得资金数为
F 
元,如下式所示。
n

F=P(1+i)
反之,若
n 
年后可得效益为
F 
元,则其资金现有价值可由下式计算。
F

P= n

(1+i)

(3)投资回收期。投资回收期是指使累计的经济效益等于最初的投资费用所需的时
间。
(
投资回收期越短,利润获得越大、越快,项目就越值得开发。
4)纯利润。纯利润是在整个生存周期内的累计经济效益(折合成现在的价值)与投资
之差。相当于把投资开发一个软件系统与把钱存在银行(或其他投资)进行比较,从而评估
该项目是否值得投资。

【实例】需要投资10 万元。其中2.

假设某企业拟开发一套汽车租赁管理系统,5万元
用于购买硬件设备;人力费用按照8人月,每人月8000 元计算;另外还需要软件的安装、管
理、运行等费用5000 元,用户的培训费6000 元。预计5年内每年可产生直接经济效益4.
万元。设年利率为5%,试对该项目进行成本效益分析。
8 

如果考虑货币的时间价值,将来的收入要折算成现在的价值,1

各项数据的计算如图3.
所示。
其中,新软件项目的投入产出比为10∶20.078;9251 万元,差

7814=1∶2.2年后收入8.

1.这些将在第3年收回, 0749/4.259 
0749 万元收回成本, 因此还需要的时间为1.1464≈0.
(年), 因此投资回收期为2.5年的纯利润为20.-=7814(万元)。

259 年;78141010.

54 


开发成本10 万元
硬件设备2.5万元
人力6.4万元
安装运行0.5万元
培训0.6万元
经济效益/年4.8万元
年将来收益(1+i)
n 
当前收益累计当前收益
1 4.8 1.0500 4.5714 4.5714 
2 4.8 1.1025 4.3537 8.9251 
3 4.8 1.1576 4.1464 13.0715 
4 4.8 1.2155 3.9490 17.0205 
5 4.8 1.2763 3.7609 20.7814 
投入产出比1∶2.078 
投资回收期2.259 年
纯利润10.7814 

图3.单位:万元)

1 软件项目成本/效益分析( 

3. 
运行可行性
软件运行可行性主要分析和测定软件在确定环境中,有效进行业务处理并被用户方便
使用的程度和能力。分析新软件项目规定的运行方式可行性,主要包括5方面。

(1)原业务与新软件功能及流程的相近程度和差异;
(2)业务处理的专业化程度、功能、性能、安全性、可靠性及接口等;
(3)对各种用户操作方式及具体使用的要求;
(4)新软件界面的接受程度和操作的便捷程度;
(5)用户的具体实际应用能力及存在的问题等。
4. 
社会可行性
开发新软件项目之前,还应当兼顾对法律、经济发展变化、应用机构规章制度、用户要求
等各种社会因素的约束和要求以及可能带来的影响。由于新软件系统要在社会环境中运行
并进行实际应用,因此,除了之前提到的各种技术因素与经济因素之外,还有较多的社会因
素(业务应用及用户等约束要求)对软件项目的研发及应用起着很大的制约作用。

5. 
开发方案可行性
对提出的新软件研发的各种初步方案进一步分析、比较和论证后,即可从中选择出一个
最佳方案。经过可行性研究,其结果可以作为整个软件工程文档的一项内容。

开发方案可行性研究,包括资源和时间等可行性研究,具体表现在如下4方面。

55 


(1)以正常的运作方式,开发软件项目并投入市场的可行性;
(2)需要人力资源、财力资源等预算情况;
(3)软件、硬件及研发设备等物品资源的预算情况;
(4)组织保障及时间进度保障分析等。
1.可行性研究的步骤
3.3 

可行性研究是抽象和简化的系统分析和设计的全过程,其目标是用最小的代价尽快地
确定问题是否能够解决,以避免盲目投资带来的巨大浪费。可行性研究的具体实施过程

如下
(
。
1)明确系统规模和目标。

通过调研或访问用户的主要人员,对项目的规模和目标进行定义并复查确认,搞准模糊
不清的描述。准确了解用户对项目的想法和实际需求,对系统目标进行具体限制和约束,确
保准确有效地解决需求问题。了解软件的市场需求,调查市场上同类软件的功能、性能、价
格等情况。

(2)研究现有系统。
认真分析、研究用户现有业务系统的基本功能、业务及处理流程、文档资料等情况。并
通过现有系统情况进一步了解用户对新软件项目的确切想法和具体要求,以保证研发的新
软件切实满足用户需求,解决现有系统中存在的不足。

(3)确定系统高层逻辑模型。
通常,人们会从现有系统的物理模型出发,导出现有系统的逻辑模型,再参考现有系统
的逻辑模型,加以改进,设想目标系统的逻辑模型,最后根据目标系统的逻辑模型构造新系
统的物理模型。物理模型可用系统流程图描述,逻辑模型采用数据流图。高层逻辑模型对
应上层数据流图,更具概括性,不涉及细节部分。

(4)制定并推荐技术方案。
可以从系统的逻辑模型出发提出几个较抽象的物理模型,然后根据技术可行性、经济可
行性、运行可行性等方面的分析,对可行的几个方案进行分析比较和优化筛选,并提出推荐
的初步方案和修改完善等建议。推荐的方案应明确提出3方面的意见:本项目的开发价
值、推荐方案的主要依据和理由、初步的开发计划,包括实现新软件开发的具体时间及进度
安排,以及估计软件生命周期各阶段的工作量。还应较详细地分析开发此项目的成本效益
情况及其他可行性研究,以便用户负责人根据经济实力等决定是否投资该项目。

(5)编写可行性研究报告。
经过对可行性研究过程的分析汇总,编写可行性研究报告。该报告实际上是项目初期
策划的结果,主要分析项目的要求、目标和环境,提出几种可供选择的方案,并从技术、经济
和法律等方面进行可行性研究,可作为项目决策的依据,也可以作为项目建议书、投标书等
文件的基础。

可行性研究报告的文档格式可参考国家标准GB/T8567—2006 《计算机软件文档编制
规范》中的“ 研究) FAR),(”) 详细内容参见附录A的A.

可行性分析( 报告(1节。

(6)评审论证。
评审论证“可行性研究报告”是关键环节,只有在对项目目标和可行性问题的认识与用
56 


户、领导和管理人员取得完全一致情况下,才能进行评审论证。
通常采用论证会方式进行评审。评审应邀请用户技术主管、使用部门负责人及有关方

面专家(尤其是参加过类似研发工作的第三方专家)参加,以利于对项目和可行性做出准确

的表达、判断与论证。最后由评审专家签署意见,决定其是否通过。“可行性研究报告”通过

后,项目就可立项并进入实质性的研发阶段。

3.4 
软件项目的立项
1.
经过可行性研究并确定可以研发的软件项目应做好项目研发前的立项工作,主要包括
申请、投标、合同和任务书等重要准备工作。IT 企业的各层次管理和技术人员在软件立项
中起着重要作用:高层决策者负责是否立项的决策;中层人员负责申请、投标、合同和任务
书的具体组织工作;基层人员主要负责申报书、合同、任务书的起草、修改和实施,并联系实
际落实到后续的“需求分析、设计、编码、测试”等工作中。

1. 
项目申报和审批
在调研和可行性研究的基础上,确定研发项目的必要性和可能性,填写立项申报书,
完
成申报及审批手续
。


软件项目特别是重大项目(工程)关系研发机构的生存与发展,其立项至关重要,是研发
项目的重大决策,应按照科学和民主决策的程序进行。履行立项申报与审批手续,可以形成
开发合同或用户需求报告,从而指导软件项目研发,为经费使用和验收提供重要的依据,同
时也是软件计划的基础。相对而言,软件公司的市场销售人员更能及时掌握市场行情及客
户的实际需求,因此可以由市场销售人员独立或辅助软件开发人员共同完成立项申报书。

软件项目立项申报书的编写格式不尽相同,可以查阅相关文献及网络资料。立项文档
编写参考指南的具体条款和内容基本都以国内外大型IT 企业的参考指南为模板,按照软
件工程规范经过整理得来,非常实用。

立项申报书需要进行论证评审,评审通过后该项目方才正式立项。

2. 
招标
大中型软件项目一般由软件项目开发组织责成的发标单位公开招标。软件企业获取招

标信息后,会立即反馈给企业销售服务中心和软件研发中心人员,迅速进行调研和可行性分

析。假如该软件项目研发可行,市场销售服务人员将抓紧准备并开展公关活动,技术支持人

员会马上组织有关的人员,按照投标书的要求,参照招标书的内容,制定并提交投标书,参与

竞标。

投标书的篇幅一般较长,由几十页到数百页不等。讲标时应简练、突出重点、抓住关键, 
力求赢得用户和专家评委的认可。在竞标中,讲标方法非常重要,讲标效果直接影响中标与
否。中标后还需经过技术谈判和商务交流,才能正式签订合同。小型软件项目的开发或产
品实施则可由项目主管、项目负责人或其他代表直接签订项目合同。

3. 
签订合同
合同是软件项目确定和启动的重要标志。正规的软件开发企业都有自行规定的规范

57 


58 
“项目合同”文本格式。一般合同的文档有两份:一份是主文件,即合同正文;另一份是合同
附件,即技术性的文件,其格式和内容与立项申报书的主体部分基本相同,且具有同等效力。
合同正文的主要内容包括合同名称、甲方单位名称、乙方单位名称、合同内容条款、甲乙
双方责任、交付产品方式、交付产品日期、用户培训办法、产品维护办法、付款方式、联系人和
联系方式、违约规定、合同份数、双方代表签字、签字日期等。附件内容包括系统的具体功能
点列表、性能点列表、接口列表、资源需求列表、开发进度列表等主要事项。
项目合同与立项申报书是该项目的第一份管理文档。在项目管理中,二者作用相同,都
需要由专职人员负责保管,以便随时查阅取用。
4. 下达软件开发任务
在软件项目的立项申报书或指令性计划通过审批,或软件企业签订项目合同后,会以任
务书的形式下达软件开发任务。
任务书的主要内容包括任务下达的对象、内容、要求、完成日期、决定投入的资源、任命
项目经理(技术经理和产品经理)、其他保障及奖惩措施等。任务书的长短可视合同或立项
申报书的具体情况而定,若合同或立项申报书很详细,则任务书可简略,反之则应详细些。
任务书的附件。一般为软件开发合同、立项申报书或指令性计划,附件内容应覆盖系统
的功能点列表、性能点列表、接口列表、资源需求列表、开发进度列表、阶段评审列表等。
3.2 软件开发计划
软件开发计划也称为软件项目计划,是指在正式进行软件开发之前,制订的具体指导软
件开发的实施计划,是指导软件开发工作的纲领。软件开发计划主要涉及软件开发阶段划
分、各阶段的工作任务、软件开发涉及的要素以及软件开发的进度安排等。
3.2.1 软件开发计划的内容
为了与客户就风险分析和管理、项目成本估算、进度和组织结构进行交流,需要编写软
件开发计划。此计划包含客户的需要以及如何来满足这些需要。
客户可以查阅计划,以了解开发过程中活动的信息,从而便于在开发过程中跟踪项目的
进展。还可以利用计划让客户认可做出的假设,尤其是有关成本和进度的假设。
一个好的软件开发计划包括下面几方面的内容。
(1)项目范围。定义系统的边界,解释系统将包含什么和不包含什么。可帮助客户确
认开发人员理解了自己的需要。
(2)项目进度。使用工作分解结构、可交付产品和时间线来表示进度,以说明项目生命
周期的每一刻将发生什么。例如,甘特图可有效展示某些开发任务的并行性。
(3)项目团队组织结构。列出开发团队的成员、组织方式以及每个人的分工。通常包
含一个资源分配图表,以说明不同时间的人员安排层次。
(4)打算构建的系统的技术描述。即回答如何进行开发和处理问题,需要列出硬件和
软件,包括编译器、接口和专用设备或专用软件,还包括对布线、执行时间、响应时间、安全性
以及功能或性能的特殊限制。

(5)项目标准、过程和提议的技术及工具。列出必须使用的标准或方法,例如算法、工
具、评审或评审技术、设计语言或表示、编码语言、测试技术。
(6)质量保证计划。为大型项目做出单独的质量保证计划可能更合适。该计划用来描
述评审、审查、测试和其他技术将如何帮助评估质量并确保质量满足客户需要。
(7)配置管理计划。大型项目需要有一个配置管理计划,尤其是当系统有多个版本和
发布时。配置管理有助于控制软件的多个版本。配置管理计划包含如何跟踪需求变化、设
计、代码、测试和文档。
(8)文档计划。在开发的过程,( 尤其是大型项目)中会产生许多文档,其中与设计有关
的信息必须对项目团队成员是可用的。项目计划需要列出将要产生的文档、解释谁以及将
在何时编写这些文档,还必须与配置管理计划相呼应以描述文档是如何被改变的。
(9)数据管理计划。由于每个软件系统都包括输入、计算和输出的数据,因此项目计划
必须解释怎样搜集、存储、操纵和归档数据。
(10)资源管理计划。解释怎样使用资源。例如,如果硬件配置包括磁盘,那么项目计
划的资源管理部分应该解释每个磁盘上有什么数据、怎样分配和备份磁盘组或软盘。
(11)测试计划。需要描述项目测试的总体方法,还应该规定如何收集测试数据,如何
测试每个程序模块(如测试所有路径还是所有语句), 程序模块之间如何集成和测试,如何测
试整个系统,以及由谁进行哪个类型的测试。有时,系统是分阶段生产的,测试计划应该解
释如何测试每个阶段。当在各阶段中向系统添加新功能时,测试计划必须强调回归测试以
保证已有的功能仍能正确运行。
(12)培训计划。通常是在开发的过程中,而非系统完成以后准备各类培训和文档。因
此,一旦系统准备就绪(有时在这之前), 就可以开始培训。项目计划解释如何进行培训,并
介绍每个培训课程、支持软件和文档以及培训对象所需的专业技能。
(13)安全计划。当系统有安全性需求时,可能需要单独的安全性计划。安全性计划强
调系统保护数据、用户和硬件的方法。由于安全性涉及机密性、可用性和完整性,因此,安全
计划必须解释安全性的每个方面是如何影响系统开发的。例如,如果需要用密码来限制对
系统的访问,那么计划就必须描述由谁来提出和维护密码、由谁开发密码处理软件以及将采
用什么样的加密方案。
(14)风险管理计划。需要分析可能存在的风险和所采取的对策。当系统规模较大或
风险较高时,可能需要单独的风险管理计划。
(15)维护计划。如果项目团队在系统交付给用户之后还要对其进行维护,则项目计划
应讨论改变代码、修理硬件以及更新支持文档和培训材料的责任。
项目开发计划的科学制订应着重考虑项目规模、类型、特点、复杂度、熟悉程度等。特别
是在时间计划上,需要注意人数与工作日不可简单互换,如3个人工作5个月不能简单地用
5个人工作3个月来替换。这是因为人员的增加与流动必然会增加培训时间,交流沟通所
占用的时间和资源,自然会影响项目的进度,所以计划时应当将其考虑在内。一般在安排进
度时,由于对即将要做的事情不够了解,因此应留有缓冲时间用于不确定的工作。

3.2 
软件开发计划文档
2.
软件开发计划是研发机构指导组织、实施、协调和控制软件研发与建设的重要文件,也

59 


60 
是软件工程中一种重要的管理文档。其主要作用是使软件项目成员有明确的分工及工作目
标,并对拟开发项目的费用、时间、进度、人员组织、硬件设备的配置、软件开发环境和运行环
境的配置等进行说明和计划,是对软件项目进行运作和管理及解决客户与研发团队间冲突
的依据。依此对项目的费用、进度和资源进行管理控制,有助于项目成员之间的交流沟通, 
也可作为对软件项目过程控制和工作考核的基准。
软件开发计划的文档格式可参考国家标准GB/T8567—2006《计算机软件文档编制规
范》中的“软件开发计划(SDP)”,详细内容参见附录A 的A.2节。
软件开发计划中“软件开发”一词涵盖了新开发、修改、复用、再工程、维护和由软件产品
引起的其他所有的活动。它向需求方提供了解和监督软件开发过程、所使用的方法、每项活
动的途径、项目的安排、组织及资源的一种手段。计划的某些部分可视实际需要单独编制成
册,例如,软件配置管理计划、软件质量保证计划和文档编制计划等。
3.3 练 习 题
1. 单选题 
(1)在需求分析之前有必要进行( )工作。
A.程序设计B.可行性分析C.E-R分析D.2NF分析
(2)可行性研究要进行的需求分析和设计是( )。
A.详细的B.全面的C.简化、压缩的D.彻底的
(3)技术可行性研究要解决( )。
A.存在侵权否B.成本效益问题C.运行方式可行D.技术风险问题
(4)研究开发资源的有效性是进行( )可行性研究的一方面。
A.技术B.经济C.社会D.操作
(5)系统定义明确之后,应对系统的可行性进行研究。可行性研究包括( )。
A.软件环境可行性、技术可行性、经济可行性、社会可行性
B.经济可行性、技术可行性、社会可行性
C.经济可行性、社会可行性、系统可行性
D.经济可行性、实用性、社会可行性
2. 简答题
(1)为什么要进行可行性研究? 
(2)可行性研究的内容包括哪些方面? 
(3)可行性研究的基本步骤有哪些? 
(4)请简述软件项目的立项过程。