Software Engineering and Applications
Vol.07 No.02(2018), Article ID:24423,6 pages
10.12677/SEA.2018.72008

Study of Software-Process Framework Based on Crowd-Sourcing

Zhongxu Hu1, Yong Yu2

1Zhaotong University, Zhaotong Yunnan

2Yunnan University, Kunming Yunnan

Received: Mar. 23rd, 2018; accepted: Apr. 12th, 2018; published: Apr. 19th, 2018

ABSTRACT

As a new cooperation based on the Internet, crowd-sourcing is becoming more and more popular and accepted by more professions. It is an inescapable issue that how to lead crowd-sourcing into traditional software development process to enhance the development’s efficiency. The article describes crowd-sourcing. According to the features of crowd-sourcing, fundamental characteristics of the software process based on the crowd-sourcing mode are summarized. For studying software development in crowd-sourcing, the relationship between participants is analyzed primarily. Finally, giving the main activities and the software process framework based on crowd-sourcing, it can provide reference for design and development of crowd-sourcing platform.

Keywords:Crowd-Sourcing, Software Development Process, Process Framework

众包模式下的软件过程框架研究

胡忠旭1,郁湧2

1昭通学院,云南 昭通

2云南大学,云南 昆明

收稿日期:2018年3月23日;录用日期:2018年4月12日;发布日期:2018年4月19日

摘 要

众包作为一种基于互联网的新兴合作模式逐步流行,并被更多的行业接受。如何在传统的软件开发过程中引入众包模式来提高软件开发的效率,是软件工程必须面对的一个问题。本文根据众包模式下的软件开发的特点,给出了众包模式下的软件过程所具有基本特征;对众包模式下的软件开发主要参与主体之间的关系进行分析,给出众包模式下的软件过程所包括的主要活动以及众包模式下的软件过程框架,该框架可以为众包平台的设计开发提供参考。

关键词 :众包模式,软件开发过程,过程框架

Copyright © 2018 by authors and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY).

http://creativecommons.org/licenses/by/4.0/

1. 引言

目前,企业为了高效率低成本地开发出成功的产品并能够在市场上占有一席之地,必须寻找出新的创新途径。同时,随着经济全球化和互联网技术的日新月异,来自行业内外的竞争压力让企业不得不去开拓视野,以谋划更独特的创意以及进行更高效的生产。因此,作为一种基于互联网的新兴合作模式——众包(Crowd-sourcing)正在悄然流行 [1] 。

Howe Jeff于2006年6月首次提出了众包的概念,用来描述一种全新的商业模式。早在2005年我国学者刘锋就提出“威客”一词,侧重从计算机技术方面来阐释“众包”商业模式 [2] 。众包是指一个企业把过去由员工执行的工作任务,以自由自愿的形式外包给非特定的网络大众的做法 [3] 。企业利用互联网把需要完成的工作分配出去,可以通过互联网利用志愿者群体的创意和能力来以低成本方式发现创意或解决技术问题 [4] 。众包的参与主体包括发包方(任务请求人)、接包方(也称为任务完成人)和众包平台。发包方即任务的发布者,接包方是为任务做出贡献的非特定网络大众,众包平台则是发包方与接包方联系的中介 [5] 。

众包可以使发包方以更短的时间、更低的成本获得更高质量的产出 [6] ,随着“低成本,高回报”的优势越来越多的展现在人们面前,“众包”这种商业模式迅速扩张,尤其对于软件业和服务业,众包提供了一种组织劳动力的全新方式 [7] 。国外著名的软件众包平台包括TopCoder [8] 、App Store、uTest、GetACoder、Freelancer 等,国内也出现了任务中国、猪八戒等平台众包软件开发任务 [9] 。

如果能将“众包”商业模式的精髓与软件开发模式创新结合起来,会有助于软件开发企业以低成本满足客户多样化的需求运作模式,充分发挥客户价值,增强企业竞争力。但是,研究表明在软件项目中不同的人员从事相同的任务其生产效率差距可达10~40倍 [8] 。目前软件任务分配一般都是在一个企业内部,管理人员对员工相对比较熟悉,包括员工的专业方向、技术水平、性格等,并且企业员工相对比较稳定。

然而,目前的问题是,在“众包”模式下,接包方数量不固定,发包方给出的任务数量未知,同时接包方对于发包方来言是透明的。这种情况导致众包平台上开发者浪费大量的时间、精力去选择自己兴趣和能力相符的任务;同时开发者和任务的不匹配又导致任务不能按时完成或者完成质量低下。因此,如何让众包平台即网络平台能够提出一个智能推荐系统框架,可以依据发包方的任务需求和开发者特长的不同而相对合理地将任务特别是复杂软件项目推荐给合适的接包方即软件开发者或者开发团队,这对确保软件众包项目成功具有重要意义。

2. 软件众包

众所周知,软件开发的成本中70%是人力资源成本,所以,降低人力资源成本将有效地降低软件开发的成本。研究表明在软件项目中不同的人员从事相同的任务其生产效率差距可达10~40倍 [9] 。高效率低成本地开发出客户满意的软件产品一直以来都是软件工程追求的目标。在过去,人们利用软件外包来降低软件开发成本,所谓软件外包就是软件开发企业为了专注核心竞争力业务和降低软件项目成本,将软件项目中的全部或部分工作发包给提供外包服务的企业完成的软件需求活动。软件外包已经成为发达国家的软件公司降低成本的一种重要的手段。

传统的外包是指以合同的形式把任务委派给指定的人或者机构完成.外包业务主要是借助计算机能完成的任务,例如软硬件的开发和维护。软件提供商通过整合硬件和算法来完成外包的任务,例如制作网站,外包数据库,提供软件服务等。

为了能够更高效率低成本地开发出成功的软件产品,在目前众包商业模式的情况下,人们提出了软件众包的概念。软件众包作为一种通过互联网汇集网络大众智慧、协作完成软件开发任务的创新活动方式,它就是将众包商业模式的精髓与传统的软件开发模式创新地结合起来,从而有助于软件开发企业以低成本满足客户多样化需求的一种运作模式,其可以充分发挥客户价值,同时增强软件企业的竞争能力。

与传统的外包的不同,众包是直接将任务发布到互联网,通过开放式集合互联网上未知的大众来解决传统计算机单独难以处理的问题 [2] [3] ,例如:Wikipedia、reCAPTHA [6] 标记图像、语言翻译 [5] 等。因为现实生活中存在着大量类似的问题,因此众包有着广大的应用前景和市场。

根据大众参与众包的不同形式,软件众包一般被分为协作式众包和竞赛式众包 [3] 。协作式众包的任务是需要大众协作来完成的,并且完成任务的大众通常没有奖励回报;而竞赛式众包的任务通常是由个人独立完成,完成任务的个人会得到相应的奖励 [10] (如金钱)。

协作式众包中典型的成功案例主要包括维基百科Wikipedia和reCAPTHA。维基百科是开放的、自由的、免费的百科全书编辑平台,任何大众都可以进行编辑和修改。显然维基百科不能通过计算机软件技术来自动完成,也不能通过少数人来完成,因此需要众包的理念来实现。另外一个成功的案例是reCAPTHA。CMU的教授von Ahn提出了reCAPTHA项目,通过在验证码中嵌入书籍的扫描信息来完成纸质书籍的电子化 [6] [10] 。

竞赛式众包中典型的例子是Amazon Mechanical Turk (Mturk) [11] 。由于在竞赛式众包模式下,任务请求人需要为任务完成人支付报酬,因此Mturk采用市场的理念,为任务请求人和任务完成人构建了一个在线交易平台。Mturk根据工人(任务完成人)和任务请求人不同的需要,提供了不同的服务。Mturk平台上最常见的任务有:数据收集、分类工作等 [10] 。

通过以上案例可以看出,众包主要是通过整合互联网上未知大众的技术资源和机器来解决各种问题。

3. 众包模式下的软件过程

3.1. 众包模式下的软件过程特征

软件过程是指在软件的整个生命周期中,从需求获取、需求分析、设计、实现、测试、发布和维护的一个过程模型。一个软件过程定义了软件开发中采用的方法、技术和工具,构成了软件项目管理和控制的基础。

不同的软件开发模式下的软件过程会具有完全不同的特点,由于众包模式下的软件开发是直接将任务发布到互联网上,通过开放式集合互联网上未知的大众开发者以协作或者竞赛的方式来完成和解决的,因此,众包模式下的软件过程具有如下的一些基本特征:

1) 软件众包是以公开的方式召集互联网中的广大开发者来解决软件开发任务;

2) 众包任务通常相对较小的任务,或者是对复杂任务的分解;

3) 众包参与者可以是盈利或非盈利性的个人、组织或者一切能够利用互联网用户;可以是软件开发专家或者业余爱好者;

4) 软件开发者可以通过协作或者独立的方式完成软件开发任务;

5) 软件众包活动是将软件任务外包给不确定的开发者,因此众包任务能否完成、以及完成质量情况等也具有不确定性。

3.2. 众包模式下的软件过程

软件过程是由一个软件产品的开发、使用及维护软件及相关产品所涉及到的一系列活动、方法和任务等组成。

众包社区中的参与主体包括发包方、接包方(也称为任务完成人)和众包平台。发包方即任务的发布者,接包方是为任务做出贡献的非特定网络大众,众包平台则是发包方与接包方联系的中介。相应地,在众包模式下的软件开发的主要参与主体包括软件任务需求者(requester)、众包平台和软件开发者。他们通过软件开发任务(tasks)联系到一起,其关系如图1所示。

在众包模式下的软件开发中,软件任务需求者和软件开发者先在软件众包社区平台完成注册,然后软件任务需求者在众包平台根据软件项目情况提出任务或发布任务,众多软件任务开发者通过软件众包社区提供的平台选择软件任务或者接受平台推荐的任务,并给出自己的开发产品和方案,之后软件需求者在众多开发结果中选择合适的软件开发产品和方案来进行整合,并为其对应的软件开发者支付报酬。在软件众包模式下,软件需求者可以是科研机构、各种企业或者个人,软件任务的开发者为广大的网络大众,包括专业的软件开发人士和非专业的兴趣爱好者,开发者的范围可以涵盖全球的各种互联网在线用户。

4. 众包模式下的软件过程框架

软件过程是指软件生命周期所涉及的一系列相关过程和活动的集合。在众包模式下的软件开发是软件任务需求者和软件开发者在众包平台的基础之上,在一系列的交互活动中来完成软件开发任务的。

根据以上分析可知,众包模式下的软件过程主要包括与软件任务需求者相关的活动和与软件开发

Figure 1. The relationships among the major players in the software crowdsourcing community

图1. 软件众包社区中主要参与者之间的关系

Figure 2. Software process framework in crowd-sourcing

图2. 众包模式下的软件过程框架

者相关的活动两大类。与软件任务需求者相关的活动有:1) 软件任务的提出,2) 软件任务的分解,3) 软件任务的发布,4) 软件产品的评审,5) 方案整合与集成测试,6) 向开发者支付报酬等活动;与软件开发者相关的活动有:1) 任务的推荐/选择,2) 软件任务的接收,3) 软件任务开发,4) 软件产品的提交等活动。

基于这些活动,众包模式下的软件过程流程如图2所示。

在此众包模式下的软件过程流程中,每个过程活动的目的和所完成工作如下:

与软件任务需求者相关的活动:

1) 软件任务的提出:软件任务需求者根据自身的提出相关软件项目和需求,软件需求包括功能需求、性能需求、环境需求、资源需求、成本消耗需求、开发进度等等。软件任务的需求作为众包软件过程的开始活动,是非常重要的,同时也是整个众包软件开发能否成功的基础。

2) 软件任务的分解:一般来说,众包更适合于解决微观或者较小的任务,因此对于一个复杂的软件任务,就需要对其进行分解和模块化成为能够在众包模式下实现的可开发和完成的任务。

3) 软件任务的发布:任务需求者在众包平台中发布需要解决的软件任务,内容包括软件任务相关的需求、愿意支付的酬金和完成开发的时间等。

4) 软件产品的评审:对软件众包社区中的开发者提交的软件任务开发方案和产品(包括文档、软件设计、编码和测试等内容),软件任务需求者需要进行测试和评估,以确定是接收还是拒绝,并选出最优产品。

5) 方案整合与集成测试:由于复杂的软件任务是分解成多个较小的任务发布和开发完成的,因此,对于同意接收的不同部分的开发产品和结果需要进行整合与集成测试,从而完成整个软件项目的开发。

6) 向开发者支付报酬:软件任务需求者按照任务发布时的规定,为软件任务的开发者支付合理的报酬。

与软件开发者相关的活动:

1) 任务的推荐/选择:任务推荐/选择是指开发者根据自身的技能和情况来选择合适的软件开发任务。目前,众包平台上的任务选择主要包括两类:一类是基于拉(pull)的方式,另一类是基于推(push)的方式。基于拉的方式是由开发者主动去查找和搜索相关的软件开发任务,即任务搜索;而基于推的方式则是由众包平台根据软件开发任务的需求、开发者的技能以及开发者完成开发任务的历史记录等来进行任务的分发,即任务推荐。

2) 软件任务的接收:开发者根据自己情况确定一个或者多个合适的软件开发任务。

3) 软件任务开发:在软件众包中,任务的开发就行开发者按照任务需求完成相应的软件开发任务,包括软件的设计、编码、测试和相关文档的撰写等。在此活动执行的过程中,开发者可能会运用到不同的软件开发技术和软件开发过程模式。

4) 软件产品的提交:开发者完成软件任务的开发之后将相关的软件方案和产品提交到众包平台传递给软件任务需求者。

5. 结论

通过对众包模式下的软件过程的分析,给出众包模式下的软件过程流程及关键活动,提出众包模式下的软件过程框架。框架中明确了主要参与者即软件任务需求者和软件开发者的相关活动,可以使得在设计、开发众包管理平台及众包项目的管理中有更清晰管理流程和思路,更利于众包模式下软件项目的管理。

文章引用

胡忠旭,郁 湧. 众包模式下的软件过程框架研究
Study of Software-Process Framework Based on Crowd-Sourcing[J]. 软件工程与应用, 2018, 07(02): 69-74. https://doi.org/10.12677/SEA.2018.72008

参考文献

  1. 1. Howe, J. (2006) The Rise of Crowd Sourcing. Wired, 14, 176-183.

  2. 2. 梅姝娥, 郑祥龙, 仲伟俊. 众包模式在技术研发服务平台中的应用研究[J]. 科技管理研究, 2016, 36(10): 94-99.

  3. 3. Lase, E. (2012) Towards an Integrated Crowd Sourcing Definition. Journal of Information Science, 38, 189-200. https://doi.org/10.1177/0165551512437638

  4. 4. 吴竞鸿, 吕能芳. 基于众包的快递企业末端配送模式研究[J]. 西昌学院学报: 自然科学版, 2016, 30(2): 69-73.

  5. 5. 姚山季, 刘德文. 众包模式下个体参与意愿的影响因素研究——基于交易成本理论视角[J]. 经营谋虑, 2017(1): 96-103.

  6. 6. Schenk, E. and Guittard, C. (2011) Towards a Characterization of Crowd Sourcing Practices. Journal of Innovation Economics & Management, 1, 93-107. https://doi.org/10.3917/jie.007.0093

  7. 7. 刘安战, 郭基凤, 缑西梅, 等. 面向软件的众包平台设计与实现[J]. 计算机技术与发展, 2017, 27(8): 171-176.

  8. 8. Money, A.N. (2010) Glory and Cheap Talk: Analyzing Strategic Behavior of Contestants in Simultaneous Crowd Sourcing Contests on TopCoder. Proceedings of the 19th International Conference on World Wide Web (WWW’10), 21-30.

  9. 9. 安思锦, 翟健. 软件众包参与度影响因素分析及预测模型[J]. 计算机系统应用, 2015, 24(10): 9-10.

  10. 10. 冯剑红, 李国良, 冯建华. 众包技术研究综述[J]. 计算机学报, 2015(9): 1713-1726.

  11. 11. Brooks, F.P. (l975) The Mythical Man-Month. Addison-Wesley Press, Boston, l93.

期刊菜单