目前,软件项目需求正飞速增长,相应引起了软件开发活动的急剧增长,使软件过程(即用于开发和维护软件及其相关产品的一组活动、方法、实践及转换得到更多的关注。因为软件过程在成本估算、项目进度和软件质量等方面的把握必须准确,同时产品必须满足用户对其功能和质量的要求,所以深入研究软件度量模型、建立基于度量的量化管理,是控制软件过程、提高软件质量的有效保证。

  IEEE对度量的定义是:一个函数,它的输入是软件数据、输出是单一的数值,能用以解释软件所具有的一个给定属性对质量影响的程度。而软件度量按它的三个研究重点(项目、产品和过程)可以分为三类,即项目度量,其度量数据反映项目状况,用于项目跟踪;产品度量,其度量数据反映质量状态,用于产品质量跟踪;过程度量,其度量数据反映过程性能,用于过程改进和提高生产率。

  由上可知,对软件过程的改进是在以明确的目标为指导、以过程度量为支撑的条件下进行的,而软件过程度量充分记录了过程的行为信息,为制定下一轮软件过程改进的目标提供了依据。因此从某种意义上讲,软件过程改进和控制的程度是软件过程度量的体现。

  1 模型框架

  为有效地建立软件度量模型,有必要剖析建立软件度量模型的四个阶段,即建立度量需求、准备度量、实施度量和分析度量结果,其中的每一阶段都有不同的要求和活动:

  (1)建立度量需求。度量需求表达了在具体的应用环境下对软件产品质量的定量要求,是有效保证和客观评价软件质量的前提,应该在软件开发前或初期进行定义。度量需求规格说明可定量定义为所需质量特性的直接度量及其直接度量目标值,其中的直接度量值用于验证终产品是否达到度量需求。

  (2)准备度量。由软件质量特性和子特性描述的软件度量需求通常无法直接测量,需要进一步确定相关的度量元。在度量的准备阶段,应根据应用环境,为软件开发的各个阶段及其终产品分别确定适当的度量元,建立度量元、质量子特性、质量特性的映射模型,确定合理的评估准则。

  (3)实施度量。数据收集过程涵盖规定从数据收集点到度量评价的数据流程;确定有关数据的收集条件;给出工具的使用说明和数据的存放规程三个方面。在全面实施度量前,应先分析数据是否一致,度量要求是否确切,检查需要主观判断的数据说明和要求是否足够清晰,检查样板度量过程的费用,分析修改或完善费用,检查所收集数据的准确性、度量单位的合适性,所收集数据之间的一致性,确认数据样本的随机性、小样本数、相似性等。

  (4)分析度量结果。度量结果的分析不仅要做出度量和评估的结论,还要进行度量元的确认,以确定哪些度量元适用于当前软件的度量,并可用于预测软件质量特性值,根据这些度量值和由此计算得到的直接度量的预测值来决定被度量对象是否需要做进一步的度量和分析。在软件过程度量的实施中,另一个重要的内容是软件度量指标的确定。软件度量指标可划分成彼此相互联系的七大领域:

  ①资源与费用度量。反映人力资源投入与所完成工作之间的关系,子领域包括人员、财务状况以及环境支持等。

  ②计划与进度度量。反映主要里程碑与单元任务完成的情况,子领域包括里程碑状态、单元任务进度以及项目任务递增变化的情况等。

  ③软件扩展与稳定性度量。反映软件的稳定性及变化情况,子领域包括产品规模与稳定性、功能范围与稳定性。

  ④产品质量度量。反映交付的产品能够很好地支持用户需求而没有错误,子领域可根据产品质量需求指标从不同的视角进行设计。

  ⑤技术满足度度量。反映开发产品所采用技术的先进性和充分性,子领域包括技术选择对开发的影响、计算机资源的利用、技术先进性与充分性等。

  ⑥开发性能度量。反映开发小组的过程成熟程度,能够胜任项目的开发任务,子领域包括过程成熟度、生产力与效率以及风险情况。

  ⑦客户满意度度量。反映客户对项目时间、产品质量与性能以及服务的满意程度,子领域包括客户反馈、客户支持等。基于以上步骤,笔者提出了一个可操作的、结构化的、客观的、针对过程的软件过程度量模型(Software ProcessMeasure-mentMode,l SPMM)。

  2 度量模型

  采用一般特征描述模式对软件过程模型进行描述,虽然给出了关键过程域中过程活动状态的量化信息,但这些量化信息仅仅是一些非结构化的举例,不能支持有效的过程理解、过程评价、过程控制和过程改进。本文提出的度量模型SPMM有助于软件组织有效地理解过程、评价过程、控制过程和实施过程改进,该模型在以前的软件过程度量模型基础上根据CMM对应的关键过程域的度量要求和软件组织的过程改进目标,详尽描述了软件过程的度量内容,并分析确定了其所对应的CMM的关键过程域。

  过程质量是过程的素质,而过程素质在实际应用中能否发挥要受到内、外两类因素的影响,内在因素的集合是过程质

  量,过程质量在过程外在因素的作用下表现为过程性能(即过程本质在一定环境下的反映,受到过程的本质和实施环境以及其他一些未知因素的综合影响)。因为过程性能是过程在内、因素共同作用下的实际执行结果,是理解、控制和改善过程的直接对象,所以在该软件过程度量模型中,通过以过程性能为核心,从中分解出它的特征、子特征和度量来建立过程度量的层次模型SPMM。

  七个描述层次:软件过程性能、软件过程性能范畴、软件过程性能类型、特性、子特性、度量和度量元。其中,软件过程的能力度和成熟度取决于软件过程的性能,对软件过程性能的评价表现在多个过程性能范畴,不同过程性能范畴由各种类型的软件过程性能构成,每个类型的过程性能基于不同的性能特性,特性可能有子特性,通过度量可以评价软件过程性能的特性和子

  特性,同时度量本身也有多种数据表现形式(即多个度量元)。

  3 过程度量模型的度量元对过程进行度量应先明确度量的实体对象。

  任何实例过程都包括过程输入、过程组成、过程消耗、过程保留与过程输出的实例化五个部分,而且其中每个部分都存在可度量的实体。

  (1)过程投入:过程启动前接收的信息,包括使用或储备的资源、相关规范或前续过程的产出等。

  (2)过程产出:过程运作后产生的结果,包括产品、副产品和影响等。

  (3)过程组成:包括过程的活动和流程,它表示过程的结构。

  (4)过程消耗:过程运作中消耗的资源、人力投入、时间等。

  (5)过程保留:过程完成后留下的资源,如工具、方法、人员的经验等。

  因为软件过程改进是持续、渐进的过程,对应的软件过程度量也应是一个渐进的过程,所以在度量的过程中,要根据实际情况分别细化SPMM的特性、子特性、度量以及度量元。需要说明的是,上述度量和度量元只是一个实例,并未包含所有的度量以及度量元,因此软件组织在实际应用此度量模型时,应根据自身特点、软件过程改进的目标、过程度量的需求与目的来选择和定义度量,并适当增加、修改和裁剪度量元,以满足自身的需要。不同的度量方法适用于不同的模型、对应于不同的度量对象和度量指标,有各自优缺点,所以没有好的、只有合适的软件度量方法。

  4 度量模型的应用

  实际的项目管理中,项目执行时过程的跟踪监督需要度量。良好的项目管理主要针对项目要素进行跟踪度量,通过分析度量数据可以及时发现项目进展中存在的问题,从而有针对性地制订解决方案。需要度量的项目要素包括:

  (1)项目进度度量。对项目进度进行定期的跟踪度量,以及时发现当前进度与计划的偏差,及时采取处理措施、赶工或调整进度计划。

  (2)项目工作量度量。工作量是衡量项目成本、人员工作情况的基础,准确度量出项目真实的工作量,不但可以掌握当前项目的情况而且对于今后估算其他项目数据也有重要意义。

  (3)人员生产率度量。人力资源是项目中重要的资源,掌握人员的生产能力对项目管理中人员管理、资源管理有重要的参考价值。项目需要一个新的度量时,可以通过裁剪过程和直接将使用工具的度量点合并到过程中以更新或者改变过程,通过部署开发工具以使这些度量点的访问变得更加容易,通过使用自动化工具定义收集的数据信息和度量软件过程的关键组件,并提供对度量点的方便访问。尽管有时度量并不反映实际工作,但如果一个软件组织所能跟踪的只有项目预算和时间计划,那是十分严重的问题(因为此时花费在一个任务上的资金或时间不能反映实际执行的工作量),然而通过使用该软件过程度量模型可得到关于实际花费资金与项目进展的准确视图。

  5 结束语

  软件度量的根本目的是通过量化的分析和总结以指导提高生产率和产品质量、降低成本和产品研发周期,而软件过程度量围绕持续改善软件质量、提高生产效率和降低成本这三方面展开。笔者应用软件度量的思想,提出以CMM为指导的软件过程度量模型SPMM,并确定该模型的度量元及其对应于CMM的KPA。但SPMM不是一个度量全集,而只是一个度量的实例,所以软件组织在使用SPMM时,应根据自身的软件过程成熟度、软件过程改进的期望目标和商业目标,选择度量元、并确定其优先级。

  软件度量模型SPMM给出的量化数据能保证软件产品质量和有效的过程度量,软件组织可利用这些数据来具体指出当前系统的薄弱环节,并对开发过程和质量保证过程进行有效控制,从而减少项目开支、确保开发进度、提高产品质量。