1.一种面向群体软件过程的开发人员推荐方法,其特征在于,具体包括如下步骤:步骤1、收集开发人员的历史注册数据;
步骤2、对开发人员的注册数据进行清洗,删除无效数据;
步骤3、按照时间顺序,整理开发人员的注册序列;
步骤4、针对开发人员注册序列进行隐马尔科夫模型HMM构建;
步骤5、利用开发人员注册的HMM模型判断开发人员是否有意愿参与即将进行的比赛;
如果“是”,则跳转到步骤6;如果“否”,则跳转到步骤11,不推荐该开发人员,结束;
步骤6、收集开发人员解决方案提交的历史数据;
步骤7、对开发人员的提交数据进行清洗,删除无效数据;
步骤8、收集获取群体软件开发比赛的难度信息和开发人员的能力水平信息;
步骤9、利用项目反应理论IRT模型构建预测开发人员提交行为的模型;
步骤10、判断开发人员是够有意愿提交软件开发比赛的解决方案,如果“是”,则跳转到步骤12——推荐该开发人员,算法结束;如果“否”,则跳转到步骤11——不推荐该开发人员,算法结束;
步骤11、不推荐相应的开发人员,结束;
步骤12、推荐该开发人员,结束。
2.根据权利要求1所述的一种面向群体软件过程的开发人员推荐方法,其特征在于,所述步骤4中,针对开发人员注册序列构建参赛预测模型HMM,具体如下:针对每名开发人员,获取其感兴趣的所有类型的全部比赛,并将所有比赛不分类别的按照开始时间先后顺序进行排列,标记此开发人员参与注册过的比赛;注册人员预期自己有一定空闲时间,或者是对比赛感兴趣;开发人员参与注册比赛的行为是最契合开发人员当前自身状态的行为,根据隐马尔科夫方法,首先定义参赛开发人员的状态集合Q和观测集合V:Q={非常空闲,空闲,一般,忙碌,非常忙碌},N=5 (1)V={参加,缺席},M=2 (2)然后通过Baum-Welch算法,分别针对目标开发人员的注册行为序列进行学习,开发人员的注册行为序列为:{参加,参加,…,参加,缺席,…}式样的观察状态的集合,通过Baum-Welch算法,获得隐马尔科夫模型的三个重要参数部分,即初始状态矩阵,状态转移矩阵和观测概率矩阵。
3.根据权利要求2所述的一种面向群体软件过程的开发人员推荐方法,其特征在于,针对开发人员注册序列构建参赛预测模型HMM,其构建步骤描述如下:步骤4.1、收集开发人员注册比赛的历史数据;
步骤4.2、针对开发人员注册数据进行筛选,删除无效数据;
步骤4.3、按照时间顺序,整理开发人员的注册序列;
步骤4.4、初始化隐马尔科夫模型参数:状态转移矩阵A,观测状态转移概率矩阵B,初始状态概率矩阵π;
步骤4.5、将开发人员比赛注册序列和初始参数带入模型,进行模型训练;
步骤4.6、训练模型直至收敛;
步骤4.7、输出模型收敛时参数A,B,π的值。
4.根据权利要求1所述的一种面向群体软件过程的开发人员推荐方法,其特征在于,所述步骤5具体包括:通过面向开发人员参赛行为的隐马尔科夫模型,预测在即将到来的比赛中,某一开发人员是否会参加比赛,涉及到隐马尔科夫模型的解码问题,采用维特比算法解决解码问题,应用维特比算法进行解码操作后,将得到某一位开发人员的状态序列:{空闲,空闲,忙碌,非常忙碌,…,一般,非常空闲};由于已知此开发人员隐马尔科夫的时间序列模型,因此知道最后一个状态的下一个最大可能转移状态,并随之根据观测概率矩阵得到在此次比赛中该开发人员的参加或者缺席情况。
5.根据权利要求4所述的一种面向群体软件过程的开发人员推荐方法,其特征在于,预测过程具体包括:步骤5.1、获取有效的开发人员注册行为序列;
步骤5.2、在注册行为序列中除去用于参赛预测测试的数据;
步骤5.3、根据隐马尔科夫模型训练流程针对剔除测试数据后的开发人员注册行为序列进行模型的重新训练;
步骤5.4、模型收敛,获取稳定状态时开发人员的注册行为模型以及参数A,B,π的值;
步骤5.5、根据开发人员注册行为的HMM模型和注册行为序列进行维特比算法初始化;
步骤5.6、根据维特比算法流程递推至收敛;
步骤5.7、输出开发人员的最佳状态序列;
步骤5.8、根据最终状态推测开发人员的下一状态;
步骤5.9、根据状态和观测矩阵得出开发人员参赛的预测值;
步骤5.10、提供用于测试的开发人员注册数据;
步骤5.11、结合开发人员注册行为的测试数据和开发人员参赛预测值,判断两者是否一致。
6.根据权利要求1所述的一种面向群体软件过程的开发人员推荐方法,其特征在于,所述步骤9中,利用项目反应理论IRT模型构建预测开发人员提交行为的模型,开发人员注册比赛后提交作品,其目标是确定开发人员的能力是否可以通过完成比赛的情况反应出来,根据Rasch的项目反应理论模型:P(θ)=1/(1+e^(-(θ-d))) (3)P(θ)指能力为θ的个体正确回答难度为d的题目的概率;
具体如下:
步骤9.1、获取开发人员提交软件解决方案的历史数据;
步骤9.2、根据比赛类型,针对开发人员的作品提交历史数据进行筛选,删除无效数据;
步骤9.3、从属于拥有完整软件过程的软件项目中开发比赛中抽取其中的50%作为测试集,跳转到步骤9.5;
步骤9.4、建立表示比赛和开发人员作品提交一一对应的数据矩阵,跳转到步骤9.6;
步骤9.5、针对测试集中所包含的软件开发比赛,获取其对应的比赛难度值;
步骤9.6、将比赛难度值和比赛-开发人员提交作品矩阵的数据代入项目反应理论的Rasch模型,进行参数向量的训练。