(软件工程复习核心重点)第十二章软件项目管理-第一节:软件项目管理综述、估算软件规模和工作量估算
文章目录
- 一:软件项目管理综述
- (1)管理
- (2)软件项目管理
- 二:估算软件规模
- (1)代码行技术
- A:定义
- B:方法
- C:优缺点
- (2)功能点技术
- A:定义
- B:信息域特性
- C:估算功能点的步骤
- ①:计算未调整的功能点数UFP
- ②:计算技术复杂性因子TCF
- ③:计算功能点数FP
- 三:工作量估算
- (1)静态单变量模型
- A:形式
- B:分类
- ①:面向KLOC的估算模型
- ②:面向FP的估算模型
- (2)动态多变量模型
- A:定义
- B:形式
- (3)COCOMO2模型
- A:三层模型
- B:特点
- C:形式
- D:与COCOMO模型所使用成本因素的区别
- E:模型指数
- F:COCOMO2的5个分级因素
一:软件项目管理综述
(1)管理
管理:管理是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程
(2)软件项目管理
软件项目管理:软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中。软件项目管理过程从一组项目计划活动开始,而制定计划的基础是工作量估算和完成期限估算
二:估算软件规模
(1)代码行技术
A:定义
代码行技术:代码行技术依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。是一种比较简单的定量估算软件估摸的方法
B:方法
- . 把实现每个功能的源程序行数累加起来,可得到实现整个软件所需要的源程序行数
- . 估计程序的最小规模(a)、 最大规模(b) 和最可能的规模(m), 分别算出这3种规模的平均值后,再用下式计算程序规模的估计值:L=aˉ+4mˉ+bˉ6L=\frac{\bar{a}+4\bar{m}+\bar{b}}{6}L=6aˉ+4mˉ+bˉ
- . 程序小时用的单位是代码行数(
LOC
);程序大时用的单位是千行代码数(KLOC
)
C:优缺点
优点:
- 代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数
- 有以往开发类似产品的历史数据可参考时,估计出的数值比较准确
缺点:
- 源程序仅是软件配置的一个成分,用它的规模代表整个软件的规模不太合理
- 用不同语言实现同一个软件所需要的代码行数并不相同
- 不适用于非过程语言
(2)功能点技术
A:定义
功能点技术:功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。用 功能点(FP) 为单位度量软件规模。是为了克服代码行技术的缺点,提出来的新技术
B:信息域特性
- 输入项数(Inp):用户向软件输入的项数,这是输入给软件提供面向应用的数据
- 输出项数(Out): 软件向用户输出的项数,它们向用户提供面向应用的信息
- 查询数(Inq):一次联机输入,它导致软件以联机输出方式产生某种即时响应
- 主文件数(Maf): 逻辑主文件(数据的一个逻辑组合)的数目
- 外部接口数(Inf): 机器可读的全部接口数量,用这些接口把信息传送给另一个系统
C:估算功能点的步骤
①:计算未调整的功能点数UFP
- 把产品信息域的每个特性都分类为简单级、平均级或复杂级,并根据其等级为每个特性分配一个功能点数
- 用下式计算未调整的功能点数UFP:UFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×InfUFP=a_{1}×Inp+a_{2}×Out+a_{3}×Inq+a_{4}×Maf+a_{5}×InfUFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf
- 其中,aia_{i}ai(1<iii<5) 是信息域特性系数,由相应特性的复杂级别决定,如下表所示
②:计算技术复杂性因子TCF
这一步骤度量14种技术因素对软件规模的影响程度,下表中列出了全部技术因素,并用Fi(1≤i≤14)F_{i}(1\leq i \leq 14)Fi(1≤i≤14)代表这些因素
- 根据软件的特点,为每个因素分配一个从0(不存在或对软件规模无影响)到5(有很大影响)的值
- 计算技术因素对软件规模的综合影响程度DIDIDI(0~70): DI=∑i=114FiDI=\sum_{i=1}^{14}F_{i}DI=∑i=114Fi
- 技术复杂性因子TCFTCFTCF(0.65~1.35) : TCF=0.65+0.01×DITCF=0.65+0.01×DITCF=0.65+0.01×DI
③:计算功能点数FP
FP=UDP×TCFFP=UDP×TCFFP=UDP×TCF
三:工作量估算
软件估算模型使用由经验导出的公式来预测软件开发工作量,工作量是软件规模的函数,工作量的单位通常是人月(pm)。没有一个估算模型可以适用于所有类型的软件和开发环境
(1)静态单变量模型
A:形式
静态单变量模型的总体结构形式如下:
E=A+B×(ev)cE=A+B×(ev)^{c}E=A+B×(ev)c
- A、B、C是由经验导出的常数
- E是以人月为单位的工作量
- ev是估算变量(KLOC或FP)
B:分类
①:面向KLOC的估算模型
- Walston_Felix模型:E=5.2×(KLOC)0.91E=5.2×(KLOC)^{0.91}E=5.2×(KLOC)0.91
- Bailey_Basili模型:E=5.5+0.73×(KLOC)1.1.6E=5.5+0.73×(KLOC)^{1.1.6}E=5.5+0.73×(KLOC)1.1.6
- Boehm简单模型:E=3.2×(KLOC)1.05E=3.2×(KLOC)^{1.05}E=3.2×(KLOC)1.05
- Doty模型(KLOC > 9时适用):E=5.288×(KLOC)1.047E=5.288×(KLOC)^{1.047}E=5.288×(KLOC)1.047
②:面向FP的估算模型
- Albrecht & Gaffney模型:E=−13.39+0.0545FPE=-13.39+0.0545FPE=−13.39+0.0545FP
- Maston,Barnett和Mellichamp模型:E=585.7+15.12FPE=585.7+15.12FPE=585.7+15.12FP
(2)动态多变量模型
A:定义
动态多变量模型( 软件方程式)是根据从4000多个当代软件项目中收集的生产率数据推导出来的。该模型把工作量看作软件规模和开发时间这两个变量的函数
B:形式
动态多变量估算模型的形式如下:
E=(LOC×B0.333P)×(1t)4E=(LOC×\frac{B^{0.333}}{P})×(\frac{1}{t})^{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×KLOCb×∏i=017fiE=a×KLOC^{b}×\prod \limits_{i=0}^{17}f_{i}E=a×KLOCb×i=0∏17fi
- E是以人月或人年为单位的工作量
- a是模型系数
- KLOC是估计的源代码行数(以千行为单位)
- b是模型指数
- fif_{i}fi (iii=1~17)是成本因素
D:与COCOMO模型所使用成本因素的区别
- 新增加了4个成本因素,它们分别要求的是可重用性、需要的文档量、人员连续性和多地点开发
- 略去了原始模型中的两个成本因素
- 某些成本因素(分析员能力、平台经验、语言和工具经验)对生产率的影响增加了,另一些成本因素(程序员能力)的影响减小了
E:模型指数
COCOMO2采用了的b分级模型,是使用5个分级因素WiW_{i}Wi (1≤i≤51 \leq i \leq 51≤i≤5),其中每个因素都划分成从甚低(WiW_{i}Wi=5)到特高(WiW_{i}Wi=0)的6个级别,用下式计算b(1.01~1.26)的数值
b=1.01+0.01×∑i=15Wib=1.01+0.01×\sum_{i=1}^{5}W_{i}b=1.01+0.01×i=1∑5Wi
F:COCOMO2的5个分级因素
- 项目先例性:指出对于开发组织来说该项目的新奇程度
- 开发灵活性:反映出为实现预先确定的外部接口和为了及早开发出产品而增加的工作量
- 风险排除度:反映了重大风险已被消除的比例
- 项目组凝聚力:表明了开发人员相互协作时可能存在的困难
- 过程成熟度:反映了按照能力成熟度模型度量出的项目组织的过程成熟度。
(软件工程复习核心重点)第十二章软件项目管理-第一节:软件项目管理综述、估算软件规模和工作量估算相关推荐
- (软件工程复习核心重点)第十二章软件项目管理-第二节:进度计划
文章目录 一:相关概念 (1)任务集合 (2)项目管理者的工作 A:目标 B:方法 (3)进度安排 A:定义 B:流程 二:估算开发时间 (1)利用成本估算模型估算开发时间 (2)特殊情况 A:描述 ...
- (软件工程复习核心重点)第五章详细设计-第五节:程序复杂度的定量度量
文章目录 一:价值(了解) 二:McCabe方法 (1)流图 A:定义 B:把程序流程图映射为流图 C:PDL翻译为流图 (2)环形复杂度 A:定义 B:计算方法 三:Halstead方法(了解) ( ...
- (软件工程复习核心重点)第四章总体设计-第四节:描绘软件结构的图形工具
文章目录 一:层次图和HIPO图 二:结构图 (1)定义 (2)符号 A:基本符号 B:特殊符号 一:层次图和HIPO图 层次图用于描绘软件的层次结构,其中一个矩形框代表一个模块,方框间的连线表示调用 ...
- (软件工程复习核心重点)第三章需求分析-第五节:验证软件需求
文章目录 一:验证需求正确性的四个方面 二:验证软件需求的方法 三:用于需求分析的软件工具 (1)要求(了解) (2)PSL/PSA系统 一:验证需求正确性的四个方面 一致性:所有需求必须是一致的,任 ...
- (软件工程复习核心重点)第三章需求分析-第四节:其他图形工具
文章目录 一:层次方框图 二:Warnier图 三:IPO图 一:层次方框图 用树形结构的一系列矩形框描绘数据的层次结构 优点:随着结构的逐步精细,对数据结构的描绘也越来越详细 二:Warnier图 ...
- (软件工程复习核心重点)第十二章软件项目管理习题
选择题 填空题 功能点技术信息域特性有 输入项数 输出项数 查询数 主文件数 外部接口数 一个任务集合包括 一组软件工程工作任务 里程碑 可交付的产品 COCOMO2的三层模型 应用系统组成模型 早期 ...
- (软件工程复习核心重点)第四章总体设计-第一节:总体设计基本概念和设计过程
文章目录 一:总体设计的概念 (1)定义 (2)主要任务 (3)步骤 (4)必要性(了解) 二:设计过程 (1)系统设计阶段 1:设想供选择的方案 2:选取合理的方案 3:推荐最佳方案 (2)结构设计 ...
- (软件工程复习核心重点)第十二章软件项目管理-第四节:软件配置管理和能力成熟度模型
文章目录 一:软件配置管理 (1)相关概念 A:软件配置管理定义 B:目的 C:与维护的区别 (2)软件配置 A:软件配置项 B:基线 C:软件工具 (3)软件配置管理过程 A :标识软件配置中的对象 ...
- (软件工程复习核心重点)第十二章软件项目管理-第三节:人员组织和质量保证
文章目录 一:人员组织 (1)必要性 (2)典型的组织方式 A:民主制程序员组 ①:定义 ②:要求 ③:优点 ④:缺点 B:主程序员组 ①:定义 ②:核心人员及其分工 ③:特点(优点) ④:缺点 ⑤: ...
最新文章
- QualityCenter的备份
- 深度学习导论(6)误差计算
- python之路-SQLAlchemy
- 给xen虚拟机添加硬盘分区格式化
- 工作中:如何在实际工作中处理 NULL,并给出一些指南
- ssh 免密码设置失败原因总结
- hdu 1861 游船出租 tag:模拟
- 读书随笔:The Book of Why——INTRODUCTION:MIND OVER DATA
- ASP.NET绑定控件语法
- gulp教程、gulp-less安装
- php与mysql事物处理
- 天气预测频繁2项集_寻攻略 | 天气不似预期?我从来没在怕的
- Python实现微信小游戏:飞机大战
- 关于Kav7的离线升级
- ASO学习——《ASO优化大师》笔记
- 不同tric 改进的理由
- 【人在运维囧途_08】淘宝内部大量使用的开源系统监控工具--Tsar
- Choco安装npm
- 转 TensorFlow Object Detection API 多GPU 卡平行计算,加速模型训练速度教学
- Hybird App混合移动应用开发技术整体解决方案,速来围观!
热门文章
- 【母亲节快乐】程序员的表达方式,了解一下?
- gdc服务器故障输入信号超出范围,H1Z1信号输入超出范围 | 手游网游页游攻略大全...
- android自动登录实现框架,Android如何设计并且实现一个注入框架
- c 语言教程文档,c语言基本教程
- vgh电压高了有什么_一文告诉你电压互感器的作用是什么?
- caffe与tensorflow框架下卷积的维度计算与一致性证明
- 河南农大姚文与张会勇课题组合作发表长文综述,系统总结R/Shiny在开发交互式生物学网络工具中的应用...
- 没有Science也没有娃,上海交大博士谈科研经历爆笑全场
- motionVFX mRevealer Glitch Mac(fcpx插件:30个故障干扰马赛克毛刺失真特效)
- Acrobat Reader DC 2020 for mac(最好用的免费PDF阅读器) 2020新增功能