軟件度量

软件度量

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

方法体系

项目度量

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

规模度量

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

软件规模度量有助于软件开发团队准确把握开发时间、费用分布以及缺陷密度等等。软件规模的估算方法有很多种,如:功能点分析(FPA:functionpointsanalysis)、代码行(LOC:linesofcode)、德尔菲法(Delphitechnique)、COCOMO模型、特征点(featurepoint)、对象点(objectpoint)、3-D功能点(3-Dfunctionpoints)、Bang度量(DeMarco'sbangmetric)、模糊逻辑(fuzzylogic)、标准构件法(standardcomponent)等,这些方法不断细化为更多具体的方法。

成本度量

软件开发成本度量主要指软件开发项目所需的财务性成本的估算。主要方法如下:

类比估算法。类比估算法是通过比较已完成的类似项目系统来估算成本,适合评估一些与历史项目在应用领域、环境和复杂度方面相似的项目。其约束条件在于必须存在类似的具有可比性的软件开发系统,估算结果的精确度依赖于历史项目数据的完整性、准确度以及现行项目与历史项目的近似程度。

细分估算法。细分估算法是将整个项目系统分解成若干个小系统,逐个估算成本,然后合计起来作为整个项目的估算成本。细分估算法通过逐渐细化的方式对每个小系统进行详细的估算,可能获得贴近实际的估算成本。其难点在于,难以把握各小系统整合为大系统的整合成本。

周期估算法。周期估算法是按软件开发周期进行划分,估算各个阶段的成本,然后进行汇总合计。周期估算法基于软件工程理论对软件开发的各个阶段进行估算,很适合瀑布型软件开发方法,但是需要估算者对软件工程各个阶段的作业量和相互间的比例具有相当的了解。

顾客满意度度量

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

比如:NEC于2002年12月开始实施的CSMP活动的度量尺度包括共感性、诚实性、革新性、确实性和迅速性,其中,将共感性和诚实性作为CS活动的核心姿态,而将革新性、确实性和迅速性作为提供商品和服务中不可或缺的尺度。每个尺度包括两个要素,各要素包括两个项目,共计5大尺度、10个要素和20个项目。例如,共感性这一尺度包括“了解顾客的期待”、“从顾客的立场考虑问题”这两个要素;“了解顾客的期待”这一要素又包括“不仅仅能胜任目前的工作还能意识到为顾客提供价值而专心投入”、“对顾客的期望不是囫囵吞而是根据顾客的立场和状况来思考‘顾客到底需要什么’并加以应对”这两个项目。

作为企业的顾客满意度的基本构成单位,项目的顾客满意度会受到项目要素的影响,主要包括:开发的软件产品、开发文档、项目进度以及交期、技术水平、沟通能力、运用维护等等。具体而言,可以细分为如表7-2所示的度量要素,并根据这些要素进行度量。

顾客满意度项目顾客满意度度量要素

软件产品功能性、可靠性、易用性、效率性、可维护性、可移植性

开发文档文档的构成、质量、外观、图表以及索引、用语

项目进度以及交期交期的根据、进度迟延情况下的应对、进展报告

技术水平项目组的技术水平、项目组的提案能力、项目组的问题解决能力

沟通能力事件记录、式样确认、

运用维护支持、问题发生时的应对速度、问题解决能力

层级内容

第一层

质量要素

描述和评价软件质量的一组属性功能性、可靠性、易用性、效率性、可维护性、可移植性等质量特性以及将质量特性细化产生的副特性

第二层

衡量标准

衡量标准的组合反映某一软件质量要素精确性、稳健性、安全性、通信有效性、处理有效性、设备有效性、可操作性、培训性、完备性、一致性、可追踪性、可见性、硬件系统无关性、软件系统无关性、可扩充性、公用性、模块性、清晰性、自描述性、简单性、结构性、文件完备性等

第三层

量度标准

可由各使用单位自定义根据软件的需求分析、概要设计、详细设计、编码、测试、确认、维护与使用等阶段,针对每一个阶段制定问卷表,以此实现软件开发过程的质量度量

表7-3软件质量度量FCM模型

凯悦(LawrenceE.Hyatt)和罗森贝克(LindaH.Rosenberg)在《识别项目风险以及评价软件质量的软件质量模型与度量》(ASoftwareQualityModelandMetricsforIdentifyingProjectRisksandAssessingSoftwareQuality)中比较了这3种最常用的软件质量模型,其基本情况如表5-14所示。

度量标准/目标麦考尔勃姆ISO9126

正确性(Correctness)XX可维护性

可靠性(Reliability)XXX

完整性(Integrity)XX

可用性(Usability)XXX

效率性(Efficiency)XXX

可维护性(Maintainability)XXX

可测试性(Testability)X可维护性

互操作性(Interoperability)X

适应性(Flexibility)XX

可重用性(Reusability)XX

可移植性(Portability)XXX

明确性(Clarity)X

可变更性(Modifiability)X可维护性

文档化(Documentation)X

恢复力(Resilience)X

易懂性(Understandability)X

有效性(Validity)X可维护性

功能性(Functionality)X

普遍性(Generality)X

经济性(Economy)X

表7-43种软件质量模型之比较

软件质量度量方法

软件质量度量方法比较多,例如:(1)Halstead复杂性度量法,基本思路是根据程序中可执行代码行的操作符和操作数的数量来计算程序的复杂性。操作符和操作数的量越大,程序结构就越复杂。(2)McCabe复杂性度量法,其基本思想是程序的复杂性很大程度上取决于程序控制流的复杂性,单一的顺序程序结构最简单,循环和选择所构成的环路越多,程序就越复杂。

过程度量

软件过程性能

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

过程度量

弗罗哈克(WilliamA.Florac)、帕克(RobertE.Park)和卡尔顿(AnitaD.Carleton)在《实用软件度量:过程管理和改善之度量》(PracticalSoftwareMeasurement:MeasuringforProcessManagementandImprovement)中描述了过程管理和项目管理的关系。

认为软件项目团队生产产品基于三大要素:产品需求、项目计划和已定义软件过程。度量数据在项目管理中将被用来:(1)识别和描述需求,(2)准备能够实现目标的计划,(3)执行计划,(4)跟踪基于项目计划目标的工作执行状态和进展。而过程管理也能使用相同的数据和相关度量来控制和改善软件过程本身。这就意味着,软件组织能使用建构和维持度量活动的共同框架来为过程管理和项目管理两大管理功能提供数据。

软件过程管理包括定义过程、计划度量、执行软件过程、应用度量、控制过程和改善过程,其中计划度量和应用度量是软件过程管理中的重要步骤,也是软件过程度量的核心内容。计划度量建立在对已定义软件过程的理解之上,产品、过程、资源的相关事项和属性已经被识别,收集和使用度量以进行过程性能跟踪的规定都被集成到软件过程之中。应用度量通过过程度量将执行软件过程所获得的数据,以及通过产品度量将产品相关数据用来控制和改善软件过程。

内容

软件过程度量主要包括三大方面的内容,一是成熟度度量(maturitymetrics),主要包括组织度量、资源度量、培训度量、文档标准化度量、数据管理与分析度量、过程质量度量等等;二是管理度量(managementmetrics),主要包括项目管理度量(如里程碑管理度量、风险度量、作业流程度量、控制度量、管理数据库度量等)、质量管理度量(如质量审查度量、质量测试度量、质量保证度量等)、配置管理度量(如式样变更控制度量、版本管理控制度量等);三是生命周期度量(lifecyclemetrics),主要包括问题定义度量、需求分析度量、设计度量、制造度量、维护度量等。

流程

软件过程的度量,需要按照已经明确定义的度量流程加以实施,这样能使软件过程度量作业具有可控制性和可跟踪性,从而提高度量的有效性。软件过程度量的一般流程主要包括:确认过程问题;收集过程数据;分析过程数据;解释过程数据;汇报过程分析;提出过程建议;实施过程行动;实施监督和控制。这一度量过程的流程质量能保证软件过程度量获得有关软件过程的数据和问题,并进而对软件过程实施改善。

相关词条

相关搜索

其它词条