第 二 章本章讨论的主要问题
1、软件开发的可行性研究
2、软件的成本估算模型与估算方法
3、制定软件计划第二章目录
§ 2.1 问题的定义
§ 2.2 可行性分析
§ 2.4 成本估算
§ 2.3 可行性报告
§ 2.1 问题的定义本阶段的目标:确切定义用户要求解决的问题,分析软件开发的风险,并制定软件计划。
1、研究软件的作用范围
软件的功能、性能
接口(与硬件、软件工具、人、过程的一系列操作)
软件的可靠性
2、资源需求
人力资源 (技术水平、专业、数量等。用 Putnam _
Norden 曲线来描述)
硬件资源 (宿主机、目标机、外围设备、其他硬件)
软件资源 软件工具(支持软件、应用软件)
经费及时间限制具体任务
2.1 问题的定义(续)
人工具通常,软件开发所需的资源,可由“金字塔“型描述。
人 — 人员的技术水平,专业和数量。
工具 — 主要是软、硬件工具。
问 题分析在软件开发的不同阶段各类人员的需求情况,为什么?
Putnam _ Norden 曲线高低计划需求分析初步设计详细设计编码单元测试整体测试功能测试管理人员 高级技术人员初级技术人员
2、资源需求
2.2 可行性分析又称为可行性研究,目的是避免盲目投资,减少不必要的损失。可行性研究的任务是:
技术上可行经济上可行社会上可行可行性报告可行性报告可行性报告可行性报告经济上可行社会上可行现有技术、资源及限制能否支持和实现系统的功能、性能。主要是技术风险问题。
进行成本估算及效益评估,确定项目是否值得开发。
主要指系统开发后能否运行,是否存在合同、责任、侵权、用户组织管理等方面的问题。
可行性分析的结果一、可行性分析的任务二、可行性分析步骤确定项目规模和目标。
研究现行系统(如果存在)。
建立新系统的高层逻辑模型。
用系统流程图或数据流图( DFD图)描述。
提出实现高层逻辑模型的各种方案,并对各方案进行评价。
推荐可行的方案。
编写可行性报告。
三、可行性分析的描述手段进行可行性分析时,通常用 系统流程图 来描述所要开发的系统。用于描述项目的处理流程、范围、功能等。
1、系统流程图的基本符号处理框输入 /输出文档连接换页连接数据流磁盘联机存储显示人工输入人工操作辅助操作通信链路
2、系统流程图举例 — 库存管理系统功能:
库存零件的种类和数量存放在库存清单主文件中。
随时更新库存文件。
当某零件少于库存临界值时,产生订货报告,通知采购部门。
输入变更记录库存管理模块订货信息报告生成模块订货报告库存清单在问题定义阶段,还常用 DFD图来描述。
2.3 可行性报告(参考格式) Ⅰ
一,引言系统名称,目标,功能,开发组织单位,服务对象等 。
二,系统开发的背景,必要性和意义
1.现行系统的调查研究组织机构,业务流程,工作负荷,费用,人员,
设备,计算机应用情况,存在问题等 。
2.需求调查和分析用户提出的需求及考虑经济改革和发展需要进行预测结果 。
2.3 可行性报告(参考格式) Ⅱ
三,新系统的几种方案介绍
1.拟建系统目标
2.系统规模及初步方案 ( 粗略的逻辑模型 )
3.系统的实施方案 (计划安排 )
4.投资方案
5.人员培训及补充方案
6.其它可供选择的方案
2.3 可行性报告(参考格式) Ⅲ
四,可行性研究
1.技术上的可行性 (按系统目标衡量 )
(1)对现有技术的估价
(2)使用现有技术进行系统开发的可行性
(3)对技术发展可能产生影响的预测
(4)关键技术人员的数量和水平估计
2.经济上的可行性 (估算成本 /效益比 )
(1)现有的经济条件
(2)开发,运行费用
(3)对系统效益的估计
(4)投资回收期
(5)成本 /效益比
2.3 可行性报告(参考格式) Ⅳ
四,可行性研究
3.系统运行的可行性
(1)对组织机构的影响
(2)人员适应的可行性
(3)环境条件的可行性五,几种方案的比较分析六,结论
(可按某方案立即执行,等某些条件成熟后再执行或不可行等等 )
可行性分析报告经审批后,可进行需求分析工作,
2.4 成本估算成本估算是可行性分析的重要依据,也是软件管理的重要内容,直接影响到软件开发的风险。
一、影响成本估算的因素
1,软件人员的业务水平
2,软件产品的规模及复杂度规模:按 YOURDON分类法分为 超小型,小型,中型,
大型,超大型,极大型。
复杂度:应用程序,实用程序,系统程序低 高
3.开发所需时间对确定规模、复杂度的软件存在一个,最佳开发时间”
(或 开发时间极限值 )
2.4 成本估算(续 1)
4.软件开发技术水平指开发方法、工具、语言等,技术水平高,效率高。
5.软件可靠性要求 — 可靠性要求愈高,成本愈高。
二、软件成本估算
1.软件成本的估算量源代码行( LOC)
机器指令行 /非机器语言的执行步开发工作量人 -月( PM) 人 -年( PY) 人 -日( PD)
软件生产率
LOG/PM ¥ /LOC ¥ /PM
软件开发时间
2.4 成本估算(续 2)
2,成本估算模型
⑴ Halstead 理论模型根据四个原始量进行估算:
n1:不同运算符个数 n2:不同运算对象个数
N1:运算符总数 N2:运算对象总数
ai+4mi+bi
6
1
n?
n
i
iL
1
ai — 估计的最小行数 bi — 估计的最大行数
mi — 最可能的行数
⑵ 统计估算模型
① 源代码行 估算模型( Deiphi技术)
各专家反复估算的 源代码期望值 Li,期望中值 L
Li = L=
2.4 成本估算(续 3)
⑵ 统计估算模型
② IBM 估算模型(静态、单变量模型)
工 作 量,E=5.2*L ( PM)
项目持续时间,D=4.1*L (月)
人员需要量,S=0.54*E (人)
文 档 数,DOC=49*L (页)
其中,L — 源代码行,以千行计。
0.91
0.36
0.6
1.01
其中,L - 源代码行,K - 所需人力( PY),td - 开发时间,
CK -技术水平常数,CK值与开发环境有关。(差,2500-2000,
正常,10000-8000,好,12500-11000)
L
Ck td
3
3 4
31 34
③ Putnam 估算 模型 (动态、多变量模型)
k= 或 L= CK K td
2.4 成本估算(续 4)
⑶ 构造性成本模型
COCOMO模型( Constructive Cost Model)是一种层次模型,分上、中、下三层。
① 基本的 COCOMO模型
MM =
其中,MM — 工作量 ( PM),KLOC — 估计的代码行
Cl — 模型系数,? — 模型指数
Cl,? 取决于开发项目的模式为组织型、半独立型或嵌入型。
a
l k lo cc?
2.4 成本估算(续 5)
模型系数与指数 Cl,? 取决于开发项目的模式为组织型、
半独立型或嵌入型。
组织型 ( Organic)
规模不大 (<5万 ),较简单,开发人员对产品目标理解充分,经验丰富,对软件开发环境熟悉 。 大多数应用软件及老的操作系统,编译系统属此类 。
嵌入型 ( Embadded)
软件,硬件的关系紧密,操作有限制条件,对接口,数据结构,算法要求较高 。 如大型复杂的事务处理系统 。 大型,
超大型的操作系统,军事指挥系统,航天控制系统等 。
半独立 型 ( Semidetached)
对项目要求界于上述两者之间,规模复杂度中等 。 如新操作系统,大型数据库,生产控制等软件属此类 。
2.4 成本估算(续 6)
对 63个项目进行统计,得到上述三种开发模式的正常 模型系数与指数 Cl,?如下表所示:
开发模式 模型系数( Cl) 模型指数(? )
组织型 3.2 1.05
半独立型 3.0 1.12
嵌入式 2.8 1.20
2.4 成本估算(续 7)
⑶ 构造型成本模型
② 中间的 COCOMO模型
MM =
其中,fi — 成本因素包括:
生产因素 (可靠性,数据库规模,软件复杂度)
计算机因素 (时间约束,存储约束,环境变更率,计算机换向时间)
人员因素 (系统分析员能力、经验,程序员能力,开发人员环境知识,程序时间语言知识)
项目工程因素 (设计技术,软件工具,进度限制约束)
al k lo cc
15
1i
if
③ 详细的 COCOMO模型考虑成本因素 fi时,按照开发阶段给出更加详细的表。
§ 2.4 成本估算(续 8)
3。成本估算方法
⑴ 任务估算技术 (例:潘锦平 P19-P20)
按照开发阶段或者按项目分解子系统,分别估算。
⑵ 自顶向下估算法
⑶ 差别估算法
⑷ 自底向上估算法问 题
1,说明各种估算方法的步骤,各有何优、缺点?
2,对自己选择的课题综合使用上述方法进行成本估算。
2.4 成本估算(续 9)
三、成本 /效益分析
1、货币的时间价值 — 以利率形式表示假设,年利率为 i,P元钱在 n年后的价值 F为:
nF= P( 1+I)
2、投资回收期 — 累计经济效益等于最初投资的时间,
3、纯收入 — 累计经济效益与投资之差。
4、投资回收率 — 相等于存款的年利率。
可以衡量投资效益的大小。
参考书:软件工程经济学 [美 ] 巴里,W.贝姆,赵越等译中国铁道出版社