本文将深入介绍使用 RTC 提供的 Work Item API 实现灵活、全面、便捷的自定义缺陷分析功能,降低项目管理的复杂度,节约项目管理的人力成本,提供更丰富的项目管理参考数据,从而提高项目管理的精确度。
RTC(Rational Team Concert)提供了软件生命周期各个阶段所需要的管理功能,而且为软件工程师提供了可以进行功能扩展开发的软件开发包。本文将介绍如何使用 RTC Plain Java API,基于 RTC 中的项目缺陷信息,统计出相关代码质量数据。
所有正在使用 RTC 作为源码控制和项目管理工具的项目经理们都可以从本文获益。他们可以参考示例代码将代码质量与缺陷分析的功能应用到自己的项目中,便捷地对项目的代码质量进行统计分析。所有有兴趣于 RTC 扩展插件开发的程序员们,也将成为本文的读者,本文所涉及到的 RTC Plain Java API 开发环境搭建,方案设计,示例代码都可以为他们提供一定的参考价值。
方案设计
扩展方式
Jazz 平台使用 OSLC(Open Service for Lifecycle Collaboration),从而具备了高可扩展性,这使它得以不断发展,并得到越来越多的软件从业者的亲睐。RTC 搭建于 IBM 的 Jazz 平台上,因而先天具备可扩展性。RTC 为此提供了 RTC Plain Java API 和 REST API 两种 API 进行扩展。
RTC 的扩展架构如图 1,Core Logic、Work Item OSLC 以及 Internal Service 构成 Jazz Foundation,提供所有核心功能和接口,它位于 Jazz 平台的服务器端。RTC Plain Java API 在底层访问不同的组件要经过不同的途径,通过 REST 方式访问工作项(Work Item)和查询(Query),通过 Internal Service 访问其他组件。
图 1. RTC 扩展架构图
本文选择 RTC Pain Java API 对 RTC 扩展,这种方式既能够作为普通 Java 程序运行;又能转换为插件项目,作为 RTC 的一部分运行,通过关联 RTC 的界面菜单能够更方便的使用;而且,它相比于 REST 还可以操作更多的组件。根据 API 涉及的功能不同,RTC Pain Java API 分为 Work Item API, Source Control API 和 Build API。Work Item API 主要实现了工作项的创建和查询操作;Source Control API 则对源文件、变更集进行操作;Build API 是关于项目构建的操作。
基本的缺陷分析需要查询出满足一定条件的缺陷类型的工作项,再从中得到负责人、缺陷状态、所在项目区域、所在迭代等信息。因此,第一部分将着重采用 Work Item API 进行扩展。
缺陷分析量化指标
项目开发中,代码质量至关重要,能否控制好代码质量是决定项目成败的关键。因此项目经理们经常需要借助一些统计数据来分析软件的代码质量,找出代码质量问题所在,从而采取适当的措施提高软件代码质量,以达到项目要求。以下是两个常用的代码质量分析的量化指标。
阶段缺陷率:每个 Sprint(冲刺阶段)的缺陷个数占整个 Release(版本)的所有 Sprint 缺陷总数的比例。
在该方案中,我们将利用图形化界面直观地显示软件开发周期中缺陷在各个 Sprint 以及各个开发者中的分布情况。这些数据是项目经理进行缺陷控制,保证代码质量的重要根据之一。Sprint N 的阶段缺陷率计算公式如下:
阶段 N 缺陷率 = ( 阶段 N 的缺陷数 / 整个 Release 的缺陷
总和 )×100%,其中,阶段 N 的缺陷数为指定 Release 中 Sprint N 的缺陷数。 阶段 N 有效缺陷率:每个 Sprint 的有效缺陷个数占该 Sprint 中全部缺陷数的比例。
在该方案中,我们将利用图形化界面直观地显示软件开发周期中各个 Sprint 的有效缺陷分布。这个数据一般是在该阶段所有缺陷都已被处理后进行的统计。它是项目经理评估测试人员测试技能和项目测试质量的一个重要根据。Sprint N 的有效缺陷率计算公式如下:
阶段 N 有效缺陷率 = ( 阶段 N 的有效缺陷数 / 阶段 N 的缺陷总和 )×100%
其中,阶段 N 的有效缺陷数是指 Sprint N 下状态为 Close 和 Working 的缺陷数。这里假设阶段结束后 , 该阶段的所有缺陷都被处理了,不存在有 Open 的缺陷,如未处理的也已经被移至下个阶段处理。
报表生成
本文使用 JFreeChart 制作报表,它是一组开放的图表绘制类库 , 提供功能强大、灵活易用的 Java 绘图 API,用户可以通过它实现各种通用性的图表,如饼图、柱状图、时序图、曲线图等,并且可以生成多种图片格式文件。