第二章 可行性研究及软件计划
1.软件定义——做什么?
软件生命周期的阶段划分:
- 软件计划:问题定义、可行性研究
- 软件开发:需求分析、软件设计(概要设计、详细设计)、程序编写、软件测试
- 软件运行维护:软件维护
可行性研究是项目开发之前的重要阶段。为了避免盲目的软件开发,相关人员需要对开发特定软件项目的可行性进行研究,结合资金、时间和环境等各方面的制约条件,对该软件产品是否能够解决存在的问题,是否能够带来预期的效果和价值做出评估。
软件项目计划时期
- 软件项目计划时期是生命周期的第一个时期,也是软件开发的基础。
- 根据软件开发的基本过程,软件项目计划时期可分为两个阶段:软件定义和可行性研究。
- 这两个阶段的主要任务就是分析用户要求,在对用户要求充分了解的前提下,分析未来新系统(即目标系统)的主要目标,分析开发系统的可行性。
- 参加这个时期工作的人员有用户、项目负责人和系统分析员。
1.1问题定义
问题定义的内容
- 问题的背景,弄清楚待开发系统现在处于什么状态,为什么要开发它,是否具备开发条件等问题。
- 提出开发系统的问题要求以及总体要求。
- 明确问题的性质、类型和范围。
- 明确待开发系统要实现的目标、功能和规模。
- 提出开发的条件要求和环境要求。
以上主要内容应写在==问题定义报告(或系统目标和范围说明书)==中,作为这一阶段的“工作总结”。
问题定义的方法
具体步骤如下:
首先,系统分析员要针对*用户的要求做详细的调查研究,认真听取用户对问题的介绍*;阅读与问题有关的资料,必要时还要深入现场,亲自操作;调查开发系统的背景;了解用户对开发的要求。
其次是与用户反复讨论,以使问题进一步确定化。经过用户和系统分析员双方充分协商,确定问题定义的内容。
最后写出双方均认可的问题定义报告。
2.可行性研究——能不能做呢?
2.1可行性研究
可行性研究目的:
就是用最小代价在尽可能短的时间内确定问题是否能够解决。即弄清要计算机解决的问题根本所在,确定新系统的作用域,以及项目所需的资源和经费。
(不是解决问题,而是确定问题是否值得去解决)
可行性研究的任务
1.技术可行性
2.经济可行性
3.运行可行性(或用户使用可行性)
4.法律可行性
2.2可行性研究的步骤
- 确定系统的目标
- 分析研究正在运行的系统
- 设计新系统的高层逻辑模型
- 提出可行的解决方案并对其进行评估和比较
- 选择合适的解决方案
- 撰写可行性研究报告
可行性研究的结论
- 可以进行开发。
- 需要等待某些条件
- 需要对开发目标进行某些修改之后才能开发。
- 不能进行或不必进行开发。
2.3可行性研究报告的内容及作用
可行性研究报告编制中应注意的问题
可行性研究报告编制中应注意以下几个方面的问题:
-
坚持实事求是的原则,不要随意夸大新系统的功能和其他指标。
-
任何一项内容的书写均要以科学分析的结果为依据,不能凭空想象。
-
对每一项内容的描述必须反复推敲,一定要做到用词恰当、准确。
-
从具体情况出发。可行性研究报告不一定面面俱到,但对于用户关心的部分或项目中重要的部分要重点阐明。
-
书写形式要规范。
可行性研究报告在软件开发中的作用
可行性研究报告在软件开发中起着重要的作用:
-
可行性研究报告是可行性研究阶段的成果。
-
可行性研究报告提出了软件开发的总体目标和范围,因此它是软件开发的行动指南。
-
可行性研究报告是需求分析的基础和依据。
软件设计国家标准
GB8567:软件设计国家标准
GB8567-88:计算机软件产品开发文件编制指南
GB8567-2006:计算机软件编制规范
3.软件工程开发计划的制订—初步考虑怎么做?
软件工程开发计划书包括:软件工程项目概述、软件工程实施计划。
-
软件工程项目概述:
-
软件工程项目的主要工作内容、软件的功能和性能。
-
为完成任务应具备的条件和限制。
-
主要参加人员的技术水平。
- 项目完成后应移交的程序、文件,非移交的产品。
-
应提供的服务及开始日期和期限。
-
验收标准
-
完成项目的最迟期限
-
本计划的批准者和批准日期
-
本计划的批准者和批准日期
-
用户应承担的工作、对用户的要求等
-
-
软件工程实施计划:
- 各类人员的组成结构和数量
- 本项目任务的分解,任务之间的相互关系和各项任务的责任人
- 项目开发工作的进度计划,每阶段任务的开始时间和结束时间
- 项目成本预算和来源,各阶段的费用支出预算
- 关键问题及支持条件,软件开发风险及应对措施
- 项目最后完工交付的日期等
甘特图(Gantt图)&&PERT图
PERT图描绘出项目包含的各种活动的先后次序,标明每项活动的时间或相关的成本,能清晰地描述子任务之间的依赖关系;
甘特图能清晰地描述每个任务从什么时候开始,到什么时候结束,以及任务之间的并行关系。但它不能清晰地反应出任务之间的依赖关系。
- 甘特图(Gantt图)甘特图的组成一般是这样的,垂直轴代表要执行的任务,水平轴表示时间,水平条表示每个任务的持续时间(由开始和结束时间决定)。
- PERT图(Program Evaluation and Review Technique)即计划评估和审查技术,它用网络图来表达项目中各项活动的进度和它们之间的相互关系,并在此基础上进行网络分析和时间估计,用于协调整个计划的完成。它适合用于子任务很多,关系复杂的项目(区别于甘特图)。
小结
软件的定义及可行性研究是软件生命周期的第一个阶段。在问题正确定义的基础上,通过分析,导出问题的初步试探性的解法。然后在此基础上复查,并修改问题的定义,再分析,再提出改进解法……如此反复,直至提出一个符合系统目标的高层次的逻辑模型。由这个逻辑模型可设想出多种可能的物理系统。然后对这些物理系统进行可行性研究,最后由系统分析员提出一个推荐的行动方案,提交审查。
在可行性研究中,经济可行性是一项重要内容。使用部门往往从经济的角度考虑是否投资于这项工程。
“可行性研究报告”是软件的定义及可行性研究时期所产生的重要文档。
成本效益分析
经济可行性
在可行性研究过程中,经济可行性研究占有重要地位,它从经济上衡量一个项目是否有开发价值。
经济可行性研究主要包括两个方面的内容:一是新系统成本的估计;二是新系统可能产生的效益。又称为成本/效益分析。
为什么要进行效益分析?
开发一个软件系统是一种投资,期望将来获得更大的经济效益。经济效益通常表现为减少运行费用或(和)增加收入。
效益分析的目的
帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。
成本效益分析
- 就是估计开发成本、运行费用和新系统将带来的经济效益。
- 运行费用取决于系统的操作费用和维护费用。
- 操作费用包括操作员人数,工作时间,消耗的物资等等
- 系统的经济效益=使用新系统而增加的收入+使用新系统可以节省的运行费用。
注:运行费用和经济效益两者在软件的整个生命周期内都存在,总的效益和生命周期的长度有关,所以应该合理地估计软件的寿命。
成本效益分析评价指标:
- 货币的时间价值
- 投资回收期
- 纯收入
- 投资回收率
1.货币的时间价值
通常用利率的形式表示货币的时间价值。假设年利率为i,如果现在存入P元,则n年后可以得到的钱数为:F=P(1+i)^n
这也就是P元钱在n年后的价值。
反之,如果n年后能收入F元钱,那么这些钱的现在价值就是:P=F/(1+i)^n
例题:设年利率为10,现存入1000元,则5年后可得钱数为()
F=P(1+i)^n
F=1000(1+10)^5
2.投资回收期
所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。
3.纯收入
纯收入在整个生命周期之内系统的累计经济效益(折合成现在值)与投资之差。
4.投资回收率
把资金存入银行或贷给其他企业能够获得利息,通常用年利率衡量利息多少。类似地也可以计算投资回收率,用它衡量投资效益的大小,并且可以把它和年利率相比较,在衡量工程的经济效益时,它是最重要的参考数据。
指项目投产以后年净收入和总投资之比