码迷,mamicode.com
首页 > 其他好文 > 详细

协作性软件开发平台与众包

时间:2015-07-16 21:22:20      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:


本文最初刊登于IEEE Software杂志,现由InfoQ & IEEE Computer Society呈现给大家。

“众包,一度创造了非常成功的企业,比如Linux。同时,高效合作、众包支持下的平台还在不断涌现。本文作者Xin Peng, Ali Babar和我从整体上介绍了众包的当前技术,我们欢迎读者和专栏作者对本文提出评价和看法,也期望你提出自己希望了解的技术问题。”

--Christof Ebert

1991年,芬兰赫尔辛基大学一位21岁的大学生,在Usenet新闻组上发布了这样一个著名的帖子:“我正在为386(486) AT clones开发一个(自由的)操作系统(仅仅是出于爱好,该操作系统不会像Gue那么广泛,那么专业)。这个计划从4月份开始酝酿,现在已做好准备。我希望得到人们关于Minix优缺点的任何反馈意见,因为我的操作系统和它有类似的方面…”这个人便是Linus Torvalds,这则消息发布之后,吸引了无数的软件开发人员,在仅仅三年的时间内,便完成了这一新操作系统的第一个版本。

Linux 1.0于1994年公开发布,这是截至当时最大的众包项目之一。截止到2008年,运行于Linux上的服务器、虚拟桌面和软件收入达到了近300亿欧元。众包,已不仅仅是软件工程师的业余爱好,它已经成为了一种成熟的商业模式。

软件开发过程中使用众包,意味着你可以从大量自发的在线社区中征集服务,而不是再只有传统的员工和供应商渠道。过去十年,作为Web 2.0发展进程的一部分,众包也得到了快速的发展。

下图1展现了众包、外包、开源和专有开发的差异。本质上来讲,众包使得各位众包成员变成了企业所请求的软件开发任务的提供商。同时,它还实现了提交方和请求方之间的价值转移,而开源开发则无法实现,传统外包方式则无法实现开放式的全员参与。

如今,众包已经被用于信息、知识和文化的大规模并行生产。企业的多个环节都可以采用众包,比如内容创建、开放设计、数据分析、开发和测试。而众包的主要目的,就是利用多个自愿参与者的创新能力,他们最终会得到一小部分报酬,抑或是没有,同时也没有正式的管理结构。

软件开发是一项创新的、知识密集的流程,需要利用全球人才的智慧、创新和生产力。

技术分享

图1

软件开发的众包过程中,企业(请求方)借助众包平台,将项目划分为需求分析、设计、编码和测试等任务,然后分配给外部的个人或团队(提交方)。大型IT公司还利用内部众包,在自己的员工中间分配软件开发任务,从而达到利用闲置人员的目的。

平台需求

软件开发众包,本质上是协作性的。众包软件项目的相关人员组成了一个虚拟的团队,协作工具和社交媒体技术为其提供支持。请求方、提交方和平台提供方之间会有各种各样的沟通、协作和协调(3C)。比如说,请求方和提交方就某任务的需求和评估标准进行沟通,请求方协调不同任务的进展和技术决策,提交方则通过共享工作区域彼此协作。

此外,开发人员还需要对协作型项目的各个方面,包括团队和项目了如指掌,这就是所谓的团队感知。成功的团队需要有沟通、协作和协调,还需要有一定的感知,形成协作型软件开发的“3C+A”模式。

众包平台执行一项请求可以采取多种模式,比如说,在市场中打广告,请求方公开招标,或者是举行竞赛,依照请求方设定的标准从竞赛者中选取优胜者。这些方式,都要求平台必须能够支持包含了多个请求方、提交方和平台提供方共同创建价值、实现共享的一些商业模式。

沟通

众包平台可以实现请求方和提交方之间的信息交换,能解决沟通不畅的问题。提交方需要与请求方协调需求和一些条款,而需求方需要了解提交方的能力、经验和信誉。众包各成员之间需要通过平台彼此沟通技术或组织问题。此外,同一项目不同的任务提交方还可能需要进行沟通,以便各个任务能够协调。

协作

众包平台还支持各种协作,它提供设施实现工作区的共享,鼓励用户与工作的同步或异步交互。开发人员可以在不同层面上进行协作,他们可能是在协作性开发项目中,共同完成一个项目的同一块工作(源代码或UML模型),也可能是在版本控制系统的支持下,共同协作完成多项工作。在项目层面上,不同任务的开发人员也可能会协作,完成各自任务的集成工作。

技术分享

表1 不同软件开发平台的众包支持

协调

最后,众包平台支持技术和组织层面的人与流程的管理和协调。事实上,平台提供了创建、分派、执行、评估和奖励众包任务的工具,同时监督请求方和提交方的完成情况。比如说,平台可能需要解决存在于请求方和提交方之间的争议;如果一项任务是以竞赛的形式发布,那么或许还需要协调不同提交方之间的竞争。

同时,平台还需要为请求方提供支持,协调同一项目不同任务的开发流程。比如说,对于组件开发项目,请求方需要为所有参与的提交方汇总并提供所需的组件说明书、开发工具、资料库、测试数据和环境。

感知

群体感知是指虚拟团队的成员能够理解流程、任务、实际表现和项目状态,从而对整个工作环境有必要的了解。群体感知可分为四类:非正式的(或表象的)、组织结构、工作环境和社交。群体感知在软件开发众包过程中非常重要,因为众包成员之间具有开放性和高流动性。成员之间是以松散的、临时的虚拟社区的形式组成项目团队。群体感知能帮助众包成员更好的理解他们的任务、开发环境、协作方和竞争方的最新状态。此外,了解别人的工作能激励团队成员,相互学习,增强创造力。

商业模式

通过众包,企业作为请求方,能够以较低成本获得丰富的人才资源,并利用其创新的能力。而个人或团队作为提交方,也能通过自己提交的成果获得报酬。平台提供方则通过从成功完成的项目中抽成,以及收取平台资源比如存储资源和工具的使用费用而获益。

众包这一商业模式亟待解决的是有关知识产权的问题。对于众包任务,平台必须提供请求方和提交方不同知识产权问题的协调机制。此外,就提交成果的IT产权问题如何转移给企业,由双方共享,需要请求方和需求方需要达成一致。

众包平台

目前的众包平台有,TopCoder、CoFundos、Genius Rocket和Innocentive,它们提供了一个企业和个人开发者均可注册并加入在线社区的网络平台。

众包平台有成型的商业模式,激励着众包成员参与到开发任务中,提交他们的解决方案。平台通常向企业收取发布任务的费用,但是不向平台成员收取任何费用。成功中标的成员可以获得经济报酬,或者其他形式的奖励,比如按照事先约定的条款,提交方可以成为企业的一员。通常情况下,提交者获得奖励后,知识产权就相应的转移到众包企业手中。

众包平台会协调众包企业和成员之间的关系。对于每个项目,平台通常会指定一个协调者(TopCoder称为copilot),这个人也可以从众包成员中选出。协调者帮企业将任务分解成一系列微任务,然后将这些微任务分派给众包成员。协调者会协调整个过程,包括项目说明、执行、评价和汇报。

众包平台将论坛按照任务进行细分,从而为成员提供了沟通渠道,每个成员都可以提问问题,可以彼此之间进行沟通。任务协调者可以管理和回答成员的问题;一些平台还支持提交方和请求方互发信息实现沟通。但是,一般的众包平台对成员之间的协作支持很少。其中一些允许成员共享工作成果,但是却不提供版本控制。

协作性软件开发平台与众包

标签:

原文地址:http://www.cnblogs.com/itfree/p/4652093.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!