首页 > 范文大全 > 正文

认识软件度量

开篇:润墨网以专业的文秘视角,为您筛选了一篇认识软件度量范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

在软件开发中,利用度量的目的是来改进软件过程。人们无法管理不能度量的事物。在软件开发的历史中,我们可以意识到,在20世纪六十年代末的大型软件所面临的软件危机反映了软件开发中管理的重要性。而对于管理层人员来说:没有对软件过程的可见度就无法管理;而没有对见到的事物有适当的度量或适当的准则去判断、评估和决策,也无法进行优秀的管理。我们说软件工程的方法论主要在提供可见度方面下功夫,但仅仅是方法论的提高并不能使其成为工程学科。这就需要使用度量。度量是一种可用于决策的可比较对象。度量已知的事物是为了进行跟踪和评估;对于未知的事物,度量则用于预测。本文从为什么要软件度量,什么是软件度量,度量的对象、过程、方法等方面来认识软件度量

一、为什么需要软件度量

判断和衡量代码质量一直是开发过程中令人苦恼的问题,在同样完成功能的情况下,如何判别一种写法比另一种写法好呢?在代码重构的过程中,如何确定代码质量是在不断的改进当中呢?引入一种设计模式以后,代码真的变的比以前好了吗?大部分时候我们凭感觉和经验做这些事情,我们使用很多模糊的词语来描述我们的判断,比如这样做以后,代码的可维护性更好、可扩展性提高,等等。在越来越注重代码设计的今天,很多人开始使用更感性化、更形而上学的词语来形容软件质量,我们会听到评价软件结构很优雅,带来美的享受,甚至一些设计原则被提升到了哲学高度。

不得不承认这些词语的描述确实很符合我们看到一段高质量代码的心境,但是这些新词语的出现并没有帮助我们解决软件质量判定中遇到的问题。因为这些感性的判定,由于每个人的经验不同,经历不同,所得出的结论也不尽相同。而软件度量能解决这些问题。

众所周知,度量对任意一个工程产品研制都是很重要的,度量让人们更加了解产品、可以评价产品、衡量产品质量,从而进行改进。对于软件产品也一样,只有定性的评估是不够的,还要通过定量的评估才可以根本的解决评估软件产品质量问题。

二、什么是软件度量

如今计算机在我们生活的每个领域几乎都扮演了非常重要的角色,在计算机上运行的软件也越来越重要。因此,可预测、可重复、准确地控制软件开发过程和软件产品已经非常重要。软件度量就是衡量软件品质的一种手段。CMMI为软件产品及软件过程提供了一套定量的表示和分析模型,即软件度量。因此,软件度量分为软件产品度量和软件过程度量两大部分。

先简单介绍一下软件产品的度量,由三部分组成:

1、质量要素。包括:功能性、可靠性、易用性、高效性、可维护性、可移植性六条。

2、评价标准。包括:精确、健壮、通信有效、处理有效、设备有效、可操作等。

3、度量元。指软件的需求分析、概要设计、详细设计、CODING实现、设置测试、确认测试、使用维护七个阶段中的度量元素,比如各阶段的里程碑――文档等。

对于软件过程度量,在软件过程中,我们有必要知道掌握这个过程中的什么。因为我们需要在通过每一个软件过程后,能交付符合该过程需要的结果,即该过程产品及该产品性能是否达到组织的商业目标。为了让这个目标成功,让它所有过程中的行为在整个管理中可以预测,判断现阶段这个过程设计是否合理,我们不仅仅需要主管和经验丰富的开发人员的经验,还需要定量的数据作为分析、参考,并把每个软件过程记录入库,作为今后统计分析的参考数据,这样科学的辅佐开发人员将软件过程控制住。

可以通过对整个软件过程中的七个阶段进行离散分析,得出各阶段中缺陷的发现及解决比例,从而判断出哪个阶段问题最大,将解决重点放在该阶段。比如,如果在分析阶段缺陷比例最大,而后期依次减小至理想状态,这说明本软件过程是非常成功的;反之,如果在测试阶段甚至使用阶段缺陷比例很大,很可能说明这个软件过程在分析或者构架时就存在很大的问题。

三、软件度量的对象

从前面的论述我们知道,任何软件度量活动最想做的是识别我们想度量的实体和实体的属性。在软件中我们想度量其属性的实体可以分为三类,他们是:

1、过程:是与软件相关的一些活动,这些活动都有一个时间因素。

2、产品:是指在软件开发过程中产生的各种中间产品、的资料和文档等。

3、资源:是指在开发过程中输入给过程的东西。

在软件中要度量或预测的属性都是上述三种实体之一的属性。同时,我们有必要区分一下外部属性和内部属性:内部属性是能够纯粹用过程或产品或资源其自身来度量的属性;

外部属性是指由过程或产品或资源及与其相关的环境共同才能度量的属性。

在软件度量中,主要用于以下几个方面:

1、从产品、过程和资源中得来的数字。如,功能点数或代码行(LOC)/每人每月等。

2、度量的分类。客观度量一般为定量的度量;主观度量一般反映为专家意见;在这些基本度量(直接度量)的基础上,经过计算得到进一步的附加度量(或称推导度量,间接度量等)。

3、可识别的属性。

4、一个理论或数据驱动的模型。其描述的是一个依赖于独立变量(如大小)函数的可变变量;这种模型通常是用于预测目的的。

四、软件度量的过程

软件度量工作首先需要确定能够表示软件质量的各种属性和指标;然后分析软件、收集数据;接着运用公式换算代码的各种指标值;最后通过这些指标就可以分析代码的质量。确定哪些属性和指标可以表示软件质量、收集哪些数据、如何用公式推导指标,都是软件度量的研究重点。它所确定的各种软件度量指标为我们了解软件属性、衡量软件质量提供了科学依据。

软件开发过程中,不管哪种软件度量方法,都包括了其基本的软件度量过程。这些过程构成软件度量作业的一次循环,使得软件度量能够经由渐进式的循环得到螺旋式上升。软件度量的基本过程如下:

1、承诺度量。根据软件开发的技术和管理过程对软件度量的需求,决定并承诺实施软件过程度量,这是具有针对性地推进软件度量的第一步骤,也是高层管理者参与决策并提供相应资源的重要环节。

2、计划度量。基于软件度量承诺,根据软件开发的技术、管理、流程、绩效、问题等信息制定软件度量计划。在计划中正式确认产品、流程、角色、责任和资源相关问题及属性,为实施软件度量提供书面的、计划性的、具有可行性的、得到资源支持的保证。

3、实施度量。根据软件度量计划对软件开发的项目、产品和过程等度量对象实施度量。通过度量收集、存储、分析有效的软件度量数据,并将度量和分析结果用于控制和改善软件过程。

4、评估度量。对软件度量过程本身进行评估,对度量标准、度量流程、度量方法、度量对象、度量效用等做出评估,发现度量作业的问题点,总结度量作业的资产,并提出度量作业改善方案。

5、改善度量。根据度量作业的改善方案在后续的度量作业中加以实施,将改善方案导入下一次软件度量过程之中。改善并不是水平方向上的简单重复作业,而是基于经验和教训之上的螺旋式上升过程,将软件度量的效用在软件开发过程中展现出来。

五、软件度量方法

1、项目度量。项目度量是针对软件开发项目的特定度量,目的在于度量项目规模、项目成本、项目进度、顾客满意度等,辅助项目管理进行项目控制。

2、规模度量。软件开发项目规模度量是估算软件项目工作量、编制成本预算、策划合理项目进度的基础。规模度量是软件项目失败的重要原因之一。一个好的规模度量模型可以解决这一问题。有效的软件规模度量是项目成功的核心要素:基于有效的软件规模度量可以策划合理的项目计划,合理的项目计划有助于有效地管理项目。规模度量的要点在于:由开发现场的项目成员进行估算;灵活运用实际开发作业数据;杜绝盲目迎合顾客需求的“交期逆推法”。

3、成本度量。软件开发成本度量主要指软件开发项目所需的财务性成本的估算。主要方法如下:类比估算法、细分估算法、周期估算法。

4、顾客满意度度量。顾客满意是软件开发项目的主要目的之一,而顾客满意目标要得以实现,需要建立顾客满意度度量体系和指标对顾客满意度进行度量。顾客满意度指标以顾客满意研究为基础,对顾客满意度加以界定和描述。项目顾客满意度量的要点在于:确定各类信息、数据、资料来源的准确性、客观性、合理性、有效性,并以此建立产品、服务质量的衡量指标和标准。企业顾客满意度度量的标准会因为各企业的经营理念、经营战略、经营重点、价值取向、顾客满意度调查结果等因素而有所不同。

5、产品度量。软件产品度量用于对软件产品进行评价,并在此基础之上推进产品设计、产品制造和产品服务优化。软件产品的度量实质上是软件质量的度量,而软件的质量度量与其质量的周期密切相关。

6、过程度量。过程度量是对软件开发过程的各个方面进行度量,目的在于预测过程的未来性能,减少过程结果的偏差,对软件过程的行为进行目标管理,为过程控制、过程评价持续改善提供定量性基础。过程度量与软件开发流程密切相关,具有战略性意义。软件过程质量的好坏会直接影响软件产品质量的好坏,度量并评估过程、提高过程成熟度可以改进产品质量。相反,度量并评估软件产品质量会为提高软件过程质量提供必要的反馈和依据。过程度量与软件过程的成熟度密切相关。

六、小结

软件度量是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。没有软件度量,就不能从软件开发的黑暗中跳出来。通过软件度量可以改进软件开发过程,促进项目成功,开发高质量的软件产品。度量取向是软件开发诸多事项的横断面,包括顾客满意度度量、质量度量、项目度量,以及品牌资产度量、知识产权价值度量,等等。度量取向要依靠事实、数据、原理、法则;其方法是测试、审核、调查;其工具是统计、图表、数字、模型;其标准是量化的指标。