可行性研究
- 可行性研究:分析和设计的压缩和简化,在高层抽象进行系统的分析和设计
- 目的:最小代价在尽可能短的时间确定问题能否解决
- 分析过程:
- 可行性方面:
- 步骤:
- 系统流程图:用图形符号以黑盒形式描绘系统部件:表述数据流动情况
- ==数据流图:(DFD) 描绘信息和数据流的流动和处理逻辑==
- 画法:
- 例题:
- 数据字典:数据流图中包含元素的定义集合
- 例题:
- ==软件开发成本估计(成本效益分析):人力消耗==
- ==成本/效益分析==
- 补充
- 基于计算机系统的元素
- 计算机系统工程:是一个问题求解的活动。
- 目的:
- 任务:
- 可行性分析
- 内容:
- 经济:成本/效益分析
- 技术:
- 法律:
- 结论
可行性研究:分析和设计的压缩和简化,在高层抽象进行系统的分析和设计
目的:最小代价在尽可能短的时间确定问题能否解决
分析过程:
- 问题定义
- 导出逻辑模型->(数据流图+数据字典)
- 探索可选择的主要解法
- 研究解法可行性
可行性方面:
- 技术:现有技术能否实现
- 经济:经济效益与开发成本
- 操作:操作方式与用户系统的兼容
- 其他(包括社会与法律)
步骤:
do{
复查系统规模和目标(问题定义和约束限制)
研究当前正在使用的系统(能做到的)
导出新系统的高层逻辑模型{
现有物理系统->现有逻辑模型->目标逻辑模型->目标物理系统
}
进一步定义问题
}while(确认有误)
导出评价供系统选择的解法{
if(!技术){
排除;
}else if(!操作){
排除;
}else if(!经济){
排除
}
}
推荐行动方针{
可行?继续:中断;
}
草拟开发计划书{
进度表
开发人员,计算机资源
估算成本,阶段分析
}
文档提交审查
系统流程图:用图形符号以黑盒形式描绘系统部件:表述数据流动情况
数据流图:(DFD) 描绘信息和数据流的流动和处理逻辑
画法:
确定输入输入,源点,终点
顶层数据流图
用(处理)连接(输入输出),并命名
自顶向下,细分为多个数据流图
例题:
银行计算机储蓄系统的工作过程大致如下∶储户填写的存款单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
数据字典:数据流图中包含元素的定义集合
- 数据流
- 数据流分量(数据元素)
- 数据存储
- 处理
数据字典分析阶段的工具,估计一个数据的影响,是数据库开发的第一步
例题:
北京某高校可用的电话号码有以下几类:
- 校内电话号码由4位数字组成,第1位数字不是0;
- 校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,
- 若是本市电话则再接着拨8位数字(第1位不是0),
- 若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。
电话 = [校内电话|校外电话]
校内电话 = 非零数字+3位数字
校外电话 = [本市电话|外地电话]
本市号码 = 0 + 非零数字 + 7位数字
外地号码 = 0 + 3位数字 + 非零数字 + 7位数字
非零数字 = [ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ]
3位数字 = 3 {数字} 3
7位数字 = 7 {数字} 7
数字 = [ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ]
软件开发成本估计(成本效益分析):人力消耗
- 代码行:代码量估计 成本=代码平均成本*代码行数
- 任务分解:分解求和
任务成本 = 人力*平均工资
软件成本 = ∑ 任 务 成 本 ∑任务成本 ∑任务成本
- 自动估算成本:利用软件工具
成本/效益分析
通常用利率的形式表示货币的时间价值。假设年利率为i ii,如果现在存入P PP元。则n nn年后可以得到的钱数为:
F
=
P
(
1
+
i
)
n
F=P(1+i)^n
F=P(1+i)n
,也就是P PP元钱在n nn年后的价值。反之,如果n nn年后能收入F FF元钱,那么这些钱现在的价值是:$P = F / ( 1 + i ) ^n $
- 货币时间价值: F = P ( 1 + i ) n F=P(1+i)^n F=P(1+i)n
- 投资回收期
- 纯收入
- 投资回收率
补充
基于计算机系统的元素
基于计算机的系统通过处理信息来完成某些预定义目标而组织在一起的元素的集合。
组成基于计算机系统的主要元素软件、硬件、人员、数据库、文档和规程(Procedure)。
软件指计算机程序、数据结构和相关的工作产品,它们被用于实现所需的逻辑方法、规程或控。硬件指提供计算能力的电子设备、支特数据流的互连设备(如网络交换器、电信设备)和提供外部世界功能的电子机械设备(如传感器、马达等)。
计算机系统工程:是一个问题求解的活动。
目的:
分析基于计算机的系统的功能、性能等要求,并把它们分配到基于计算机系统的各个系统元素中,确定它们的约束条件和接口。
任务:
识别用户的要求标识系统的功能和性能范围,确定系统的功能、性能、约束和接口
系统建模和模拟(图形描述或文字说明)硬件系统模型:描述基于计算机系统中的硬件配置、通信协议、拓扑结构,以及安全性可靠性、性能等要求的措施。
软件系统模型:描述各软件子系统的功能、性能等要求,它们在硬件系统中的部署情况,以及软件子系统之间的交互。
人机接口模型:描述人如何与基于计算机的系统进行交互,包括用户环境、用户的活动人机交互的语法和语义等。
数据模型:描述基于计算机的系统使用的数据库管理系统及其之间的交互,必要时可给出主要的数据结构。
成本估算及进度安排对将开发的基于计算机的系统进行成本估算,并作出进度安排。
可行性分析从经济、技术、法律等方面分析所给出的解决方案是否可行。通常只有当解决方案可行并有一定的经济效益和/或社会效益时才开始真正的基于计算机的系统的开发。
生成系统规格说明作为以后开发基于计算机的系统的依据。
可行性分析
原因:开发一个基于计算机的系统通常都受到资源(人力、财力、设备等)和时间上的限制。目的:可行性分析主要从经济、技术、法律等方面分析所给出的解决方案是否可行,能否在规定的资源和时间的约束下完成。
内容:
经济:成本/效益分析
成本:
基于计算机的系统的成本主要包括购置硬件、软件(如数据库管理系统、第三方开发的构件等)设备(如传感器等)的费用。系统的开发费用。系统安装、运行和维护费用。人员培训费用。
效益:
经济效益包括使用基于计算机的系统后可增加的收入和可节省运行费用(如操作人员数、工作时间、消耗的物资等)。在进行本效益分析时通常只统计五年内的经济效益。社会效益指使用基于计算机的系统后对社会产生的影响(如提办事效益,提高用户满意度等),通常社会效益只能定性地估计。
技术:
技术可行性主要根据系统的功能、性能、约束条件等,分析在现有资源和技术条件下系统能否实现。
风险分析:分析在给定的约束条件下设计和实现系统的风险.目的:找出风险,评估风险的大小,并有效地控制和缓解风险。
采用不成熟的技术可能造成技术风险。
人员流动可能给项目带来风险。
成本和人员估算不合理造成的预算风险。
资源分析:论证是否具备系统开发所需的各类人员、软件、硬件等资源和相应的工作环境。技术分析:分析当前的科学技术是否支持系统开发的各项活动。在技术分析过程中,分析员收集系统的性能、可靠性、可维护性和生产率方面的信息,分析实现系统功能、性能所需的技术、方法、算法或过程
从技术角度分析可能存在的风险,以及这些技术问题对成本的影响。
通常需要系统建模,必要时需要原型模拟
法律:
研究系统开发过程中可能涉及到的合同、侵权、责任以及各种与法律相抵触的问题
法律可行性分析的主要依据:
《中华人民共和国著作权法实施条例》中将计算机软件作为著作权法的保护对象。
《计算机软件保护条例》
结论
可以立即开始进行。需要推迟到某些条件(例如资金、人力、设备等)落实之后才能开始进行。需要对开发目标进行某些修改之后才能开始进行。因为某种原因(如,技术不成熟、经济上不合算等)不能进行。