软件工程
电子教案
王树林
第 5章 软件项目计划
软件项目计划是软件工程活动的开始。首先是
估算,估算是对未来的一种预测,具有不确
定性。
但我们有许多办法和技术对工作量和时间进行
估算,它是其他一切活动开始的基础。项目
计划是通往成功的行车图,没有它我们会迷
失方向。
5.1 对估算的观察
作为一个项目管理者,他首先就应具有在
未来还是一团迷雾时对项目的估算能力。
第 5章 软件项目计划
估算一个软件工作的资源、成本、进度。这就
需要了解以前的有用信息。估算具有与生俱
来的风险。
项目的复杂性对计划中固有的不确定性产生重
大影响。不过,复杂性是相对的。例如实时
应用相对一个批处理小组来说是复杂的,但
对一个经常开发高速处理应用的软件项目组
而言,可能被认为是小菜一碟。目前也有一
些软件用于对复杂性进行测量。
第 5章 软件项目计划
项目规模也是影响估算准确性的重要因素。
随着规模的增长,软件中各个元素之间
的依赖性也迅速增长,问题分解后,元
素仍然很大。所有可能出错的地方都会
出错。结构不确定性的程度也会对估算
的风险产生影响。结构是指:需求能被
确定的程度,功能能被分解的容易程度,
以及必须要加工的信息的层次性。
第 5章 软件项目计划
历史信息的可用程度也会对估算的风险产
生影响。不记得过去的人必然会重蹈覆
辙。
风险是由为资源、成本以及进度建立的定
量估算中存在的不确定性来测量的。
应该满足于事物的本性所能容许的精确度,
当只能近似于真理时,就不要去追求绝
对的准确。
第 5章 软件项目计划
5.2 项目计划目标
软件项目计划目标是提供一个框架,使得管
理者能够对资源、成本及进度进行合理的估
算。估算是在项目开始时在一个限定的时间
内做的,必然会随着项目的进展不断更新。
5.3 软件范围
软件开发的第一个活动就是确定软件的范围。
软件范围确定了功能、性能、约束条件、接口
及可靠性。约束条件标识了硬件,可用内存
等的限制。
第 5章 软件项目计划
5.3.1 获取定义软件范围所需的信息。
在软件项目开始前,事情总是有某
种程度的模糊不清。用户与开发者通过
会议和访谈建立沟通。但沟通的建立是
需要一个过程的,开始时双方都不知道
说什么。
第 5章 软件项目计划
5.3.2 一个范围定义的例子
与用户通信使得我们可以定义数据、功能、必
须实现的行为、性能、约束及相关信息。如,
假定要开发驱动一个传送带分类系统的软件,
范围说明如下:
传送带分类系统( CLSS) 将沿传送带移动的盒
子进行分类。每一个盒子由一个包含零件号
的条形码来标识,并在传送带末端分送到六
个箱子中的一个。这些盒子要通过一个由条
形码阅读器及一台 PC所组成的分类站。分类
站的 PC 连接到一个分流器上,他把盒子分送
第 5章 软件项目计划
到不同的箱子中。盒子以随机的方式通过,
且其间的距离相同。传送带以每分钟五
分钟的速度移动。
第 5章 软件项目计划
分流器
分类站
1
2
3
4
5
6
箱子
传送带方向
第 5章 软件项目计划
项目计划者检查范围说明,并提炼出所有重要
的检查功能,也就是功能分解。
? 读条形码作为输入;
? 读脉冲流速计;
? 解零件编码数据;
? 检索数据库;
? 确定合适的箱子;
? 产生分流器的控制信号;
? 保存盒子目的地记录。
第 5章 软件项目计划
性能取决于传送带的速度,对每个盒子的处理
必须在下一个盒子到达条形码阅读器之前完
成。 CLSS软件的约束:硬件有条形码阅读器,
分流器,PC,可用内存,传送带机构和等距
离的盒子。
功能、性能及约束是紧密相关的。
5.4 资源
软件计划的第二个任务是估算完成软件开发
工作的资源。
第 5章 软件项目计划
人员
可复用
构件
软硬件工具
第 5章 软件项目计划
每一个资源都由四个特征来说明:资源描述、
可用性说明、需要该资源的时间、及该资源
被使用的持续时间。
5.4.1 人力资源
5.4.2 可复用软件资源
可复用性是指软件建筑块的创建及复用。
这类建筑块必须被分类,才能被查找;被标
准化才能方便应用;被确认才能方便集成。
四种可用资源:
( 1)可直接使用的构件
第 5章 软件项目计划
( 2)具有完全经验的构件
( 3)具有部分经验的构件
( 4)新构件
5.4.3 环境资源
支持软件项目的环境通常被成为软件工程环境。
集成了硬件及软件两大部分。
5.5 软件项目估算
软件成本及工作量估算永远不会是一门精
确的估算。人员、技术、环境和策略,这些
都影响了软件的最终成本及开发所需的工作
量。
第 5章 软件项目计划
为了可靠地估算成本及工作量,有以下几种选
择可以考虑:
( 1)将估算拖延到项目的最后阶段
( 2)基于已经完成的类似的项目进行估算
( 3)使用简单的分解技术来进行项目成本及工
作量的估算。
( 4)使用一个或多个经验模型进行软件成本及
工作量的估算。
第 5章 软件项目计划
5.6 分解技术
软件项目估算是一种解决问题的形式。分
解方法主要有两种:问题分解和过程分解。
5.6.1 软件规模估算
四种规模估算方法:
( 1)模糊逻辑法
( 2)功能点法
( 3)标准构件法
( 4)修改法
第 5章 软件项目计划
5.6.2 基于问题的估算
LOC和 FP估算是两种不同的估算技术,但两者
也有相似之处。计划者从界定的软件范围开
始,并根据该说明将软件分解为可以被单独
估算的功能问题。然后估算每一个功能的
LOC或 FP。 从而导出每个功能的成本和工作
量。
当估算一个新项目时,首先应该将其对应到某
个领域上,然后,才使用合适的生产率的领
域平均值进行估算。
第 5章 软件项目计划
LOC和 FP 估算技术在分解所要求的详细程度上
及划分的目标上有所差别。基于 LOC的估算
要求功能分解尽可能的详细,分解的程度越
高,就越能建立合理的准确的代码。
对于 FP估算,分解则是不同的,他集中于功能
上,而是要估算每一个信息域特性 — 输入、
输出、数据文件、查询和外部接口以及十四
个复杂度的调整值。
每个计划者利用历史数据或直觉,为每个功能
第 5章 软件项目计划
或每个信息域值的计算值都估算一个乐观的、
可能的、及悲观的规模值。接着计算期望值。
估算规模的期望值,EV( expected value) 可以
通过乐观值( Sopt),可能值( Sm )和悲观
值( Spess) 估算的加权平均值来计算:
EV=( Sopt +4 Sm + Spess ) /6
其中给予可能值估算以最大的权重。
任何估算技术,不论它有多高明,都必须于其
它方法交叉使用。即使这样,经验和直觉仍
然是必不可少的。
第 5章 软件项目计划
5.6.3 一个基于 LOC估算的例子
假设我们估算的是一个计算机辅助设计
( CAD) 应用开发软件包。
软件范围说明:
CAD 软件接受来自工程师的二维和三维几何
数据。通过界面与 CAD系统进行交互,并控
制它,该界面应表现出良好的人机界面设计
的特征。所有几何数据及其它支持信息都保
存在一个 CAD数据库中。软件在设计中要考
虑与外设进行交互并控制他们,包括鼠标、
数字化仪和激光打印机。
第 5章 软件项目计划
经过进一步精化后,我们标识出软件的功能如
下:
( 1)用户界面及控制机制
( 2)二维几何分析
( 3)三维几何分析
( 4)数据库管理
( 5)计算机图形显示机制
( 6)外设控制
( 7)设计分析模块
第 5章 软件项目计划
如三维几何分析功能的 LOC估算范围:
乐观值,4 600
可能值,6 900
悲观值,8 600
应用公式得到三维几何分析功能的期望
值是 6800LOC。
其他功能类似。
第 5章 软件项目计划
( 1)用户界面及控制机制 2 300
( 2)二维几何分析 5 300
( 3)三维几何分析 6 800
( 4)数据库管理 3 350
( 5)计算机图形显示机制 4 950
( 6)外设控制 2 100
( 7)设计分析模块 8 400
总代码行数估算 33 200
第 5章 软件项目计划
对历史数据的复审表明:这类系统的平均
生产率是 620LOC/pm,如果一个劳动力
价格是每月 8 000美元,则每行代码的成
本为 13美元。总项目成本估算是 431 000
美元,工作量估算是 54个人月。
5.6.4 一个基于 FP估算的例子
基于 FP估算的分解是集中于信息域值,
而不是软件功能。
第 5章 软件项目计划
信息域值 乐观

可能

悲观

估算记

加权因

FP计数
输入数 20 24 30 24 4 96
输出数 12 15 22 16 5 80
查询数 16 22 28 22 4 88
文件数 4 4 5 4 10 40
外部接口数 2 2 3 2 7 14
总记数值 318
估算信息域值
第 5章 软件项目计划
因子 值 因子 值
备份和复原 4 信息域值复杂度 5
数据通信 2 内部处理复杂度 5
分布式处理 0 设计成可复用的代码 4
关键性能 4 设计中的转换及安装 3
现有的操作环境 3 多次安装 5
联机数据登录 4 方便修改的应用设计 5
多屏幕输入切换 5 复杂度调整因子 1.17
主文件 3
计算复杂度调整因子
第 5章 软件项目计划
最后,得出 FP的估算值:
Fpestimated=总记数值 *( 0.65+0.01*∑Fi)
Fpestimated=372
使用功能点进行规范化的历史数据表明:着类
系统的组织平均生产率是 6.5FP/PM.如果一个
劳动力价格是每月 8 000美元,则每个 FP的成
本为 1230美元。总项目成本估算是 457 000美
元,工作量估算是 58个人月。
第 5章 软件项目计划
5.6.5 基于过程的估算
将过程分解为相对较小的活动或任务,再估
算完成每个任务所需的工作量。
如果不同的估算方法得到的结果之间差别很大,
是什么原因呢?
( 1)项目的范围未能被充分理解或被误解;
( 2)基于问题的估算技术中所使用的生产率数
据对于该应用是不合适的。
c
5.7 经验估算模型
计算机软件的估算模型使用由经验导出的公
式来预测工作量,工作量是 LOC或 FP的函数
5.7.1 估算模型的结构
一个典型的估算模型是通过对以前的软件项
目中收集到的数据进行回归分析导出的。总
体结构形式为,E=A+B*(EV)C
其中 A,B,C 是由经验导出的常数,E是以人
月为单位的工作量,而 EV则是估算变量
( LOC 或 FP)。
第 5章 软件项目计划
LOC估算模型:
Walston-flex模型 E=5.2*(KLOC)0.91
Bailey-Basili模型 E=5.5+0.73*(KLOC)1.16
Boehm模型 E=3.2*(KLOC)1.05
Doty模型 E=5.288*(KLOC)1.047 KLOC>9
FP模型
Albrecht和 Gaffney模型 E=-13.39+0.0545*FP
Kemerer模型 E=60.02*7.728*10-8FP
Maston,Barnett模型 E=585.7 +5.12*FP
第 5章 软件项目计划
5.7.2 COCOMO模型
COCOMO模型( Constructive COst MOdel )
基本 COCOMO模型的形式:
E=abKLOCbb
D=cbEdb
其中 E是以人月为单位的工作量,D是以月表示
的开发时间,KLOC是千行代码数。
第 5章 软件项目计划
基本 COCOMO模型
软件项目 ab bb cb db
组织模式 2.4 1.05 2.5 0.38
半分离模式 3.0 1.12 2.5 0.35
嵌如入模式 3.6 1.20 2.5 0.32
第 5章 软件项目计划
中级 COCOMO模型的形式:
E=aiKLOCbi*EAF
其中 E是以人月为单位的工作量,KLOC是千行
代码数,系数 ai和指数 bi分别为:。
软件项目 ai bi
组织模式 3.2 1.05
半分离模式 3.0 1.12
嵌如入模式 2.8 1.20
第 5章 软件项目计划
软件成本估算模型的估算结果:
估算的软件成本与实际的成本相差不到 20%,
时间估算相差不到 70%,就已经令人鼓舞了。
5.7.3 软件方程式
估算模型具有如下形式:
E=(KLOC*B 0.333/P)3*(1/t4)
E=以人月或人年为单位的工作量
t=以月或年表示的项目持续时间
B=特殊技术因子
P=生产率参数
第 5章 软件项目计划
5.8 自行购买或开发的决策
在许多软件领域,直接购买软件比自行
开发的成本要底很多。
( 1)购买可直接使用的软件;
( 2)购买具有完全经验的软件或部分经
验的软件,然后修改后使用。
( 3)可由外面的承包商根据买方的规约
定制开发。
第 5章 软件项目计划
5.8.2 外购
5.9 自动估算工具
5.10 SUMMARY
The Software project planner must estimate
three things before a project begins:how
long it will take,how much effort will be
required,and how many people will be
involved,In addition,the planner must
predict the resources(hardware and
software) that will be required and the risk
involved,
5.10 SUMMARY
The statement of scope helps the planner to develop
estimates using one or more techniques that fall
into two broad categories,decomposition and
empirical modeling, Decomposition techniques
require a delineation of major software functions,
followed by estimates of either the size or the
number of person-months required to implement
each function,Empirical techniques use
empirically derived expressions for effort and
time to predict these project quantities,
Automated tools can be used to implement a
specific empirical model,
5.10 SUMMARY
Accurate project estimates generally make use of at
least two of the three techniques noted above,By
comparing and reconciling estimates derived
using different techniques,the planner is more
likely to derive an accurate estimate,Software
project estimation can never be an exact
science,but a combination of good historical data
and systematic techniques can improve
estimation accurate.