软件质量度量和配置管理
3.1 概述
软件度量
在软件开发中,==软件质量度量的根本目的是为了管理的需要。利用度量来改进软件过程。人们是无法管理不能度量的事物。
而对于管理层人员,软件工程的方法论主要在提供可见度方面下工夫。但仅仅是方法论的提高并不能使其成为工程学科。
对于未知的事物,度量用于预测。(软件度量的成果是非常初步的,还需要大量工作才可能真正地做到实用化,但它的实用化成就将对软件的高质量和告诉发展有不可估量的影响。
3.1.1 度量
Measure:度量(名词),是根据一定的规则赋予软件过程或产品属性的数值或类别。数值时对软件产品、软件过程的特征的量化技术的结果,类别是特征的定性表示。
Measure:度量(动词),按照度量过程定义,对软件过程或软件产品实施度量,表示实际的动作。
Measurement:测量,是按照一定的尺度用度量(名词)给软件质量实体属性赋值的过程。它强调对软件实体属性进行量化的过程性,是提取软件过程或软件产品属性的度量(名词)的过程。它所蕴含的内容是度量的过程,度量过程可分为评估度量的过程和直接度量的过程,评估度量的过程是对计划实施度量的过程,直接度量的过程是在实施项目过程中收集数据和分析数据的过程。
Metric:度量,是已定义的测量方法和测量尺度。在很多场合与Indicator交叉出现,但其内涵大于Indicator,Metric概指软件环境中任何一个软件对象的属性的量化表现。
Indicator:指示器,或称为指标。是用于评价或预测其他度量的度量。指示器是一个或多个度量的综合,是对软件产品或软件过程某一方面特征的反映。不同的度量目的,有不同的度量指示器选择。在具体的实施过程中,可操作的度量成千上万,应选择最能反映当时度量环境的指标作为度量指示器。
3.1.2 软件度量
软件度量或者说软件工程度量领域是一个在过去30多年研究非常活跃的软件工程领域。
同态映射包括所有关系和结构映射。
软件品质和软件度量成直对关系。这是度量和软件度量的根本理念。
3.1.3 软件度量的作用
可度量性是学科是否高度成熟的一大标志,度量使软件开发逐渐趋向专业、标准和科学。
尽管人们觉得软件度量比较难操作,且不愿意在度量上花费时间和精力,甚至对其持怀疑态度,但是这无法否认软件度量的作用。
软件工程研究所在《软件度量指南》中认为,软件度量在软件工程中的作用有三:
通过软件度量增加理解;
通过软件度量管理软件项目,主要是计划和估算、跟踪和确认;
通过软件度量指导软件过程改善,主要是理解、评估和包装。软件度量对于不同的实施对象,具有不同的效用。
3.2 软件质量度量
角色 | 度量效果 |
---|---|
软件公司 | 改善产品质量;改善产品交付;提高产品交付;提高生产能力;降低生产成本;建立项目估算的基线;了解使用心得软件工程方法和工作的效果和效率;提高客户满意度;创造更多利润; |
项目经理 | 分析产品的错误和缺陷;评估现状;建立估算的基础;确立产品的复杂度;建立基线;从实际上确定最佳实践 |
软件开发人员 | 可建立更加明确的作业目标;可作为具体作业中的判断标准;便于有效把握自身的软件开发项目;便于在具体作业中实施渐进性软件开发改善活动 |
3.2.1 软件质量和软件质量要素
对于软件质量,CMM的定义是:
一个系统、组件或过程符合特定需求的程序;
一个系统、组件或过程符合客户或用户的要求或期望的程度。
3.2.2 影响软件质量的因素
软件业通过多年的实践,总结出软件质量是人、过程和技术的函数,即Q={M,P,T}。其中,Q表示软件质量,M表示人,P表示过程,T表示技术。
软件复杂性随软件需求和软件质量的提升而提升,软件技术的提升又随时间变化与软件需求的提升有着差距。
3.2.3 质量保证模型
McCall模型
Boehm模型
FURPS模型
ISO9126
McCall模型
正确性 | 一个程序满足她的需求规约和实现用户任务目标的程度。 |
可靠性 | 一个程序满足一所需的精确度完成它的预期功能的程度。 |
效率 | 一个程序完成其功能所需的计算资源和代码的度量。 |
完整性 | 对未授权人员访问软件或数据的可控制程度。 |
可用性 | 学习、操作。准备输入和解释程序输出所需的工作量。 |
可维护性 | 定位和修复程序中一个错误所需的工作量。 |
灵活性 | 修改一个运行的程序所需的工作量 |
可测试性 | 测试一个程序以确保她完成所期望的功能所需的工作量 |
可移植性 | 把一个程序从一个硬件和或软件系统环境移植到另一个环境所需要的工作量 |
可复用 | 一个程序可以在另外一个应用程序中复用的程度 |
互连性 | 连接一个系统和另一个系统所需的工作量 |
产品修正:可维护性、可测试性、灵活性。
产品转移:互联性、可移植性、可复用性。
产品运行:正确性、可使用性、完整性、可靠性、效率。
用户 管理员 开发者三方面联系。
Boehm模型
Boehm模型着手于软件总体的功效。
总功效可以被分解成可移植性、有效性、可维护性。
有效性可以细分为可靠性、效率,运行工程可维护性可以细分为测试性,可理解性,可修改性。
FURPS模型
功能性 | 通过评价特征集和程序的能力、交付函数的通用性和整体系统的安全性来评估 |
可用性 | 通过考虑人的因素、整体美学、一致性和文档来评估 |
可靠性 | 通过度量错误的频率和严重程度、输出结果的准确度、平均失效时间间隔、从失效恢复的能力、程序的可预测性来评估 |
性能 | 通过侧度处理速度、响应时间、资源消耗、吞吐量和效率来评估 |
支持度 | 包括扩展程序的能力可扩展性、可适应性和服务型这三个属性代表了一个更一般的概念——可维护性、以及可测试性、兼容度、可配置型组织和控制软件配置的元素的能力、一个系统可以被安装的容易程度、问题可以被局部化的容易程度 |
ISO9126
功能性 | 适合性、准确性、互操作性、依从性、安全性 |
可靠性 | 成熟性、容错性、可恢复性 |
可用性 | 可理解性、易学性、可操作性 |
效率 | 时间特性、资源特性 |
可维护性 | 可分析性、可改变性、稳定性、可测试性 |
可移植性 | 适应性、可安装性、一致性、可替换性 |
3.2.4 缺陷排除效率
==缺陷排除效率(DRE)==在项目级和过程级中都能提供有益的质量度量。
当把一个项目作为一个整体来考虑时。DRE=E/(E+D)
E:软件交付给最终用户之前所发现的错误数。
D:软件交付之后所发现的缺陷数。
3.3 软件过程度量
3.3.1 软件过程度量概念
软件过程度量是对软件过程进行度量的定义、方法、活动和结果的集合。
~软件过程度量不是单一的活动而是一组活动的集合,它本身也是一个系统的过程。
与任何系统的过程一样,它包括确定需求、制定计划、执行和结果分析等一系列完整的步骤。
软件过程度量通常包括如下的活动:
选择和定义度量、制定度量计划、收集数据、执行度量分析、评估过程性能、根据评估结果采取相应措施等。
软件过程度量包括如下的活动:选择和定义度量、制定度量计划、收集数据、执行度量分析、评估过程性能、根据评估结果采取相应措施
软件过程度量概念
软件过程度量的目标
软件过程度量的对象
软件过程度量的方法
软件过程度量的结果
产品度量内容,可以是过程度量内容的一部分,因为对产品的度量结果是对产品的评价,而产品又是过程的结果,产品的好坏,体现了过程的好坏。
3.3.2 软件过程度量常见问题
度量的太多、太频繁
度量的太少、太迟
度量了不正确的事物或属性
度量的定义不正确
收集了数据却没有利用
错误的解释度量数据
自动化工具欠缺
3.3.3 基于目标的软件过程度量方法
GQM模型是一种层次状结构,最上层,是一个目标,对该目标细化就得到几个问题,构成问题层。
这几个问题,将关注的方面分解为几个部分。
ISSUES:度量对象的质量重点
VIEWPIONT:信息使用者
OBJECT:要度量对象
PURPOSES:一般是理解、控制和改进要度量的对象。
获得问题,从以下几个方面来考虑
对于特定目标陈述中的对象,应该抓住那些可以量化的特征?
结合模型中的侧重点,这些特征应该怎么来描述?
结合模型中的侧重点,应该如何评价度量对象的这些特征?
选择数据项时,至少要考虑一下几个方面
现有数据的有效性,尽量利用现有数据,实在没有相关数据积累或者现有数据的可靠性太差,也要少选、精选需要进行采集的数据项。
度量对象的稳定性,对于成熟、稳定的对象,多应用客观度量。
GQM建模的渐进性GQM建模是一个持续改进的过程。
GQM分解样例
||GQM||
|目标|用途|控制、改进|
||对象|同行评审过程|
||侧重点|能力|
||需求方|过程改进人员|
||环境|符合CMMI4要求的研发规范|
3.4 软件配置管理
软件配置管理作为CMM 2级的一个关键域(KPA)
软件配置管理是贯穿于整个软件过程中的保护性活动,它被设计来:
标识变化;
控制变化;
保证变化被适当地实现;
向其他可能有兴趣的人员报告变化。
3.4.1 软件配置管理的目标
软件配置管理是贯穿整个软件生命周期中建立和维护项目产品的完整性
基本目标包括:
软件配置管理的各项工作是有计划进行的。
被选择的项目产品得到识别,控制并且可以被相关人员获取、已识别出的项目产品的更改得到控制
使相关组别和个人及时了解软件基准的状态和内容
3.4.2 软件配置管理角色职责
项目经理(PM)
配置控制委员会(CCB)
配置管理员(CMO)
系统集成员(SIO)
开发人员(DEV)
3.4.3 软件配置管理过程描述
项目计划阶段
CCB根据项目的开发计划确定各个里程碑和开发策略;
CMO根据CCB的规划,指定详细的配置管理计划,交CCB审核;
CCB通过配置管理计划后交项目经理批准,发布实施。
项目开发阶段
主要由CMO完成的管理和维护工作;
由SIO和DEV具体执行软件配置管理策略;
变更流程。
3.4.4 软件配置管理的关键活动
SCM任务的定义
配置项识别
工作空间管理
版本控制
变更控制
配置审计
状态报告
3.4.5 常用的软件配置管理工具
VSS的主要方法
添加项目
浏览Source Safe Server中的文件
设置工作文件夹
下载最新版本文件到本地机
上传文件到服务器操作
undo check out操作
edit操作
查看文件的历史内容
关于source safe的权限
关于password的更改
VSS的使用
目前,使用配置管理工具,可以分为3个级别:
- 简单的版本控制工具,是入门级的工具:CVS,VSS
- 第二级别,即项目级配置管理工具,适合管理中小型的项目:PVCS,MKS;
- 第三级别,即企业级配置管理工具,具有强大的过程管理功能,如CCC、Harvest ClearCase;
3.5 小结
测量使得管理者和开发者能够改善软件过程;辅助软件项目的计划、跟踪及控制;评估产生的产品的质量。
~对过程、项目以及产品的特定属性的测量被用于计算软件度量。
~分析这些度量可产生知道软件及技术行为的指标。
过程度量使得一个组织能够从战略级洞悉一个软件过程的功效。
~项目度量是战术的,是的项目管理者能够以实时的方式改进项目的工作流程及技术方法。
软件配置管理涵盖了整个软件的开发过程,因此是改进我们的软件过程,提高过程能力成熟度的理想的切入点。