2.1 可行性研究的任务
可行性研究的目的
用最小的代价在尽可能短的时间内确定问题是否能够解决。
不是解决问题,而是确定问题是否值得去解决。
说明该软件开发项目的实现在技术上、经济上和社会条件上的可行性;评述为合理地达到开发目标可能选择的各种方案。(GB 8567-88《 计算机软件产品开发文件编制指南 》)
可行性研究的任务
可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。”(GB 8566-88 《计算机软件开发规范》)
可行性研究的最根本任务是:对以后的行动方针提出建议。
可行性研究的内容 ★
- (1) 技术可行性
- (2) 经济可行性
- (3) 操作可行性
- (4) 社会可行性(法律可行性)
- (5) 抉择
(1) 技术可行性
度量一个特定技术信息系统解决方案的实用性及技术资源的可用性。
考虑的问题
(1)开发风险分析
(2)资源分析
(3)相关技术的发展(现有技术能否实现新系统,技术难点、建议采用技术的先进性)
(2) 经济可行性
度量系统解决方案的性能价格比。
考虑的问题
成本/效益分析(开发、运行的成本/效益):
- 有形成本、效益
- 无形成本、效益
价值和成本的关系
- 质量与价值、成本的关系
- 价值/成本的均衡
(3) 操作可行性
- 用户使用可能性
- 时间进度可行性
- 组织和文化上的可行性
2.2 可行性研究过程 ○
- 复查系统规模和目标
- 研究目前正在使用的系统
- 导出新系统的高层逻辑模型
- 进一步定义问题
- 导出和评价供选择的解法
- 推荐行动方针
- 草拟开发计划
- 书写文档提交审查
2.3 系统流程图 ○
系统流程图是概括地描绘物理系统的传统工具。
它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。
符号
基本符号:以概括的方式抽象地描绘一个实际系统所用符号
系统符号:具体地描绘一个物理系统所用符号
2.4 数据流图 DFD (Data Flow Diagram) ★
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的图形表示。
设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能,所以它也是今后进行软件设计的很好的出发点。
符号
数据流图四种基本符号
数据流图几种附加符号
数据流图的层次结构(分层的数据流图) ★
为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。
- 在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据。
- 底层流图是指其加工不需再做分解的数据流图,它处在最底层。
- 中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。
系统逻辑模型与分层的数据流图的对比
系统逻辑模型:
分层的数据流图:
举例
学生购买教材系统:
分层 DFD 图的优点
便于实现:采用逐步细化的扩展方法,可避免一次引入过多的细节,有利于控制问题的复杂度;
便于使用:用一组图代替一张总图,方便用户及软件开发人员阅读。
2.5 数据字典 DD (Data Dictionary) ○
数据字典的任务是:对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。
数据流图和数据字典共同构成系统的逻辑模型:没有数据字典数据流图就不严格,没有数据流图数据字典也难于发挥作用。
数据字典的内容
一般说来,数据字典应该由对下列4类元素的定义组成:
- (1) 数据流
- (2) 数据流分量(即数据元素)
- (3) 数据存储
- (4) 处理
定义数据符号
数据字典的实现
- CASE结构化分析与设计工具 (大型软件) (Computer Aided Software Engineering)
- 卡片形式/excel or record in file (小型软件)
2.6 成本/效益分析 ○
成本/效益分析的目的:从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。
成本估计(人力成本估计)
软件开发成本主要表现在人力消耗。
估算技术:
- 代码行技术
- 任务分解技术
- 自动估计成本技术
代码行技术
根据经验和历史数据估计实现一个功能需要的源程序行数,用每行代码的平均成本乘以行数就可以确定软件的成本。
每行代码的平均成本主要取决于软件的复杂程度和工资水平。
代码行技术是比较简单的定量估算方法。当有以往开发类似工程的历史数据可供参考时,这个方法是非常有效的。
任务分解技术
首先把软件开发工程分解为若干个相对独立的任务。
再分别估计每个单独的开发任务的成本,最后累加起来得出软件开发工程的总成本。
估计每个任务的成本时,通常先估计完成该项任务需要用的人力(以人月为单位),再乘以每人每月的平均工资而得出每个任务的成本。
成本/效益分析的方法
成本/效益分析的第一步是估计开发成本、运行费用和新系统将带来的经济效益,然后从经济角度判断这个系统是否值得投资。
运行费用取决于系统的操作费用(操作员人数,工作时间,消耗的物资等)和维护费用。
系统的经济效益等于因使用新系统而增加的收入加上使用新系统可以节省的运行费用。
注意:
- 总的效益和生命周期的长度有关,所以应该合理地估计软件的寿命。
- 投资是现在进行的,效益是将来获得的,不能简单地比较成本和效益,应该考虑货币的时间价值。
成本/效益分析使用的几个概念
1.货币的时间价值
通常用利率表示货币的时间价值。设年利率为i,现已存入P元,则n年后可得钱数为F=P(1+i)^n。
这就是P元钱在n年后的价值。反之,若n年后能收入F元,那么这些钱现在的价值是P=F/(1+i)^n。
2.投资回收期
投资回收期是衡量一个开发工程价值的经济指标。投资回收期就是积累的经济效益等于最初的投资所需要的时间。
投资回收期越短,就能越快获得利润。
3.纯收入
工程的纯收入是衡量工程价值的另一项经济指标。纯收入就是在整个生存周期之内系统的累计经济效益(折合成现在值)与投资之差。
如果纯收入小于零,那么显然这项工程不值得投资。只有当纯收入大于零,才能考虑投资。
4.投资回收率ROI
Income/Investment
小结
2.1 可行性研究的任务: 技术,经济,操作,社会,抉择
2.2 可行性研究过程: 7 步骤
2.3 系统流程图: 数据在系统(人,软,硬) 各部件之间流动
2.4 数据流图: 源点或终点,处理,数据存储和数据流
2.5 数据字典: 流,元素,存储,处理
2.6 成本/效益分析: 估计,ROI,货币的时间价值
重点
涉及哪些方面的可行性
分层DFD