软件质量度量
软件质量度量软件质量度量 随着技术的进步和软件应用领域的拓展,用户需要更大规模、更可靠的软件,此时,软件度量工作显得更为重 要了。如果一个组织能够对其生产的产品做出预测和承诺,那么就可以说这个组织是成功的。有效度量的作用在于 能够帮助软件组织认清自己的能力,根据对度量数据结果的分析,进一步为他们的生产和服务制订出可行的计划; 及时找到变化趋势,预测问题,发现或者采取有效手段预防缺陷;不断改进软件开发过程。 需求的变更直接导致规模的变更、进度的延期以及成本的增长,公司要求项目经理定期度量需求变更(包括新 增的、修改的和删除的需求数)的数量及需求总数的变化,控制需求变更并采取相应的措施。 图 7-1 中两条线分别表示需求总数的变更以及每周需求变更的数量。曲线中的数据表明,第二周的需求评审后, 第三周需求总数又有了明显的增长,而且第三、第四和第五周需求变更的数量都很大。 为了查找具体原因,须继续分析更加详细的数据,如图 7-2 所示。 图 7-2 中显示,经过了第二周的“第 1 次评审“,需求变更还是很大,其中大量的需求处于修改状态。而且第七周 “第 2 次评审“ 后,需求在相当长的时间内依旧没有稳定下来。目前,项目已经进入到设计阶段,大量的需求变更是项目失败的一个隐患。 为了控制不断需求的变更,项目可能采取包括重新分配资源,重新估计规模、工作量和进度等具体措施。 另外,还可以详细地分析需求变更的具体原因(如误解、不清楚、不完善和不正确等)、需求变更的类型(如功能、性能和接 口需求等)以及细化跟踪的粒度到每个模块。 通过这些详细的分析,可确定造成需求频繁变更的根本来源,以便有针对性地采取措施。 7.17.1软件度量及其方针软件度量及其方针 其实,度量在我们的开发过程中一直在使用,例如代码行或者工作量人月数的度量等。 软件度量是针对软件开发项目、过程及产品进行数据定义、收集以及分析的持续性定量化的过程。 软件度量实际上包括度量和分析两大部分,其中度量是基于一定的目的,采用一定的办法或者标准,对目标事物进行观察,得 到客观的评价结果,以量化管理定义项目过程,完成项目已建立的质量和过程性能目标;分析是采用一系列数学函数,对数据进 行处理,发现问题并确定过程的发展趋势。 软件度量的目的一般在于:软件度量的目的一般在于: (1)理解,作为研究或开发的部分,通过搜集到的软件过程及项目数据可以了解过程和状态。 (2)评价,评定软件工作产品或开发活动是否符合规定的准则及条件。 (3)控制,根据度量获得的数据控制软件开发过程中关键活动。 (4)预测,度量数据是有效估计的基础,可以在软件开发效率或者趋势方面进行推理并提示采取措施。 (5)改进,根据度量信息,确定改进的机会。 软件度量活动一般是在项目级开始,逐步向上扩展为过程度量和产品度量,在处理组织级或者本组织信息需要方面,提供足够 的度量能力;向下扩展为个体行为度量,目的是了解个体开发过程中行为的详细原因,并实施行动进行改进。 其中,产品度量是描述诸如大小、复杂性、设计特征、性能和质量等级的产品特征的度量;过程度量是可用于改善软件开发和 维护过程的度量,用于建立组织基线,确定改进活动,例子包括开发过程中缺陷排除的有效性、维护过程的响应时间等;项目度 量是了解项目实时质量情况,获得项目特征和执行情况,例子包括开发人员的数目、软件生命周期上的人员成本、进度和生产率 等;个体行为度量可以了解个体的开发优势和不足,了解个体缺陷产生的详细原因,确定如何去提高质量并实施行动进行改进, 例子包括引入缺陷最多的阶段、引入缺陷的累积百分比、编码阶段常犯错误、缺陷排除有效方法等。 软件度量中最关键的内容是度量模型的建立和资源模型曲线的绘制及应用,本章稍后的部分我们将分别介绍这两个模型。 软件度量应遵循的方针:软件度量应遵循的方针: (1)根据信息需要和目标建立测量目标并予以维护; (2)软件度量方法只是达到目的的手段,而其本身并不是目的; (3)以应用度量结果为中心,而不是单纯为收集数据而搜集数据; (4)规定度量元,以处理度量目标,但是要注意度量数据本身肯定存在着瑕疵、不精确也不稳定; (5)说明如何获得并存储度量数据,让软件开发者参与软件度量活动; (6)规定如何对度量数据进行分析和报告,并且安排优先顺序,同时从小处着手,以局部为重点,逐步深入; (7)提供度量结果,以便处理信息需要和目标。包括:获得指定的度量数据;分析并解释度量数据;管理并存储度量数据、 度量规范和分析结果;向所有有关的利益相关者报告度量和分析活动的结果。 (8)将特定情景中的过程行为相关知识存储到经验数据库中。 7.27.2度量活动度量活动 在整个开发过程中,到底度量些什么,是一个非常困难的课题。因为度量数据的真正用户不仅仅是项目组,更多的是管理者。 当管理层不关心组织的过程能力时,软件度量就会失去方向和目标;而如果项目组和管理层不关心组织的过程性能时,度量则失 去了其存在的作用和意义。 这两个方面中,一定要首先确定度量活动的首要目标。度量内容(即下面所论述的“度量元“)必须由企业的商业目标确定,并 且是针对特定问题的。换句话说,软件度量一定由公司的管理层决策、参与和支持,提出监控的大方向(如工作量、进度、生产 率、缺陷密度等方面的控制值),同时有资深的项目管理和开发人员讨论、参与和支持,一起定义具体细节。 例如,公司中的项目类型可能有很多,包括特定的项目开发(从需求获取到发布)、平台移植项目(从Windows 到 Linux 或者 UNIX)、本地化项目(汉化国外产品)、售后服务类项目以及外包项目(从详细设计到编码阶段和纯测试项目)等,针对不同类 型项目的度量元肯定是不同的。其中,项目开发可以有编码阶段的代码生产率,也可以算出从头到尾的平均代码生产率。对于本 地化项目,工作量是将英文翻译成中文(其中没有代码开发的任务),此时需要度量的是翻译阶段的翻译生产率。而对于移植项 目(有些代码是自己写的,有的是复制原来的,有的是修改的)、纯测试项目(测试某个产品的各个功能,可能没有代码或写了 一些测试驱动)、外包服务(客户的需求频繁变化,虽然可以统计编码阶段的生产率,但其中的返工工作量很大)、客户支持服 务(远程支持、指导,没有任何代码)等,凡此林林总总的特例,如何进行度量的定义、统计、分析,都是比较现实的问题。 7.2.17.2.1度量目标度量目标 确定度量目标、选择适当的度量元是做好度量的基础。我们确定度量目标时,常用的是目标问题度量 (Goals-Questions-Metrics,GQM)方法(见图7-3)。 GQM 方法由马里兰大学的巴士利博士(Dr.Victor Basili)及其助手提出, 用以告诉组织或者机构应该采集哪些数据。GQM 方法隐含的假设是“每一个组织、项目均有一系列目标要实现;而要实现每一个目 标,均要回答一系列问题才能知道目标是否实现;而对提出的每个问题,都可以找到一个完整、可以量化的满意解答“。GQM 过程 如下: (1)制定一系列目标; (2)设定一系列描述目标的问题; (3)定义需要回答这些问题的度量标准; (4)开发数据收集和分析的机制; (5)收集、确认、分析数据,并采取正