Crowdsourcing software development
Crowdsourcing software development or software crowdsourcing has become an emerging area of software engineering. It is an open call for participation in any tasks of software development, including documentation, design, coding and testing. These tasks are normally conducted by either internal members within a software enterprise or people from contracting firms. But in software crowdsourcing, all the tasks can be assigned to anyone from general public.
Large online systems such as Wikipedia and Facebook create a user-friendly environment that allows massive crowds across the world to voluntarily contribute their creative web contents and mashup applications. Also, in massive multiple-player games such as Second Life, millions of users can build and maintain their own virtual artifacts and scenarios to create 3D virtual world. These new crowdsourcing practices blur the distinguishing line between end-users and developers, and follow the basic co-creation principle that “A regular end-user becomes co-designer, co-developer, and co-maintainer.” This paradigm shift from conventional software industrial mode to crowdsourcing-based peer-production mode indicates a revolutionary trend of software engineering for addressing the software crisis in ecosystems.
Platforms
Software crowdsourcing platforms including Apple’s App Store, TopCoder , and uTest demonstrate the advantage of crowdsourcing in terms of software ecosystem expansion and product quality improvement. Apple’s App Store is an online IOS application market , where developers can directly deliver their creative designs and products to smartphone customers. These developers are motivated to contribute innovative designs for both reputation and payment by the micro-payment mechanism of the App Store. Within less than four years, Apple’s App Store has become a huge mobile application ecosystem with 150,000 active publishers, and generated over 700,000 IOS applications . Around the App Store, there are many community-based, collaborative platforms for the smart-phone applications incubators. For example, AppStori introduces a crowd funding approach to build an online community for developing promising ideas about new iPhone applications.
Another crowdsourcing example – TopCoder, creates a software contest model where programming tasks are posted as contests and the developer of the best solution wins the top prize. Following this model, TopCoder has established an online platform to support its ecosystem and gathered a virtual global workforce with more than 250,000 registered members and nearly 50,000 active participants. All these TopCoder members compete against each other in software development tasks such as requirement analysis, algorithm design, coding, and testing.
Process Model
A software crowdsourcing process can be described in a game process, where one party tries to minimize an objective function, yet the other party tries to maximize the same objective function as though both parties compete with each other in the game. For example, a specification team needs to produce quality specifications for the coding team to develop the code; the specification team will minimize the bugs in the specification, while the coding team will identify as many bugs as possible in the specification before coding. The min-max process is important as it is a quality assurance mechanism, and often a team needs to perform both. For example, the coding team needs to maximize the bug identification in the specification, but it also needs to minimize the number of bugs in the code it produces.
References
1. Karim R. Lakhani, David A. Garvin, Eric Logstein, “TopCoder: Developing Software through Crowdsourcing,” Harvard Business School Case 610-032, 2010. 2. W. Wu, W. T. Tsai, W. Li, “Creative Software Crowdsourcing”, to appear in International Journal on Creative Computing, 2013.