软件项目缺陷度量系统的构建
2020-04-06郭超
郭 超
(TCL移动通信科技(宁波)有限公司,宁波 315040)
1 软件度量
1.1 课题背景
在我们组织里,软件使用的缺陷管理系统BUGZILLA,不支持数据统计报表功能,项目管理缺乏数据支撑。而软件度量提供了必要的方法论,通过对软件、研发过程和工程人员投入的各维度度量协助项目获取软件研发实时决策数据,用于监控软件研发进程中质量的高低、研发过程效率、研发工程人员效能[1]。
本文主要涉及软件度量中缺陷度量部分,缺陷度量利用软件度量实施过程和方法论,基于常规缺陷管理工作,定量分析产品研发进程中的缺陷实时数据。
1.2 度量的实施
度量的构建包含下面四个步骤,如图1所示[6]。本文涉及前三部分。
图1 软件度量的实施过程
(1)定义度量:构建度量之前首要的步骤是选取要使用的指标[3]。
(2)数据收集:基于指标的定义,组织需要确定数据收集方式和收集时机。收集活动具有多样性,非一成不变的形式和标准[6]。
(3)决策分析:包括整理和分析数据,基于共识模型支持项目经理做决策[6]。
(4)过程优化:对于度量过程中发现的项目执行流程实施改进,反馈到组织的流程资产中。
2 系统需求及架构
2.1 定义度量
度量数据目标必须要明确,我们通过目标界定、问题构建、问题回答几个阶段来确定指标。
目标:通过缺陷数据了解产品健康状态
问题:产品缺陷分布状态如何?
度量:缺陷依据状态分布,缺陷依据组分布
依据上述方法,此系统设计的度量数据指标如表1所示。其中主要关注资源、问题类型分布、效率。
2.2 数据收集
根据选择的度量指标,收集软件过程中产生的缺陷及人力数据,是实现中最大工作量所在。其中缺陷数据来源于缺陷跟踪系统,项目人力花费数据来源于项目人力跟踪系统。
表1 收集数据类型
2.3 决策分析
度量数据的关键目的是对这些收集到的数据做分析,用于指导实际项目执行的决策:
(1)项目缺陷分布如何?哪些资源组压力大?
(2)项目资源的效率如何?需要调度调整资源?
(3)项目目前进度如何?是否有延迟?
(4)……
常用的度量分析技术,有表现技术,如:表格、散点图、直方图、折线图、柱状图、条形图等,有统计过程控制方法和矩阵数据分析方法等[5]。此系统会选择柱状图、折线图、表格等表现方式。
2.4 系统架构
图2 方案设计图
此系统将主要将分为四个过程:自动化收集数据,数据分析,定时通知,决策分析,如图2所示。
3 系统实现
3.1 自动化核心
CruiseControl是自动化核心,业界成熟的持续集成工具。在项目配置过程中,利用项目模板设计,让配置块在不同的项目间复用,提升修改和维护效率。配置的内容包含触发器、任务、通知模块。
3.2 数据获取及分析
3.2.1 EXCEL模板介绍
数据分析中,我们使用了EXCEL的透视表、公式、图表的功能,数据表主要组成如表2所示。
表2 数据分析模板
3.2.2 数据获取
通过PERL脚本,调用VBA接口(见表3)进行数据抓取分析。缺陷数据被抓取到工作表中;再通过透视表以多个不同维度进行分析并保存在数据页面。
表3 数据分析接口实现
GenReport 数据信息写入XML文件,生成柱状图和折线图见表3。
如下是使用的几个关键的技术点。
(1)VBA与Perl的交互代码。
$excel=Win32::OLE->GetActiveObject
( 'Excel.Application' )
$ret=$excel->run('initialize',$projIDate …,$resExcelFile,$dbPath);
(2)图表导出代码。
Worksheets("GRAPH").ChartObjects("A").Chart.Export FileName:=B
主要的导出图形包含每日关键缺陷趋势和每日关键缺陷趋势的折线图,缺陷依据组及优先级分布和缺陷功能模块及优先级分布的柱状图。
(3)数据行获取动态公式(OFFSET)。
=OFFSET(TYPE_ARR,4,0,COUNTA (OFFSET(TYPE_ARR,0,0,ROWS(CONFIG!$A$1:$A$40),1))-3+1,1)
(4)动态应用其他表格数据(INDIRECT)。
=IFERROR(VLOOKUP($E4,INDIRECT("'["&NINFO&"]"&NINFOTSHE&"'!"&NINFOTRNG),3,FALSE),"")
(5)Query插入代码。数据获取后保存在PRFR工作表。
ActiveSheet.QueryTables.Add(Connection:="URL ;" &BUGZILLA_URL)
3.2.3 数据分析
数据的分析是由数据分析工作表Speed实现,如表4所示;其数据通过公式从历史度量数据表RDATA中获取,通过使用EXCEL公式做趋势分析,并得出度量数据。整个表格主要包含下面的数据:缺陷按优先级分类;缺陷按优先级分类数量;缺陷日进出变化、日进出移动平均;决策模型模拟数据。
表4 图表导出度量项
上述数据的计算方式如下:
3.2.3.1 不同优先级的缺陷进出
缺陷出公式:当天处于关闭的缺陷数-昨天处于关闭的缺陷数
缺陷进公式:当天缺陷数-昨天缺陷数
=IF($F10<>"",SUM(当天缺陷数量)-SUM(昨天缺陷数量),"")
3.2.3.2 移动平均
五日移动平均公式:AVERAGE(前五日进或出的数量)
=IF($F10<>"",IF($E10< 时长,"",AVERAGE(前几日进或出的数量),"")
十日移动平均公式:AVERAGE(前十日进或出的数量)
3.2.3.3 决策模型:我们决策模型比较简单
(1)预测未来进的缺陷保持每三周(参数一,15)下降10%(参数二,BCSREASSPER=0.9)的速度。
(2)出的速度不变。
=IF($FA94>0,IF(FC93<>"",IF(MOD(MAX($FA94-1,1),15),FC93,FC93*0.9),""),IF($FA94=0,IF(CG94<>"",CG94,""),""))
此数据回答了如下问题,用于对项目的健康状态做判定:
(1)当前的问题多久才能被关闭掉。
(2)是否会超过项目定义的结束时间,导致项目推延。
(3)如果会有延迟,在结束的时间还剩余的问题按照当前人均缺陷解决速度还需要多少额外人力。
使用的公式是:缺陷数量+进入数量-出去数量,模拟到结束时间:数据为负,表明超越目标;数据为正,表明会有推延风险。3.2.4 度量数据图表设计
度量数据图表主要是折线图和柱状图。
(1)缺陷依据模块及优先级分布,主要使用了柱状图,体现了不同模块之间重点问题的分布关系,如图3所示。
(2)进出缺陷移动平均数量,使用折线图,可以展示每个参数的具体趋势,如图4所示。
图3 缺陷组及优先级分布
图4 进出缺陷移动平均
3.3 通知系统
上面所述GenRepor t接口产生的XML文件会最终合并到日志文件中,再经过XSL格式化、CSS 美化邮件并发送项目干系人。
4 结束语
上述内容阐述了此系统的基本框架及关键技术实现,目前收集的度量数据已经可以指导日常的项目管理工作,亟待持续夯实。未来在度量指标方面,可以增加重点缺陷解决速度、缺陷的回归率等;数据分析模型方面,需要不断研究并且优化,逐渐修正尽量贴近实际项目;数据存储方面,数据库会更加安全、高效;数据展示方面,网页会更具有交互性,可实时选择决策数据组合方式。以上均是未来可以思考的方向。