一种基于开发者画像的软件工程任务推荐方法与流程

文档序号:16784921发布日期:2019-02-01 19:21阅读:441来源:国知局
一种基于开发者画像的软件工程任务推荐方法与流程
本发明属于软件维护领域,特别是一种基于开发者画像的软件工程任务推荐方法。
背景技术
:在软件工程中有各种类型的软件开发与维护任务,如软件开发、测试等等,各个开发者的技能、经验等方面各有不同,所以如何给开发者分配合理的任务,提高软件维护的效率和准确性,是软件开发和维护领域的一大难题。而如今开源软件的开发以社区为存在形式,社区内的成员可以自由、开放的沟通,共享经验,参与协作,开发者本身会在很大程度上影响任务分配的结果。目前,已有一些技术用作任务推荐,如基于knn方法缺陷报告中通过潜在的主题和开发者的特征之间的相似关系来推荐最佳的缺陷修复者;基于内容推荐的方式计算复杂、推荐结果新颖性较差,另外由于大量新加入或者已加入的开发者由于没有参与过软件工程任务,将很难得到被推荐的机会,使得冷启动问题依然存在等;从静态特征挖掘开发者和topic的相似关系的方法,虽然能够实现为特定的topic推荐开发者,但并没有考虑到开发者的动态行为特征;通过对软件缺陷库的缺陷报告信息的综合运用,包括描述信息对开发者缺陷修复能力建模,根据状态更改记录构建开发者合作网络,衍生了基于度、主题以及二者混合的三种分配策略,共同组成了针对软件缺陷自动分配的开发者推荐方法,但是该方法缺乏对时间维度的考虑,忽视了开发者活跃度的改变,节点度大的开发者可能会工作过载。技术实现要素:本发明所解决的技术问题在于提供一种考虑开发者的动态行为特征和静态特征的软件工程任务推荐方法。实现本发明目的的技术解决方案为:一种基于开发者画像的软件工程任务推荐方法,包括以下步骤:步骤1、对软件工程任务进行文本分析,获取软件工程任务的描述文本、紧急程度e以及质量要求q;步骤2、对所述软件工程任务的描述文本进行自然语言处理,之后提取描述文本的主题词,并根据主题词确定软件工程任务关键词t;步骤3、对步骤1所述紧急程度e、质量要求q进行等级划分;步骤4、采集github和stackoverflow中的数据,并根据所述数据获取开发者画像,所述开发者画像包括技能s、活跃度a、贡献度c和信誉度r;步骤5、对步骤4所述活跃度a、贡献度c、信誉度r进行等级划分;步骤6、求取技能s和软件工程任务关键词t之间的相似度rdev,并求取每个开发者能完成所述软件工程任务的概率p;步骤7、根据上述等级划分后的紧急程度e、质量要求q、活跃度a、贡献度c、信誉度r和每个开发者能完成所述软件工程任务的概率p,对所有开发者进行优劣排序,选取最优的开发者完成软件工程任务。本发明与现有技术相比,其显著优点为:1)本发明通过两个网站github和stackoverflow的融合建立开发者画像,获得的开发者画像更全面、更准确;2)本发明获取的开发者画像存储了开发者的动态行为特征和静态特征,综合考虑这两个特征使得为开发者推荐的任务更合适,进而提高了软件维护的效率和准确性;3)本发明通过将软件工程任务模型与开发者画像进行匹配,能够评估出开发者的综合评价,从而获取软件工程任务更优的推荐对象,进而提高任务完成的效率和质量。下面结合附图对本发明作进一步详细描述。附图说明图1为本发明基于开发者画像的软件工程任务推荐方法的流程示意图。图2为本发明实施例中的软件工程任务图。图3为本发明实施例中任务描述文本图。具体实施方式本发明一种基于开发者画像的软件工程任务推荐方法,包括以下步骤:步骤1、对软件工程任务进行文本分析,获取软件工程任务的描述文本、紧急程度e以及质量要求q。步骤2、对软件工程任务的描述文本进行分词、词根还原、去掉停用词等自然语言处理,之后提取描述文本的主题词,并根据主题词确定软件工程任务关键词t,具体为:步骤2-1、随机设置阈值λ;步骤2-2、利用lda模型提取软件工程任务的描述文本的主题词以及每个主题词对应的概率;步骤2-3、对每个主题词对应的概率与阈值λ进行比较,将概率大于等于阈值λ的主题词作为软件工程任务关键词t。步骤3、对步骤1中的紧急程度e、质量要求q进行等级划分,具体为:(1)对紧急程度e进行等级划分为:(2)对质量要求q进行等级划分为:步骤4、采集github和stackoverflow中的数据,并根据数据获取开发者画像,开发者画像包括技能s、活跃度a、贡献度c和信誉度r。其中获取开发者画像具体为:步骤4-1、对github中的数据进行处理,具体为:步骤4-1-1、对github中的数据进行文本提取,提取readme.md、diff中的代码文本;步骤4-1-2、对readme.md进行自然语言处理,并通过命名实体识别技术、命名实体消歧技术提取单词或短语特征;步骤4-1-3、通过文本信息预处理技术提取diff中的代码文本中的api;其中文本信息预处理技术包括分词、词根还原、去掉停用词;步骤4-2、对stackoverflow中的数据进行处理,具体为:步骤4-2-1、对stackoverflow中的数据进行文本提取,提取answers中的描述文本、answers中的代码文本;步骤4-2-2、对answers中的描述文本进行自然语言处理,并通过命名实体识别技术、命名实体消歧技术提取单词或短语特征;步骤4-2-3、通过文本信息预处理技术提取answers中的代码文本中的api;步骤4-3、将github、stackoverflow处理后的数据进行数据融合,获得开发者画像。步骤5、对步骤4中的活跃度a、贡献度c、信誉度r进行等级划分,具体为:(1)对活跃度a进行等级划分为:(2)对贡献度c进行等级划分为:(3)对信誉度r进行等级划分为:步骤6、求取s和t之间的相似度rdev,并求取每个开发者能完成软件工程任务的概率p。其中,求取s和t之间的相似度rdev所用公式为:式中,|wordskill|为开发者技能的关键词,|wordtask|为软件工程任务的关键词,|wordskill∩wordtask|为开发者技能和软件工程任务的共同关键词。步骤7、根据上述等级划分后的紧急程度e、质量要求q、活跃度a、贡献度c、信誉度r和每个开发者能完成软件工程任务的概率p,对所有开发者进行优劣排序,选取最优的开发者完成软件工程任务。其中求取每个开发者能完成软件工程任务的概率p,所用公式为:p=пptask式中,ptask为每个开发者能完成软件工程任务关键词的概率。根据上述等级划分后的紧急程度e、质量要求q、活跃度a、贡献度c、信誉度r和每个开发者能完成软件工程任务的概率p,对所有开发者进行优劣排序,选取最优的开发者完成软件工程任务,具体为:步骤7-1、根据上述等级划分后的紧急程度e、质量要求q、活跃度a、贡献度c、信誉度r和每个开发者能完成软件工程任务的概率p,求取每个开发者完成软件工程任务的能力对应的权值wdev:式中,t为开发者当前的任务总量;θ为权值调整参数,其取值范围为0<θ<1;步骤7-2、对所有开发者的权值wdev进行降序排列,选取最大的权值对应的开发者作为最优开发者完成软件工程任务。实施例基于开发者画像的软件工程任务推荐方法,包括以下内容:步骤1、结合图2为stackoverflow上的一个问题,即是软件工程任务,目前还没有开发者回答该问题,对该软件工程任务进行文本分析得到任务的描述文本如图3所示。假设该任务的紧急程度为紧急,任务质量要求为一般。软件开发者为d1,d2,d3,d4,d5,其最近一个月的任务总量分别为t1,t2,t3,t4,t5。步骤2、对步骤1获得的任务的描述文本进行分词、词根还原、去掉停用词,之后利用lda模型提取软件工程任务的描述文本的主题词以及每个主题词对应的概率,设置阈值λ=0.08,将概率大于阈值λ的主题词作为软件工程任务关键词t。在本实施例中,获得的软件工程任务关键词t为:storage、seconds、time、calculate、fill、python-2.x、python、algorithm,其概率分别为0.12、0.1、0.08、0.15、0.1、0.12、0.11、0.09。步骤3、在本实施例中,假设任务紧急程度e的等级为紧急,则取值为3,任务质量要求q的等级为一般,则取值为1。步骤4、采集github和stackoverflow中的数据,分别对github和stackoverflow的信息进行数据处理,再经过数据融合得到开发者画像,开发者画像包括技能s、活跃度a、贡献度c和信誉度r。步骤5、本实施例中,对a、c、r进行等级划分如下:(1)对a进行等级划分为:(2)对c进行等级划分为:(3)对r进行等级划分为:步骤6、求取s和t之间的相似度rdev,所用公式为:式中,|wordskill|为开发者技能的关键词,|wordtask|为软件工程任务的关键词,|wordskill∩wordtask|为开发者技能和软件工程任务的共同关键词。本实施例中,获取的开发者d1,d2,d3,d4,d5画像中的技能如下表1所示,每个开发者对应的技能的概率如下表2所示,根据上述公式获得的rdev如下表3所示。根据公式:p=πptask求取出每个开发者能完成软件工程任务的概率p如下表4所示。表1开发者的技能表技能1技能2技能3技能4技能5技能6d1pythonalgorithmstoragejavasqlmysqld2storagemysqlc#c++d3algorithmswiftpython-2.xd4python-3.xctimed5pythonstoragec++calculate表2开发者的技能概率表p1p2p3p4p5p6d10.130.330.120.10.170.14d20.180.120.30.21d30.370.30.33d40.40.250.35d50.480.150.250.12根据公式:求取每个开发者完成软件工程任务的能力对应的权值wdev,其中t的取值为t1,t2,t3,t4,t5,θ为权值调整参数,其取值范围为0<θ<1。本实施例中求得的开发者d1,d2,d3,d4,d5的权值如下表5所示:表5开发者排序权值表teaqrcwdevd113331230.067θd218321110.0025θ2d325321310.019θ3d410311120.0231θ2d515321320.063θ3步骤7、根据wdev对所有的软件开发者进行降序排列,获得如下表6所示的排序列表:表6开发者排序表wdevd10.067θd20.0025θ2d30.0231θ2d50.063θ3d30.019θ3根据上表6,选取最优的开发者d1完成软件工程任务。本发明有效地结合了开发者完成软件工程任务的历史记录以及开发者画像的更新功能,从而实时推荐出最合适的完成任务的开发者,进而提高任务完成的效率和质量,提高软件维护的效率和准确性。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1