军用软件测量与分析研究和应用

2021-06-16 06:30俞冬梅梁成才
电子技术与软件工程 2021年8期
关键词:软件测量目标

俞冬梅 梁成才

(1.中国科学院上海天文台 上海市 200030 2.中国电子科技集团公司第三十二研究所 上海市 201808)

1 引言

随着信息技术产业的蓬勃发展,软件在国家军事领域的应用越来越广泛,已经成为增强军队武器装备系统自动化、标准化、系列化的重要组成部分,进入软件定义装备的时代。然而,当代武器装备系统体系结构庞大,功能复杂,集成度高,如何降低软件研制成本,缩短软件研制周期,增加军用软件的可靠性、安全性和可维护性,避免软件失效,已然成为军用软件研制面临的巨大挑战。因此,总装备部参照软件能力成熟度模型CMMI(Capability Maturity Model Integration),颁布了GJB5000A-2008《军用软件研制能力成熟度模型》标准,要求对武器装备软件的论证、研制、测评、定型、使用和维护过程实施工程化管理,提高软件研制能力,保证软件产品质量。在GJB5000A 推进实施的过程中,软件研制单位以过程管理为主线,以监督评估为手段,通过测量与分析,将传统的定性管理上升到对软件质量的定量监控,实现软件质量的数字化。测量与分析过程,可以客观、精准地了解软件过程和产品的实施情况,识别软件研制生存周期中的薄弱环节,克服软件研发的随意性,进而为组织管理层决策提供可靠根据。

2 GJB5000A二级模型简介

GJB5000A 军用软件研制能力成熟度模型采用分级表示法,将软件研制能力分为五个等级:1 级为初始级,2 级为已管理级,3级为已定义级,4 级为已定量管理级,5 级为优化级。每个成熟度等级均由若干个过程域组成,模型把它分为过程管理类、项目管理类、工程类和支持类四种。每个过程域包含若干专用目标和专用实践,用以表示该成熟度所要达到的目标和所需要实施的实践。其中GJB5000A 二级已管理级,包含了7 个过程域,15 个专用目标和56 个专用实践(表1)。若要达到二级成熟度等级,则组织的实践要实现目标。为了适应军用软件研制资质要求,稳步提升软件工程化能力和质量管理水平,积极贯彻实施GJB5000A 至关重要。

3 测量与分析的目的和内容

GJB5000A 二级标准明确了测量与分析的目的是开发和保持测量能力,以支持管理信息的需要[1]。换言之,通过在军用软件研制过程中采集、存储、分析、交流项目实施的一系列数据,及时发现项目是否按计划执行,查验偏差和缺陷,为管理者预测项目的发展趋势,调整研发计划或采取纠偏措施,确定潜在的改进机会提供客观而可靠的依据。测量本身不会改进项目管理的过程,但是它能帮助跟踪项目的实际绩效,标识和解决与过程有关的问题,为我们提供对计划、控制、管理和改进的可视性。GJB5000A 二级标准规定测量与分析过程域主要包含四方面的内容[1]:

(1)根据软件项目的目标及组织关注的目标,确定测量与分析的目标;

(2)规定测量项和分析技术,以及数据收集、数据存储、报告和反馈的机制;

表1:GJB5000A 二级的过程域和专用实践

表2:测量与分析过程域专用目标和专用实践

(3)执行数据的采集、存储、分析和报告;

(4)提供客观的结果给项目组和利益相关方,以做出有根据的决策,并采取适当的纠正措施。

这些测量与分析的内容,结合GJB5000A 标准中测量与分析的2个专用目标和8个专用实践(表2),指明了为什么要做测量与分析,测什么,何时测,怎么测,如何分析等具体实践活动。

4 测量与分析的方法研究

一般软件及其开发过程的测量经常采用面向目标的测量方法,即GQM(Goal-Question-Metric)模型或者GQ(I)M(Goal-Question-Indicator-Metric)模型[2],自顶向下的将测量目标拆分成多个问题,每一个问题再分解提炼成测量指示器。在软件研发的生存周期里,开发过程往往被分解成若干个阶段,并设置里程碑节点,以监控软件开发进展是否达到预期。以常见的瀑布型软件生存周期模型为例,通过把逻辑实现和物理实现分开,软件生存周期分为问题识别、需求分析、软件设计、程序编码、软件测试、验收交付和后期维护等阶段。每个阶段内,又对活动按照周、双周进行跟踪。当重要阶段完成时,设置里程碑节点,如需求分析阶段里程碑、软件测试阶段里程碑、产品验收交付里程碑等,来检查和控制项目成本、进度和质量。GJB5000A 二级标准,采用GQ(I)M 模型,将测量与分析活动贯穿到军用软件研制生存周期的全过程,伴随着各项活动的进行而开展。一方面根据目标对已经产生的开发和管理活动进行数据采集和分析,另一方面根据采集量化的结果判断软件研制进展完成情况,并寻求改进机会,确保后续开发过程可控。总之,软件项目目标能否达成,往往依赖于过程管理中数据的测量和分析。结合标准的要求,测量与分析的流程一般如图1 所示。在组织级层面,要制定组织的测量目标和测量项,根据组织级数据采集和分析规程,形成测量项规格说明,确定数据测量时机、采集方式、分析方法等。在项目级层面,首先要制定测量与分析计划,确定项目的测量项,然后实施数据采集、存储、分析等活动,生成测量分析报告并与利益相关方交流结果。

图1:测量与分析的流程

4.1 确定测量目标

军用软件测量目标,应根据组织的质量方针和目标,围绕组织关心的焦点来确定。其来源可以是业务规划、用户需求、软件产品需求、开发文档要求、过程管理要求等。常见的测量目标可以是保证软件研发项目按期交付、提升软件研发产品质量、提高项目策划和监控能力、提升软件研发过程的规范性、提高项目管理效率等。这些目标,反映了组织对进度、工作量、规模、质量、效率、过程符合性和项目稳定性等质量目标的追求。在确定测量目标的同时,也要建立测量目标的优先级,用来确保测量解决那些可能对既定项目目标产生最大潜在影响的信息需要,指导数据分析及组织决策。例如,唐聪等[4]根据软件项目的实际关注点,按照优先级别从高到低,将项目测量目标设定为质量、进度、范围、成本和效率。

4.2 确定测量项

测量项是对测量目标的量化表征,科学合理的测量项有利于过程改进目标的实现。一般,按照数据获取方式,测量项可以分为基本测量项和派生测量项。基本测量项指能直接测量而获得的单个属性的值,独立于其他测量项。派生测量项则一般通过两个或多个基本测量项,计算获得的一个函数。派生测量项往往获取多于一个属性的数据。按照应用目的,测量项又可以分为组织级和项目级两个类别。组织级测量项一般立足于组织的战略方针、对重大决策的影响,测量项全面而广泛。常见的组织级测量项覆盖工作量、规模、进度、成本、生产率、缺陷、BUG、需求、过程符合性、返工、项目稳定性等方面,确定时要充分考虑有效性和合理性。项目级测量项则着眼于具体项目的目标和要求,对组织级测量项进行适当剪裁,一般更关注项目的完成进度、成本、质量等。测量目标和测量项的确定中,要联系实际以需求为导向,反映组织或项目关注的焦点。如孟领朋[3]等在软件项目重点关注进度和质量的前提下,确定阶段和项目进度偏差、任务完成率3 个测量项来评估进度,确定评审缺陷、Bug 和不符合项(NCI)相关的7 个测量项来评估质量,从而精准的为项目组和利益相关方评估、决策提供参考。

4.3 确定数据采集和分析规程

为了保证采集数据的及时性、全面性、准确性和可用性,军用软件研发机构应建立组织级数据采集和分析规程,用以指导具体软件项目测量与分析的实施。

在数据采集规程,应明确数据采集的来源、内容、时机、频率、采集人、存储位置、采集工具等。具体来讲,数据采集的来源可为任务WBS分解甘特图、进度表、开发计划、项目进展报告、测试报告、评审报告、QA 报告、配置状态报告、缺陷/问题列表、源代码等。数据采集的内容则根据测量项的计算方式,采集对应的测量属性。如项目平均生产率,是由项目的实际规模除以项目的实际总工作量,则在数据采集时要收集这两个基本测量项的数据。采集时机的确定,如果是基于阶段或里程碑的测量项,一般在阶段或里程碑结束采集,而其他的测量项则可根据开发计划开展。同时,在数据采集规程应明确数据采集人、采集工具和存储位置。简单而传统的方式,是利用表格填写、汇总和保存,但这种方式费时费力而且效率低,很难保证数据的准确性和一致性。通过测量与分析管理工具,可以建立数据采集和存储的条件,设定数据的访问机制,使数据采集和存储更为规范、安全和便捷,也利于数据的持久化保存。

在数据分析规程,要明确数据正常和异常的范围,并分析可能发生的原因,可采取的相关措施,以及数据汇报方式。直观的采集信息很难确定数据是否发生异常,通常采用实际数据与历史数据,或者期望数据比较来判断。对超出阈值或临界范围的数据,需要检验误差来源,并判断成因及可能的纠偏措施,进而帮助组织重新分配资源或者调整软件研制策略。数据汇报一般通过测量分析报告来展开,呈现形式可采用数据、表格或图表等直观的方法。

4.4 制定测量与分析计划

软件项目的测量与分析人员根据组织级测量目标,从组织制定的测量项集合中选择项目需要的测量项,拟定测量与分析计划。具体来讲,测量和分析计划可纳入软件的开发计划中,明确该软件项目数据收集和分析的具体控制措施,包括执行测量的目的和选择的测量项,各角色在测量与分析中的职责,参与测量与分析活动的动机,测量与分析活动的内容、进度安排、结果形式等。同时,测量与分析计划也要经项目组评审,项目负责人、软件开发人员等确认其符合项目要求和开发实际情况,并与测量目标一致。

4.5 实施测量与分析活动

软件项目测量与分析活动的实施,要依照组织级数据采集和分析规程,项目测量与分析计划,利用采集和分析工具开展实施。如,郭皓蓉等[5]利用VBA 实现测量分析过程域中数据采集、数据处理、数据分析,图表绘制和报告生成,使得周期性重复而繁琐的测量分析实现了自动化。本文以Qone 软件过程管理平台为例,具体介绍在该平台上测量与分析活动实施的过程。

图2:测量与分析活动甘特图任务分解

图3:各阶段工作量绝对偏差和相对偏差

4.5.1 Qone 软件过程管理平台简介

Qone 平台是一个按照GJB5000A-2008 标准而开发的软件过程管理平台,它支持各成熟度模型的实践运用。功能上,Qone 支持多维度的自定义,有丰富的组织内部沟通方式,多层权限控制机制,灵活的报告和汇总机制,可以实现全方位的项目监控,能满足软件组织过程改进的要求。技术上,Qone 基于J2EE 技术规范的SSH框架(即Struts+Spring+Hibernate),采用B/S 结构和MVC 设计模式,实现了跨操作系统、跨应用服务器、跨数据库系统的高级应用。安全性上,Qone 支持https 安全协议,通过在HTTP 与TCP 之间添加加密/身份验证层来建立安全的Inernet 访问通道。军用软件研制单位通过Qone 平台,可以对软件开发过程进行全生存周期管理,从软件项目的策划、资源的分配、进度的实施和监督等方面,进行客观而量化的控制,及早发现问题,有效规避风险,提高软件研发的可靠性。

4.5.2 实施测量与分析关键步骤

以某军用软件项目为例,在Qone 软件过程管理平台实施测量与分析,主要包括以下几个步骤:

步骤一:利用甘特图建立测量与分析计划。在甘特图(图2)中,按照测量与分析计划拆分和细化测量任务,并为各任务指定责任人、审批人,计划开始和结束的时间,估计的工作量,工作产品等属性。计划的制定和分解,是整个测量与分析活动的基础,也是影响数据采集、存储、分析和交流准确性的重要因素。

图4:成本/进度性能指标

步骤二:建立测量目标和测量项。Qone 平台提供了丰富而灵活的测量库,包括13 个类别的测量指标,还支持对测量项的自定义,功能十分强大。软件项目在平台上实施测量与分析活动时,可以借助平台提供的测量库,建立组织级测量目标和测量项,并规定测量必选项和可选项。在此基础上结合项目研制要求提炼出项目的测量目标和测量项,作为测量活动开展的基准。

步骤三:添加测量活动。一般测量与分析的活动包括每双周对进度性能指标(SPI)和成本性能指标(CPI)的测量,每阶段末、每里程碑末或者项目结题时对SPI、CPI、工作量、进度、生产率、产品规模、不符合项NCI 发生趋势、评审缺陷、测试BUG、需求等的测量。在建立测量活动的同时,要为测量指标设置筛选条件,如引入阶段、起止日期等;设定量化目标,如规范上限UCL、均值CL、规范下限LCL 等;定义可视化图表,如折线图、柱状图、饼图、排列图等。

步骤四:创建项目数据基线。由于Qone 平台围绕项目生存周期开展各项过程管理,实现了数据自动化采集和存储。测量活动确定后,通过创建该活动对应的数据基线,来确定测量活动具体的数据来源和范围。建立数据基线时,应检查数据的当前性以确保数据为最新,检查数据聚集结构和属性以确保数据的一致性,检查数据内容以确保数据有效性,检查数据完整性以确保数据无遗漏或异常,以及检查现有数据的变更等。值得注意的是,有时候测量无效或收效甚微,很大原因在于数据本身的准确性和完整性缺失,所以在实施测量分析的时候,数据基线的检查和建立显得尤为重要。

步骤五:生成测量分析报告。Qone 管理平台的测量分析报告支持用直观的形式呈现各类性能和量化指标。例如,图3 分别使用了表格和柱状图对各阶段计划工作量和实际工作量的情况进行比较。从图中可以看出,软件研制各阶段的绝对工作量偏差和相对工作量偏差,都在项目规定的阈值范围-30%—30%之内,工作量的分配是适宜、可控的。图4 中使用了表格和曲线图来展示项目SPI和CPI 的情况。当SPI 大于1,表明进度超前;当SPI 等于1,表明进度与计划相符;当SPI 小于1,表明进度落后。当CPI 大于1,表明成本节约,资金使用效率高;当CPI 等于1,资金使用效率一般;当CPI 小于1,表明成本超支,资金使用效率低。图4 中折线图可以及时反映项目进度和成本方面的执行情况,通过定量的分析,保证项目控制在计划或基准范围之内。

4.6 交流测量分析结果

测量与分析活动由始至终贯穿在软件研制过程中,测量人员应在周/双周例会、阶段或里程碑评审会上向利益相关方通报测量分析结果,并帮助其正确理解结果,确定偏差及纠正措施,并记录在测量分析报告和会议纪要中。利益相关方一般包括项目负责人、数据测量分析员、软件开发/测试人员、质量保证人员、用户代表、相关管理者等。

5 测量与分析常见问题及对策

组织在参照GJB 5000A 标准建立软件工程化体系文件时,一般制定《测量与分析过程》、《数据采集与分析规程》、《测量项规格说明》等规范来指导测量与分析计划的编写和测量活动的实施。在实践过程中,部分单位由于对标准理解不足,往往在组织层面上生搬硬套,或者直接借鉴其他单位体系文件中测量与分析的规定,较难实现结合自身软件研发的情况进行本地化应用。这样在项目层面很难得到软件研发一线人员的认可,测量与分析的开展仅仅流于形式,难以达到其支持管理信息的目的。对标准的理解不足或有偏差,容易导致以下问题:

(1)测量目标描述不准确;

(2)测量项描述不准确;

(3)测量体系不完备;

(4)测量项采集时机不合理、采集方法和频率不正确;

(5)选择的测量项无法支撑测量目标;

(6)未定义测量项优先级或优先级定义错误。

另一方面,测量人员在实施测量与分析的过程中,由于责任心不强,或对测量与分析不熟悉,或对管理工具使用不熟练,容易产生如下问题:

(1)未采集数据或采集的数据有遗漏;

(2)数据采集时机、频度与计划不一致;

(3)测量项数据未分析或分析有误;

(4)对超出阈值范围的测量项未采取措施;

(5)交流测量分析结果不充分。

针对上述测量与分析过程中常见的问题,可以从以下两方面加以改进:

(1)充分理解标准,加强顶层设计。具体而言,在组织层面上要结合军用软件研制单位特点,完善测量与分析过程文件、规程、指南和表格等,进一步明确测量与分析的目的和范围,数据采集、存储和分析要求,做到因地制宜、有的放矢。项目层面上,要依照软件项目研制背景和要求,制定切实可行的测量与分析计划,重点关注项目本身需要的测量项,避免盲目建立大而全的测量集合,采集一些无指导价值的数据。总之,要从项目需求出发,源头上制定本地化的测量与分析计划,才能使得测量与分析在过程改进中发挥更大的作用。

(2)明确人员职责,重视数据积累。测量与分析是以数据为基础的过程域,原始数据的数量和质量很大程度上决定了测量与分析活动的有效性。考虑到数据来源贯穿在整个软件研发的始终,就要求每一位参与软件管理和研发的人员都要明确职责,增强软件工程化管理的能力,为积累可采集的原始数据贡献力量。软件开发人员、配置管理人员、质量保证人员等要将各自活动中产生的有效数据及时上报到软件管理平台中,以供测量与分析人员及时采集和检查,否则可能导致测量与分析活动无法开展,或者生成的报告数据不准确或有缺失。另一方面,要注重历史数据的积累,助力软件的持续改进和评估。在软件过程改进初期,由于没有历史数据作参照,项目组人员在软件的规模和工作量估计,评审缺陷、BUG 的分析等方面往往存在较大难度。随着同类项目软件工程化工作的推进,组织逐渐收集和积累了较多的数据,就可以为新项目的策划和实施提供测量基准。因此,重视软件过程数据的积累,是实现军用软件从抽象开发到量化控制,持续改进的重要保证。

6 结束语

在军用软件的研发和过程改进中,测量与分析利用测量数据来反映软件研发的状态,帮助项目设立有效的改进目标和策略,优化项目资源,为组织更好地进行决策指明了方向。本文详细介绍了GJB5000A 二级模型中测量与分析过程域的目的、内容和研究方法,讨论了利用Qone 过程管理平台来实施测量与分析的关键步骤,对常见问题进行分析,使得抽象的测量与分析过程更加直观可操作。基于GJB 5000A 的军用软件的过程改进,需要测量与分析改进后的效果在后续软件项目中再次实施和评价,从而形成军用软件持续改进的良性循环。

猜你喜欢
软件测量目标
禅宗软件
软件对对碰
测量
谈软件的破解与保护
新目标七年级(下)Unit 3练习(一)
新目标七年级(下)Unit 4练习(一)
(新目标)七年级下Unit 1练习(二)