软件项目管理-第一节:软件项目管理综述估算软件规模和工作量估算
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件项目管理-第一节:软件项目管理综述估算软件规模和工作量估算相关的知识,希望对你有一定的参考价值。
文章目录
一:软件项目管理综述
(1)管理
管理:管理是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程
(2)软件项目管理
软件项目管理:软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中。软件项目管理过程从一组项目计划活动开始,而制定计划的基础是工作量估算和完成期限估算
二:估算软件规模
(1)代码行技术
A:定义
代码行技术:代码行技术依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。是一种比较简单的定量估算软件估摸的方法
B:方法
- . 把实现每个功能的源程序行数累加起来,可得到实现整个软件所需要的源程序行数
- . 估计程序的最小规模(a)、 最大规模(b) 和最可能的规模(m), 分别算出这3种规模的平均值后,再用下式计算程序规模的估计值: L = a ˉ + 4 m ˉ + b ˉ 6 L=\\frac\\bara+4\\barm+\\barb6 L=6aˉ+4mˉ+bˉ
- . 程序小时用的单位是代码行数(
LOC
);程序大时用的单位是千行代码数(KLOC
)
C:优缺点
优点:
- 代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数
- 有以往开发类似产品的历史数据可参考时,估计出的数值比较准确
缺点:
- 源程序仅是软件配置的一个成分,用它的规模代表整个软件的规模不太合理
- 用不同语言实现同一个软件所需要的代码行数并不相同
- 不适用于非过程语言
(2)功能点技术
A:定义
功能点技术:功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。用 功能点(FP) 为单位度量软件规模。是为了克服代码行技术的缺点,提出来的新技术
B:信息域特性
- 输入项数(Inp):用户向软件输入的项数,这是输入给软件提供面向应用的数据
- 输出项数(Out): 软件向用户输出的项数,它们向用户提供面向应用的信息
- 查询数(Inq):一次联机输入,它导致软件以联机输出方式产生某种即时响应
- 主文件数(Maf): 逻辑主文件(数据的一个逻辑组合)的数目
- 外部接口数(Inf): 机器可读的全部接口数量,用这些接口把信息传送给另一个系统
C:估算功能点的步骤
①:计算未调整的功能点数UFP
- 把产品信息域的每个特性都分类为简单级、平均级或复杂级,并根据其等级为每个特性分配一个功能点数
- 用下式计算未调整的功能点数UFP: U F P = a 1 × I n p + a 2 × O u t + a 3 × I n q + a 4 × M a f + a 5 × I n f UFP=a_1×Inp+a_2×Out+a_3×Inq+a_4×Maf+a_5×Inf UFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf
- 其中,
a
i
a_i
ai(1<
i
i
i<5) 是信息域特性系数,由相应特性的复杂级别决定,如下表所示
②:计算技术复杂性因子TCF
这一步骤度量14种技术因素对软件规模的影响程度,下表中列出了全部技术因素,并用
F
i
(
1
≤
i
≤
14
)
F_i(1\\leq i \\leq 14)
Fi(1≤i≤14)代表这些因素
- 根据软件的特点,为每个因素分配一个从0(不存在或对软件规模无影响)到5(有很大影响)的值
- 计算技术因素对软件规模的综合影响程度 D I DI DI(0~70): D I = ∑ i = 1 14 F i DI=\\sum_i=1^14F_i DI=∑i=114Fi
- 技术复杂性因子 T C F TCF TCF(0.65~1.35) : T C F = 0.65 + 0.01 × D I TCF=0.65+0.01×DI TCF=0.65+0.01×DI
③:计算功能点数FP
F P = U D P × T C F FP=UDP×TCF FP=UDP×TCF
三:工作量估算
软件估算模型使用由经验导出的公式来预测软件开发工作量,工作量是软件规模的函数,工作量的单位通常是人月(pm)。没有一个估算模型可以适用于所有类型的软件和开发环境
(1)静态单变量模型
A:形式
静态单变量模型的总体结构形式如下:
E = A + B × ( e v ) c E=A+B×(ev)^c E=A+B×(ev)c
- A、B、C是由经验导出的常数
- E是以人月为单位的工作量
- ev是估算变量(KLOC或FP)
B:分类
①:面向KLOC的估算模型
- Walston_Felix模型: E = 5.2 × ( K L O C ) 0.91 E=5.2×(KLOC)^0.91 E=5.2×(KLOC)0.91
- Bailey_Basili模型: E = 5.5 + 0.73 × ( K L O C ) 1.1.6 E=5.5+0.73×(KLOC)^1.1.6 E=5.5+0.73×(KLOC)1.1.6
- Boehm简单模型: E = 3.2 × ( K L O C ) 1.05 E=3.2×(KLOC)^1.05 E=3.2×(KLOC)1.05
- Doty模型(KLOC > 9时适用): E = 5.288 × ( K L O C ) 1.047 E=5.288×(KLOC)^1.047 E=5.288×(KLOC)1.047
②:面向FP的估算模型
- Albrecht & Gaffney模型: E = − 13.39 + 0.0545 F P E=-13.39+0.0545FP E=−13.39+0.0545FP
- Maston,Barnett和Mellichamp模型: E = 585.7 + 15.12 F P E=585.7+15.12FP E=585.7+15.12FP
(2)动态多变量模型
A:定义
动态多变量模型( 软件方程式)是根据从4000多个当代软件项目中收集的生产率数据推导出来的。该模型把工作量看作软件规模和开发时间这两个变量的函数
B:形式
动态多变量估算模型的形式如下:
E = ( L O C × B 0.333 P ) × ( 1 t ) 4 E=(LOC×\\fracB^0.333P)×(\\frac1t)^4 E=(LOC×PB0.333)×(t1)4
其中E是以人月或人年为单位的工作量;t是以月或年为单位的项目持续时间;B是特殊技术因子,对于较小的程序(KLOC=5-15),B=0.16,对弈超过70KLOC的程序,B=0.39;P是生产率参数,它反映了以下因素对工作量的影响
- 总体过程成熟度及管理水平
- 使用良好的软件工程实践的程度
- 使用的程序设计语言的级别
- 软件环境的状态
- 软件项目组的技术及经验
- 应用系统的复杂程度
(3)COCOMO2模型
A:三层模型
COCOMO是 构造性成本模型(constructive cost model) 的英文缩写COCOMO2给出了3个层次模型,这3个层次的模型在估算工作量时,对软件细节考虑的详尽程度逐级增加。这3个模型如下:
- 应用系统组成模型:主要用于估算构建原型的工作量,模型名字暗示在构建原型时大量使用已有的构件
- 早期设计模型:适用于体系结构设计阶段。
- 体系结构模型:适用于完成体系结构设计之后的软件开发阶段
B:特点
- 这个层次的模型在估算工作量时,对软件细节考虑的详尽程度逐级增加
- 这些模型既可以用于不同类型的项目,也可以用于同一个项目的不同开发阶段
C:形式
COCOMO2模型把软件开发工作量表示成代码行数(KLOC)的非线性函数
E = a × K L O C b × ∏ i = 0 17 f i E=a×KLOC^b×\\prod \\limits_i=0^17f_i E=a×KLOCb×i=0∏17fi
- E是以人月或人年为单位的工作量
- a是模型系数
- KLOC是估计的源代码行数(以千行为单位)
- b是模型指数
- f i f_i fi ( i i i=1~17)是成本因素
D:与COCOMO模型所使用成本因素的区别
- 新增加了4个成本因素,它们分别要求的是可重用性、需要的文档量、人员连续性和多地点开发
- 略去了原始模型中的两个成本因素
- 某些成本因素(分析员能力、平台经验、语言和工具经验)对生产率的影响增加了,另一些成本因素(程序员能力)的影响减小了
E:模型指数
COCOMO2采用了的b分级模型,是使用5个分级因素 W i W_i Wi ( 1 ≤ i ≤ 5 1 \\leq i \\leq 5 1≤i≤5),其中每个因素都划分成从甚低( W i W_i Wi=5)到特高( W i W_i Wi=0)的6个级别,用下式计算b(1.01~1.26)的数值
b
=
1.01
+
0.01
×
∑
i
=
1
5
W
i
b=1.01+0.01×\\sum_i=1^5W_i
b=1.01+0.< 以上是关于软件项目管理-第一节:软件项目管理综述估算软件规模和工作量估算的主要内容,如果未能解决你的问题,请参考以下文章