基于活跃时间分组的软件众包工人选择机制

2019-08-01 01:57周壮余敦辉张万山王意
计算机应用 2019年2期

周壮 余敦辉 张万山 王意

摘 要:针对现有的软件众包工人选择机制对工人间协同开发考虑不足的问题,在竞标模式的基础上提出一种基于活跃时间分组的软件众包工人选择机制。首先,基于活跃时间将众包工人划分为多个协同开发组;然后,根据组内工人开发能力和协同因子计算协同工作组权重;最后,选定权重最大的协同工作组为最优工作组,并根据模块复杂度为每个任务模块从该组内选择最适合的工人。实验结果表明,该机制相比能力优先选择方法在工人平均能力上仅有0.57%的差距,同时因为保证了工人间的协同而使项目风险平均降低了32%,能有效指导需多人协同进行的众包软件任务的工人选择。

关键词:软件众包; 协同开发; 众包工人选择机制; 协同工作组; 活跃时间

中图分类号: TP311.52

文献标志码:A

Abstract: Concerning the problem that existing software crowdsourcing worker selection mechanisms do not consider the collaboration among workers, a crowdsourcing worker selection mechanism with bidding model based on active time grouping was proposed. Firstly, crowd-sourced workers were divided into multiple collaborative working groups based on active time. Then, the weights of the working groups were calculated according to the development capabilities of the workers in the group and collaboration factors. Finally, the collaborative working group with the highest weight was selected as the optimal working group, and the most suitable worker from this group was selected for each task module according to the complexity of the module. The experimental results show that the proposed mechanism has a gap of only 0.57% in the average worker ability compared to the ability only allocation method. At the same time, it reduces the project risk by an average of 32% due to the ensurence of the cooperation between workers, which can effectively guide the selection of workers for multi-person collaborative crowdsourcing software tasks.

Key words: software crowdsourcing; collaborative development; crowdsourcing workers selection mechanism; collaborative working group; active time

0 引言

隨着经济全球化和互联网技术普及化,软件开发不再局限于一个小型、孤立的开发者群体,而越来越多地由一个组织和社区中的多人合作完成[1],跨越时间、地域、组织限制的协同工作方式已经成为一种趋势,由此诞生了一种基于互联网的新兴软件开发模式——软件众包[2]。

众包的特点使得企业可以用相对较低的成本获得全球化的劳动力资源和更多的创造力,从而帮助企业显著降低开发成本,缩短任务的完成时间[3-4],但同时,由于参与众包的人员没有固定的合作关系,无法建立协同开发环境,因此软件众包任务的完成质量难以得到保证。诸多文献[5-8]指出软件众包任务模块间无法避免地存在依赖关系,若无法确保工人之间的协同工作,可能会导致软件开发效率不高、软件质量低下。Bandinelli等[9]指出,由于软件开发具有协作性,开发成功与否依赖于“建立在开发团队中的通信渠道的质量和效果”。还有研究表明,通过众包进行软件项目开发的风险主要为团队协作相关的风险,原因是众包从根本上改变了原有的组织状态,而项目管理方法和信息交流通道没有进行相应完善[10]。由此可见,如何保证众包工人之间的协同一直是众包软件开发中亟待解决的迫切问题之一。

目前已有许多商业众包平台提出了软件众包的解决方案。例如,TopCoder、Bountify等平台采用在线竞争的方法完成众包开发任务分配,将任务组织为竞赛,根据社区对任务提交的同行评审(peer review)来选择获胜者(和亚军)[1]。该方法使用竞争机制保证任务完成质量,但它默认任务是独立的、无需协同的组件开发任务,同时某些开发周期长的竞争任务将会给落选者造成较大的损失,因此,该方法只适合微型、短期的开发任务,且从提交的大量任务中选取优胜者也是一项困难和耗时的工作[11]。而GetACoder、猪八戒、码市、解放号等平台采用竞标模式选择众包工人。该方法实现了众包平台与工人的双向选择,有助于达成稳定雇佣关系,适合各种规模的开发任务,但任务发布者需要浏览大量竞标信息并进行人工的比对选择,工人是否可以协同工作完全由人工选择决定,时间、人力成本相对较高。在学术界,也有众多学者积极展开这方面研究。例如,施战等[12]提出基于用户可靠性的任务分配机制,该机制假定众包任务难度是一致的,仅考虑工人的可靠性;但软件开发任务难度差别较大,必须考虑工人的开发能力。Mao等[13]提出使用历史数据训练分类模型,基于待分配任务与历史完成任务的静态属性之间的相似度进行任务分配;但该方法仅考虑了个人与待分配任务的匹配程度,未考虑多人协作开发同一任务时如何匹配的问题。Shao等[14]将神经网络和基于内容过滤的方法相结合来推荐开发者;但过分依赖于固有属性,没考虑到开发者动态变化的开发能力。Zhu等[15]提出基于主题特征的排序方法对工人能力进行排序,从而完成工人推荐,但未考虑到工人间如何协作的问题。Wang等[16]基于能力提升模型实现开发者的推荐,但也局限于单个工人完成单个任务的情形。

上述研究大多僅关注了任务和工人个体间的配对,更多考虑的是在任务发布阶段对任务进行分解以保证任务的独立性[2],但均未能进一步提出有效方法来确保众包工人之间协同工作。软件众包间的协同方式大致可以分为两类:一是工人间通过交换和正确处理结构化文档进行的形式化协同;二是工人间自由交换有结构或无结构的信息进行的非正式协同[17]。相较而言,第二种方式对任务发布方和工人的要求较低,同时因为自由的交互,他们的行为受到彼此的影响,使得合作者们能相互理解协同地工作[10],这样更能充分发挥群体智慧的优势,因而更加适合众包的开发模式。在空间上,基于互联网的众包环境拥有实现协同所要求的通信基础,无需众包工人集中在指定地点工作;而在时间上,由于众包群体的不确定性,很难保证一致的工作时间。同时,大多数参与众包的人群属于兼职,只能在一天中的某些特定时段活跃在线进行众包工作,因而选择出活跃时间尽可能相近的众包工人是实现软件众包中协同的关键点。

因此,为了解决现有众包软件开发对协同开发考虑不足的问题,综合众包方式与传统协同开发的优势,进一步提高众包软件质量和开发效率,本文在竞标模式的基础上综合考虑工人能力和协同程度,提出了一种基于活跃时间分组的软件众包工人选择机制,该机制综合考虑各分组的工人能力和可协同程度,为众包软件任务挑选出最合适的工人集合。最后,本文通过实验验证了所提出方法的可行性和有效性。

1 问题模型

1.1 相关定义

本文研究的软件众包系统基于竞标模式,软件众包工作流程如图1所示。首先,任务发布方将软件众包任务相关信息提供给众包平台,众包平台负责对任务进行需求分析,并按功能和工作量为任务划分不同模块,而后将任务标记为可报名状态;然后,众包工人选择自身条件符合要求且感兴趣的任务进行报名;当某个任务满足分配条件后,众包平台将为该任务选择出一批最合适的工人,并将任务中的每个模块具体分配给一名工人。这一批工人将作为一个工作组协同完成开发任务。各个工人完成自己的模块开发后将代码提交至众包平台,平台交由专人与开发者协调沟通并将各模块进行整合,最终形成完整的解决方案交付给任务发布方。

5 结语

针对软件众包中难以保证众包工人间协同的缺点,本文提出了一种基于活跃时间分组的工人选择机制。首先提出了协同工作组构建算法,将报名的工人按活跃时间划分为多个协同工作组;然后综合工人能力和协同因子计算各个协同工作组权重,接着选择出权重最优的协同工作组并完成组内分配;最后,通过在真实的软件众包工人数据集上的实验,验证了所提出机制可以选择出高能力且能协同工作的工人,并能有效地降低软件众包项目的开发风险。下一步的工作主要可以从两方面展开:一是软件众包平台同时存在多个任务且单个工人同时报名多个任务的情况下,解决多任务多工人的分配问题;二是融合进时间、成本、交付形式等多种因素进一步优化工人选择。

参考文献:

[1] BEGEL A, BOSCH J, STOREY M-A. Social networking meets software development: perspectives from GitHub, MSDN, stack exchange, and TopCoder [J]. IEEE Software, 2013, 30(1): 52-66.

[2] STOL K-J, FITZGERALD B. Twos company, threes a crowd: a case study of crowdsourcing software development [C]// ICSE 2014 Proceedings of the 36th International Conference on Software Engineering. New York: ACM, 2014: 187-198.

[3] VUKOVIC M, LAREDO J, RAJAGOPAL S. Challenges and experiences in deploying enterprise crowdsourcing service [C]// ICWE10Proceedings of the 2010 International Conference on Web Engineering, LNCS 6189. Berlin: Springer, 2010:460-467.

[4] ZHANG L, ZHANG H. Research of crowdsourcing model based on case study [C]// Proceedings of the 2011 International Conference on Service Systems and Service Management. Piscataway,NJ:IEEE, 2011: 1-5.

[5] STOL K J, FITZGERALD B. Researching crowdsourcing software development: perspectives and concerns [C]// CSI-SE 2014Proceedings of the 2014 1st International Workshop on Crowdsourcing in Software Engineering. New York: ACM. 2014: 7-10.

[6] PENG X, BABAR M A, EBERT C. Collaborative software development platforms for crowdsourcing [J]. IEEE Software, 2014, 31(2): 30-36.

[7] DWARAKANATH A, CHINTALA U, SHRIKANTH N C, et al. CrowdBuild: a methodology for enterprise software development using crowdsourcing [C]//CSI-SE 15 Proceedings of the 2015 2nd International Workshop on Crowdsourcing in Software Engineering. Piscataway,NJ:IEEE, 2015: 8-14.

[8] TAJEDIN H, NEVO D. Determinants of success in crowdsourcing software development [C]// SIGMIS-CPR 13Proceedings of the 2013 Annual Conference on Computers and People Research. New York: ACM. 2013:173-178.

[9] BANDINELLI S, NITTO E D, FUGGETTA A. Supporting cooperation in the SPADE-1 environment [J]. IEEE Transactions on Software Engineering, 2002, 22(12): 841-865.

[10] 梁路,汤庸.协同软件工程概述[J].计算机集成制造系统,2003,9(S1):1-5. (LIANG L,TANG Y. Overview on collaborative software engineering[J]. Computer Integrated Manufacturing Systems, 2003, 9(S1):1-5.)

[11] FU Y, CHEN H, SONG F. STWM: a solution to self-adaptive task-worker matching in software crowdsourcing [C]// Proceedings of the 2015 International Conference on Algorithms and Architectures for Parallel Processing, LNCS 9528. Cham: Springer, 2015: 383-398.

ICA3PP 2015: [12] 施战,辛煜,孙玉娥,等.基于用户可靠性的众包系统任务分配机制[J].计算机应用,2017,37(9):2449-2453. (SHI Z, XIN Y, SUN Y E, et al. Task allocation mechanism for crowdsourcing system based on reliability of users [J]. Journal of Computer Applications, 2017, 37(9): 2449-2453.)

[13] MAO K, YANG Y, WANG Q, et al. Developer recommendation for crowdsourced software development tasks [C]// Proceedings of the 2015 IEEE Symposium on Service-Oriented System Engineering. Washington, DC: IEEE Computer Society, 2015: 347-356.

[14] SHAO W, WANG X, JIAO W. A developer recommendation framework in software crowdsourcing development [C]// Proceedings of the 2016 Software Engineering and Methodology for Emerging Domains, CCIS 675. Singapore: Springer, 2016: 151-164.

[15] ZHU J, SHEN B, HU F. A learning to rank framework for developer recommendation in software crowdsourcing [C]// Proceedings of the 2015 Asia-Pacific Software Engineering Conference. Washington, DC: IEEE Computer Society, 2016: 285-292.

[16] WANG Z, SUN H, FU Y, et al. Recommending crowdsourced software developers in consideration of skill improvement [C]// Proceedings of the 2017 32nd IEEE/ACM International Conference on Automated Software Engineering. Washington, DC: IEEE Computer Society, 2017: 717-722.

[17] BISCHOFBERGER W R, KOFLER T, MATZEL K-U, et al. Computer supported cooperative software engineering with Beyond-Sniff [C]// Proceedings of the 1995 Software Engineering Environments. Washington, DC: IEEE Computer Society, 1995: 135-143.

[18] 高銘, 王毅. 众包项目风险评估模型研究[J]. 管理现代化, 2016, 36(3):105-107.(GAO M,WANG Y. Research on risk assessment model of crowdsourcing project [J]. Modernization of Management, 2016, 36(3):105-107.)