软件工程技术--第二章 可行性研究

第二章 可行性研究及软件计划

1.软件定义——做什么?

软件生命周期的阶段划分:

  • 软件计划:问题定义、可行性研究
  • 软件开发:需求分析、软件设计(概要设计、详细设计)、程序编写、软件测试
  • 软件运行维护:软件维护

可行性研究是项目开发之前的重要阶段。为了避免盲目的软件开发,相关人员需要对开发特定软件项目的可行性进行研究,结合资金、时间和环境等各方面的制约条件,对该软件产品是否能够解决存在的问题,是否能够带来预期的效果和价值做出评估。

软件项目计划时期

  • 软件项目计划时期是生命周期的第一个时期,也是软件开发的基础。
  • 根据软件开发的基本过程,软件项目计划时期可分为两个阶段:软件定义和可行性研究
  • 这两个阶段的主要任务就是分析用户要求,在对用户要求充分了解的前提下,分析未来新系统(即目标系统)的主要目标,分析开发系统的可行性
  • 参加这个时期工作的人员有用户、项目负责人和系统分析员。

1.1问题定义

问题定义的内容

  1. 问题的背景,弄清楚待开发系统现在处于什么状态,为什么要开发它,是否具备开发条件等问题。
  2. 提出开发系统的问题要求以及总体要求。
  3. 明确问题的性质、类型和范围。
  4. 明确待开发系统要实现的目标、功能和规模。
  5. 提出开发的条件要求和环境要求。

以上主要内容应写在==问题定义报告(或系统目标和范围说明书)==中,作为这一阶段的“工作总结”。

问题定义的方法

具体步骤如下:

​ 首先,系统分析员要针对*用户的要求做详细的调查研究,认真听取用户对问题的介绍*;阅读与问题有关的资料,必要时还要深入现场,亲自操作;调查开发系统的背景;了解用户对开发的要求。

​ 其次是与用户反复讨论,以使问题进一步确定化。经过用户和系统分析员双方充分协商确定问题定义的内容

​ 最后写出双方均认可的问题定义报告

2.可行性研究——能不能做呢?

2.1可行性研究

可行性研究目的:

​ 就是用最小代价在尽可能短的时间内确定问题是否能够解决。即弄清要计算机解决的问题根本所在,确定新系统的作用域,以及项目所需的资源和经费。

​ (不是解决问题,而是确定问题是否值得去解决)

可行性研究的任务

1.技术可行性

2.经济可行性

3.运行可行性(或用户使用可行性)

4.法律可行性

2.2可行性研究的步骤

  • 确定系统的目标
  • 分析研究正在运行的系统
  • 设计新系统的高层逻辑模型
  • 提出可行的解决方案并对其进行评估和比较
  • 选择合适的解决方案
  • 撰写可行性研究报告

可行性研究的结论

  • 可以进行开发。
  • 需要等待某些条件
  • 需要对开发目标进行某些修改之后才能开发。
  • 不能进行或不必进行开发。

2.3可行性研究报告的内容及作用

可行性研究报告编制中应注意的问题

可行性研究报告编制中应注意以下几个方面的问题:

  1. 坚持实事求是的原则,不要随意夸大新系统的功能和其他指标。

  2. 任何一项内容的书写均要以科学分析的结果为依据,不能凭空想象。

  3. 对每一项内容的描述必须反复推敲,一定要做到用词恰当、准确。

  4. 从具体情况出发。可行性研究报告不一定面面俱到,但对于用户关心的部分或项目中重要的部分要重点阐明。

  5. 书写形式要规范。

可行性研究报告在软件开发中的作用

可行性研究报告在软件开发中起着重要的作用:

  1. 可行性研究报告是可行性研究阶段的成果。

  2. 可行性研究报告提出了软件开发的总体目标和范围,因此它是软件开发的行动指南。

  3. 可行性研究报告是需求分析的基础和依据。

软件设计国家标准

GB8567:软件设计国家标准

GB8567-88:计算机软件产品开发文件编制指南

GB8567-2006:计算机软件编制规范

3.软件工程开发计划的制订—初步考虑怎么做?

软件工程开发计划书包括:软件工程项目概述、软件工程实施计划。

  1. 软件工程项目概述:

    • 软件工程项目的主要工作内容、软件的功能和性能。

    • 为完成任务应具备的条件和限制。

    • 主要参加人员的技术水平。

      • 项目完成后应移交的程序、文件,非移交的产品。
    • 应提供的服务及开始日期和期限。

    • 验收标准

    • 完成项目的最迟期限

    • 本计划的批准者和批准日期

    • 本计划的批准者和批准日期

    • 用户应承担的工作、对用户的要求等

  2. 软件工程实施计划:

    • 各类人员的组成结构和数量
    • 本项目任务的分解,任务之间的相互关系和各项任务的责任人
    • 项目开发工作的进度计划,每阶段任务的开始时间和结束时间
    • 项目成本预算和来源,各阶段的费用支出预算
    • 关键问题及支持条件,软件开发风险及应对措施
    • 项目最后完工交付的日期等

甘特图(Gantt图)&&PERT图

PERT图描绘出项目包含的各种活动的先后次序,标明每项活动的时间或相关的成本,能清晰地描述子任务之间的依赖关系;

甘特图能清晰地描述每个任务从什么时候开始,到什么时候结束,以及任务之间的并行关系。但它不能清晰地反应出任务之间的依赖关系。

  1. 甘特图(Gantt图)甘特图的组成一般是这样的,垂直轴代表要执行的任务,水平轴表示时间,水平条表示每个任务的持续时间(由开始和结束时间决定)。

软件工程技术--第二章 可行性研究_第1张图片

  1. PERT图(Program Evaluation and Review Technique)即计划评估和审查技术,它用网络图来表达项目中各项活动的进度和它们之间的相互关系,并在此基础上进行网络分析和时间估计,用于协调整个计划的完成。它适合用于子任务很多,关系复杂的项目(区别于甘特图)。

软件工程技术--第二章 可行性研究_第2张图片

小结

​ 软件的定义及可行性研究是软件生命周期的第一个阶段。在问题正确定义的基础上,通过分析,导出问题的初步试探性的解法。然后在此基础上复查,并修改问题的定义,再分析,再提出改进解法……如此反复,直至提出一个符合系统目标的高层次的逻辑模型。由这个逻辑模型可设想出多种可能的物理系统。然后对这些物理系统进行可行性研究,最后由系统分析员提出一个推荐的行动方案,提交审查。

​ 在可行性研究中,经济可行性是一项重要内容。使用部门往往从经济的角度考虑是否投资于这项工程。

​ “可行性研究报告”是软件的定义及可行性研究时期所产生的重要文档

成本效益分析

经济可行性

​ 在可行性研究过程中,经济可行性研究占有重要地位,它从经济上衡量一个项目是否有开发价值。

​ 经济可行性研究主要包括两个方面的内容:一是新系统成本的估计;二是新系统可能产生的效益。又称为成本/效益分析

软件工程技术--第二章 可行性研究_第3张图片

为什么要进行效益分析?

​ 开发一个软件系统是一种投资,期望将来获得更大的经济效益。经济效益通常表现为减少运行费用或(和)增加收入。

效益分析的目的

​ 帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。

成本效益分析

  • 就是估计开发成本、运行费用和新系统将带来的经济效益
  • 运行费用取决于系统的操作费用和维护费用。
  • 操作费用包括操作员人数,工作时间,消耗的物资等等
  • 系统的经济效益=使用新系统而增加的收入+使用新系统可以节省的运行费用。

注:运行费用和经济效益两者在软件的整个生命周期内都存在,总的效益和生命周期的长度有关,所以应该合理地估计软件的寿命。

成本效益分析评价指标:

  1. 货币的时间价值
  2. 投资回收期
  3. 纯收入
  4. 投资回收率

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.投资回收率

把资金存入银行或贷给其他企业能够获得利息,通常用年利率衡量利息多少。类似地也可以计算投资回收率,用它衡量投资效益的大小,并且可以把它和年利率相比较,在衡量工程的经济效益时,它是最重要的参考数据。

指项目投产以后年净收入和总投资之比

你可能感兴趣的:(软件工程技术,软件工程)