APP下载

基于能力匹配的异地敏捷开发任务分配方法①

2020-04-24叶上华姜继娇

计算机系统应用 2020年4期
关键词:效用异地分配

叶上华,殷 茗,杨 益,姜继娇

1(西北工业大学 计算机学院,西安 710072)

2(西北工业大学 软件学院,西安 710072)

3(西北工业大学 管理学院,西安 710072)

异地敏捷开发已成为软件企业开发项目IT 策略的一部分[1],这种开发可能在一个单独项目中涉及到多个地点,或软件开发周期中一部分的服务提供者[2].敏捷方法已存在多年,通过使用迭代和增量方法为业务增加价值,其中软件开发人员处理小模块并响应用户不断变化的业务需求,并在价值、原则和实践方面为软件工程带来了重大变化.因此,敏捷方法通过接受“反馈和变化”以及“拥抱而不是拒绝更高的变化率”来提供灵活性以及对软件开发过程的严谨性[3].近年来,敏捷方法在全球化环境中越来越受到重视,其低成本,早期产品交付和高质量产品等多种优势使得异地敏捷开发成为当下诸多企业积极探索的趋势.然而,一些研究指出,由于异地敏捷开发存在文化差异、时间差异、地理分布等诸多特征[4],在全球分布式环境中采用敏捷方法会带来重大挑战,尤其是一些敏捷原则和实践强调近距离、面对面交互.敏捷开发实践需要频繁地非正式通信,例如每日站立会议,以便管理项目并实现Scrum 的效果,当成员在地理上分散时,知识共享难以实现、非正式沟通很难进行[5].任务分配作为软件项目的基础活动,是异地分布式敏捷软件开发中的关键环节[1],分配决策需要考虑多方面因素,任务分配可减少异地敏捷团队之间的沟通成本,使团队成员能把大部分精力投入到软件开发[6].

目前,研究者们对任务分配的研究大多主要集中在人工智能领域,如多Agent 系统[7]、机器人[8]等.任务分配的目的,是为了合理配置现有资源,不同应用需要不同的任务分配机制.现有研究[8,9]大多致力于集中式任务分配,未考虑异地敏捷团队的分布式的能力和资源.例如Butler 和Heys[10]提出了基于行为和拍卖的任务分配方法,行为方法提出了高中低的自重构团队行为及六个任务行为,采用动机函数平衡不同行为完成任务布置,拍卖方法解决任务分配中的行为交互,及添加额外交互行为.Pendharkar[11]提出了启发式蚁群的任务分配优化方法,分析了约束任务分配的线性整数规划及其松弛规划、低限制拉格朗日松弛,提出了约束任务分配的迭代启发式贪婪及基于启发式蚁群算法的约束任务分配模型.Wilson 和Quigley[12]提出了可靠性增长的任务分配模型,从项目风险视角出发,以成本和时间为约束,识别和设计系统开发可能的任务弱点,从成本、时间测试系统可靠性,建立多属性效用函数,构建可靠性增长任务分配模型.上述研究虽然分别解决了任务布置和行为交互、约束任务分配及风险视角任务分配问题,但普遍忽略了任务与异地团队的多属性能力匹配.

异地敏捷软件开发中的任务要分配给异地团队,这些异地团队具有不同的能力和资源来完成这些任务,因此需要考虑异地敏捷环境的多个决策属性.现有学者已经对此展开了初步研究.Duggan 等[13]认为软件构建中的任务分配需要考虑多个目标,包括成本、缺陷数量、完成时间、员工使用与客户满意度等,采用演化算法和遗传算法进行多目标任务分配可以达到优化效果.Ruano-Mayoral 等[14]提出了一个全球开发项目任务包二阶段分配框架,提出了任务分配的决策影响因子,包括可用性和能力;Almeida 等[15]提出了一个异地分布式开发认知映射和MACBETH 的多维决策模型,其中决策因子包括成本、分布水平、文化差异水平、团队年龄、团队技能适应性、沟通有效性、沟通频率、协作控制水平等.Lamersdorf 和Münch[16]提出了全球软件开发的一个客户化多维需求任务分配模型,运用了改进Bokhari算法,该模型在多个典型假设场景和实际分布决策问题获得了应用效果.张立等[17]提出半自治多Agent 任务分配方法,将心智模型与扩展合同网机制结合,并扩展了合同网机制包括发标优选、竞标报价与多Agent 任务分配过程.另外,殷茗和马静[18]提出了基于多任务优先算法的异地软件开发任务分配模式,该研究主要关注异地分布式软件分配的优先权属性.

上述研究为本研究提供了很好的研究借鉴,但是没有考虑任务与团队的多属性能力匹配,对异地敏捷团队的任务分配效用没有聚焦.本文充分考虑了异地敏捷开发的特征和挑战,首先提炼出该环境下的子任务能力需求属性和团队能力属性,包括了技术能力、协调能力、创新能力和敏捷开发能力;其次,在整数线性规划的基础上提出了基于能力匹配的效用函数,分别求解出了任务和团队的能力匹配效用值;再次,以全局效用最大化为目标,采用匈牙利算法求解出了最优的任务分配方案;最后,通过算例仿真验证了方法的有效性,从而为异地敏捷软件开发任务分配的决策实践提供理论依据.

1 基于能力匹配的异地敏捷开发任务分配方法

1.1 问题描述

假设异地敏捷开发中待分配的任务已经分解为n 个子任务 Ti(i=1,2,3,···,n),参与项目开发的n 个团队Pj(j=1,2,3,···,n),由多个异地团队通过敏捷开发方式协作完成目标任务T.不同的子任务 Ti对 团队 Pj有不同的能力要求,而团队 Pj有自己的能力,团队选择不同任务产生的效用不同.效用函数就是用来评价任务和团队的匹配程度的函数.因此,本文在根据任务能力需求属性和团队能力属性的基础上,利用效用函数将任务分配给最合适的团队执行,从而实现全局最优.

异地分布式无法支持敏捷开发所提倡的面对面的沟通与交流,由此出现了大量待解决的协作问题.协作是“管理活动之间的依赖关系”,这种依赖关系包括共享的资源、任务分配、任务和子任务之间的关系[19],团队协作、目标导向、团队内聚力、共享心智模式及团队学习等是影响软件开发的重要变量[20].敏捷方法是高度协作的,无论是在开发组内部还是在开发组之间.敏捷方法依靠非正式沟通而不是大量文档来快速传播整个团队和其他利益相关者的信息.没有高度协作的环境,任何敏捷方法都注定要失败.由于敏捷方法在很大程度上依赖于协作和沟通[21],因此团队是成功的关键.考虑异地敏捷开发协作特征,本文将协作能力作为任务和团队的重要能力属性.另一方面,异地团队开发的“敏捷性”,可以快速适应不稳定的市场环境和需求波动[22],即适应人员配置、程序设计、系统体系架构、软件开发流程和软件如何遵照业务调整和预算结构的变更[23].因此,将敏捷开发能力作为异地敏捷开发任务分配的能力属性.对于技术能力和创新能力的提出则是因为敏捷方法的最大影响在于开发团队.敏捷方法依赖于强大的开发团队,除了具备较强的沟通协作能力和敏捷开发的经验,开发团队还必须技术娴熟、思维活跃、善于变通,这不仅仅异地敏捷开发团队更是任何软件开发团队应该具备的优秀品质.根据上述分析,结合软件开发团队强调技术与创新能力的特征,本研究认为异地敏捷开发的子任务 Ti有4 个能力属性:协作能力、敏捷开发能力、技术能力和创新能力.采用能力需求向量表示各个能力的需求值,如式(1)所示.

与子任务能力属性相对应,异地敏捷团队 Pj拥有4 个能力属性:协作能力、敏捷开发能力、技术能力和创新能力.用能力拥有向量表示各个能力的拥有值,如式(2)所示.

1.2 基于能力匹配的效用函数

要实现整个系统优化,应当采用明确的标度度量任务分配结果,由此有必要分析基于能力匹配的效用函数.随着环境变化,任务需求能力和团队能力都随之变化,团队对子任务的胜任程度也相应变化[24],因此,基于能力匹配的效用需要重点考虑团队能力对任务所需能力的满足程度.任务和团队的能力匹配研究不仅可以最大程度地调动开发团队的工作潜能和主观能动性,还可以使项目完成实现效用最大化[25],从而使软件开发呈现良性循环的模式.效用函数 Uij是一个量化第j 个团队和第i 个子任务匹配度的函数.

本文主要研究异地敏捷开发的任务分配中任务能力需求度和团队拥有能力的匹配程度,分别包括技术能力、协调能力、创新能力和敏捷开发能力.与普遍情况下的软件开发任务分配不同,本文的效用函数充分结合异地敏捷开发的特点对能力类型进行严格筛选,考虑到异地敏捷开发技术较为先进、异地沟通成本大、采用敏捷开发的软件较为新颖和敏捷开发团队规模较小等因素,最终效用函数确定技术能力、协调能力、创新能力和敏捷开发能力这4 种能力为本文研究的主要能力,从而使得效用函数的使用更加符合异地敏捷开发的任务分配研究背景.Uij计算公式如式(3)所示.

1.3 效用矩阵求解

针对1.2 节所提出的基于异地敏捷开发的任务分配的效用函数所构成的效用矩阵求解,本文采用匈牙利算法求解效用矩阵问题.匈牙利算法作为求解指派问题的经典算法,在避免程序陷入无限循环的情况下,可以求得指派问题精确的全局最优解.无论是对普通的软件任务分配问题还是对结合异地敏捷开发特色的任务分配,该算法都有很好的适应性.效用计算步骤如下.

Step 1.从效用矩阵的每行最大匹配值减去该行元素,再从效用矩阵的每列最大匹配值减去该列元素.

Step 2.此时效用矩阵每行每列都存在零元素,需找出n 个独立的零.若能找出,就以这些独立零对应的效用矩阵中的匹配度为1,其余为0,得到最大效用值.当n 较小时,可用观察法、试探法找出n 个独立零元素.若n 较大,则需要按一定顺序去找,具体如下:

(1)从只有一个零的行(列)开始,给这个零加圈,划去画圈的列(行)中的其他零;

(2)给只有一个零列(行)的零加圈,然后划去加圈的元素所在行(列)的零;

(3)反复进行Step 2 中(1)、(2)两步,直到所有零都被圈出或划掉为止;

(4)若仍有没有画圈的零,且同行(列)的零至少有两个.从剩有零最少的行(列)开始,比较这行零所在列中零的数目,选择列中零最少的零加圈,然后划掉同行同列的其他零.反复进行,直到所有零都圈出或划掉为止;

(5)若画圈零元素的数目m 等于矩阵的维数 n,那么已得到效用值最大的分配结果;若m<n,则转下一步.

Step 3.做最少的直线覆盖所有零,以确定该代价矩阵中能找到最多的独立零.

(1)对没有画圈的行打对号;

(2)对已经打对号的行中有划掉零的列打对号;

(3)再对打有对号的列中含画圈元素的行打对号;

(4)重复Step 3 中(2)、(3),直到得不出新的打对号的行、列为止;

(5)对没有打对号的行画横线,对打对号的列画纵线,得到覆盖所有零的最少直线数.

Step 4.经过上述变换得到新的效用矩阵.在没有被直线覆盖的数中找出最小值,并对没划直线行的各数都减去该最小值,对划直线列的各数都加上该最小值,得到新矩阵,转Step 2.

2 算例仿真

本文的核心是研究异地敏捷开发环境条件下合理的任务分配过程,研究对象是敏捷开发任务和异地敏捷开发团队.传统人力处理任务分配,无法保证分配结果质量.本文提出的基于能力匹配的方法可以量化分配结果,保证全局最优解.为验证该方法的有效性,本研究在异地敏捷开发某购物网站项目为背景,利用效用函数进行任务分配案例仿真.仿真环境采用17.12 版本CodeBlocks,C 语言编程,在CPU 2 GHz、 4 GB 内存、256 GB 硬盘空间的64 位Windows 8 主机运行.前期采用问卷调查获取仿真初始数据.

2.1 实验仿真

数据采集通过问卷调查获取,以Likert5 级量表对异地敏捷开发任务能力需求度属性和异地敏捷开发团队能力属性进行打分.现将任务名称用任务标号来表示,如表1 所示,并做出如下规定:异地敏捷开发任务对技术能力,协调能力,创新能力和敏捷开发能力的需求值用(0,1],(1,2],(2,3],(3,4],(4,5]区间的右端点{1,2,3,4,5}表示,分值越高表示需要程度越高;同理,异地敏捷开发团队的技术能力,协调能力,创新能力和敏捷开发能力拥有值也用(0,1],(1,2],(2,3],(3,4],(4,5]区间的右端点{1,2,3,4,5}表示.最终数据如表2 和表3所示.

表1 任务标号和任务名称的对应关系

表2 异地敏捷开发任务能力需求数据

表3 异地敏捷开发团队能力数据

按式(4)进行效用值计算,首先求出异地敏捷团队和异地敏捷开发任务能力匹配时的效用值,再采用匈牙利算法对效用矩阵进行求解.采用C 语言编程,对实验结果用文本输出的方式表示.效用矩阵结果表4所示.

本文为数据处理方便,将效用矩阵乘以1000 后再按照匈牙利算法求最大值进行处理;式(7)是最终分配矩阵,1 表示分配,0 表示不分配.

表4 任务和团队组的效用矩阵结果

经过23 次迭代,式(7)为整体效用最高时的分配矩阵,最终分配方案为:任务1 和团队2、任务2 和团队3、任务3 和团队1、任务4 和团队6、任务5 和团队7、任务6 和团队8、任务7 和团队4、任务8 和团队5.

2.2 结果分析

异地敏捷开发项目匹配效用量化值如表5 所示,且效用值为4.837.效用值大小是由任务能力需求、团队能力及任务和团队的匹配程度来决定.计算后可以得出每一个任务和团队的匹配度的衡量标准都在0 到1 区间里取值,故而整体效用值理论上是在0 到8 之间.由此可得该算例的分配结果最高效用适中.

表5 匹配效用量化值

当前异地敏捷团队的能力值均高于任务能力需求值,可见并非能力越高的团队产生的效用越高,对于高能力团队接受低能力需求的任务时,同样是人才资源的浪费.只有任务和团队二者的能力刚好彼此满足时,才能产生较高的效用值.这为日后任务分解的改进或参与异地敏捷项目团队的调整给出理论性的依据.

效用值作为直接定量描述异地敏捷任务和异地敏捷团队分配方案质量的数值,其越大说明任务和团队能力越匹配,分配方案越合理.实际运用中,管理者应当在任务发布初期遵循效用值高的异地敏捷团队参与任务的原则进行团队选择,只有这样才会更高质量的完成任务.

3 结论

本文充分考虑了软件异地敏捷开发的任务分配特点,提炼出了异地敏捷开发环境下的任务能力需求属性和团队能力属性,创新性地提出基于能力匹配的效用函数,将分配结果量化表达,使任务分配给最适合的团队执行,达到了结果最优,从而产生效用最高的分配方案.通过算例验证本文任务分配方法的有效性.但由于效用函数是基于线性规划思想,对大规模的任务分配还缺乏普适性.异地敏捷开发在软件开发领域已然兴起,还有许多工作需要将来继续深入研究.

猜你喜欢

效用异地分配
呼和浩特市中心城区低效用地潜力分析
中医特色护理技术在老年高血压患者中的应用效用观察
1种新型燃油分配方案设计
图解跨省异地就医
Crying Foul
遗产的分配
高等院校对我国残疾人冰雪运动发展的效用研究
异地恋——闭上眼睛,你就在我身边
黑皮精灵异地
我会好好地分配时间