度量和分析(MA)(1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• • • • • • 每一个开发活动的成本是多少? 每一个开发活动的单位人力成本价格是多少? 每一个开发活动的估计和实际工时的对比是怎样的? 每一个活动的实际成本和估算相比是怎样的? 开发/管理/支持活动成本占总成本的比例是如何的? 有多少成本花费在了纠正缺陷上?
33
目标 5: 缩减开发成本
• 度量数据 ▫ 每个活动的实际成本 ▫ 每个活动中消耗在纠正缺陷上的成本 ▫ 每行源代码的成本 ▫ 每个活动的最初成本估算 ▫ 每个活动的预算 ▫ 每个活动的最初估计投入与实际投入的比较 ▫ 每个活动的单位人力成本 ▫ 开发费用占项目总预算的百分比 ▫ 管理费用占项目总预算的百分比 ▫ 支持费用占项目总预算的百分比
• 日程
▫ Calendar Days; Working Days
• 质量
▫ 缺陷密度
16
度量的分类
• 过程度量 • 项目度量 • 产品度量
17
度量的分类
过程度量
对于软件开发过程本身的度量,目的是形成组织的各种模型,作为对项目、产品的度量 基础;以及对软件开发过程进行持续改进,提高软件生产力,是具有战略性意义的度量 过程度量往往不是直接进行,而是通过大量的项目度量分析总结出来的,典型的过程度 量如CMMI各PA的度量。 –成熟度 –生命周期 –进度压力 –缺陷植入
• • • • 从列表中选择一个目标 在度量体系中记录下这个目标 列出要想达成这些目标所需要问的问题 定义一系列度量数据,通过对这些度量数据的收 集和分析就可以帮助我们回答这些问题
24
目标 1的问题: 改进开发过程
• 当前的开发过程在什么程度上的描述了当前的开 发实践? • 过程中每一个活动的相对工时是多少? • 当前过程中每一个活动的预计时间是多少? • 缺陷是在过程中的什么步骤上被引入,被发现以 及被纠正的? • 在开发过程中增加了多少条需求?
例如:
• A项目内部测试发现的缺陷数为500个 • A项目所耗费的工作量300人日
8
度量的目的
理解 –获得对过程、产品、资源和环境的理解,建立比较的基线。 评价 –通过度量可评价计划和质量目标实现的状况,可判断技术 和过程改善的影响。 预测 –可建立过程和产品的关系以及趋势,帮助进行有效的计划。 改善 –可帮助识别问题根源,提供系统的改善。 软件度量让你知道什么时候该哭,什么时候该笑 (Software metrics let you know when to laugh and when to cry。-Tom Gilb)
34
目标6的问题: 提高软件质量
• • • • 产品中有多少缺陷? 软件是否可维护? 软件是否稳定? 软件是否已经过验证?是否正确?
35
目标6: 提高软件质量
• 度量数据
▫ ▫ ▫ ▫ ▫ ▫ 纠正缺陷所耗费的平均工时 平均软件故障间隔(在适合公司实际的情况下) 每类缺陷的数目 缺陷数目 / SLOC 文档的总行数 经过检查的代码行占总代码行的百分比
27
目标 2: 改进软件估算
• 度量数据
▫ ▫ ▫ ▫ ▫ ▫ 初始估算与实际活动工时数据的对比 初始估算与实际活动日程数据的对比 初始估算与实际工作产品规模数据的对比 初始估算与实际活动用人水平数据的对比 加班总工时 单位人力成本
28
目标3 的问题: 改进项目控制
• 每一项开发活动的状态如何? • 项目的整体状态如何? • 每一项活动的挣值(EV)状态如何? • 项目的实际花费与预算相比状态如何?
• ---------------------------------------------------
例如:
• • • • 参加培训的人比上次多了5个 朋友的小孩昨天出生,8斤6两 与十年前相比,体重增加了10% 上个星期义务加班7小时
5
什么是软件度量(狭义)
软件度量(狭义):
• 软件度量其实质是根据一定规则,将数字或符号赋予系统、构件、过 程……等实体的特定属性,即对实体属性的量化表示,从而能够清楚 地理解该实体 -------------------------------------------
31
目标 4: 缩短项目周期
• 度量数据 ▫ 项目活动或者里程碑之间的用时 ▫ 每一项活动的估计工时与实际工时之间的对比 ▫ 项目的初始日程表和项目实际日程表之间的对比 ▫ 用人水平的初始估计与项目实际用人水平的对比 ▫ 用于返工的工时数 ▫ 每一项活动的总加班时数
32
目标 5的问题: 缩减开发成本
18
度量的分类
项目度量
对于软件开发项目的特定度量,目的是评估项目开发 • 过程的质量,预测项目进度、工作量等,辅助管理者 • 进行质量控制和项目控制。 一般常用的项目度量有: • –规模度量 • –进度度量 • –生产力度量 • –风险度量 • –其他的项目动态度量(如需求更改,代码动态增长等)
• 度量也有投资回报率的问题
▫ 度量的收集需要占用组织资源 ▫ 度量的分析也需要资源 ▫ 我们从度量中到底能得到什么?
• 度量体系的建立必须能够帮助组织解决问题或者判断 目标的达成状况 • 只有具有实际用途的度量才是值得采集和分析的 • 而且,只有满足最重要的目标和问题的度量数据才是 必需的
13
度量的作用
19
度量的分类
产品度量
是对于项目开发结果-------最终的产品度量。
一般来说,产品度量指的是对产品的质量度量; 一般常见的质量度量有: • –软件可靠性度量; • –软件复杂度度量; • –软件缺陷度量等。
20
很简单?不简单?
• • • • • 这些度量数据要与组织标准过程相结合 这些度量数据需要严格定义 要定义清晰、无二义性的收集机制 要有人负责它们的计划,收集和分析 度量数据要用于决策活动。我们准备好运用度量 数据进行决策了么?
25
目标 1: 改进开发过程
• 度量
▫ ▫ ▫ ▫ ▫ ▫ 缺陷从被发现到被纠正的平均历时 完成每一个活动所需的工时 每一项活动的预期历时 每一个活动中所发现的缺陷数 对软件开发过程的不符合项数目 在开发过程中添加或者改变的需求数
26
目标 2的问题: 改进软件估算
• • • • 每一项活动估算的和实际的工时对比是怎样的? 自初始估算以来,需求发生了多少变化? 开发中的软件有多复杂? 每一项活动日程,工时,和规模的估算与实际的对比 是什么样的? • 估计的用人水平和实际的差别是什么样的,需要加班 么?
我们要让客户对我们的质量有信心!
我们对自己的质量放心么? 我们怎么知道自己的质量是否令人放心?
22
可能的目标
1. 2. 3. 4. 5. 6. 7. 8. 改进开发过程 改进软件估算 改进项目控制 缩短项目周期 减少开发成本 提升软件质量 提升软件性能 改善生产力
23
有了目标,然后呢?
度量过程是控制过程和 改进过程的触发器
没有度量过 程会怎样?
•1.控制过程和改进过程失 去改进的动机和方向
•2.公司可能陷入为改进而 改进的不良循环 •3.也Байду номын сангаас不到改进的具体效 果
14
度量的作用
理解过去 管理现在 预测未来
15
四大基本度量
• 规模
▫ 代码行;功能点;Feature点;类
• 人力
▫ Man-Hour;Man-Day(Week, Month…)
例如:
• A项目内部测试发现的缺陷数为500个 • A项目所耗费的工作量300人日
6
什么是软件度量(广义)
软件度量(广义)
软件度量是对软件开发项目、过程及其产品, 进行数据定义、收集以及分析的持续性定量化过程, 目的在于对此加以理解、评价、预测、和改善
7
什么是软件度量
软件度量(狭义):
• 软件度量其实质是根据一定规则,将数字或符号赋予系统、构件、过 程……等实体的特定属性,即对实体属性的量化表示,从而能够清楚 地理解该实体 -------------------------------------------
9
为什么要进行度量
• 所有管理的核心问题都是如何更好的理解偏差, 以及如何更好的抽取表现偏差的信息
▫ 劳埃德.尼尔森
• 没有数据的支持,你只是另一个有看法的人而已
▫ Tracy O’Rourke CEO Allen-Bradly
10
为什么要进行度量
• 软件行业面临的危机
▫ ▫ ▫ ▫ ▫ ▫ ▫ 规模,复杂度提高 市场竞争激烈 管理工作量加大 需求不明确 变更没控制 测试不完善 etc…
38
目标8的问题:提高劳动生产率
• 在返工上花费了多少时间? • 开发人员是否在支持和管理活动上花费了过多的 时间? • 平均劳动生产率是多少? • 生产率数据是否与项目组成员的经验相匹配? • 是否为设计人员和管理人员提供了所需的工具?
39
目标8的问题:提高劳动生产率
• 在返工上花费了多少时间? • 开发人员是否在支持和管理活动上花费了过多的 时间? • 平均劳动生产率是多少? • 生产率数据是否与项目组成员的经验相匹配? • 是否为设计人员和管理人员提供了所需的工具?
36
目标7的问题: 提高软件性能
• • • • 处理器利用率是多少? 内存利用率是多少? 软件的输入/输出性能如何? 该软件有什么特征?
37
目标7: 提高软件性能
• 度量数据
▫ ▫ ▫ ▫ 平均CPU利用率 平均内存利用率 平均故障间隔 单位时间的I/O处理 (实际发生的I/O 对比 需要的 I/O) ▫ 源代码行数 ▫ 软件产品复杂度
1
度量和分析
Measurement and Analysis
2
主要内容
• 一、度量和分析概述 • 二、软件度量与CMMI过程域MA
3
一、度量和分析概述
4
什么是度量
• 度量定义:
• 度量 是指在现实的世界中,把数字或符号指定给实体的某一属性, 以便 以这种方式来根据已明确的规则来描述它们
• 因此,度量关注的是获取关于实体属性的信息
21
决定目标
• 一个组织一定会有目标 ▫ 显式的
这就是我们要达到的
▫ 隐式的
我想应该有,但是。。。让我想想 我们要盈利!!
那么我们怎样才能盈利? 我们的成本是怎样构成的? 哪些成本可以缩减? 我们在哪里花掉了最多的成本?
不知道。。。
那么让我们先来度量我们的成本构成!
40
二、软件度量与CMMI过程域MA
41
MA
目的: 开发和维护用于支持管理信息需要的度量能力。
29
目标3: 改进项目控制
• 度量数据
▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ 每一项活动的挣值 完成的源代码行数 源代码行数的初始估计 项目的整体完成百分比 每一项活动的完成百分比 到今日所花费的项目总预算百分比 日程完成百分比 测试的完成百分比 测试的通过率
30
目标 4的问题: 缩短项目周期
• • • • • • 每一项任务的实际日程是什么样的? 每一项活动实际花费工时有多少? 用于返工的工时有多少? 用于非开发任务的工时有多少? 每项活动所需的加班工时是多少? 用人水平能否保证项目的按时完成?
• 度量了就能解决问题?
▫ 不能。
• 那我们为什么还要度量?
11
为什么要进行度量
什么问题,什么性能对我的组织来说是重要的? 有理由么? 这些问题/性能的优先级怎么排定? 这些问题都有待于坚实的度量数据作为回答的支持 为了解决问题/提高性能我们作出了努力,但是我们真的成功了么?
12
软件度量体系的驱动力量是目标和问 题
33
目标 5: 缩减开发成本
• 度量数据 ▫ 每个活动的实际成本 ▫ 每个活动中消耗在纠正缺陷上的成本 ▫ 每行源代码的成本 ▫ 每个活动的最初成本估算 ▫ 每个活动的预算 ▫ 每个活动的最初估计投入与实际投入的比较 ▫ 每个活动的单位人力成本 ▫ 开发费用占项目总预算的百分比 ▫ 管理费用占项目总预算的百分比 ▫ 支持费用占项目总预算的百分比
• 日程
▫ Calendar Days; Working Days
• 质量
▫ 缺陷密度
16
度量的分类
• 过程度量 • 项目度量 • 产品度量
17
度量的分类
过程度量
对于软件开发过程本身的度量,目的是形成组织的各种模型,作为对项目、产品的度量 基础;以及对软件开发过程进行持续改进,提高软件生产力,是具有战略性意义的度量 过程度量往往不是直接进行,而是通过大量的项目度量分析总结出来的,典型的过程度 量如CMMI各PA的度量。 –成熟度 –生命周期 –进度压力 –缺陷植入
• • • • 从列表中选择一个目标 在度量体系中记录下这个目标 列出要想达成这些目标所需要问的问题 定义一系列度量数据,通过对这些度量数据的收 集和分析就可以帮助我们回答这些问题
24
目标 1的问题: 改进开发过程
• 当前的开发过程在什么程度上的描述了当前的开 发实践? • 过程中每一个活动的相对工时是多少? • 当前过程中每一个活动的预计时间是多少? • 缺陷是在过程中的什么步骤上被引入,被发现以 及被纠正的? • 在开发过程中增加了多少条需求?
例如:
• A项目内部测试发现的缺陷数为500个 • A项目所耗费的工作量300人日
8
度量的目的
理解 –获得对过程、产品、资源和环境的理解,建立比较的基线。 评价 –通过度量可评价计划和质量目标实现的状况,可判断技术 和过程改善的影响。 预测 –可建立过程和产品的关系以及趋势,帮助进行有效的计划。 改善 –可帮助识别问题根源,提供系统的改善。 软件度量让你知道什么时候该哭,什么时候该笑 (Software metrics let you know when to laugh and when to cry。-Tom Gilb)
34
目标6的问题: 提高软件质量
• • • • 产品中有多少缺陷? 软件是否可维护? 软件是否稳定? 软件是否已经过验证?是否正确?
35
目标6: 提高软件质量
• 度量数据
▫ ▫ ▫ ▫ ▫ ▫ 纠正缺陷所耗费的平均工时 平均软件故障间隔(在适合公司实际的情况下) 每类缺陷的数目 缺陷数目 / SLOC 文档的总行数 经过检查的代码行占总代码行的百分比
27
目标 2: 改进软件估算
• 度量数据
▫ ▫ ▫ ▫ ▫ ▫ 初始估算与实际活动工时数据的对比 初始估算与实际活动日程数据的对比 初始估算与实际工作产品规模数据的对比 初始估算与实际活动用人水平数据的对比 加班总工时 单位人力成本
28
目标3 的问题: 改进项目控制
• 每一项开发活动的状态如何? • 项目的整体状态如何? • 每一项活动的挣值(EV)状态如何? • 项目的实际花费与预算相比状态如何?
• ---------------------------------------------------
例如:
• • • • 参加培训的人比上次多了5个 朋友的小孩昨天出生,8斤6两 与十年前相比,体重增加了10% 上个星期义务加班7小时
5
什么是软件度量(狭义)
软件度量(狭义):
• 软件度量其实质是根据一定规则,将数字或符号赋予系统、构件、过 程……等实体的特定属性,即对实体属性的量化表示,从而能够清楚 地理解该实体 -------------------------------------------
31
目标 4: 缩短项目周期
• 度量数据 ▫ 项目活动或者里程碑之间的用时 ▫ 每一项活动的估计工时与实际工时之间的对比 ▫ 项目的初始日程表和项目实际日程表之间的对比 ▫ 用人水平的初始估计与项目实际用人水平的对比 ▫ 用于返工的工时数 ▫ 每一项活动的总加班时数
32
目标 5的问题: 缩减开发成本
18
度量的分类
项目度量
对于软件开发项目的特定度量,目的是评估项目开发 • 过程的质量,预测项目进度、工作量等,辅助管理者 • 进行质量控制和项目控制。 一般常用的项目度量有: • –规模度量 • –进度度量 • –生产力度量 • –风险度量 • –其他的项目动态度量(如需求更改,代码动态增长等)
• 度量也有投资回报率的问题
▫ 度量的收集需要占用组织资源 ▫ 度量的分析也需要资源 ▫ 我们从度量中到底能得到什么?
• 度量体系的建立必须能够帮助组织解决问题或者判断 目标的达成状况 • 只有具有实际用途的度量才是值得采集和分析的 • 而且,只有满足最重要的目标和问题的度量数据才是 必需的
13
度量的作用
19
度量的分类
产品度量
是对于项目开发结果-------最终的产品度量。
一般来说,产品度量指的是对产品的质量度量; 一般常见的质量度量有: • –软件可靠性度量; • –软件复杂度度量; • –软件缺陷度量等。
20
很简单?不简单?
• • • • • 这些度量数据要与组织标准过程相结合 这些度量数据需要严格定义 要定义清晰、无二义性的收集机制 要有人负责它们的计划,收集和分析 度量数据要用于决策活动。我们准备好运用度量 数据进行决策了么?
25
目标 1: 改进开发过程
• 度量
▫ ▫ ▫ ▫ ▫ ▫ 缺陷从被发现到被纠正的平均历时 完成每一个活动所需的工时 每一项活动的预期历时 每一个活动中所发现的缺陷数 对软件开发过程的不符合项数目 在开发过程中添加或者改变的需求数
26
目标 2的问题: 改进软件估算
• • • • 每一项活动估算的和实际的工时对比是怎样的? 自初始估算以来,需求发生了多少变化? 开发中的软件有多复杂? 每一项活动日程,工时,和规模的估算与实际的对比 是什么样的? • 估计的用人水平和实际的差别是什么样的,需要加班 么?
我们要让客户对我们的质量有信心!
我们对自己的质量放心么? 我们怎么知道自己的质量是否令人放心?
22
可能的目标
1. 2. 3. 4. 5. 6. 7. 8. 改进开发过程 改进软件估算 改进项目控制 缩短项目周期 减少开发成本 提升软件质量 提升软件性能 改善生产力
23
有了目标,然后呢?
度量过程是控制过程和 改进过程的触发器
没有度量过 程会怎样?
•1.控制过程和改进过程失 去改进的动机和方向
•2.公司可能陷入为改进而 改进的不良循环 •3.也Байду номын сангаас不到改进的具体效 果
14
度量的作用
理解过去 管理现在 预测未来
15
四大基本度量
• 规模
▫ 代码行;功能点;Feature点;类
• 人力
▫ Man-Hour;Man-Day(Week, Month…)
例如:
• A项目内部测试发现的缺陷数为500个 • A项目所耗费的工作量300人日
6
什么是软件度量(广义)
软件度量(广义)
软件度量是对软件开发项目、过程及其产品, 进行数据定义、收集以及分析的持续性定量化过程, 目的在于对此加以理解、评价、预测、和改善
7
什么是软件度量
软件度量(狭义):
• 软件度量其实质是根据一定规则,将数字或符号赋予系统、构件、过 程……等实体的特定属性,即对实体属性的量化表示,从而能够清楚 地理解该实体 -------------------------------------------
9
为什么要进行度量
• 所有管理的核心问题都是如何更好的理解偏差, 以及如何更好的抽取表现偏差的信息
▫ 劳埃德.尼尔森
• 没有数据的支持,你只是另一个有看法的人而已
▫ Tracy O’Rourke CEO Allen-Bradly
10
为什么要进行度量
• 软件行业面临的危机
▫ ▫ ▫ ▫ ▫ ▫ ▫ 规模,复杂度提高 市场竞争激烈 管理工作量加大 需求不明确 变更没控制 测试不完善 etc…
38
目标8的问题:提高劳动生产率
• 在返工上花费了多少时间? • 开发人员是否在支持和管理活动上花费了过多的 时间? • 平均劳动生产率是多少? • 生产率数据是否与项目组成员的经验相匹配? • 是否为设计人员和管理人员提供了所需的工具?
39
目标8的问题:提高劳动生产率
• 在返工上花费了多少时间? • 开发人员是否在支持和管理活动上花费了过多的 时间? • 平均劳动生产率是多少? • 生产率数据是否与项目组成员的经验相匹配? • 是否为设计人员和管理人员提供了所需的工具?
36
目标7的问题: 提高软件性能
• • • • 处理器利用率是多少? 内存利用率是多少? 软件的输入/输出性能如何? 该软件有什么特征?
37
目标7: 提高软件性能
• 度量数据
▫ ▫ ▫ ▫ 平均CPU利用率 平均内存利用率 平均故障间隔 单位时间的I/O处理 (实际发生的I/O 对比 需要的 I/O) ▫ 源代码行数 ▫ 软件产品复杂度
1
度量和分析
Measurement and Analysis
2
主要内容
• 一、度量和分析概述 • 二、软件度量与CMMI过程域MA
3
一、度量和分析概述
4
什么是度量
• 度量定义:
• 度量 是指在现实的世界中,把数字或符号指定给实体的某一属性, 以便 以这种方式来根据已明确的规则来描述它们
• 因此,度量关注的是获取关于实体属性的信息
21
决定目标
• 一个组织一定会有目标 ▫ 显式的
这就是我们要达到的
▫ 隐式的
我想应该有,但是。。。让我想想 我们要盈利!!
那么我们怎样才能盈利? 我们的成本是怎样构成的? 哪些成本可以缩减? 我们在哪里花掉了最多的成本?
不知道。。。
那么让我们先来度量我们的成本构成!
40
二、软件度量与CMMI过程域MA
41
MA
目的: 开发和维护用于支持管理信息需要的度量能力。
29
目标3: 改进项目控制
• 度量数据
▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ 每一项活动的挣值 完成的源代码行数 源代码行数的初始估计 项目的整体完成百分比 每一项活动的完成百分比 到今日所花费的项目总预算百分比 日程完成百分比 测试的完成百分比 测试的通过率
30
目标 4的问题: 缩短项目周期
• • • • • • 每一项任务的实际日程是什么样的? 每一项活动实际花费工时有多少? 用于返工的工时有多少? 用于非开发任务的工时有多少? 每项活动所需的加班工时是多少? 用人水平能否保证项目的按时完成?
• 度量了就能解决问题?
▫ 不能。
• 那我们为什么还要度量?
11
为什么要进行度量
什么问题,什么性能对我的组织来说是重要的? 有理由么? 这些问题/性能的优先级怎么排定? 这些问题都有待于坚实的度量数据作为回答的支持 为了解决问题/提高性能我们作出了努力,但是我们真的成功了么?
12
软件度量体系的驱动力量是目标和问 题