Download presentation
Presentation is loading. Please wait.
Published bySri Kurnia Modified 6年之前
1
第3讲 软件度量 软件项目管理课程 之 毛新军 xjmao21@21cn.com
计算机科学与技术系602教研室 0731-(45)73649
2
讲授内容 项目案例 什么是软件度量? 为什么需要软件度量? 软件度量的内容 软件度量的方法 在软件开发过程中进行软件度量 小结
©Copyright Xinjun Mao 2005
3
1. 项目案例 案例角色和人物 小王:软件项目负责人 老王:公司技术老总 ©Copyright Xinjun Mao 2005
4
项目管理需要定量描述(1/3) 在项目策划阶段的碰头会上 公司技术总监询问小王项目开发估计需要多少时间,需要多少成本?
小王回答说“时间估计不会太长,成本也在一个可接受的范围之内”,老王显然对这种回答不满意,他希望能够得到一个较为准确定量性的描述 经过一番考虑后,小王确认回答说“时间7-8个月,成本需40-45万”,老王显然对这种回答也不满意,况且用户要求在6个月内完成项目。于是他进一步问道“你是如何得到这组数据”,小王显然没有准备,也没有充分的依据,于是他哑口无言 ©Copyright Xinjun Mao 2005
5
项目管理需要定量描述(2/3) 在制定软件项目计划时 小王不知如何预测项目可能所需的工作量? 小王不知如何预测项目可能所需的成本?
小王不知所制定的计划是否可行和科学? 因此,小王尽管制定了软件开发计划,但对于该计划能否得到有效的实施、实施能否遵循计划执行没有足够的信心 ©Copyright Xinjun Mao 2005
6
项目管理需要定量描述(3/3) 项目已进展了2个月,各个方面进展尚可,在某周的碰头会上,老王继续向小王发问
“目前软件质量如何?”,小王回答道“不错” 老王对这种回答不满意,他希望能够得到一个较为准确定量性的描述,但是小王又没有办法给他一个更加确切的答复,实际上连他自己也没有办法说清楚目前软件产品的质量情况,因为他只有直观的、定性了解。 ©Copyright Xinjun Mao 2005
7
定量分析是重要的 工程化的软件开发需要定量、科学的描述(实施前、实施过程中、实施完成后)
定量、科学的描述有助于获取软件项目以及所开发的软件的某种可视性,促进软件项目的管理 定量的信息描述必须在软件项目开发过程中采集 ©Copyright Xinjun Mao 2005
8
软件项目管理问题 在软件项目实施过程中,需要哪些方面的定量描述以促进软件项目的有效开发和管理? 如何获取这些方面的科学定量描述?
如何在软件项目开发过程中集成度量? 如何将这些定量描述用于指导软件项目的管理? ©Copyright Xinjun Mao 2005
9
讲授内容 项目案例 什么是软件度量? 为什么需要软件度量? 软件度量的内容 软件度量的方法 在软件开发过程中进行软件度量 小结
©Copyright Xinjun Mao 2005
10
基本概念(1/4) 对事物属性的定性描述 对事物属性的定量描述 个子很高, 软件的成本很高 高个子有1.9米, 软件成本是 23.5万
高个子有1.9米, 软件成本是 23.5万 ©Copyright Xinjun Mao 2005
11
基本概念(2/4) 软件度量(Metrics)是指对软件产品、软件开发过程或者资源的简单属性的定量描述。 注意点
产品:软件开发过程中所生成的各种文档和程序 过程:与软件开发有关的各种活动,如软件设计等 资源:软件开发过程中所需支持,如人员、费用等 注意点 定量描述,而不是定性描述 简单属性,无需参照其它属性便可直接获得定量描述 ©Copyright Xinjun Mao 2005
12
基本概念(3/4) 软件测量(Measure)是对软件产品、软件开发过程和资源复杂属性的定量描述,它是简单属性度量值的函数,软件测量用于事后或实时状态, 如软件可靠性 注意点 定量描述,而不是定性描述 复杂属性-不可直接获得、需参照其它属性的度量值 实时或者事后状态,用于对历史进行评估 ©Copyright Xinjun Mao 2005
13
基本概念(4/4) 估算(Estimation)对软件产品、软件开发过程和资源复杂属性的定量描述,它是简单属性度量值的函数,软件估算用于事前, 如软件开发成本 注意点 定量描述,而不是定性描述 复杂属性-不可直接获得、需参照其它属性的度量值 事前状态 可采用经验公式,也可参考历史资料和数据。估算的 结果一般用于签订合同、立项、制定工作计划等 ©Copyright Xinjun Mao 2005
14
讲授内容 项目案例 什么是软件度量? 为什么需要软件度量? 软件度量的内容 软件度量的方法 在软件开发过程中进行软件度量 小结
©Copyright Xinjun Mao 2005
15
为什么需要软件度量(1/2) 任何工程化的工作都需要度量,软件工程也不例外 项目实施之前 准确了解工程的实施情况 辅助制定软件项目的计划
估算成本和工作量,以便制定计划 ©Copyright Xinjun Mao 2005
16
为什么需要软件度量(2/2) 项目实施过程中 项目实施之后 提供软件开发的可视性 跟踪和控制软件项目的开发 评估软件开发质量,进行质量控制
加强风险管理 项目实施之后 对项目的实施情况进行评估 为后续项目的积累经验数据 ©Copyright Xinjun Mao 2005
17
讲授内容 项目案例 什么是软件度量? 为什么需要软件度量? 软件度量的内容 软件度量的方法 在软件开发过程中进行软件度量 小结
©Copyright Xinjun Mao 2005
18
软件度量的内容(1/3) 三个方面 产品:各种文档和程序 过程:各种软件开发活动 资源:各种资源如人员、费用等 产品 过程 资源
©Copyright Xinjun Mao 2005
19
软件度量的内容(2/3) 二个层次 内部属性 外部属性 软件产品,过程和资源本身所具有属性,如软件产品的复杂度、程序长度等 易于度量
软件产品,过程和资源与外部环境(用户、管理人员等)间的关系如成本、效益、可靠性、可维护性等 难以度量,但由内部属性所决定 ©Copyright Xinjun Mao 2005
20
软件度量的内容(3/3) ©Copyright Xinjun Mao 2005
21
讲授内容 项目案例 什么是软件度量? 为什么需要软件度量? 软件度量的内容 软件度量的方法 在软件开发过程中进行软件度量 小结
©Copyright Xinjun Mao 2005
22
软件度量的方法 面向规模的度量 面成功能的度量 项目成本和工作量估算 软件质量度量 ©Copyright Xinjun Mao 2005
23
5.1面向规模的度量(1/3) 用软件代码行数目来表示软件项目规模
生产率: PM = L / E, L表示代码总量(单位:KLOC),E表示软件工作量(单位:人月) 每千行代码的平均成本:CKL = S / L,S为软件项目总开销 文档与代码比: Dl = Pd / L,Pd表示文档页数 代码出错率: EQRl = Ne / L,Ne表示代码出错的数目 ©Copyright Xinjun Mao 2005
24
5.1面向规模的度量(2/3) ©Copyright Xinjun Mao 2005
25
5.1面向规模的度量(3/3) 优点 缺点 简单易行,自然直观 依赖于程序设计语言的表达能力和功能 软件开发初期很难估算出最终软件的代码行数
对精巧的软件项目不合适 只适合于过程式程序设计语言 ©Copyright Xinjun Mao 2005
26
5.2面向功能的度量(1/7) 用软件的功能表示软件的规模 “功能”不能直接度量,需要依靠其他度量结果导出 功能点度量涉及多种因素
项目开发初期就可估算出 功能点计算目前主要基于经验公式 ©Copyright Xinjun Mao 2005
27
5.2面向功能的度量(2/7) 功能点计算方法 FP = (0.65 + 0.01×Fi)×CT CT : 5个信息量的“加权和”
Fi: 14个因素的“复杂性调节值” (i =1..14) 0.65, 0.01都是经验常数 ©Copyright Xinjun Mao 2005
28
5.2面向功能的度量(3/7) CT的计算方法 CT = 上述计算值的总和 用户输入数×加权因子(简单=3,平均=4,复杂=5)
用户输出数×加权因子(简单=3,平均=4,复杂=5) 用户查询数×加权因子(简单=3,平均=4,复杂=5) 文件数×加权因子(简单=3,平均=4,复杂=5) 外部界面数×加权因子(简单=3,平均=4,复杂=5) CT = 上述计算值的总和 ©Copyright Xinjun Mao 2005
29
5.2面向功能的度量(4/7) Fi的取值(0,1,2,3,4,5):0-没有影响,1-偶有影响,2-轻微影响,3-平均影响,4-较大影响,5-严重影响 系统需要可靠的备份和复原码? 系统需要数据通信吗? 系统有分布处理功能吗? 性能是临界状态吗? 系统是否在一个实用的操作系统下运行? 系统需要联机数据项吗? 联机数据项是否在多屏幕或多操作之间进行切换? ©Copyright Xinjun Mao 2005
30
5.2面向功能的度量(5/7) 需要联机更新主文件吗? 输入、输出、查询和文件很复杂吗? 内部处理复杂吗? 代码需要被设计成可重用吗?
设计中需要包括转换和安装吗? 系统的设计支持不同组织的多次安装吗? 应用的设计方便用户修改和使用吗? ©Copyright Xinjun Mao 2005
31
5.2面向功能的度量(6/7) 优点 不足 与程序设计语言无关, 在开发前就可以估算出软件项目的规模(事前)
没有直接涉及算法的复杂度,不适合算法比较复杂的软件系统; 功能点计算主要靠经验公式,主观因素比较多 数据不好采集 ©Copyright Xinjun Mao 2005
32
5.2面向功能的度量(7/7) 代码行度量和功能点度量间的关系 ©Copyright Xinjun Mao 2005
33
5.3成本和工作量估算(1/2) 软件项目成本和工作量估算极为重要 软件项目成本估算比较困难 计算机系统中软件成本占总成本的比例很大
用户和项目管理人员对软件成本和工作量估算都很重视 软件项目成本估算比较困难 软件是逻辑产品,软件开发是一个逻辑思维的过程 涉及多方面因素 ©Copyright Xinjun Mao 2005
34
5.3成本和工作量估算(2/2) 软件项目成本和工作量估算常用方法 上述方法可以同时、单独或者组合使用 参照和依据已完成项目的历史数据
将大项目分解为小项目 将项目按照软件生命周期分解 根据经验估算公式 上述方法可以同时、单独或者组合使用 ©Copyright Xinjun Mao 2005
35
5.3.1代码行、功能和工作量估算 软件项目规模影响软件项目成本和工作量 估算出FP或者LOC期望值e = (a + 4m + b)/6
依据历史数据估算出工作量和成本 根据PM = FP(LOC)/ E计算出工作量 根据C = S/FP(LOC) 计算出成本 ©Copyright Xinjun Mao 2005
36
案例: 代码行和功能点估算 (1/8) 软件描述(CAD软件)
CAD图形软件可接受来自用户的二维和三维几何数据,用户通过界面与CAD软件进行交互,并控制它,该软件具有良好的人机界面设计的特征。所有的几何数据及其支持信息存放在数据库中。开发设计分析模块,以产生所需的输出,这些输出将显示在各种不同的图形化设备上。软件在设计中要考虑与外设进行交互并控制它们,包括鼠标、数字化仪、打印机等等。 ©Copyright Xinjun Mao 2005
37
案例: 代码行和功能点估算 (2/8) 软件子系统划分 图形用户界面及其控制机制 二维几何分析 三维几何分析 数据库管理 图形显示
外设控制(与打印机、数字化仪、扫描仪的接口) 设计分析子系统 ©Copyright Xinjun Mao 2005
38
案例: 代码行和功能点估算 (3/8) 估算出各个子系统的代码行,例如三维几何分析功能的代码行估算范围为: 乐观值:4 600
可能值:6 900 悲观值:8 600 估算值: e = (a + 4m + b)/6 = 6 800 ©Copyright Xinjun Mao 2005
39
案例: 代码行和功能点估算 (4/8) ©Copyright Xinjun Mao 2005
40
案例: 代码行和功能点估算 (5/8) 历史数据 估算项目成本和工作量 平均生产率PM: 620 LOC/PM(620行代码/人月)
估算成本 = 估算工作量 ×每个人月的成本 = 54人月× 8000 = ¥ ©Copyright Xinjun Mao 2005
41
案例: 代码行和功能点估算 (6/8) 基于功能点估算: Step1: 计算CT值 ©Copyright Xinjun Mao 2005
42
案例: 代码行和功能点估算 (7/8) Step2: 计算复杂度调整因子 ©Copyright Xinjun Mao 2005
43
案例: 代码行和功能点估算 (8/8) 计算出FP的估算值 历史数据 估算成本和工作量
FP = ( ×Fi)×CT = 372 历史数据 平均生产率 6.5 FP/PM 每个人月的成本 C = 8000¥(平均月薪) 估算成本和工作量 工作量 58人月 成本 ¥ ©Copyright Xinjun Mao 2005
44
5.3.2经验估算模型(1/7) 什么是CoCoMo模型?
COCoMo是指Constructive Cost Model,构造性成本模型,Boehm于1981年提出,用于对软件开发项目的规模、成本、进度等方面进行估算 CoCoMo模型是一个综合经验模型,模型中的参数取值来至于经验值,并且综合了诸多的因素、比较全面的估算模型 比较实用、可操作,在欧盟国家应用较为广泛 ©Copyright Xinjun Mao 2005
45
5.3.2经验估算模型(2/7) CoCoMo模型的层次 - 支持不同的阶段 基本COCoMo模型 中间COCoMo模型
系统开发的初期,估算整个系统的工作量(包括维护)和软件开发和维护所需的时间 中间COCoMo模型 估算各个子系统的工作量和开发时间 详细COCoMo模型 估算独立的软构件,如各个子系统的各个模块的工作量和开发时间 ©Copyright Xinjun Mao 2005
46
5.3.2经验估算模型(3/7) 基本CoCoMo模型 E = a (kLOC)b ;E是工作量(人月) ,a和b是经验常数
D = c Ed ;D是开发时间(月) ,c和d是经验常数 其中,a,b,c,d为经验常数,其取值见下表 ©Copyright Xinjun Mao 2005
47
5.3.2经验估算模型(4/7) 中间CoCoMo模型 E = a (kLOC)b EAF
其中,E表示工作量(人月),EAF表示工作量调节因子,a,b为经验常数,其取值见下表 ©Copyright Xinjun Mao 2005
48
5.3.2经验估算模型(5/7) EAF的取值(考虑15个因素) 软件产品属性(3):软件可靠性,软件复杂性,数据库的规模
计算机属性(4):程序执行时间,程序占用内存大小,软件开发环境的变化,软件开发环境的响应速度 人员属性(5):分析员能力,程序员能力,领域经验,开发环境的经验,程序设计语言的经验 项目属性(3):软件开发方法的能力,软件工具的数量和质量,软件开发的进度要求 ©Copyright Xinjun Mao 2005
49
5.3.2经验估算模型(6/7) EAF的取值(范围) 很低、低、正常、高、很高、极高 Boehm建议取值范围[ ] EAF的计算=Fi ( i=1..15) 调节因子及其取值由统计结果和经验决定,不同的软件开发组织在不同的时期可能会有不同的取值 ©Copyright Xinjun Mao 2005
50
5.3.2经验估算模型(7/7) 案例分析:用基本CoCoMo模型估算项目的工作量、开发时间和参加项目开发的人数
CAD软件:目标代码行33.2kLOC,属于中等规模,半独立型,因而a = 3.0, b = 1.12, c = 2.5, d = 0.35 E = 3.0*(33.2)1.12 =152 PM D = 2.5*(152)0.35 = 14.5 (月) 参加项目人数N = E/D = 152/14.5 = 11(人) ©Copyright Xinjun Mao 2005
51
5.4 软件质量度量(1/2) 软件质量度量的重要性 软件质量度量存在的困难 质量是软件的生命,质量不高的软件会带来严重、甚至灾难性的后果
必须加强对软件质量的管理和监控,如ISO9001和CMM 必须在软件开发过程中能够可视所开发软件的质量 软件质量度量存在的困难 软件质量依赖于软件的内部特性及其组合 这些特性难以度量 ©Copyright Xinjun Mao 2005
52
5.4 软件质量度量(2/2) McCall的软件质量度量模型 质量要素 质量要素的评价准则 软件质量的度量
定义了与软件质量相关联的一些要素 质量要素的评价准则 定义了能够对质量要素进行度量的一些准则 软件质量的度量 定义了如何基于对质量要素的定量描述对软件质量进行度量的方法 ©Copyright Xinjun Mao 2005
53
5.4.1质量要素(1/2) ©Copyright Xinjun Mao 2005
54
5.4.1质量要素(2/2) 质量要素之间的相互关联性(正相关、负相关),因此在设计时要根据项目的具体情况进行权衡
例如,软件的可移植性会降低软件的有效性 例如,对于实时系统,必须保证可靠性和有效性,而将可移植性、可重用性放在次要地位 ©Copyright Xinjun Mao 2005
55
5.4.2质量要素的评价准则(1/2) 给出一组比较容易度量的软件质量要素评价准则来间接对软件质量要素进行定量描述
定义准则基础是确定影响软件质量要素的属性 这些属性比较完整、准确地描述软件质量要素 这些属性比较容易量化 ©Copyright Xinjun Mao 2005
56
5.4.2质量要素的评价准则(2/2) McCall质量模型共给出21个评价准则,例如 简单性:理解程序的难易程度 准确性:计算和控制的精度
通信通用性:使用标准接口、协议和频带的程度 完全性:是否全面 执行效率:程序的运行效率 可扩充性:对软件结构、数据设计和过程设计进行扩充的程度 …… ©Copyright Xinjun Mao 2005
57
5.4.3 软件质量的度量 对于每个质量要素的计算 Fi = (Cik × Mik)
其中, Fi 表示第i个质量因素的度量值(i = 1,..11), Mik 表示第i个质量因素对于第k种评价准则的测量值, Mik的取值共分10级,分别为0.1, …,1.0 Cik 表示第k种评价准则对第i个质量因素影响程度的加权系数,且满足Cik = 1.0 (k = 1,..21) ©Copyright Xinjun Mao 2005
58
讲授内容 项目案例 什么是软件度量? 为什么需要软件度量? 软件度量的内容 软件度量的方法 在软件开发过程中进行软件度量 小结
©Copyright Xinjun Mao 2005
59
软件开发过程中集成度量(1/2) 度量是重要的 度量会遇到阻力 提高组织软件开发能力成熟度的一种重要措施和有效手段
CMM强调软件度量,尤其在4级-可管理级 度量会遇到阻力 度量会耗费大量的精力和时间 度量的作用和效果可能是隐性和长期的,不能为开发人员所接受 项目的压力经常会迫使管理者和开发人员放弃度量 ©Copyright Xinjun Mao 2005
60
软件开发过程中集成度量(2/2) 在软件项目实施过程中坚持度量,收集数据 实施前 实施中 实施完成后 记录估算数据
对过程、产品和资源进行度量 记录并保存其结果 实施完成后 对项目进行总结,记录和保存项目实际运作的信息,如成本,工作量,人员等等 ©Copyright Xinjun Mao 2005
61
讲授内容 项目案例 什么是软件度量? 为什么需要软件度量? 软件度量的内容 软件度量的方法 在软件开发过程中进行软件度量 小结
©Copyright Xinjun Mao 2005
62
本讲小结 软件项目的实施需要定量描述(前、中、后) 软件度量:定量描述 工作量和成本度量:规模和功能 质量度量 在软件项目实施过程中实施度量
针对软件产品、过程和资源 内部属性和外部属性 测量和估算 工作量和成本度量:规模和功能 质量度量 在软件项目实施过程中实施度量 ©Copyright Xinjun Mao 2005
63
教学目的 理解 掌握 运用 什么是软件度量? 为什么需要软件度量? 软件度量的方式和对象 软件度量的方法 运用软件度量支持和促进软件开发
©Copyright Xinjun Mao 2005
64
Software Project Management
Questions & Discusssing Practice, Practice, and Practice ©Copyright Xinjun Mao 2005
Similar presentations