一种群体软件开发过程仿真系统及方法与流程

文档序号:11432990阅读:222来源:国知局
一种群体软件开发过程仿真系统及方法与流程
本发明涉及一种群体软件开发过程仿真系统及方法,属于计算机软件与理论
技术领域

背景技术
:随着软件技术的迅猛发展,软件系统的规模日趋庞大、系统结构日益复杂,从时间上讲,大规模复杂系统的开发、部署以及维护的过程相当漫长,而且日趋艰难,从空间上讲,由于其在构造方面的结构复杂性,决定了在程序、数据、人员以及经济等方面持续不断的需求。海量规模的数据服务于广泛的利益相关者,超大规模的运算作业要求系统必须部署在较大数量的机群上,对异构性和分散度提出了更高水平的要求。而群体软件开发方法的出现为构建大规模复杂系统提供了解决方案。大规模复杂系统本身就是一个完整的群体软件开发项目,项目管理人员将项目拆分成若干不同类型的模块,每个模块可视为一场比赛,按照先后次序发布到互联网上,网民以自愿的方式选择是否参与比赛,并获得奖励,这是群体软件开发的核心机制。互联网上广泛的网民既是开发人员,也是比赛的参赛选手。较传统方法,群体软件开发方法以短时间、低成本、高效率的特点得到业内人士的广泛推崇。它的出现使得项目管理者不必局限于特定的开发团队,也不必受限于特定的地理资源,同时,这种新型的开发方法创造了一种新的就业途径,人力资源的潜能得到了更加充分的利用,有利于技术资源的有效发挥。对于群体软件开发方法,理论方面尚未形成完整的理论研究框架,缺乏统一的标准,导致无法评估群体软件开发项目的完成质量,也无法与其他方法开发出的软件制品进行比较;实践方面,项目管理人员仅仅根据历史经验发布项目,带有很大的盲目性,缺少有效的过程工具辅助管理人员对软件项目进行规划。很多知名企业和机构都尝试过将软件项目或者开发模块发布到群体社区,运用群体智慧找到软件产品的解决方案,然而,由于缺乏统一的评价标准和系统的结构方法,发布者和管理人员无法对完成的软件项目进行客观地评价,往往采取事后补救的方法解决开发时遗留的问题,导致后期不必要的资金投入和时间上的开销,同时由于开发人员的不确定性,后期的修补工作会影响软件系统的延展性和实用性。技术实现要素:本发明的技术解决问题是:克服现有技术的不足,提供一种群体软件开发过程仿真系统及方法,作为群体软件生产模拟平台,通过设定环境参数,辅助项目管理人员进行项目决策,减少投资成本,以提高软件项目质量。本发明技术解决方案:一种群体软件开发过程仿真系统,包括:参赛选手自主决策模块:每一位参赛选手都有自身的内在属性,通过历史参赛记录确定选手当前的状态,根据选手的类型确定选手的行为模式,当比赛发布后,收集所有参加该比赛选手的信息,利用参赛选手能力评价模块得到选手的获胜概率,选手根据当前状况决定是否参赛,最终的比赛结果又会影响选手的状态。此模块的输入是比赛类型、奖金和难度,以及选手类型、参赛记录、当前比赛的获胜概率,输出是选手的参赛决策,此结果作为软件项目质量评估模块的输入,每场比赛的结果最终会影响整个软件项目的质量。群体软件项目质量评估模块:利用比赛的基本信息得到比赛难度,结合比赛难度与比赛中出现的最高得分,依次评估单场比赛、单个开发阶段和整个软件项目的完成质量,建立完整的群体软件质量评估体系,结合项目整体的信息对参赛选手的比赛得分进行预测,完善质量评估模型。此模块的输入包括软件项目下比赛的基本信息及参赛选手的信息,输出是整个软件项目的完成质量,每场比赛的赛后结果作为参数输入到参赛选手能力评价模块中,用以更新选手的能力值。项目管理人员通过分析软件项目的完成质量,进行项目决策。参赛选手能力评价模块:参赛选手每参赛一次,其能力值和稳定性参数就会被更新。根据选手的能力值、稳定性参数及比赛中对手的能力值,可以得出竞争因子和相对获胜概率,再经过一系列运算,最终计算出参赛选手新的能力值和稳定性参数,此过程用于仿真系统中更新参赛选手能力的模块。此模块的输入是参赛选手当前的能力值、稳定性参数,当前比赛中其他选手的能力值及各个选手的实际排名,利用相对获胜概率可以得到选手在比赛中的获胜概率,将获胜概率作为该模块的输出,输入到参赛选手自主决策模块中。所述参赛选手自主决策模块实现过程:(1)定义选手参赛时的状态,分别为非常空闲、空闲、一般、忙碌和非常忙碌,通过对所有参赛选手的参赛信息进行分析,利用马尔科夫模型得到每位参赛选手的行为模式,找到具有相似参赛行为的参赛选手,集合为一类,聚类中心的状态转移矩阵和观测概率矩阵表示该类型选手的参赛行为模式,根据每位参赛选手的历史参赛行为,运行维特比算法得到当前状态;(2)对于每个类型的选手,计算他们处于各个状态下,参加不同类型、不同难度比赛期望收益的均值和标准差,进而得到选手在参赛时的最小期望收益和最大期望收益,针对特定的比赛,当期望收益处于该范围内时,选手参加比赛,反之,放弃参加;(3)项目管理人员发布比赛后,通过比赛奖金和选手获胜概率得到选手参加该场比赛的期望收益,进而判断选手的是否参与比赛。所述群体软件项目质量评估模块实现过程:(1)项目管理人员发布比赛的时候,根据比赛的奖金和、说明文档长度、说明文档内链接数、技术种类和比赛持续时间,利用高斯混合模型生成比赛难度;(2)选手决定参赛后,将比赛的信息包括比赛类型、奖金、难度、持续时间和参赛选手信息包括选手能力、对手能力和先前阶段完成质量输入到多元线性回归模型中,计算出参赛选手的得分;(3)从参赛的所有选手中选出最高分,作为该模块的最终解决方案,结合比赛难度得到单场比赛的完成质量,比赛难度与最高得分的系数通过赛后发布的bughunt比赛确定。软件开发的每个阶段有若干场比赛组成,当该阶段的比赛全部结束时,通过每场比赛的完成质量得到阶段的完成质量,进而得到整个软件项目的完成质量。所述参赛选手能力评价模块实现过程如下:(1)在选手没有任何参赛记录的时候,被暂时分配一个随机数作为初始能力值,稳定项参数默认值是340;(2)根据比赛中的参赛人数及其他选手的能力值计算该选手的竞争因子。对参赛选手进行两两比较,得到每两位参赛选手之间的相对获胜概率,通过相对获胜概率得到选手的期望名次,通过期望名次可以得到相对期望实力,根据选手在比赛中的实际名次,计算产生相对真实实力;(3)结合选手的当前的能力值、竞争因子、相对期望实力、相对真实实力,得到选手的绝对真实实力,同时利用选手的历史参赛次数得到选手的能力值更新权重。利用当前选手的能力值、更新权重及绝对真实实力生成新的能力值和稳定性参数;(4)针对同一场比赛中的参赛选手,汇总其相对于其他选手的获胜概率进而得到该选手在本场比赛中的获胜概率,这一概率值将用于参赛选手的决策行为中。一种群体软件开发过程仿真系统的具体步骤如下:(1)系统根据选手的参赛记录预置选手的能力值、稳定性参数、状态,通过对每一位选手行为模式进行聚类,得到选手类型用于能力评价模块,同时项目管理人员设置软件项目下每场比赛的类型、奖金、说明文档、技术种类要求、发布时间、持续时间,系统会根据项目每场比赛的信息得到整个项目的奖金总额、比赛总数、开始时间和结束时间,项目管理人员通过观察项目整体的信息,对项目下的比赛进行调整;(2)当比赛的发布日期到来时,系统发布比赛,调用选手自主决策模块,参赛选手根据比赛类型、难度、奖金和自身状态,结合比赛奖金和获胜概率得到期望收益,进而决定是否参赛;(3)系统调用群体软件质量评估模块,首先利用比赛的奖金和、说明文档长度、说明文档内链接数、技术种类和持续时间,得到每场比赛的难度。当选手选择参与比赛时,结合选手的能力值、对手的能力值及项目先前阶段的完成质量得到选手的得分;(4)在比赛结束后,根据比赛的最终结果,给相应的选手颁布奖金,将赛后选手的真实排名传递到能力评价模块,更新所有参与比赛选手的能力值和稳定性参数,选取比赛中的最高得分与比赛难度相结合,得到单场比赛的完成质量;(5)当项目中的比赛全部结束时,计算出整个软件项目的完成质量。项目管理人员通过观察和分析实验结果,调整项目计划,达到减少项目成本,提升项目质量的目标。本发明与现有技术相比的优点在于:(1)定义选手状态作为隐藏变量,在不同状态下采取不同的参赛决策,精细地描述选手的自主决策过程,选手状态反映其自身内部条件,又受到比赛结果的影响,可以更准确地解释选手的参赛行为,更有效地做出预测,达到还原真实场景的目的;(2)将所有选手根据其参赛行为进行分类,不同类型的参赛选手行为模式差异明显,同一类内部的选手具有相似的参赛行为。对每一位选手的参赛行为进行建模并且逐一生成的方法不仅计算量大,迭代过程难以收敛,而且极易使仿真过程受个体因素的影响,影响仿真整体效果。本发明对具有相似参赛行为的同一类型选手进行分析,缩小了模型的规模,减少了运算量,同时避免了个体主观因素对仿真实验的影响,有利于得到更为普遍的结论用于指导和辅助管理人员决策。(3)原始数据没有直接给出比赛难度,而比赛难度对于项目质量评估工作有举足轻重的意义。本发明根据比赛的基本信息,利用高斯混合模型计算产生相应的难度值。由于难度值未知,意味着没有训练样本数据,不可能通过监督学习的方法建立回归模型,只能从非监督学习的角度出发,而高斯混合模型作为聚类算法的一种实现,非常适合用于此类情况,且在样本容量较大时,高斯混合模型模型可以更快地收敛;比赛难度呈现连续分布而非离散分布,将其完全划分到某一聚类中心对应的难度等级是不合理的,而应当考虑样本与所有聚类中心之间的关系,这一点可以通过高斯混合模型的软分类实现。利用比赛的最高分、平均分及通过注册比对难度定义进行验证,此三项指标应与难度呈现负相关性,与利用传统k-means算法得到难度的方法进行比较如下表2,可以看出使用高斯混合模型的分类效果更好;表2不同聚类算法计算难度值的相关性验证比较(4)在对参赛选手得分进行预测时,现有的技术没有分析比赛类型、难度、对手能力以及先前阶段比赛的平均得分,本发明对不同类型的比赛分别讨论,同时考虑了比赛难度、对手能力以及先前阶段比赛的平均得分对选手得分的影响,与现有技术的比较如下表3,可以看到本发明的回归效果更好;表3本发明与现有技术模型的回归效果比较(5)软件质量的好坏取决于软件制品中defect的数量和规模,现有技术很难直接得到群体软件开发项目中defect信息,而项目管理人员会发布bughunt比赛寻找项目中的defect,因此该类型比赛的规模直接反映了群体软件项目的完成质量。另外,现有的技术仅仅利用比赛中的最高分描述比赛的完成质量,一方面,比赛只是软件项目下某一阶段的子模块,对单场比赛的质量评估并不能从宏观上分析整个项目的完成质量,管理人员仍然无法对项目整体做出规划,另一方面,单场比赛的最高成绩受参赛选手的能力及其他因素的影响,仅仅用比赛中出现的最高分衡量比赛的完成质量带有很大的主观性。本发明采用最高分与难度相结合的方法,通过赛后bughunt比赛的信息得到两者的系数,更加可靠,通过难度值加成的方法也广泛应用于锦标赛式的竞争活动中,充分证明了其合理性;从单场比赛完成质量到开发阶段完成质量,再到项目整体完成质量,按照此顺序评估软件质量符合软件开发过程的一般逻辑,同时每个阶段独立评估质量,有利于管理人员对项目进程做出及时调整,有效避免资金的浪费,提升整体完成质量。现有技术采用求取每场比赛最高得分的平均值得到项目的质量,将现有技术与本发明所使用方法得到的质量与bughunt比赛的奖金和、持续时间、说明文档长度三项指标做相关性分析如下表4,可以看出,项目质量与bughunt比赛三项指标的相关性更为明显,本发明使用的方法更能如实反映项目的完成质量。表4本发明与现有的质量评估方法相关性比较(6)在更新选手的能力时,考虑选手历史参赛次数,参赛次数较少的选手有较大的更新权重,有利于快速趋近选手的真实能力水平,而在选手多次参加的比赛后,其更新权重会减小,使选手的能力趋于稳定,从而大大减弱了失误或者超水平发挥等意外情况对选手能力评价的影响,这样得到的能力值更为客观,且更具有参考价值;(7)设置稳定性参数用于反映选手能力发挥的波动情况,更精确地描述选手在比赛中的表现,稳定性参数直接作用于竞争因子和相对获胜概率,进而考虑选手真实情况与期望结果的偏差,从而计算选手在比赛中的真实实力,更符合逻辑,也更切合实际情况。附图说明图1为本发明的组成框图;图2为图1中参赛选手自主决策模块的实现流程图;图3为图1中群体软件项目质量评估模块的实现流程图;图4为图1中参赛选手能力评价模块流程图。具体实施方式如图1所示,本发明包括参赛选手自主决策模块、群体软件项目质量评估模块、参赛选手能力评价模块。如图2所示,本发明中参赛选手自主决策模块具体实现如下:(1)从参赛选手的历史数据来看,参赛者主要关注某一种类型或者几种类型的比赛,对其他的类型则不甚关心。针对每一位参赛选手,提取其感兴趣的比赛类型,将这些类型下的所有比赛按照开始时间的先后顺序排序,标记参赛者参加过的比赛,得到参赛者的参赛记录。选手是否参加比赛跟自身状态有密切关系,定义选手的状态作为支配其参赛行为的隐藏变量。当选手空闲时,有充分的精力和时间参与比赛,而在选手忙碌的情况下,空余的精力和时间相对较少。定义状态集合为q={非常空闲,空闲,一般,忙碌,非常忙碌},r=5,选手参与比赛的观测集合定义为v={参加,缺席},m=2;(2)i是长度为t的状态序列,由i1~it组成,o是对应的观测序列,由o1~ot组成,p用于表示状态或者观测的概率,i={i1,i2,i3,…,it},o={o1,o2,o3,…,ot}式中:it是选手在t时刻的状态,ot是t时刻观测到选手的行为,1≤t≤t。a是由aij构成的状态转移矩阵,aij表示在时刻t处于状态it,并在时刻t+1处于状态it+1的概率:a=[αij]r×r式中:aij=p(it+1|it),i=1,2,…,r;j=1,2,…,r且b是由bj(k)构成的观测概率矩阵,bj(k)表示在时刻t处于状态it的条件下,生成观测ot的概率:b=[bj(k)]r×m式中:bj(k)=p(ot|it),k=1,2,…,m;j=1,2,…,r且π是由πi构成的初始状态概率向量,πi表示在时刻t=1处于状态i1的概率:π=(πi)式中:πi=p(i1),i=1,2,…,r且(3)更新参数a,b,π;式中:λ是a,b,π的集合,表示整个模型,记是对λ的估计值,是在估计下产生观测序列o的条件概率,是在估计下初始状态为i的概率,是在估计下t时刻处于状态i,t+1时刻处于状态j的概率,是在估计下t时刻处于状态i的概率,是在估计下t时刻处于状态j的概率,i(ot)是在t时刻生成观测ot的概率,1≤t≤t;(4)重复执行(3),直至不再变化,将每一位参赛选手的状态转移矩阵和观测概率矩阵作为一个样本x,选取nc个初始聚类中心设置阈值:k是预期聚类中心数,θn是每一类的样本数目下限,θs是类中样本的标准差上限,θc是聚类中心间的最小距离,l是迭代中合并操作的最大次数,w是迭代次数的上限;(5)将所有样本分配给最近的类,记作sj,设表示x到sj的距离最小,则x∈sj;(6)如果sj中的样本数|sj|<θn,则删除该类,nc减1;(7)修正各聚类中心,j=1,2,…,nc,nj是第j类的样本数量;(8)计算每个类中样本与聚类中心的平均距离;(9)计算全部样本的总平均距离(10)分裂与合并,若迭代次数超过i,令θc=0,转至(11),若转至(8),若迭代次数为偶数或者nc>2k,转至(11),否则转至(8);(11)计算每个类中样本距离的标准差,σj=(σ1j,σ2j,…σnj)t;(12)计算每个标准差中的最大分量σjmax=max{σj,j=1,2,…nc};(13)在任一最大分量集合中,同时满足:则将该类分解为两个类,重新计算各自聚类中心,转至(2),否则继续;(14)计算全部聚类中心的距离,dij=||zi-zj||,i=1,2,…nc-1,j=1,2,…nc。将dij按距离递增排列;(15)将距离为dij且dij<θc的聚类中心zi和zj合并,得到新的聚类中心,标记为第i类,式中:nj是第j类的样本数量;(16)若为最后一次迭代,转至(17),否则转至(5);(17)用聚类中心点的状态转移矩阵和观测概率矩阵表示该类型参赛选手的行为模式;(18)对具有相同行为模式的参赛选手,分别计算他们在不同状态时,参加不同类型、不同难度比赛时的期望收益,选手i参加比赛j的期望收益gij为:gij=wp′iwj式中:wp′i是选手参赛的获胜概率,wj是比赛j的奖金和;(19)计算gij的均值和方差,得到关于期望收益的取值区间,当比赛对于参赛选手的期望收益在区间内时,选手选择参加比赛,反之放弃比赛。如图3所示,本发明中群体软件项目质量评估模块具体实现如下:利用比赛奖金和、说明文档长度、说明文档内链接数、技术种类和比赛持续时间五个指标来定义比赛难度,这些指标均与难度呈现正相关,例如可以认为开发时间越长的比赛,其难度也越大,构造高斯混合模型,生成比赛难度。(1)对每场比赛的各项数据做零均值标准化处理,m是高斯模型的个数,n是比赛总数,n(uj,cj)表示以uj为均值,cj为方差的高斯函数,1≤j≤m;(2)协方差矩阵cj设为单位矩阵,每个模型比例的权重αj=1/m,均值uj设为随机数;(3)令βij代表样本i属于第j个高斯模型的概率;式中:nj(xi;uj,cj)是样本xi在高斯函数n(uj,cj)中的分布概率;(4)更新每个模型的权重α、均值向量u、协方差矩阵c;(5)不断迭代步骤(3)、(4),直到每个模型的权重、均值向量、协方差矩阵不再变化;(6)将每个模型中均值向量的各属性值相加求和,并依据和的数值大小进行排序,确定每个高斯模型的难度等级,规定和最小的u所在的高斯模型难度等级为1,次小的难度等级为2,以此类推,和最大的高斯模型难度等级为5;(7)结合高斯混合模型软分类的性质,得到比赛难度,式中:ej是比赛j的难度值,βij是比赛j由第i个高斯模型生成的概率,ei是第i个高斯模型对应的难度等级;(8)选取比赛类型、奖金和、难度、持续时间及选手能力、对手能力和先前阶段的比赛平均分建立回归模型如下表,利用此回归模型预测选手得分;表1各阶段选手得分预测回归模型附注1:**表示0.01水平上显著相关,*表示0.05水平上显著相关,-----表示空值。(9)单场比赛的完成质量定义为:qc=x*sc+y*ec,α>0式中:qc是比赛的完成质量,sc是比赛中的最高得分,ec是比赛难度,x和y为系数,通常x=0.86,y=2.8,满足:(10)通过设置γ值,得出软件项目的完成质量,对软件质量和该项目下bughunt比赛的奖金做pearson相关性分析。每设置一次γ的值,都对应一个相关系数,设为λ,把γ作为自变量,λ作为因变量,通过多次实验绘制若干散点。运用二次曲线拟合函数以表示γ与λ之间的映射关系,设二次曲线的函数表达形式为λ=aγ2+bγ+c(a≠0),给定模型:λ=f(γ,β)式中:β为待定系数a、b、c的集合;(11)更新β:式中:jf是f(γ,β)对β的雅可比矩阵;(12)迭代执行(13),直到a、b、c的取值不再变化,取二次曲线在极小值点处取值作为γ的取值;(13)将软件质量与bughunt比赛的文档长度、持续时间做同样处理,分别得到二次曲线在极小值处的γ取值,最终γ取为三项指标对应γ的平均数;(14)各阶段完成质量为:式中:qp是特定阶段的完成质量,此阶段一共包含n场比赛,qi是该阶段内比赛i的完成质量;(15)整个软件项目完成质量为:式中:qproject是整个软件项目的完成质量,项目分为m个阶段,qpj是第j个阶段的完成质量,wpj是第j个阶段所有比赛的奖金总额。如图4所示,本发明中参赛选手能力评价模块具体实现如下:评估选手能力的初始参数见下表,表5评估选手能力的主要参数因素描述oldrating选手参加上同类型的上场比赛时的能力值volatility选手表现的稳定性参数count选手参赛次数(1)在选手没有任何参赛记录的时候,被暂时分配一个能力值作为初始值,计算平均能力值,式中:n是比赛的参赛人数,ratingi是选手i的能力值;(2)计算竞赛因子,式中:volatilityi是选手i的稳定性参数;(3)参赛选手i相对于参赛选手j的竞争力为:误差函数erf有如下形式:(4)选手i在比赛中的期望名次为(5)选手i的相对期望实力为式中:φ是标准正态分布的逆函数。(6)选手i的相对真实实力为式中:aranki是选手i在比赛中的真实名次,如果两位选手打成平手,名次取平均值;(7)选手i的绝对真实实力为:perfasi=oldratingi+cfi*(aperfi-eperfi)(8)本次比赛对参赛选手能力值的更新权重为:式中:counti是选手i的参赛次数;(9)更新选手i的能力值:(10)更新选手i的稳定性参数:(11)在某一场比赛中,选手i相对于所有其他参赛选手的获胜概率为:对所有选手的获胜概率做归一化处理,选手在比赛中的获胜概率wp′i计算如下:总之,利用群体软件开发方法解决大规模复杂系统所带来的软件危机,本发明提出完整的群体软件质量评估方法,建立参赛者自主决策机制,开发群体软件过程辅助仿真工具,帮助项目管理人员进行项目决策和管理,避免资源的浪费,提升群体软件项目完成质量,真正发挥出群体软件开发方法在解决大规模复杂系统时的优势,减少投资成本,以提高群体软件项目完成质量。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1