CN102226913A - 一种自动生成Bug修复计划的方法及Bug修复方法 - Google Patents

一种自动生成Bug修复计划的方法及Bug修复方法 Download PDF

Info

Publication number
CN102226913A
CN102226913A CN2011101335615A CN201110133561A CN102226913A CN 102226913 A CN102226913 A CN 102226913A CN 2011101335615 A CN2011101335615 A CN 2011101335615A CN 201110133561 A CN201110133561 A CN 201110133561A CN 102226913 A CN102226913 A CN 102226913A
Authority
CN
China
Prior art keywords
bug
resource
chromosome
repair
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2011101335615A
Other languages
English (en)
Inventor
王青
陈洁
肖俊超
杨秋松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN2011101335615A priority Critical patent/CN102226913A/zh
Publication of CN102226913A publication Critical patent/CN102226913A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种自动生成Bug修复计划的方法及BUG修复方法,属于计算机软件工程领域。本方法为:1)资源建模模块提取所输入Bug报告集合的属性信息;2)资源建模模块提取所存储人力资源的属性信息;3)任务调度模块根据所提取的属性信息,获得每一Bug修复活动所需的候选人力资源集合;4)设置一遗传算法可识别的二进制染色体结构,其包括修复活动的候选资源和修复活动执行的优先级;5)任务调度模块利用遗传算法对二进制染色体结构进行寻优,得到所输入Bug报告集合的最优修复计划。本发明提高了人力资源配置的准确性,降低了计划过程中对人的主观意识的依赖,提高了人力资源利用率。

Description

一种自动生成Bug修复计划的方法及Bug修复方法
技术领域
本发明属于计算机软件工程领域,特别涉及一种自动生成Bug修复计划的方法及BUG修复方法。
背景技术
软件中的缺陷(Defect或Bug)是软件开发过程中的“副产品”。有统计称一个专业的程序员平均每1000行代码就会产生5个Bug。对于一个软件企业来说,迅速准确地处理这些Bug可以有效地缩短软件的研发周期,提高软件产品的质量,从而更好地满足用户需求。而合理的任务进度计划的制定可以使项目经理、高层经理、客户等所有与项目有关的人员对项目充满信心,在项目未开始前就可以看到项目的结果。Bug修复作为项目开发中比不可少的部分也需要进行合理的计划。
软件开发中每个Bug修复过程包含两类活动:测试(TST)和开发(DEV)。Bug一般首先由测试人员在软件测试过程中发现(TST活动),然后提交给开发人员进行修改(DEV活动),在这个过程中需要给未修复的Bug分配人力资源。目前已有的bug跟踪管理软件包括Compuware公司的TrackRecord软件(商业软件)、Mozilla公司的Buzilla软件(免费软件),以及国内的微创公司的BMS软件,IBM收买Rational公司版权的Rational ClearQuest及MI公司的TestDirector。在Bug管理方面,这些软件主要使用状态标记的方法来跟踪Bug的修复过程,虽然这一流程可以正确地跟踪每个Bug的处理过程,但它没有给出整体的修复计划和有效的资源配置方案,Bug的分配工作依然需要人工完成。
常用的项目计划软件,如微软的Project能够为任务分配资源、并跟踪任务进度,但其功能仅限于计划的描述和管理,而计划本身的依然由项目管理人员制定。项目管理人员制定的进度计划必须准确并具有可执行性,否则计划就成了空谈并可能会导致计划不停的变更或弃之不用,最终造成项目失控。在任务分配的过程中,项目管理人员需要综合考虑技术水平,人员的工作时间,任务的紧急程度等条件,才能保证任务的顺利进行。目前任务计划的制定大都依赖于项目管理人员的经验,这种方式存在明显的缺陷——过度依赖于人的经验和直觉。在项目规模较小时利用经验方法可以较为有效的做出修复计划,解决人力资源的优化分配以及资源冲突。但在复杂的软件开发环境下,项目管理人员的个人经验和能力的局限性往往导致企业无法制定合理的任务计划,无法及时的发现和解决资源冲突,导致人力资源分配不合理,任务延期,使得企业整体收益受到影响。为保证Bug修复工作计划的科学性、资源配置的合理性,保证Bug修复工作的顺利进行,很有必要对目前人工的Bug修复任务计划方法进行改进和提高。
Bug修复过程的优化目标是实现项目价值的最大化,如果每个项目都能提前完成固然最好。但是受到成本和资源的约束,往往不能顺利完成。Bug修复任务的计划需要综合考虑多项技术能力,成本,资源约束等评价指标,因此该优化属于多目标优化问题。20世纪80年代中期,一些人工智能的进化算法开始应用于求解多目标优化问题。遗传算法是20世纪60年代美国Michigan大学的Holland教授提出的一种进化算法,使用仿真演化作为搜索策略来推断出潜在的最优解。算法将搜索问题的候选解决方案编码成有限长度的染色体字符串。并定义一个适应度度量指标来区别好的候选解决方案和不好的解决方案,从而引导搜索朝着目标空间进行。遗传算法维护一群解决方案,这些解决方案迭代交叉变异进行演化。遗传算法具有通用性,鲁棒性好,搜索能力强等特点,在处理大规模和高复杂化的搜索空间问题上有很大优势。并已成功地应用于函数优化,组合优化,生产调度,自动控制,机器学习等各个领域。
发明内容
针对上述问题,本发明的目的在于提供一种自动生成Bug修复计划的方法及BUG修复方法,能综合考虑人力资源的各个因素(能力,可用时间)和Bug的需求,为企业的Bug修复过程提供一个合理有效的计划,从而减少管理人员的工作量,提高资源利用的效率。在本发明中系统首先建立Bug和人力资源模型来描述Bug和人力资源,然后采用遗传算法在平衡多个目标的前提下得到Bug修复工作计划的近似最优的解。
本发明的技术方案为:
一种自动生成BUG修复计划的方法,其步骤为:
1)资源建模模块提取所输入Bug报告集合的属性信息,其中,每一Bug的属性信息包括:Bug的唯一标识符、Bug的严重性、Bug的权重、修复或验证Bug所需要的技术、修复活动所需工作量、修复活动的完成时间、修复活动要求完成的截止时间、单位时间的额外利益、单位时间的惩罚;
2)资源建模模块提取所存储人力资源的属性信息,其中,每一人力资源的属性信息包括:人力资源的唯一标识、技术集合、单位时间费用、可用时间;
3)任务调度模块根据所提取的属性信息,匹配查询获得所述Bug模型中每一Bug修复活动所需的候选人力资源集合;
4)设置一遗传算法可识别的二进制染色体结构;其中,所述二进制染色体结构包括修复活动的候选资源和修复活动执行的优先级;
5)任务调度模块利用遗传算法对所述二进制染色体结构进行寻优,得到所输入Bug报告集合的最优Bug修复计划。
进一步的,所述二进制染色体结构包括:一资源基因集合、一优先级基因集合;其中,所述资源基因集合的生成方法为:将每一所述人力资源集合中ri,j个候选人力资源编码成一个资源基因子集;其中,i代表BugBi,j代表活动类型,第k基因位的值表示候选人力资源集合中第k个人力资源在BugBi的活动j中的分配情况;将所有资源基因子集合并为二进制染色体结构的资源基因集合;所述优先级基因集合的生成方法为:使用g个基因位作为Bug修复活动的优先级编码,g乘以Bug修复活动的总数为二进制染色体结构的优先级基因集合的大小。
进一步的,长度为g的二进制字符串的十进制值为Bug修复活动的优先级大小。
进一步的,所述最优Bug修复计划的生成方法为:
1)建立一单个Bug价值函数value(B);
2)设置一染色体数量参数PS,取值为大于0的整数;一染色体变异可能性参数MR,取值为大于0并小于1;一最大遗传代数参数MN,取值为大于0的整数;
3)根据所述二进制染色体结构初始化生成PS个染色体,作为第一代种群;
4)对每一代种群中的所有染色体进行解码,并根据其中的每个染色体所代表的计划进行资源调度;
5)根据价值函数value(B),得到的每个染色体对应的Bug修复计划的价值
Figure BDA0000063009080000031
其中,n为Bug集合BS的Bug总数;
6)通过选择、交叉、变异操作生成新一代的染色体,并计算其对应的Bug修复计划的价值Value(BS),直到设定的最大遗传代数,输出具有最高适应度的染色体;
7)对输出的最高适应度的染色体进行解码、资源调度,获得最优Bug修复计划。
进一步的,所述单个Bug  价值函数value(B)为:value(B)=(α*B.priority+β*B.severity)*(ScheduleValue(B)+SalaryValue(B)),其中α为Bug优先级权重、β为Bug严重性的权重、B.Priority为Bug的优先级、B.severity为Bug的严重性、ScheduleValue(B)表示Bug B的计划所产生的收益或惩罚的值、SlarayValue(B)表示分配到Bug B修复工作的人力资源费用总量。
进一步的,根据适应度函数
Figure BDA0000063009080000041
选择较高适应度的若干备选染色体。
进一步的,采用轮盘选择法从所述备选染色体中选择染色体进行交叉、变异,生成新一代染色体。
进一步的,所述资源调度的方法为:
1)对每一代种群中的每一染色体进行解码,得到当前染色体所表示的计划中,每个Bug修复活动的可用人力资源和优先级;
2)采用拓扑排序的方法对当前染色体所表示计划中所有Bug修复过程的活动进行排序,得到新的Bug活动列表BList;
3)根据当前染色体所表示计划中各个Bug修复活动的可用人力资源集合和各个资源的可用时间,安排BList中各个活动的工作时间;
4)选取下一染色体进行解码,直到安排完当前代种群中的所有染色体所表示的计划中的Bug活动工作时间。
进一步的,所述安排BList中各个活动的工作时间的方法为:
1)从BList中选择第一个活动A作为当前活动进行调度;
2)将日期T设置成该活动的开始日期;
3)如果活动A的可用资源在T这一天空闲,那么将该资源这一天内的所有可用的工作量分配到活动A,并更新人力资源的在T时间的状态;
4)如果分配到活动A的工作量能够完成该活动,则将日期T设为活动的计划结束时间,更新日期T=T+1,并将活动A从BList中删除;如果调度的工作量还不能完成该活动A,则T=T+1,继续对活动A安排工作时间,直到该活动完成为止并将活动A从BList中删除;
5)选取下一个活动进行调度,直到所有活动都完成了时间安排。
本发明采用上述所生产的BUG修复计划,对BUG进行修复。
本发明BUG修复计划的方法流程如图1所示,主要包括两个模块:
1)资源建模模块:该模块包含两部分功能,1.从测试人员提交Bug报告中自动提取有用的Bug信息并自动建立本发明中定义的Bug模型;2.从公司的人力资源信息中提取出有用的信息并自动建立本发明中定义的人力资源模型。
2)任务调度模块:以Bug模型、人力资源模型为输入,采用遗传算法,根据本发明中定义的编解码方式和价值函数,自动对任务的执行进行规划,建立Bug修复任务的计划,取代传统的经验化的方法。
下面具体介绍各个模块的内容:
一、资源建模模块
为了更好的在系统中描述Bug和人力资源信息,该模块将根据用户输入的Bug报告和公司的人力资源信息,提取必要的属性和内容自动建立Bug和人力资源的模型,供本发明中的其他模块使用。
两个模型的具体定义如下:
Bug模型:
定义一个Bug集合BR,BR={B1,B2…,Bn},包含所有项目中当前需要修复的所有Bug。每一个Bug Bi具有如下必要的属性:
1)ID:一个Bug的唯一标识符。
2)severity:Bug的严重性,其取值为:High,Medium,Low
3)weight:Bug的权重,其取值为:High,Medium,Low
4)Required skills:修复或验证Bug所需要的技术,这个属性将作为资源分配的一个约束。每一个技术描述成一个三元组(SKT,SKN,SKL),各个元素的定义如下:
a)SKT:技术类型,在本发明中有两种类型:开发技术和测试技术。
b)SKN:具体技术的名字,如对应于技术类型的编程语言技术。
c)SKL:修复或验证Bug所需要的特定技术的能力要求,其取值为:2(High),1(Medium),0(Low)。
修复Bug所需要的技术可能因公司而不同,但是上述的技术结构的定义是灵活的,可以包含不同的技术类型。
5)Estimated effort:各个活动需要的工作量,以人/时为单位。
6)Fixed time:在自动生成的计划中该Bug修复活动的完成时间。
7)Deadline for Bug-fixing:Bug修复活动要求完成的截止时间。这个属性将作为资源分配的一个约束。
8)Coefficient of schedule benefit(CSB):如果生成的计划中的Bug修复时间比截止时间要早,会得到额外的利益。CSB表示提前一天能得到多少利益。
9)Coefficient of schedule penalty(CSP):如果生成的计划中的Bug修复时间比截止时间要晚,会得到相应的惩罚。CSP表示延迟一天会造成多少损失。
系数CSB和CSP是用户选定的配置参数,用户可以按照Bug的特征和偏好设定权重。例如延迟完成带来的惩罚影响比提前完成得到的收益要高,那么用户给出的CSP可能比CSB的值要高。
人力资源模型:
定义一个人力资源集合HRR,HRR={HR1,HR2,…,HR3}。每个HR具有4个必要的属性:
1)HR ID:人力资源的唯一标识。
2)SKLS:人力资源的技术集合,SKLS={skl1,skl2,...,skln}。定义每一个skli为一个三元组skli=(SKT,SKN,SKL)。与Bug模型中定义的技术一致,元组中的元素分别表示技术类型,技术名称,技术水平。
3)Salary:人力资源的费用,以元/小时为单位计量。
4)STMW:人力资源可用的时间。STMW包含所有可用的时间区间以及每个区间每天的可用工作量。
STMW={([Ts1,Te1],w1),[Ts2,Te2],w2),...,[Tsk,Tek],wk)}
其中Tsi和Tei代表第i个空闲时间片段的开始和结束时间。wi代表第i个空闲时间片段内每天的工作量。wi的单位是人/时。
二、任务调度模块
该模块将根据当前人力资源的描述和Bug修复任务的需求利用遗传算法自动生成计划。该模块的输入为资源建模模块中建立的人力资源模型和Bug模型,输出结果是计划的甘特图。任务调度模块首先通过能力匹配得到每个Bug的可用候选人力资源,然后将活动资源的可用情况编码成染色体并传递给遗传算法进行交叉变异等操作,然后通过本发明中定义的价值函数来判断生成的计划的好坏,最后经过不断的选择、遗传得到最优的Bug修复计划。
自动创建计划的具体步骤如下所示:
步骤1:通过能力匹配得到所有Bug修复任务的候选资源列表CList。CList中每个元素cElementi为一个三元组cElementi={resourceID,bugID,ActType}。元组中的元素分别表示资源的编号,Bug的编号,活动类型。能力匹配的具体过程如下:
1)选择一个未进行能力匹配的Bug活动。
2)遍历人力资源集合,获得具有该Bug的技术能力需求的人力资源作为候选资源,即该人力资源的SKLS属性的值必须包含该Bug的Required skills属性的值。(人力资源和Bug的属性的具体描述在上文的“人力资源模型”和“Bug模型”中)。
3)根据当前处理的活动的类型和该活动所属的Bug的编号,为2)中得到的所有候选资源建立一个候选资源的三元组,添加到CList中。
4)如果所有活动都进行了能力匹配,则该过程结束,否则跳到1)对下一个活动进行能力匹配。
步骤2:采用二进制编码方式将活动的候选资源和执行的优先级定义成染色体供遗传算法计算使用。本发明中定义每条染色体为一个二进制字符串,并分为两个部分:一个资源基因集合和一个优先级基因集合(如图2所示),整个染色体的大小为资源基因集合大小和优先级基因集合大小之和。具体生成方法如下:
a)染色体资源基因集合部分:根据步骤1得到各个活动的候选人力资源集合,对于每个活动,如Bug Bi的活动j,在染色体中建立连续的ri,j个基因位表示其ri,j(其中i代表Bug Bi,j代表活动类型(DEV或TST))个候选资源。其中每个二进制基因位,如第k个基因位,表示候选集合中第k个人力资源在Bug Bi的活动j中的分配情况。二进制值为0表示该资源未被分配到该活动,为1表示该资源被分配到该活动。资源基因集合部分包含的基因的个数等于步骤1中得到的CList所包含的元组的个数。
b)染色体优先级基因集合部分:在本发明中,对于每个Bug修复活动,使用g个基因位来表示其优先级,g的大小固定,这个长度为g的二进制字符串的十进制值为Bi的优先级大小。优先级基因集合的大小为g乘以Bug修复活动的总数。优先级基因用于在两个或更多活动竞争同样的资源的时候,决定哪个活动先得到资源。如果两个活动具有同样的优先级,那么结束时间早的活动先分配。
步骤3:利用遗传算法(详见王小平、曹立明:《遗传算法——理论、应用与软件实现》,西安交通大学出版社,2002年)进行寻优,获得最优的计划。该步骤的输入为步骤2得到的二进制染色体结构,输出为遗传算法得到的最优Bug修复计划。
首先在系统中设定3个遗传算法所需的初始化参数:
1)Population scale(PS):染色体的数量,该参数值要求为大于0的整数。
2)Mutation rate(MR):染色体变异的可能性,该参数值要求为大于0并小于1的小数。
3)Maximum generation number:最大的遗传代数,该参数值要求为大于0的整数。
利用遗传算法获得计划包含如下几个步骤:
1)根据步骤2中得到的染色体结构,初始化生成PS个随机二进制字符串作为第一代种群的染色体。染色体的每个基因位的值为随机产生的二进制值(0或1),用于表示计划中资源的配置情况(资源基因集合)以及Bug修复活动的优先级(优先级基因集合)。
2)对每一代种群中的所有染色体进行解码,并根据其中的每个染色体所代表的计划进行资源调度,考虑资源的可用时间,安排每个任务的工作时间。具体过程如下:
a)每个染色体的解码过程的输入为二进制染色体,输出为在该染色体所表示的计划中分配到各个Bug修复活动的可用资源集合和每个活动的优先级。染色体解码过程包含两部分:
(1)资源基因集合部分的解码:根据输入的染色体基因位上的值,按照该染色体的结构,将染色体资源基因集合中值为1的基因位对应的人力资源分配给相应的Bug的修复活动。染色体的资源基因集合解码得到计划中每个活动被分配的可用资源集合。
(2)优先级基因集合部分的解码:根据染色体基因位上的值,按顺序将优先级基因集合部分的每g个基因位上的值所表示的二进制的字符串转换成十进制值,并将其设为这g个基因为对应的修复活动的优先级。染色体的优先级基因集合解码后可以得到在该计划中各个Bug修复活动的优先级。
解码后将得到在每个计划中,每个Bug修复活动的可用人力资源和优先级。
b)采用拓扑排序的方法对所有Bug修复过程的活动进行排序,得到新的Bug活动列表BList。
c)根据步骤a中得到的各个Bug修复活动的可用资源集合,和各个资源的可用时间,安排BList中各个活动的工作时间。具体操作如下:
(1)从BList中选择第一个活动A作为当前活动进行调度。
(2)将日期T设置成该活动的开始日期。
(3)如果从步骤a得到的活动A的可用资源在T这一天空闲,那么将该资源这一天内的所有可用的工作量分配到活动A,并更新人力资源的在T时间的状态(由空闲改为忙碌)。
(4)如果步骤(3)调度后,分配到活动A的工作量已经可以完成该活动,将日期T设为活动的计划结束时间。更新日期T=T+1,并将活动A从BList中删除,然后跳到(1)对下一个活动进行调度,直到所有活动都完成了时间安排。
(5)如果调度的工作量还不能完成该活动,T=T+1,跳到(3)继续对活动A安排工作时间,直到该活动完成为止。
d)跳到a)对种群中的下一条染色体进行解码调度操作,若所有染色体都已经完成,则该过程结束。
在上述过程之后,将得到每个染色体对应的Bug修复计划的起止时间和人力资源安排。
3)基于价值函数根据上一步中得到的每个染色体对应的Bug修复计划的起止时间和人力资源安排计算每个染色体对应的计划的价值。
本发明的目的是为了自动生成Bug修复任务的计划,因此需要定义一个价值函数来衡量计划的好坏。
本发明中单个Bug的价值函数定义如下:
value(B)=(α*B.weight+β*B.severity)*(ScheduleValue(B)+SalaryValue(B))
其中α和β分别为Bug优先级和严重性的偏好权重。B.weight是上述Bug模型中权重属性,表示Bug的优先级。B.severity是上述Bug模型中severity属性,表示Bug的严重性。α和β表示Bug的权重和严重性两个属性在价值函数中所占的比例。如果一个Bug的权重比较高,可以将α的值设置的比较大,反之如果Bug的严重性比较重要,可以将β设置的较高。
ScheduleValue(B)的定义如下:
ScheduleValue ( B ) = ( B . Deadline - B . FixedTime ) * B . CSB Deadline &GreaterEqual; FixedTime ( B . Deadline - B . FixedTime ) * B . CSP Deadline < FixedTime
其中B.Deadline表示Bug B修复完成的截止时间,B.FixedTime表示生成的计划中修复完成的日期。B.CSB表示提前一天完成能得到的额外利益数量,B.CSP表示延迟一天完成会产生的额外惩罚的数量。其结果ScheduleValue(B)表示Bug B的自动生成的计划可能会产生的收益或惩罚的值。
Salary(B)的定义如下:
SalaryValue ( B ) = &Sigma; HR i &Element; AssignedHR ( B ) HR i . Salary * HR i . workload ( B )
其中AssignedHR(B)表示被分配到该Bug的人力资源集合,HRi.Salary是人力资源HRi的Salary属性,表示HRi的每小时工资。HRi.workload(B)表示计划中HRi在该Bug中的工作量。其结果SlarayValue(B)表示分配到Bug B修复工作的所有人在该Bug修复工作中需要的工资总量。
定义整个Bug修复过程的价值函数如下:
Value ( BS ) = &Sigma; i n Value ( B i )
这个价值函数将被用来作为遗传算法演化过程的适应度函数。调度的目标是为了获得组织的最大价值,适应度函数通过价值函数来设置。因为价值可能是负数,本发明使用如下的方式来表示适应度函数:
fitness = ( value ( BS ) ) 2 value ( BS ) > 1 1 - 1 &le; value ( BS ) &le; 1 ( 1 - value ( BS ) ) 2 value ( BS ) < 1
根据经过上一步产生每个染色体对应的Bug修复任务的计划和上述定义的价值函数,计算该染色体所代表的计划的价值。当染色体数目较多,Bug数量较多时该步骤会消耗大量时间,因此本发明采用并行的方法进行该操作。
4)如果遗传算法了最大遗传代数那么跳到5)停止生成下一代染色体。否则通过选择、交叉、变异操作生成新一代的染色体,并跳到2)将该代染色体作为输入,并进行解码调度,获得新的调度计划。
选择操作根据上一步计算得到的每个染色体对应的价值选择一定个数的拥有较高适应度的染色体,从而为下一代准备种群。本发明中使用轮盘选择法(Roulette wheele selection)来选择染色体,染色体k被选择的概率是:
Fitness k &Sigma; K = 1 PS Fitness k
其中Fitness为步骤3)中计算得到的染色体对应的调度方案的价值。
交叉操作结合两个父染色体的特征生成两个后代。两个父染色体的配对和交叉点的选择都是随机的。在变异阶段,变异染色体和变异的位置也是根据MR随机的。在变异的位置,基因的值将发生改变。
5)根据步骤3)计算最后一代每条染色体的价值函数,并从中选择这一代染色体种群中具有最高适应度的染色体,通过步骤2)的解码调度操作,获得Bug修复计划的起止时间和人力资源安排。
步骤4:根据步骤3产生的计划,输出甘特图。根据步骤3得到的最优的Bug修复计划,按该计划的时间安排和资源分配情况绘制并输出甘特图,项目经理和其他管理人员可以通过甘特图直观地了解什么任务在什么时候进行,以及实际进展与计划要求的对比。
与现有技术相比,本发明的积极效果
对于待修复Bug任务集合,本发明通过自动分析Bug需要的技术能力来匹配人力资源的技术能力、可用时间,利用遗传算法搜索并自动生成可行的计划。本发明体现了基于价值的软件工程思想,大大减轻了项目负责人在Bug修复阶段进行计划、资源分配时的工作量,提高了人力资源配置的准确性和任务工作进度计划的合理性,降低了计划过程中对人的主观意识的依赖,可帮助软件企业提高其人力资源利用率,进而提高企业效益。
附图说明
图1本发明的方法流程图;
图2Bug修复问题的染色体结构图;
其中,DEV1的资源基因子集的大小为r1,1,TSTn的资源基因子集的大小为rn,2
具体实施方式
基于本发明的方法开发了原型系统,企业可以根据以下四个步骤具体实施本方法和系统:
1.用户输入基本信息
(1)项目经理输入各指标的权重。本例中用户输入Bug的重要性和权重偏好系数:α=20和β=5。
(2)项目经理输入遗传算法参数。本例中用户输入的染色体的数量(PS)=100;染色体变异的可能性(MR)=0.1;最大的遗传代数=500。
(3)测试人员提交Bug报告。简化后Bug信息大致包含如表1、表2所示的内容。
表1、Bug描述
  Bug编号   重要性   权重   计划开始时间   计划截止日期   估计的工作量
  Bug 1   2   3   2010-3-25   2010-4-12   开发:24小时;测试:8小时
  Bug 2   2   3   2010-3-25   2010-4-12   开发:24小时;测试:8小时
  Bug 3   2   3   2010-3-25   2010-4-12   开发:24小时;测试:8小时
  Bug 4   3   3   2010-3-25   2010-4-12   开发:32小时;测试:16小时
  Bug 5   3   3   2010-3-25   2010-4-12   开发:32小时;测试:16小时
  Bug 6   3   3   2010-4-1   2010-4-19   开发:32小时;测试:16小时
  Bug 7   2   3   2010-3-25   2010-4-12   开发:24小时;测试:8小时
  Bug 8   2   3   2010-3-25   2010-4-12   开发:24小时;测试:8小时
  Bug 9   3   3   2010-3-25   2010-4-12   开发:24小时;测试:8小时
  Bug 10   2   3   2010-3-25   2010-4-12   开发:24小时;测试:8小时
  Bug 11   2   3   2010-3-25   2010-4-12   开发:24小时;测试:8小时
  Bug 12   3   2   2010-3-25   2010-4-12   开发:32小时;测试:16小时
  Bug 13   3   2   2010-4-1   2010-4-19   开发:32小时;测试:16小时
  Bug 14   2   2   2010-3-25   2010-4-12   开发:24小时;测试:8小时
  Bug 15   2   2   2010-4-1   2010-4-19   开发:24小时;测试:8小时
  Bug 16   2   2   2010-4-1   2010-4-19   开发:24小时;测试:8小时
表2、Bug的技术需求
Figure BDA0000063009080000121
(4)企业根据自身的情况,输入人力资源(如表3所示)信息。
表3、人力资源描述
Figure BDA0000063009080000122
Figure BDA0000063009080000131
2.系统自动建模。
系统将根据上述输入的Bug和人力资源信息自动建立Bug和人力资源模型。
3.系统自动产生调度方案。
(1)能力匹配。
本例中共有16个Bug,32个活动。根据人力资源和这些任务的要求匹配后计算得到共有64个人能在技术能力上能胜任这32个活动。
(2)定义染色体。
根据上述能力匹配的结果,系统将建立长度为64的资源集合。系统中默认每个活动的优先级用3个基因为表示,得到优先级基因集合长度为32*3=96。因此得到染色体总长度为64+96160。
(3)根据染色体结构和定义的价值函数,利用遗传算法进行寻优。
1)初始化生成100个染色体作为第一代种群。
2)计算每一代种群中每个染色体对应的资源配置方案的价值。
3)选择一定个数的拥有较高适应度的染色体。
4)进行交叉变异产生新一代染色体。
5)评估新一代染色体。如果遗传代数达到500代则停止遗传,否则跳到2)继续。
6)在最后一代选择具有最高适应度的染色体,产生调度方案。
(4)寻优结束,得到Bug修复的计划和资源配置方案的优化解集。
对上一步得到的最优的染色体进行解码,得到计划。
经过上述具体实施步骤后,本例中计划的价值为870。能够按时完成13个Bug修复工作。有3个Bug因为资源冲突而没有完成修复工作。当用户选择不同的Bug重要性和权重偏好系数:α和β时,会产生不同的资源分配方案。用户可以根据企业的实际情况,通过调整α和β参数来得到自己想要的分配方案。
4.系统根据计划自动生成甘特图。
根据上一步中系统得到的最优计划,绘制并输出甘特图。根据上述调度计划,已分配资源的13个Bug修复任务的资源分配信息(见表4)所示。根据计划3月25日HR2,HR1,HR7三人可以分别开始开发任务DEV9,DEV8,DEV4,其中HR2需要在29日之前完成DEV9修复任务;HR1需要在30日之前完成DEV8修复任务;HR7需要在30日之前完成DEV4修复任务。假设,HR2在29日完成了任务,并提交修复结果,则按照甘特图中的计划,HR8将在30日开始对Bug9的修复工作进行验证测试,并要求在30日当天完成。当HR8按时完成并提交后,Bug9修复工作就完成了。如果在实际工作过程中,项目经理发现实际的开始和完成时间与计划不符合,或者由于某些原因产生了任务推迟而导致实际开发进程与计划的甘特图不符合,项目经理可以及时从图中发现。
表4、资源分配信息
  序号   任务名称   工期(工作日)   开始时间  完成时间   前置任务   资源名称
  1   DEV9   3   2010年3月25日  2010年3月29日   HR2
  2   TST9   1   2010年3月30日  2010年3月30日   1   HR8
  3   DEV8   4   2010年3月25日  2010年3月30日   HR1
  4   TST8   1   2010年3月31日  2010年3月31日   3   HR8
  5   DEV4   4   2010年3月25日  2010年3月30日   HR7
  6   TST4   2   2010年4月1日   2010年4月2日   5   HR8
  7   DEV5   4   2010年3月30日   2010年4月2日   HR2
  8   TST5   2   2010年4月6日   2010年4月7日   7   HR8
  9   DEV1   3   2010年3月31日   2010年4月2日   HR7
  10   TST1   1   2010年4月5日   2010年4月5日   9   HR8
  11   DEV10   4   2010年3月31日   2010年4月5日   HR1
  12   TST10   1   2010年4月9日   2010年4月9日   11   HR8
  13   DEV2   3   2010年4月5日   2010年4月7日   HR7
  14   TST2   1   2010年4月8日   2010年4月8日   13   HR8
  15   DEV15   6   2010年4月6日  2010年4月13日   HR1
  16   TST15   1   2010年4月14日  2010年4月14日   15   HR8
  17   DEV6   4   2010年4月8日  2010年4月13日   HR7
  18   TST6   2   2010年4月16日  2010年4月19日   17   HR8
  19   DEV16   3   2010年4月12日  2010年4月14日   HR2
  20   TST16   1   2010年4月15日  2010年4月15日   19   HR8
  21   DEV7   3   2010年4月20日  2010年4月22日   HR2
  22   TST7   1   2010年4月23日  2010年4月23日   21   HR8
  23   DEV11   3   2010年4月23日  2010年4月27日   HR2
  24   TST11   1   2010年4月28日  2010年4月28日   23   HR8
  25   DEV13   4   2010年4月22日  2010年4月27日   HR1
  26   TST13   2   2010年4月29日  2010年4月30日   25   HR8

Claims (10)

1.一种自动生成BUG修复计划的方法,其步骤为:
1)资源建模模块提取所输入Bug报告集合的属性信息,其中,每一Bug的属性信息包括:Bug的唯一标识符、Bug的严重性、Bug的权重、修复或验证Bug所需要的技术、修复活动所需工作量、修复活动的完成时间、修复活动要求完成的截止时间、单位时间的额外利益、单位时间的惩罚;
2)资源建模模块提取所存储人力资源的属性信息,其中,每一人力资源的属性信息包括:人力资源的唯一标识、技术集合、单位时间费用、可用时间;
3)任务调度模块根据所提取的属性信息,匹配查询获得每一Bug修复活动所需的候选人力资源集合;
4)设置一遗传算法可识别的二进制染色体结构;其中,所述二进制染色体结构包括修复活动的候选资源和修复活动执行的优先级;
5)任务调度模块利用遗传算法对所述二进制染色体结构进行寻优,得到所输入Bug报告集合的最优Bug修复计划。
2.如权利要求1所述的方法,其特征在于所述二进制染色体结构包括:一资源基因集合、一优先级基因集合;其中,
所述资源基因集合的生成方法为:将每一所述人力资源集合中ri,j个候选人力资源编码成一个资源基因子集;其中,i代表BugBi,j代表活动类型,第k基因位的值表示候选人力资源集合中第k个人力资源在BugBi的活动j中的分配情况;将所有资源基因子集合并为二进制染色体结构的资源基因集合;
所述优先级基因集合的生成方法为:使用g个基因位作为Bug修复活动的优先级编码,g乘以Bug修复活动的总数为二进制染色体结构的优先级基因集合的大小。
3.如权利要求2所述的方法,其特征在于长度为g的二进制字符串的十进制值为Bug修复活动的优先级大小。
4.如权利要求1或2或3所述的方法,其特征在于所述最优Bug修复计划的生成方法为:
1)建立一单个Bug价值函数value(B);
2)设置一染色体数量参数PS,取值为大于0的整数;一染色体变异可能性参数MR,取值为大于0并小于1;一最大遗传代数参数MN,取值为大于0的整数;
3)根据所述二进制染色体结构初始化生成PS个染色体,作为第一代种群;
4)对每一代种群中的所有染色体进行解码,并根据其中的每个染色体所代表的计划进行资源调度;
5)根据价值函数value(B),得到的每个染色体对应的Bug修复计划的价值
Figure FDA0000063009070000021
其中,n为Bug集合BS的Bug总数;
6)通过选择、交叉、变异操作生成新一代的染色体,并计算其对应的Bug修复计划的价值Value(BS),直到设定的最大遗传代数,输出具有最高适应度的染色体;
7)对输出的最高适应度的染色体进行解码、资源调度,获得最优Bug修复计划。
5.如权利要求4所述的方法,其特征在于所述单个Bug价值函数value(B)为:value(B)=(α*B.priority+β*B.severity)*(ScheduleValue(B)+SalaryValue(B)),其中α为Bug优先级权重、β为Bug严重性的权重、B.Priority为Bug的优先级、B.severity为Bug的严重性、ScheduleValue(B)表示Bug B的计划所产生的收益或惩罚的值、SlarayValue(B)表示分配到Bug B修复工作的人力资源费用总量。
6.如权利要求4所述的方法,其特征在于根据适应度函数
Figure FDA0000063009070000022
选择较高适应度的若干备选染色体。
7.如权利要求6所述的方法,其特征在于采用轮盘选择法从所述备选染色体中选择染色体进行交叉、变异,生成新一代染色体。
8.如权利要求4所述的方法,其特征在于所述资源调度的方法为:
1)对每一代种群中的每一染色体进行解码,得到当前染色体所表示的计划中,每个Bug修复活动的可用人力资源和优先级;
2)采用拓扑排序的方法对当前染色体所表示计划中所有Bug修复过程的活动进行排序,得到新的Bug活动列表BList;
3)根据当前染色体所表示计划中各个Bug修复活动的可用人力资源集合和各个资源的可用时间,安排BList中各个活动的工作时间;
4)选取下一染色体进行解码,直到安排完当前代种群中的所有染色体所表示的计划中的Bug活动工作时间。
9.如权利要求8所述的方法,其特征在于所述安排BList中各个活动的工作时间的方法为:
1)从BList中选择第一个活动A作为当前活动进行调度;
2)将日期T设置成该活动的开始日期;
3)如果活动A的可用资源在T这一天空闲,那么将该资源这一天内的所有可用的工作量分配到活动A,并更新人力资源的在T时间的状态;
4)如果分配到活动A的工作量能够完成该活动,则将日期T设为活动的计划结束时间,更新日期T=T+1,并将活动A从BList中删除;如果调度的工作量还不能完成该活动A,则T=T+1,继续对活动A安排工作时间,直到该活动完成为止并将活动A从BList中删除;
5)选取下一个活动进行调度,直到所有活动都完成了时间安排。
10.一种BUG修复方法,其特征在于采用权利要求1所生成的BUG修复计划进行BUG修复。
CN2011101335615A 2011-05-23 2011-05-23 一种自动生成Bug修复计划的方法及Bug修复方法 Pending CN102226913A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011101335615A CN102226913A (zh) 2011-05-23 2011-05-23 一种自动生成Bug修复计划的方法及Bug修复方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011101335615A CN102226913A (zh) 2011-05-23 2011-05-23 一种自动生成Bug修复计划的方法及Bug修复方法

Publications (1)

Publication Number Publication Date
CN102226913A true CN102226913A (zh) 2011-10-26

Family

ID=44807878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011101335615A Pending CN102226913A (zh) 2011-05-23 2011-05-23 一种自动生成Bug修复计划的方法及Bug修复方法

Country Status (1)

Country Link
CN (1) CN102226913A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294595A (zh) * 2013-05-23 2013-09-11 西安电子科技大学 一种基于遗传算法的软件修复方法
CN106447144A (zh) * 2015-08-07 2017-02-22 阿里巴巴集团控股有限公司 一种目标对象的评估方法及装置
US10248919B2 (en) 2016-09-21 2019-04-02 Red Hat Israel, Ltd. Task assignment using machine learning and information retrieval
CN110135169A (zh) * 2019-05-21 2019-08-16 江苏亨通工控安全研究院有限公司 漏洞检测方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727533A (zh) * 2008-10-30 2010-06-09 新奥特硅谷视频技术有限责任公司 一种自适应参数调节的自动分配bug的方法
CN101727386A (zh) * 2008-10-30 2010-06-09 新奥特硅谷视频技术有限责任公司 一种软件编制过程中bug的处理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727533A (zh) * 2008-10-30 2010-06-09 新奥特硅谷视频技术有限责任公司 一种自适应参数调节的自动分配bug的方法
CN101727386A (zh) * 2008-10-30 2010-06-09 新奥特硅谷视频技术有限责任公司 一种软件编制过程中bug的处理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294595A (zh) * 2013-05-23 2013-09-11 西安电子科技大学 一种基于遗传算法的软件修复方法
CN103294595B (zh) * 2013-05-23 2016-06-22 西安电子科技大学 一种基于遗传算法的软件修复方法
CN106447144A (zh) * 2015-08-07 2017-02-22 阿里巴巴集团控股有限公司 一种目标对象的评估方法及装置
US10248919B2 (en) 2016-09-21 2019-04-02 Red Hat Israel, Ltd. Task assignment using machine learning and information retrieval
CN110135169A (zh) * 2019-05-21 2019-08-16 江苏亨通工控安全研究院有限公司 漏洞检测方法及装置

Similar Documents

Publication Publication Date Title
Vanhoucke et al. An overview of project data for integrated project management and control
Zavadskas et al. Selecting a contractor by using a novel method for multiple attribute analysis: Weighted Aggregated Sum Product Assessment with grey values (WASPAS-G)
CN111667194B (zh) 适用于印染企业的生产调度方法、装置及电子设备
Liu et al. Two-stage approach for reliable dynamic Web service composition
EP2273431A1 (en) Model determination system
CN113139710B (zh) 一种基于遗传算法的多资源并行任务高级计划排程方法
Fernandes et al. Performance evaluation of software development teams: a practical case study
Yan Research on green suppliers' evaluation based on AHP & genetic algorithm
CN102226913A (zh) 一种自动生成Bug修复计划的方法及Bug修复方法
Turan et al. A quantitative decision model towards maximizing organizational sustainability
Dabbagh et al. An approach for prioritizing NFRs according to their relationship with FRs
CN113361980A (zh) 一种大数据资产价值评估的系统和方法
CN113962477A (zh) 一种产业电量关联聚集预测方法、装置、设备及存储介质
CN112784273A (zh) 一种sql风险识别方法、装置及设备
Yan et al. A case study for software quality evaluation based on SCT model with BP neural network
CN101546273B (zh) 一种预测软件过程执行时间的方法
CN110048886A (zh) 一种大数据分析任务的高效云配置选择算法
CN112184134B (zh) 网络计划合理性评测维度设计法、评测方法、系统、装置
Shikhli et al. Data Acquisition Model for Analyzing Schedule Delays Using KDD: Knowledge Discovery and Datamining
Lavazza et al. Defining and evaluating software project success indicators: A GQM-based case study
Doerner et al. Enriched workflow modelling and stochastic branch-and-bound
Jin et al. Prediction model of employee flow based on semi-markov chain and its application analysis
Shen et al. Coevolutionary scheduling of dynamic software project considering the new skill learning
Wang et al. Researching on quantitative project management plan and implementation method
CN113222233B (zh) 一种天然气多主体能源博弈分析方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20111026