首页 > 文章中心 > 正文

探求软件项目管理中资源调度

探求软件项目管理中资源调度

伴随计算机硬件水平的飞速提高,软件的适用范围也日益庞大,其算法复杂度也越来越高。若在研发过程中缺少及时有效的管理,将会造成研发进度难以控制以及软件维护困难、可靠性不佳等情况。为了使得项目的研发能够依照预定的进度完成,就必须规范研发过程,实施有效的管理。

1项目资源的构成

在项目的研发过程中,其资源包括硬件、软件和人力资源等。其中人力资源是最为关键的资源,而对人力资源的调度和配置贯穿于整个进程。人员管理是否恰当在软件项目的完成质量中起到决定性作用。软件项目资源调度的核心问题就是管理者在完善计划的时候选择正确人员在正确的时间去完成正确的工作。在研发过程中,常会遇到的问题是现有人员无法满足项目各阶段的人力或技术需求,而一些阶段的研发进程还会受另一阶段的人员经验技能所影响。所以软件项目中人力资源调度的问题其实是属于资源受限条件下的项目调度问题。这一类问题均可以看作是复杂的生产调度类问题,因要同时处理资源和时序两方面约束,故加大了这一类问题求解难度。在项目调度问题中,项目是由一系列彼此联系的工作组成,这种关联状态在每一个工作包的执行先后次序上有所体现。每项工作是由几种模式组成,是指完成工作所必须的资源和工期的组合。此类问题的解是在满足时序和资源两方面约束的条件下,每种工作的起始时间和结束时间的调度方案,这种方案的生成应该满足目标函数的最优解。

2资源调度系统处理分析

在项目计划中,研发任务的调度工作是由项目负责人做出的,主要表现在以下两个方面:一是将这些工作包分配给对应的技术人员,如系统分析人员,软件编码人员、硬件人员、测试及集成人员等。二是依照项目开发计划将整个项目分解成若干个可以独立执行的任务包。对于整个软件项目研发过程存在一定的先后次序,通常包括:方案论证阶段、设计评审阶段、系统设计及模块编码阶段、单元测试和联试阶段等一系列任务,并且这些任务有其工作时间,而研发人员虽然具备多种技能,但也有相应的任务,人员无法超负荷工作。

3项目中的资源调度问题

人力资源调度问题在典型项目中可描述为:项目中存在有L种资源和n+1项活动;一些活动间具有紧前关系,i活动在其任一种紧前活动(jPi为活动i的紧前活动集)完成前不能够启动,任一时间段内其使用量不能大于供应量。

4构建算法

根据在项目进程中,假设存在m个人员,人员具有不同的技能,即每个人员具备多种技能可完成多项任务,把项目划为n个任务包,需要m个人员研发,将这m个人员分入n个任务包中,使整个项目在约束条件被满足的情况下研发时间最短,并恰当安排各项任务的开始时间和研发顺序。算法运算的过程如下:步骤1:随机产生n个个体组成初始种群,对其进行初始化;步骤2:判断是否满足终止条件,若是,则转入步骤7;步骤3:分别求出每个个体的适应度,根据算法进行自适应调整;步骤4:进行选择运算;步骤5:进行交叉算子及变异算子的运算,得到子代种群;步骤6:判断是否有个体更新,若连续50代没有更新,则增大一倍种群数目,转入步骤2;步骤7:满足终止条件,输出结果;否则转入步骤3。算法的伪代码可以描述如下:ProcedureSGAInitializeP(0);//初始化种群t=0;//t表示的进化代数的计数器While(t<T)do//对种群中的个体进行操作ForI=ltoMdoEvaluatefitnessofP(t);//计算个体的适应度EndforForI=1toMdoSelectoperationtoP(t);//选择操作EndforForI=ltoMdoCrossoveroperationtoP(t);//交叉操作EndforForI=ltoMdoMutationoperationtoP(t);//变异操作EndforForI=ltoMdoP(t+1)=P(t);//通过自然选择行成新的种群Endfort=t+l:endwhile得到每个开发人员的任务熟练程度矩阵:式中SLDij表示第j个开发人员对第i个任务的熟练程度,通过下面的计算公式可以得到人员的熟练程度数值:其中0<≤10-6。依据熟练度矩阵,给定能满足任务i的开发人员集Mi={rj|SLDij>i,0<i≤1,1≤j≤m}。其中i为任务i对熟练度要求的系数,是根据具体任务的情况和经验来确定。

作者:张搴林樊亮单位:中国电子科技集团公司第二十八研究所