专利名称:自动监控系统和方法
技术领域:
本发明涉及一种自动监控系统和方法。
技术背景项目管理对于软件开发的成功与否至关重要。成功的项目管理需 要软件项目开发过程中的各种详细数据,如代码量、缺陷数目、领赋 用例数目等等。通常,这些数据都是由开发人员手工输入和收集的, 然后项目管理人员再对这些数据进行手工的分析,并写成项目报告。 因此,项目管理无论对于项目管理人员,还是开发人员来说,都需要 花费大量的时间和精力。Masao Ohira等人在文献"Empirical Project Monitor: Automatic Data Collection and Analysis toward Software Process Improvement" (Technical Report of Japan Society for Software Science and Technology: No.28, Proceedings of 1st Dependable Software Workshop (DSW2004), pp. 141-150, February, 2004)"中提出了一种实验项目监控器(EPM), 它可以从一般的软件开发支持系统中自动收集软件项目数据,并且通 过分析所收集到的数据来给用户提供图形化的分析结果,因此通过使 用EPM,用户可以用很低的成本就能得到目标数据。然而,虽然EPM可以提供图形化的结果,如代码量的增长曲线、 信件和缺陷的增长曲线等,但是项目报告的阅读者,如项目管理人员, 仍然不得不花费时间去分析这些图形化的结果,并自己判断项目中是 否存在异常信息,以及预测项目的发布时间等。此外,虽然该文献指出目前配置管理工具、邮件列表管理工具和 缺陷跟踪工具的数据可以通过一个共用的用户图形界面被自动收集 起来,但是它没有明确说明怎样从配置管理工具、邮件列表管理工具、 缺陷跟踪工具和其他工具中进行自动数据收集。而且,该文献也没有示出从其他工具中进行数据收集所需要的扩展机制。 发明内容考虑到上述问题做出本发明。本发明的一个目的在于提供一种自 动监控系统和方法,其能够自动检测出项目的异常状况和发布时间。本发明的另一目的在于提供一种自动监控系统和方法,其能够采 用插件机制来从系统已经包含的工具以外的其他工具中收集所需要 的数据。为了实现本发明的目的,按照本发明的一种用于自动监控软件开 发项目的自动监控方法,包括步骤 收集所述项目的项目数据; 存储所述收集的项目数据;根据所述存储的项目数据,检测所述项目的异常状况;以及 根据所述检测的异常状况,生成所述项目的项目报告。为了实现本发明的目的,按照本发明的一种用于自动监控软件开 发项目的自动监控系统,包括收集模块,用于收集所述项目的项目数据; 存储模块,用于存储所述收集的项目数据;检测模块,用于根据所述存储的项目数据,检测所述项目的异常 状况;以及报告模块,用于根据所述检测的异常状况,生成所述项目的项目 报告。
通过结合附图并参照本发明的详细描述,本发明的这些和其它的 目的及特征,将能够得到透彻的理解。图1示出了本发明第一实施例的项目管理系统的示意图; 图2示出了本发明第一实施例的自动监控系统的示意图;图3示出了本发明第一实施例的自动监控方法流程图; 图4示出了本发明第一实施例的项目创建的一个示例的示意图; 图5示出了本发明第一实施例的时间和频率设置界面的一个示 例的示意图;图6示出了本发明第一实施例的邮件地址列表设置界面的一个 示例的示意图;图7示出了本发明第一实施例的可用监测子项列表和所选监测 子项的一个示例的示意图;图8示出了本发明第一实施例的所需插件类别和所选插件的一 个示例的示意图;图9示出了本发明第一实施例的版本控制插件配置界面的一个 示例的示意图;图10示出了本发明第一实施例的用于存储接包方1的计划开发 进度数据的表格示意图;图11示出了本发明第一实施例的用于存储接包方2的计划开发进度数据的表格示意图;图12示出了本发明第一实施例的用于存储接包方1在11月27 日当天的实际开发进度数据的表格示意图;图13示出了本发明第一实施例的用于存储接包方2在11月7日当天的实际开发进度数据的表格示意图;图14示出了本发明第一实施例的用于存储接包方1在迭代1中 代码量数据的表格示意图;图15示出了本发明第一实施例的用于存储整个项目在迭代1中代码量数据的表格示意图;图16示出了本发明第一实施例的用于存储接包方2在迭代1中缺陷数据的表格示意图;图17示出了本发明第一实施例的项目报告示意图;图18示出了本发明第一实施例的当用户点击项目报告中的异常信息图标时打开的详细信息的示意图;图19示出了本发明第一实施例的当用户点击项目报告中的代码量标签页时所显示的项目指标分析结果的示意图。
具体实施方式
下面,将参照附图详细描述本发明的自动监控系统和方法。图1示出了本发明第一实施例的项目管理系统的示意图。如图1所示,在软件开发过程中,开发人员10-1..... IO-N分别经由各自的计算机20-l、 ...、 20-N通过局域网使用安装在服务器21上的诸如 版本控制工具、缺陷跟踪工具等这样的软件开发支持工具32,执行 软件开发过程的各种工作,例如,使用版本控制工具提交代码,或者 使用缺陷跟踪工具提交缺陷信息等。安装在由系统管理人员U管理的服务器21上的自动监控系统 31,从软件开发支持工具32中收集和存储各种项目数据,通过检测 和分析该收集和存储的项目数据来生成指示项目状态和状况的项目 报告,并把生成的项目报告部署到HTTP服务器23上。然后,HTTP服务器23把包含项目报告链接的邮件发送到项目 管理人员12的邮箱中,从而,项目管理人员12可以经由计算机22 进入其邮箱,并通过点击其邮箱中的邮件所包含的项目报告链接,打 开项目报告进行阅读。系统管理人员11可以通过服务器21设置自动监控系统31所监 控的项目,即生成所监控的项目名称,设置收集项目数据的时间和 频率、选择需要对项目进行监控的方面(以下称为监测子项),选择 和设置收集项目数据的插件等。自动监控系统31根据上述设置对项 目进行自动监控。图2示出了本发明第一实施例的自动监控系统的示意图。如图2 所示,自动监控系统31包括收集模块100、插件类别模块IIO、数据 库120、分析模块130、检测模块140和报告模块150。收集模块100用于从软件开发支持工具32收集各种项目数据。 在图2所示的实施例中,收集模块100包括两种插件类别,即属于版 本控制类别的版本控制插件1、 2和3,以及属于缺陷控制类别的缺陷跟踪插件l、 2和3,这些插件分别从软件开发支持工具32的版本 控制工具l、 2和3以及缺陷跟踪工具1、 2和3中收集项目数据。本领域技术人员应当理解,软件开发支持工具32并不局限于包 括版本控制工具和缺陷跟踪工具,它还可以包括进度管理工具、单元 测试工具、代码覆盖率统计工具、代码度量工具和代码审査工具等。相应地,收集模块100也不局限于包括版本控制插件类别和缺陷 跟踪插件类别,它还可以包括进度管理插件类别、单元测试插件类别、 代码覆盖率统计插件类别、代码度量插件类别和代码审査插件类别 等。其中,与进度相关的项目数据,诸如每个迭代及每个开发阶段的 开始和结束日期,由进度管理插件类别收集;与代码相关的项目数据, 如代码量等,由代码量统计插件类别收集;与缺陷相关的项目数据, 如缺陷数量、缺陷的严重程度、缺陷的停留时间、未解决的缺陷率等, 由缺陷跟踪插件类别收集;与代码覆盖率相关的项目数据,由代码覆 盖统计插件类别收集;以及,与代码度量相关的项目数据,如代码复 杂度等,由代码度量插件类别收集。插件类别模块iio用于从收集模块100各个插件类别中指定收集 项目数据的插件并接收该指定的插件收集的项目数据。在图2所示的 实施例中,插件类别模块110包括版本控制插件类别子模块和缺陷跟 踪插件类别子模块,其中,版本控制插件类别子模块用于从收集模块 100的版本控制插件1、 2和3中指定收集项目数据的插件并接收该 指定的插件收集的项目数据,而缺陷跟踪插件类别子模块用于从收集 模块100的缺陷跟踪插件1、 2和3中指定收集项目数据的插件并接 收该指定的插件收集的项目数据。数据库120接收和存储插件类别模块110收到的项目数据。分析模块130利用数据库120中所存储的项目数据来分析项目的 各种指标参数以指示项目的状态,而检测模块140利用数据库120中 所存储的项目数据来检测诸如项目是否存在异常和项目发布时间这样的项目状况。对于项目的一些指标参数,分析模块130只需要根据其中一种插 件类别所收集的项目数据就能分析得到。然而,项目的另一些指标参 数,必须根据两种或多种插件类别所收集的项目数据分析才能得到。 例如,缺陷密度是由缺陷数量除以代码量而得到的,因此,要想得到缺陷密度这个项目指标参数,分析模块130必须利用由缺陷跟踪插件 类别收集的缺陷数量和由代码量统计插件类别收集的代码量进行计 算得到。对于异常检测,检测模块140在一些情况下可以仅根据其中一种 插件类别所收集的项目数据来检测项目的异常情况。例如,对于项目 进度,如果项目的实际进度落后于项目的计划进度,则检测为异常; 对于代码,如果项目处在编码/单元测试阶段,但是代码停止增长或 者减少,则检测为异常,或者,如果项目处在功能测试阶段,但是代 码还在增长,则检测为异常;对于代码缺陷,如果代码缺陷数量、缺 陷严重程度、缺陷停留时间、未解决的缺陷率等数据超过了相应的参 考值,则检测为异常;如果单元测试数量、通过率、代码覆盖率和其 他数据低于相应的参考值,则检测为异常;对于代码复杂度,如果代 码复杂度超过了参考值,则检测为异常。然而,检测模块140在另外一些情况下需要根据两种或者多种插 件类别所收集的项目数据来检测项目的异常情况。例如如果缺陷密 度高于参考值,则检测为异常,但是正如上面所提到的那样,缺陷密 度是由缺陷跟踪插件类别收集的缺陷数量和由代码量统计插件类别 收集的代码量计算出来的,因此,缺陷密度异常的检测依赖于缺陷跟 踪插件和代码量统计插件这两种插件类别。又例如代码复杂度越高, 缺陷密度就越大。因此,如果把代码复杂度作为横轴,把缺陷密度作 为纵轴画到一张图上,则两个指标参数将有一个正常关系的区域。如 果在该正常区域外存在数据,则将这些数据检测为异常。在这种情况 下,代码复杂度和缺陷密度异常的检测基于由三种不同插件类别所收 集的项目数据,即代码度量插件、缺陷跟踪插件和代码量统计插件。此外,检测模块140可以根据插件所收集的项目数据来检测项目的发布时间。例如如果在功能测试阶段的最后一天,缺陷修复比率 高于参考值,且缺陷数量停止增长,则检测为已经到了项目发布时间。报告模块150根据分析模块130分析得到的项目指标参数和检测模块140检测得到的项目状况信息来生成项目报告,并把生成的项目 报告部署到HTTP服务器23 。图3示出了本发明第一实施例的自动监控方法流程图。下面结合 图3详细描述本发明的自动监控方法。首先,在步骤S210,系统管理人员ll创建需要监控的项目。如 图4所示的项目创建示例,当创建一个项目时,需要输入项目名称、 项目描述和工作目录。在本实施例中, 一个名为"项目1"的项目被 创建。在步骤S220,系统管理人员11设置项目数据收集的时间和频率。 在图5所示的设置界面示例中,项目数据可以设置为每小时、每天、 每周或每月收集。其中,当项目数据设置为每周或每月收集时,可以 选择在一天或多天进行收集。在本实施例中,项目数据设置为每周收 集,收集的时间为除了周末之外的工作日。而且,在指定日进行数据 收集的开始时间为21:17。因此,项目数据收集和分析的任务将会在 每个工作日执行,而且项目管理人员也将在此任务执行完毕之后得到 一个新的项目报告。在步骤S230,系统管理人员11设置接收项目报告的项目管理人 员的邮件地址列表,使得他们可以收到包含项目报告链接的邮件。图 6示出了邮件地址列表设置界面的示例。在本实施例中,邮件地址列 表设置为productowne—ail.画,因此,当项目报告生成后, 一封 包含项目报告链接的邮件会被发送给productowner@mail.com。在步骤S240,显示可用的监测子项,以供系统管理人员ll选择 用于自动监控的监测子项。当自动监控系统31被初始化之后,其自 动检测出各种可用的插件。由于可用的监测子项依赖于可用的插件, 所以当一旦检测出可用的插件之后,可用的监测子项也就确定了。图7的左边示出了可用的监测子项列表。在步骤S250,系统管理人员11从所显示的可用监测子项中选择 用于自动监控的监测子项。图7的右边示出了已选出的监测子项列 表,其中,"代码量减少"和"高缺陷密度"两个监测子项被选出。 在后面的步骤中,这两个监测子项会由自动监控系统31用来检测项 目l是否存在异常情况。其中,对于"代码量减少"监测子项,如果 在编码/单元测试阶段,项目1的代码量减少,则检测为一个异常。 同样地,对于"高缺陷密度"监测子项,如果缺陷密度高于参考值(例 如,参考值可设为4.0Bugs/KLOC),则检测为一个异常。在步骤S260,显示自动监控所选的监测子项所需的插件类别和每 个插件类别可用的插件,以供系统管理人员11选择每个所需要的类 别中用来收集项目数据的插件。如图7所示,用户选择了 "代码量减 少"和"高缺陷密度"这两个监测子项,由于自动监控这两个监测子 项需要使用以下四个插件类别收集的项目数据进度管理插件类别、 版本控制插件类别、代码量统计插件类别和缺陷跟踪插件类别,所以 需要显示这四个插件类别及其各自可用的插件,具体如图8所示。在步骤S270,系统管理人员11从显示的插件中选择每个插件类 别用于收集项目数据的插件。在图8所示的示例中,系统管理人员 11选择了进度管理插件类别中的进度管理插件1,版本控制插件类别 中的版本控制插件1,代码量统计插件类别中的代码量统计插件1和 缺陷跟踪插件类别中的缺陷跟踪插件3。在步骤S280,系统管理人员li配置所选择的每一个插件。 图9示出了版本控制插件1配置界面的示例,其中,这个界面设 置用于存放项目源文件的版本控制服务器的相关参数,这些参数包括 版本控制服务器地址、存储路径、帐号和密码、项目名称和项目目录。 版本控制插件1在收集项目数据时提取项目的源文件,包括源代码和 其他文件。进度管理插件1、代码量统计插件1和缺陷跟踪插件3也 要进行类似的配置。在步骤S290,所选择的各个插件按照所设置的项目数据收集的时间和频率,自动收集项目数据并存储在数据库中。在本实施例中,版 本控制插件1、进度管理插件1、代码量统计插件1和缺陷跟踪插件3分别从版本控制工具、进度管理工具、版本控制工具和缺陷跟踪工 具收集项目数据并存储在数据库中。具体地,进度管理插件1从软件开发人员输入到进度管理工具的 项目进度数据中收集项目1的计划开发进度和实际开发进度。在本实施例中,项目l被外包给两个接包方接包方1和接包方2。接包方l的开发被分成3个迭代,接包方2的开发只有一个迭代。每个迭代 还被分成了 3个阶段,分别是设计阶段、编码/测试阶段和功能测试 阶段。每个阶段都有其计划开始日期和计划结束日期,而且,每个阶 段都有计划开发进度。进度管理插件1收集到的接包方1和接包方2 的每个阶段的计划开发进度的数据被存储到数据库中,如图10和11 所示。进度管理插件1收集到的接包方1和接包方2每个阶段的实际 开发进度的数据也被存储的数据库中,如图12和13所示。版本控制插件1从版本控制工具中提取项目1的源代码。代码量 统计插件1利用版本控制插件1所提取的源代码来收集项目1的代码 量,并且将收集到的接包方1的代码量和整个项目1的代码量存储在 数据库中,如图14和15所示。缺陷跟踪插件3从提交到缺陷跟踪工具的缺陷数据中收集项目1 的代码缺陷数量。图16示出了收集到的存储在数据库中的接包方2 的迭代1中的缺陷数量。在步骤S300,根据存储在数据库中的项目数据,分析项目的指标 参数。在本实施例中,分析项目1的代码量和代码缺陷数量这两个指 标参数。在步骤S310,根据存储在数据库中的项目数据和所选择自动监控 的监测子项,检测项目的状况,包括项目的异常情况和发布时间。 在本实施例中,如上所描述的,所选监测子项是"代码量减少"和"高缺陷密度",因此,通过比较数据库中存储的项目1的接包方 1和2各自的每天实际开发进度的代码量与前一天实际开发进度的代 码量的大小关系,来检测项目1是否存在代码量减少的异常情况,以 及通过比较根据数据库中存储的项目1的接包方1和2各自的每天累 计的代码缺陷数量与每天实际开发进度的代码量的比值和缺陷密度 参考值的大小关系,来检测项目1是否存在高缺陷密度的异常情况。在步骤S320,根据分析得到的指标参数和检测得到的项目状况, 生成项目报告。图17示出生成的项目报告的一个示例。在这个示例的项目报告 中有三个标签页,第一个标签页显示了检测得到的项目状况,其中, 这个标签页的左部包括项目的名称、项目的接包方和迭代的信息,中 间部显示了每个迭代的进度(在本实施例中,假定项目进度是系统必 须监控的监测子项),右部显示了检测出的异常信息。在用于显示每 个迭代进度的中间部中,对于每个迭代都有上下两个长矩形图形,其 中,上面的长矩形图形表示每个迭代的计划开发进度,其进一步划分 成多个小矩形图形,每个小矩形图形标注一个日期,并且标注有当前 曰期的小矩形图形带有阴影底纹;下面的长矩形图形使用阴影底纹表 示每个迭代的实际开发进度,其进一步划分成三个子矩形图形,它们 分别表示项目的设计阶段、编码/测试阶段和功能测试阶段。本实施 例的当前日是11月27日。项目的进度是利用数据库中存储的图10-13 所示的项目数据得到的。从图17的中间部可以看出,在当前日进行 到11月27日时,接包方1的迭代1只完成了相当于原计划进度11 月25日应当完成的工作量,而接包方2的迭代1已经按照计划完成 了计划进度11月26日应当完成的工作量,因此,接包方1的实际开 发进度落后于计划开发进度,而接包方2的实际开发进度和计划开发 进度一致,其中,在本实施中,为了便于项目管理人员容易看出实际 开发进度与计划幵发进度之间的关系,当实际开发进度与计划开发进 度相一致时,表示实际开发进度的长矩形图形所使用的阴影底纹是交 叉纹,而当实际开发进度与计划开发进度不一致时,表示实际开发进度的长矩形图形所使用的阴影底纹是斜线纹,具体如图n所示。另外,因为11月27日处在编码/测试阶段,而11月27日的代码量少 于11月26日的代码量,所以"代码量减少"的异常图标就显示在接 包方1的迭代1的右半部分。同样的,因为11月27日的缺陷密度高 于标准值4.0 Bugs/KLOC,"高缺陷密度"的异常图标也显示在接包 方2的迭代1的右半部分。用户可以通过点击异常图标来查看详细的 异常信息,例如,接包方l的代码量的详细信息如图18所示。此外,第二和三个标签页显示了分析的项目1的指标参数,即代 码量和缺陷量。其中,图19示出了分析得到的整个项目1的代码量 的详细信息。在步骤S330,将生成的项目报告部署到HTTP服务器上。 在步骤S340, HTTP服务器根据所设置的接收项目报告的项目管理人员的邮件地址列表,将包含项目报告的链接发送给各个项目管理人员。本领域技术人员应当理解,虽然本发明第一实施例示出为包含有 分析模块130和检测模块140,但是本发明并不局限于此。在本发明 中,自动监控系统可以不包含分析模块130。本领域技术人员应当理解,本发明所公开的自动监控系统和方法 可以在不偏离本发明实质的情况下,做出各种变形和改变,因此,本 发明的保护范围由所附的权利要求书来限定。
权利要求
1. 一种用于自动监控软件开发项目的自动监控方法,包括步骤收集所述项目的项目数据;存储所述收集的项目数据;根据所述存储的项目数据,检测所述项目的异常状况;以及根据所述检测的异常状况,生成所述项目的项目报告。
2、 如权利要求l所述的自动监控方法,还包括步骤 选择所述项目的监测子项;收集并存储所述项目中与所述选择的监测子项相关的项目数据; 以及根据所述存储的项目数据,检测所述项目的所述监测子项的异常 状况。
3、 如权利要求2所述的自动监控方法,还包括步骤 从可用的插件类别中选择用于收集与所述选择的监测子项相关的项目数据的插件;以及利用所述选择的插件来收集所述项目数据。
4、 如权利要求l所述的自动监控方法,还包括步骤 根据所述存储的项目数据,检测所述项目的发布时间;以及 根据所述检测的发布时间和异常状况,生成所述项目报告。
5、 如权利要求l所述的自动监控方法,还包括步骤 设置接收所述项目报告的接收者的邮件地址列表; 将所述项目报告部署到HTTP服务器上;以及所述HTTP服务器根据所述设置的邮件地址列表,把包含所述项 目报告链接的邮件发送给所述接收者。
6、 如权利要求l所述的自动监控方法,还包括步骤 根据所述存储的项目数据,分析所述项目的指标参数;以及 根据所述检测的异常状况和所述分析的指标参数,生成所述项目报告。
7、 一种用于自动监控软件开发项目的自动监控系统,包括 收集模块,用于收集所述项目的项目数据;存储模块,用于存储所述收集的项目数据;检测模块,用于根据所述存储的项目数据,检测所述项目的异常 状况;以及报告模块,用于根据所述检测的异常状况,生成所述项目的项目 报告。
8、 如权利要求7所述的自动监控系统,还包括-选择模块,用于选择所述项目的监测子项;所述收集模块收集所述项目中与所述选择的监测子项相关的项 目数据;所述存储模块存储所述收集的与所述选择的监测子项相关的项 目数据;以及所述检测模块根据所述存储的项目数据,检测所述项目的所述监 测子项的异常状况。
9、 如权利要求8所述的自动监控系统,还包括 所述收集模块包括可用的插件类别;插件类别模块,用于从所述收集模块的所述可用的插件类别中选 择用于收集与所述选择的监测子项相关的项目数据的插件;以及 所述收集模块利用所述选择的插件来收集所述项目数据。
10、 如权利要求7所述的自动监控系统,还包括 所述检测模块,用于根据所述存储的项目数据,检测所述项目的发布时间;以及所述报告模块根据所述检测的发布时间和异常状况,生成所述项 目报告。
11、 如权利要求7所述的自动监控系统,还包括设置模块,用于设置接收所述项目报告的接收者的邮件地址列表;所述报告模块将所述生成的项目报告部署到HTTP服务器上;以及所述HTTP服务器根据所述指定的邮件地址列表,把包含所述项 目报告链接的邮件发送给所述接收者。
12、 如权利要求7所述的自动监控系统,还包括分析模块,用于根据所述存储的项目数据,分析所述项目的指标 参数;以及所述报告模块根据所述检测的异常状况和所述分析的指标参数, 生成所述项目报告。
全文摘要
本发明提供一种用于自动监控软件开发项目的自动监控系统和方法,该方法包括步骤收集所述项目的项目数据;存储所述收集的项目数据;根据所述存储的项目数据,检测所述项目的异常状况;以及,根据所述检测的异常状况,生成所述项目的项目报告。利用所述自动监控方法和装置,能够自动检测出项目的异常状况和发布时间。
文档编号G06F9/44GK101276273SQ200710091999
公开日2008年10月1日 申请日期2007年3月30日 优先权日2007年3月30日
发明者三宅滋, 三部良太, 玄 张, 蕾 张, 柴梅平 申请人:株式会社日立制作所