软件项目管理-第一节:软件项目管理综述估算软件规模和工作量估算

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(1i14)代表这些因素

  • 根据软件的特点,为每个因素分配一个从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=017fi

  • 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 1i5),其中每个因素都划分成从甚低( 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.<

以上是关于软件项目管理-第一节:软件项目管理综述估算软件规模和工作量估算的主要内容,如果未能解决你的问题,请参考以下文章

「软件项目管理」一文详解软件项目成本计划

「软件项目管理」一文详解软件项目成本计划

「软件项目管理」一文详解软件项目成本计划

一个软件项目如何评估工作量和成本?

基于 功能点 估算项目规模 FPA,以及估算软件开发成本 [更新]

软件项目管理的开发计划