第二章 可行性研究第 2章 Content
2.1 可行性研究的任务
2.2 可行性研究过程
2.3 系统流程图
2.4 数据流图
2.5 数据字典
2.6 成本 /效益分析
2.7 小结开始问题定义可性行研究可行否?
项目实施计划 终止项目的建议结束
Y
N
问题的定义与可性行研究
Who 为谁设计,用户是谁?
What 要解决哪些问题?
Why 为什么要解决这些问题有用的软件
3W
关于工资支付系统规模和目标的报告书 2009.01.01
项目名称,工资支付问题,目前工资计算和报表编制需通过手工完成,成本太高项目目标,研究开发费用较低的工资支付手段项目规模,开发成本不超过 5万元( ± 50%)
初步设想,用学校自己的计算机系统生成工资明细表和财务报表可行性研究,为了更全面的研究该项目可能性,建议进行两周的可行性研究,成本不超过 3000元可行性研究目的:
用最小的代价在尽可能短的时间内确定问题是否能够解决。
不是解决问题,而是确定问题是否值得去解决。
说明该软件开发项目的实现在技术上、经济上和社会条件上的可行性;评述为合理地达到开发目标可能选择的各种方案。
GB 8567-88,计算机软件产品开发文件编制指南,
2.1 可行性研究的任务可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。”
GB 8566-88,计算机软件开发规范,
可行性研究的最根本任务是 对软件开发以后的行动方针提出建议可行性研究的内容
(1) 技术可行性
(2) 经济可行性
(3) 操作可行性
(4) 社会可行性 (法律可行性 )
(5) 抉择技术可行性度量一个特定技术信息系统解决方案的实用性及技术资源的可用性考虑的问题
(1)开发风险分析
(2)资源分析
(3)相关技术的发展(现有技术能否实现新系统,技术难点、
建议采用技术的先进性)
经济可行性度量系统解决方案的性能价格比 。
考虑的问题成本 /效益分析 (开发、运行的成本 /效益)
有形成本、效益
无形成本、效益价值和成本的关系
质量与价值、成本的关系
价值 /成本的均衡举例
1 2 3 4 5 年
60
40
20
0
成本 -效益 (万元 )
该系统节省经费该系统成本盈亏平衡点投资回收期
---------成本及效益分析图操作可行性
用户使用可能性
时间进度可行性
组织和文化上的可行性
2.2 可行性研究过程
1,复查系统规模和目标
2,研究目前正在使用的系统
3,导出新系统的高层逻辑模型
4,进一步定义问题
5,导出和评价供选择的解法
6,推荐行动方针
7,草拟开发计划
8,书写文档提交审查复查 系 统规 模和目 标研究目前正在使用的系 统用户认可?
结 束
Y
N
导 出新系 统 的高 层逻辑 模型进 一 步 定 义问题导 出和 评 价供 选择 的解法推荐行 动 方 针草 拟开发计 划 书 写文档提交 审查问题 定 义可行性研究报告的编写
1 引言
1.1 编写目的
1.2 背景
1.3 定义
1.4 参考资料
2 可行性研究的前提
2.1 要求
2.2 目标
2.3 条件、假定和限制
2.4 进行可行性研究的方法
2.5 评价尺度可行性研究报告的编写
3 对现有系统的分析
3.1 数据流程和处理流程
3.2 工作负荷
3.3 费用开支
3.4 人员
3.5 设备
3.6 局限性
4 所建议的系统
4.1 对所建议系统的说明
4.2 数据流程和处理流程
4.3 改进之处
4.4 影响
4.5 局限性
4.6 技术条件方面的可行性可行性研究报告的编写
5 可选择的其它系统方案
5.1 可选择的其它系统 1
5.2 可选择的其它系统 2
......
6 投资及收益分析
6.1 支出
6.2 收益
6.3 收益 /投资比
6.4 投资回收周期
6.5 敏感性分析7 社会条件方面的可行性
7.1 法律方面的可行性
7.2 使用方面的可行性
2.3 系统流程图
系统流程图是 概括地描绘物理系统的传统工具 。
它的基本思想是 用图形符号以黑盒子形式 描绘组成系统的每个部件 (程序,文档,数据库,人工过程等 )。
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是 物理数据流图 而不是程序流程图。
基本符号
----以概括的方式抽象地描绘一个实际系统所用符号
---
具体地描绘一个物理系统所用符号系统符号图 2.3 库存清单系统的系统流程图
2.4 数据流图
DFD ---- Data Flow Diagram
一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的图形表示。
设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能,所以它也是今后进行软件设计的很好的出发点。
数据流图四种基本符号数据加工 /处 理 /变换数据源点或终点 (外部实体 )
数据流 (data flow)
数据存储文件或或或数据流图几种附加符号数据流图的层次结构
为了表达数据处理过程的数据加工情况,需要采用 层次结构 的数据流图。按照系统的层次结构进行 逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。
在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据。
底层流图是指其加工不需再做分解的数据流图,它处在最底层。
中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。
分层的数据流图
---- 系统 逻辑 模型数据的加工或变换输入 输出软件系统外部实体外部实体
… …
外部实体外部实体
… …
分层的数据流图
F0
F11
F12
F13
F14 F15
F21
F22
F23
F24
F25
第 n 层第 n+2 层举例学生购买教材系统学生教材购 销系统购书单领书单缺书单进书通知进书通知保管员
1
销售购书单领书单学生缺书单进书通知
2
采购保管员第 1 层第 2 层教材存量表 F1
缺书登记表 F2
外部实体 外部实体教材销售子系统无效书单购书单
1.3
登记并开领书单
1.2
开发票
1.1
审查有效性
1.4
登记缺书
1.5
补售教材采购学生学生进书通知有效书单 发票 领书单暂缺书单
1
销售购书单领书单缺书单进书通知
2
采购进书通知缺书登记表教材存量表学生保管员第 2 层补售书单第 3 层教材存量表 F1
缺书登记表 F2
F1
书号单价数量各班用书表 F3 售书登记表 F4
外部项
1
销售购书单领书单缺书单进书通知
2
采购进书通知缺书登记表教材存量表学生保管员采购 子系统第 2 层第 3 层缺书单
2.3
修改教材库存和待购量销售进书通知 进书通知
2.1
按书号汇总缺书
2.2
按出版社统计缺书保管员教材存量表 F1 待购教材表 F5 教材一览表 F6
缺书登记表 F2
,便于实现
,便于使用
--- 采用 逐步细化 的扩展方法,可避免一次引入过多的细节,有利于控制问题的复杂度;
--- 用一组图代替一张总图,方便用户及软件开发人员阅读。
分层 DFD 图的优点
1) 为数据流 (或数据存储 )命名
(1) 名字应代表整个数据流 (或数据存储 )的内容,而不是仅仅反映它的某些成分。
(2) 不要使用空洞的、缺乏具体含义的名字 (如“数据”、
“信息”、“输入”之类 )。
(3) 如果在为某个数据流 (或数据存储 )起名字时遇到了困难
,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难。
画分层 DFD 的指导原则
1,注意数据流图中成分的命名
2) 为处理命名
(1) 通常先为数据流命名,然后再为与之相关联的处理命名。
这样命名比较容易,而且体现了人类习惯的“由表及里”
的思考过程。
(2) 名字应该反映整个处理的功能,而不是它的一部分功能。
(3) 名字最好由 一个具体的及物动词加上一个具体的宾语组成 。
应该尽量避免使用“加工”、“处理”等空洞笼统的动词作名字。
(4) 通常名字中仅包括一个动词,如果必须用两个动词才能描述整个处理的功能,则把这个处理再分解成两个处理可能更恰当些。
(5) 如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解。
画分层 DFD 的指导原则
1,注意数据流图中成分的命名画分层 DFD 的指导原则
2,注意父图和子图的平衡 /balance or coherence
发票
1.3
开领书单领书单
(a) 父图
1.3.1
学生领书单
1.3.2
1.3.3教材
(a)子图画分层 DFD 的指导原则
3,区分局部文件和局部外部项
1
销售购书单领书单缺书单进书通知
2
采购进书通知缺书登记表教材存量表学生保管员采购 子系统第 2 层第 3 层缺书单
2.3
修改教材库存和待购量销售进书通知 进书通知
2.1
按书号汇总缺书
2.2
按出版社统计缺书保管员教材存量表 F1 待购教材表 F5 教材一览表 F6
缺书登记表 F2
局部外部项局部文件画分层 DFD 的指导原则
4,掌握分解的速度一般来说,每一个加工每次可分为 2-4个子加工,最多不得超过 7 个。
5,遵守加工编号规则顶层加工不编号。第二层的加工编号为
1,2,3,?,n号。第三层编号为 1.1,1.2,1.3?
n.1,n.2? 等号,依此类推。
2.5 数据字典 & 用途
---- DD( Data Dictionary)
数据流图 和 数据字典 共同构成系统的逻辑模型没有数据字典数据流图就不严格,没有数据流图数据字典也难于发挥作用。
数据字典的任务是,对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。
数据字典的内容一般说来,数据字典应该由对下列 4类元素的定义组成:
(1) 数据流
(2) 数据流分量 (即数据元素 )
(3) 数据存储
(4) 处理数据流名:
说明:简要介绍作用,即它产生的原因和结果。
数据流来源:即该数据流来自何方。
数据流去向:去向何处。
数据流组成:数据结构。
每个数据量流通量:数据量、流通量。
(1) 数据流词条的描述数据流名:发票说明:用作学生已付书款的依据数据流来源:来自加工“审查并开发票”
数据流去向:流向加工“开领书单”。
数据流组成:学号 +姓名 +书号 +单价总价 +书费合计审查并开发票发票数据元素名,
类型,数字(离散值、连续值),文字(编码类型)
长度,
取值范围,
相关的数据元素及数据结构
(2) 数据元素词条的描述年 =,1900”,.,3000” 月 =,01”,.,12” 日 =,01”,.,31”
摘要 = 1{字母 }4
金额 =,00000000.01”,.,999999999.99” … …
定义数据符号符号 含 义 例 子
= 被定义为
+ 与
[ ]
x=a+b,则表示 x 由 a 和 b 组成
x=[a,b],则表示 x 由 a 或由 b 组成
{ }
或重复 x={a},则表示 x 由 0个 或多个 a 组成
( ) 可选表示在两个 * 之间的内容为词条的注释
m{ }n 重复 x=3{a}8,则表示 x中至少出现 3次 a,最多出现 8次
*…* 注释符
x=(a),则表示 a 在 x 中出现,也可不出现例:存折格式日期 (年月日 ) 摘要 支出 存入 余额 操作 复核户名,所号,帐号,开户日,
性质,印密,
存折 = 户名 +所号 +帐号 +开户日 +性质 +(印密 )+1{存取行 }20
户名 = 2{字母 }24
所号 =,001”,.,999”
帐号 =,00000001”,.,99999999”
开户日 = 年 +月 +日性质 =,1”,.,6” 注:,1”表示普通户,…“6” 表示工资户等印密 =,0” 注:印密在存折上不显示存取行 = 日期 +(摘要) +支出 +存入 +余额 +操作 +复核日期 =年 +月 +日年 =,1900”,.,3000” 月 =,01”,.,12” 日 =,01”,.,31”
摘要 = 1{字母 }4
支出 = 金额金额 =,00000000.01”,.,999999999.99” … …
(3) 数据 存 储 词条的描述数据 存 储 名:
简述:存放的是什么数据。
数据组成,数据结构。
存储方式,文件,数据库等。
存取频率,

审查并开发票学生发票各班学生用书表 教材存量表
(3) 数据 存 储 词条的描述各班学生用书表,
简述,保存各班所用书的书号,
用于购书单有效性审查 。
数据组成,{班号+书号 }。
存储方式,数据库表 。
相关处理:,审查并开发票”
审查并开发票学生发票各班学生用书表 教材存量表加工名,
加工编号,反映该加工的层次简要描述,加工逻辑及功能简述输入数据流,
取值范围,
相关的数据元素及数据结构

(4) 加工逻辑词条的描述
1.3
审查并开发票学生发票各班学生用书表 教材存量表注:加工说明 ----( Process Specification)
加工说明是,对 DFD 中每个加工给予说明。
它是从系统功能的角度对 DFD 作出了注解,与
DD 一样是 DFD 必不可缺少的辅助资料。
PS
对数据流图的每一个基本加工,必须有一个基本加工逻辑说明,描述基本加工如何把输入数据流变换为输出数据流。
加工逻辑说明必须描述实现加工的策略而不是实现加工的细节。
加工逻辑说明中包含的信息应是充足的、完备的、
有用的、无冗余的。
加工逻辑说明加工说明组成输入数据加工逻辑输出数据加工说明描述工具结构化语言判定表判定树描述把输入数据流变换为输出数据流的加工过程,是加工说明的主体。
自然语言 +结构化形式( 1)结构化语言选择结构如果 <条件 >
<策略 >
If <condition>
<policy>
如果 <条件 >

<策略 1>
否则
<策略 2>
情况 1 <条件 >
<策略 1>
… …
情况 n <条件 >
<策略 n>
If <condition>
then <policy1>
Otherwise
<policy2>
case 1 <condition>
<policy1>
… …
case n <condition>
<policyn>
循环结构对 …,
<策略 >
重复以下
<策略 >
直至 <条件 >
For each …,
<policy>
Repeat the following,
<policy>
Until <condition>
商店业务处理系统中,检查发货单,
if 发货单金额超过 $500 then
if 欠款超过了 60天 then
在偿还欠款前不予批准
else
发批准书,发货单
else
if 欠款超过 60天 then
发批准书,发货单及赊欠报告
else
发批准书,发货单
( 2)判定表如果数据流图的加工需要依赖于多个逻辑条件的取值,使用判定表来描述比较合适以,检查发货单,为例
( 3) 判定树判定树也是用来表达加工逻辑的一种工具。有时侯它比判定表更直观。
检查发货单金额 >$500
金额?$500
欠款 >60天 不发出批准书欠款?60天 发出批准书,发货单欠款 >60天 发出批准书,发货单及赊欠报告欠款?60天 发出批准书,发货单外部实体名:
简要描述,什么外部实体有关数据流,
数目,
(5) 外部实体词条描述
1
销售购书单领书单缺书单进书通知
2
采购进书通知缺书登记表教材存量表学生保管员保管员,
简要描述,书库保管员,负责教材的保管与购置有关数据流,缺书单,进书通知数目,1
(5) 外部实体词条描述
1
销售购书单领书单缺书单进书通知
2
采购进书通知缺书登记表教材存量表学生保管员
CASE结构化分析与设计工具 (大型软件 )
卡片形式 /excel or record in file (小型软件 )
2.5.4 数据字典的实现
2.6 成本 /效益分析成本 /效益分析的目的,
从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。
2.6.1 成本估计 ---人力成本估计软件开发成本主要表现为人力消耗
(乘以平均工资则得到开发费用 )
估算技术
1,代码行技术
2,任务分解技术
3,自动估计成本技术代码行技术
根据经验和历史数据估计实现一个功能需要的源程序行数,用每行代码的平均成本乘以行数就可以确定软件的成本。
每行代码的平均成本主要取决于软件的复杂程度和工资水平。
代码行技术是比较简单的定量估算方法。当有以往开发类似工程的历史数据可供参考时,这个方法是非常有效的。
任务分解技术
首先把软件开发工程分解为若干个相对独立的任务。
再分别估计每个单独的开发任务的成本,最后累加起来得出软件开发工程的总成本。
估计每个任务的成本时,通常先估计完成该项任务需要用的人力 (以人月为单位 ),再乘以每人每月的平均工资而得出每个任务的成本。
自动估计成本技术采用自动估计成本的软件工具可以减轻人的劳动,并且使得估计的结果更客观。但是,采用这种技术必须有长期搜集的大量历史数据为基础,
并且需要有良好的数据库系统支持。
2.6.2 成本 /效益分析的方法
成本 /效益分析的第一步是估计开发成本、运行费用和新系统将带来的经济效益,然后从经济角度判断这个系统是否值得投资。
运行费用取决于系统的操作费用 (操作员人数,工作时间,消耗的物资等 )和维护费用。
系统的经济效益等于因使用新系统而增加的收入加上使用新系统可以节省的运行费用。
注意:
总的效益和生命周期的长度有关,所以应该合理地估计软件的寿命。
投资是现在进行的,效益是将来获得的,不能简单地比较成本和效益,应该考虑货币的时间价值。
成本 /效益分析使用的几个概念
1.货币的时间价值通常用利率表示货币的时间价值。设年利率为 i,现已存入 P元,则 n年后可得钱数为
F=P(1+i)n
这就是 P元钱在 n年后的价值。反之,若 n年后能收入 F
元,那么这些钱现在的价值是
P=F/(1+i)n
2.投资回收期投资回收期是衡量一个开发工程价值的经济指标。投资回收期就是积累的经济效益等于最初的投资所需要的时间。
投资回收期越短,就能越快获得利润。
成本 /效益分析使用的几个概念
3.纯收入工程的纯收入是衡量工程价值的另一项经济指标。纯收入就是在整个生存周期之内系统的累计经济效益(折合成现在值)与投资之差。
如果纯收入小于零,那么显然这项工程不值得投资。只有当纯收入大于零,才能考虑投资。
4.投资回收率第 2章 小结
2.1 可行性研究的任务,技术,经济,操作,社会,抉择
2.2 可行性研究过程,7 步骤
2.3 系统流程图,数据在系统 (人,软,硬 ) 各部件之间流动
2.4 数据流图,源点或终点,处理,数据存储和数据流
2.5 数据字典,流,元素,存储,处理
2.6 成本 /效益分析:估计,货币的时间价值