El desarrollo de software de crowdsourcing o crowdsourcing de software es un área emergente de la ingeniería de software . Es una convocatoria abierta a la participación en cualquier tarea de desarrollo de software , incluida la documentación , el diseño , la codificación y las pruebas . Estas tareas normalmente las realizan miembros de una empresa de software o personas contratadas por la empresa. Pero en el crowdsourcing de software , todas las tareas pueden ser asignadas o dirigidas por miembros del público en general. Los individuos y los equipos también pueden participar en concursos de crowdsourcing . [1]
Metas
El crowdsourcing de software puede tener múltiples objetivos. [2] [3]
Software de calidad : los organizadores de crowdsourcing deben definir objetivos específicos de calidad del software y sus criterios de evaluación. El software de calidad a menudo proviene de concursantes competentes que pueden presentar buenas soluciones para una evaluación rigurosa.
Adquisición rápida : en lugar de esperar a que se desarrolle el software, los organizadores de crowdsourcing pueden publicar un concurso con la esperanza de que ya se haya desarrollado algo idéntico o similar. Esto es para reducir el tiempo de adquisición de software.
Identificación de talentos : un organizador de crowdsourcing puede estar interesado principalmente en identificar talentos como lo demuestra su desempeño en la competencia.
Reducción de costos : un organizador de crowdsourcing puede adquirir software a bajo costo pagando una pequeña fracción del costo de desarrollo, ya que el precio del premio puede incluir premios de reconocimiento.
Diversidad de soluciones : como los equipos entregarán diferentes soluciones para el mismo problema, la diversidad de estas soluciones será útil para la computación tolerante a fallas.
Creación de ideas : uno de los objetivos es obtener nuevas ideas de los concursantes y estas ideas pueden conducir a nuevas direcciones.
Ampliación de la participación : uno de los objetivos es reclutar a tantos participantes como sea posible para obtener la mejor solución o difundir el conocimiento relevante.
Educación de los participantes : los organizadores están interesados en educar a los participantes con nuevos conocimientos. Un ejemplo es nonamesite.com patrocinado por DARPA para enseñar ciencia, tecnología, ingeniería y matemáticas STEM .
Aprovechamiento de fondos : el objetivo es estimular a otras organizaciones a patrocinar proyectos similares para apalancar fondos.
Marketing: los proyectos de crowdsourcing se pueden utilizar para el reconocimiento de marca entre los participantes.
Ecosistema
Soporte de arquitectura
Un sistema de soporte de crowdsourcing debe incluir 1) Herramientas de desarrollo de software: herramientas de requisitos, herramientas de diseño, herramientas de codificación, compiladores, depuradores, IDE, herramientas de análisis de rendimiento, herramientas de prueba y herramientas de mantenimiento. 2) Herramientas de gestión de proyectos: ranking, reputación y sistemas de premios para productos y participantes. 3) Herramientas de redes sociales: permiten a los participantes comunicarse y apoyarse entre sí. 4) Herramientas colaboradoras: Por ejemplo, una plataforma de pizarra donde los participantes pueden ver un área común y sugerir ideas para mejorar las soluciones presentadas en el área común.
Redes sociales
Las redes sociales pueden proporcionar comunicación, documentación, blogs, twitters, wikis, comentarios, retroalimentación e indexación.
Organización
Procesos
Cualquier fase del desarrollo de software puede ser de colaboración colectiva, y esa fase puede ser de requisitos (funcional, interfaz de usuario, rendimiento), diseño (algoritmo, arquitectura), codificación (módulos y componentes), pruebas (incluidas pruebas de seguridad, pruebas de interfaz de usuario, experiencia del usuario). pruebas), mantenimiento, experiencia del usuario o cualquier combinación de estos. [4]
Los procesos de desarrollo de software existentes pueden modificarse para incluir el crowdsourcing: 1) Modelo en cascada; 2) Procesos ágiles; 3) Enfoque basado en modelos; 4) Enfoque de código abierto; 5) Enfoque de software como servicio (SaaS) en el que los componentes del servicio se pueden publicar, descubrir, componer, personalizar, simular y probar; 6) métodos formales: los métodos formales pueden ser de colaboración colectiva.
El crowdsourcing puede ser competitivo o no competitivo. En el crowdsourcing competitivo, solo los participantes seleccionados ganarán, y en proyectos altamente competitivos, muchos concursantes competirán pero pocos ganarán. De manera no competitiva, una sola persona participará en el crowdsourcing o varias personas pueden colaborar para crear software. Los productos producidos se pueden evaluar de forma cruzada para garantizar la consistencia y calidad de los productos y para identificar talentos, y la evaluación cruzada puede evaluarse mediante crowdsourcing.
Los elementos desarrollados por crowdsourcing se pueden evaluar mediante crowdsourcing para determinar el trabajo producido, y la evaluación de la evaluación se puede realizar mediante crowdsourcing para determinar la calidad de la evaluación.
Los procesos de crowdsourcing notables incluyen los procesos de AppStori y Topcoder .
La preselección de participantes es importante para el crowdsourcing de software de calidad. En el crowdsourcing competitivo, un participante de rango bajo no debe competir contra un participante de alto rango.
Plataformas
Las plataformas de software crowdsourcing incluyendo Apple Inc. 's App Store , Topcoder y uTest demuestran la ventaja de crowdsourcing en términos de expansión ecosistema de software y mejora la calidad del producto. La App Store de Apple es un mercado de aplicaciones iOS en línea , donde los desarrolladores pueden entregar directamente sus diseños y productos creativos a los clientes de teléfonos inteligentes. Estos desarrolladores están motivados para aportar diseños innovadores tanto para la reputación como para el pago mediante el mecanismo de micropago de la App Store. En menos de cuatro años, la App Store de Apple se ha convertido en un enorme ecosistema de aplicaciones móviles con 150.000 editores activos y ha generado más de 700.000 aplicaciones IOS. Alrededor de la App Store, hay muchas plataformas colaborativas basadas en la comunidad para las incubadoras de aplicaciones de teléfonos inteligentes. Por ejemplo, AppStori introduce un enfoque de financiación colectiva para construir una comunidad en línea para desarrollar ideas prometedoras sobre nuevas aplicaciones de iPhone. IdeaScale es otra plataforma para el crowdsourcing de software. [5]
Otro ejemplo de crowdsourcing, Topcoder, crea un modelo de concurso de software en el que las tareas de programación se publican como concursos y el desarrollador de la mejor solución gana el primer premio. Siguiendo este modelo, Topcoder ha establecido una plataforma en línea para respaldar su ecosistema y reunió una fuerza laboral virtual global con más de 1 millón de miembros registrados y casi 50,000 participantes activos. Todos estos miembros de Topcoder compiten entre sí en tareas de desarrollo de software como análisis de requisitos, diseño de algoritmos, codificación y pruebas.
Procesos de muestra
El proceso de desarrollo de software Topcoder consta de varias fases diferentes, y dentro de cada fase puede haber diferentes tipos de competencia: [ cita requerida ]
- Arquitectura;
- Producción de componentes;
- Ensamblaje de aplicaciones;
- Despliegue
![](http://wikiimg.tojsiabtv.com/wikipedia/en/thumb/1/13/TopCoder_competition_types_and_phases.png/220px-TopCoder_competition_types_and_phases.png)
Cada paso puede ser una competencia de crowdsourcing.
Proceso de prueba de BugFinders: [6]
- Involucrar a BugFinders;
- Definir proyectos;
- Gestionado por BugFinders;
- Revisar errores;
- Reparar errores; y
- Software de lanzamiento.
Cuestiones teóricas
La teoría de juegos se ha utilizado en el análisis de varios proyectos de crowdsourcing de software. [2]
La teoría de la información puede ser la base de las métricas.
Los modelos económicos pueden proporcionar incentivos para la participación en los esfuerzos de crowdsourcing.
Arquitectura de referencia
El desarrollo de software de crowdsourcing puede seguir diferentes metodologías de ingeniería de software utilizando diferentes modelos de proceso, técnicas y herramientas. También tiene procesos específicos de crowdsourcing que involucran actividades únicas como licitar tareas, asignar expertos, evaluar la calidad e integrar software. [ cita requerida ] Para respaldar el proceso de subcontratación y facilitar la colaboración de la comunidad, generalmente se construye una plataforma para proporcionar los recursos y servicios necesarios. Por ejemplo, Topcoder sigue el proceso de desarrollo de software tradicional con reglas de competencia integradas, y AppStori permite procesos flexibles y la multitud puede participar en casi todos los aspectos del desarrollo de software, incluida la financiación, los conceptos de proyectos, el diseño, la codificación, las pruebas y la evaluación.
Por tanto, la arquitectura de referencia define las actividades generales y la estructura para el desarrollo de software basado en la multitud al unificar las mejores prácticas y los logros de la investigación. En general, la arquitectura de referencia abordará las siguientes necesidades: [ cita requerida ]
- Personalizable para admitir modelos de proceso típicos;
- Configurable para componer diferentes componentes funcionales;
- Escalable para facilitar la solución de problemas de diversos tamaños.
En particular, el crowdsourcing se utiliza para desarrollar software grande y complejo de manera virtualizada y descentralizada. La computación en la nube es una expresión coloquial que se usa para describir una variedad de diferentes tipos de conceptos de computación que involucran una gran cantidad de computadoras conectadas a través de una red de comunicación en tiempo real (generalmente Internet). Se pueden encontrar muchas ventajas al mover aplicaciones de crowdsourcing a la nube: centrarse en el desarrollo de proyectos en lugar de en la infraestructura que soporta este proceso, fomentar la colaboración entre equipos distribuidos geográficamente, escalar los recursos al tamaño de los proyectos, trabajar de forma virtualizada, Entorno distribuido y colaborativo.
Las demandas de los sistemas de crowdsourcing de software están en constante evolución a medida que las nuevas filosofías y tecnologías de desarrollo ganan popularidad. La arquitectura de referencia presentada anteriormente está diseñada para abarcar la generalidad en muchas dimensiones que incluyen, por ejemplo, diferentes metodologías de desarrollo de software, esquemas de incentivos y enfoques competitivos / colaborativos. Hay varias direcciones de investigación claras que podrían investigarse para mejorar la arquitectura, como el análisis de datos, la entrega basada en servicios y la generalización del marco. A medida que los sistemas crecen, la comprensión del uso de la plataforma es una consideración importante, los datos relacionados con los usuarios, los proyectos y la interacción entre los dos se pueden explorar para investigar el rendimiento. Estos datos también pueden proporcionar información útil al desarrollar tareas o seleccionar participantes. Muchos de los componentes diseñados en la arquitectura son de uso general y podrían entregarse como servicios alojados. Al albergar estos servicios, las barreras de entrada se reducirían significativamente. Finalmente, a través de implementaciones de esta arquitectura, existe el potencial de derivar un marco de propósito general que podría usarse para diferentes proyectos de crowdsourcing de desarrollo de software o más ampliamente para otras aplicaciones de crowdsourcing. La creación de tales marcos ha tenido efectos transformadores en otros dominios, por ejemplo, el uso predominante de BOINC en la informática voluntaria.
Aspectos y métricas
El crowdsourcing en general es un tema de investigación multifacético. El uso de crowdsourcing en el desarrollo de software está asociado con una serie de puntos clave de tensión, o facetas, que deben tenerse en cuenta (consulte la figura siguiente). Al mismo tiempo, la investigación se puede realizar desde la perspectiva de los tres actores clave del crowdsourcing: el cliente, el trabajador y la plataforma. [7]
![](http://wikiimg.tojsiabtv.com/wikipedia/commons/thumb/e/e8/Researchframework.png/220px-Researchframework.png)
Descomposición de tareas:
Coordinación y comunicación:
Planificación y programación:
Garantía de calidad: un proceso de crowdsourcing de software se puede describir en un proceso de juego, donde una parte intenta minimizar una función objetiva, pero la otra parte intenta maximizar la misma función objetiva como si ambas partes compitieran entre sí en el juego. Por ejemplo, un equipo de especificación necesita producir especificaciones de calidad para que el equipo de codificación desarrolle el código; el equipo de especificación minimizará los errores de software en la especificación, mientras que el equipo de codificación identificará tantos errores como sea posible en la especificación antes de codificar.
El proceso mínimo-máximo es importante ya que es un mecanismo de garantía de calidad y, a menudo, un equipo necesita realizar ambos. Por ejemplo, el equipo de codificación necesita maximizar la identificación de errores en la especificación, pero también necesita minimizar la cantidad de errores en el código que produce.
Bugcrowd mostró que los participantes seguirán el dilema del prisionero para identificar errores para las pruebas de seguridad. [8]
Conocimiento y propiedad intelectual:
Motivación y Remuneración:
Niveles
Existen los siguientes niveles de crowdsourcing: [ cita requerida ]
Nivel 1 : personas solas, módulos bien definidos, tamaño reducido, tiempo limitado (menos de 2 meses), productos de calidad, procesos de desarrollo actuales como el de Topcoder y uTest. En este nivel, los codificadores están clasificados, los sitios web contienen materiales de crowdsourcing de repositorio en línea, los participantes pueden clasificar el software, tienen herramientas de comunicación como wiki, blogs, comentarios, herramientas de desarrollo de software como IDE, pruebas, compiladores, simulación, modelado y programa análisis.
Nivel 2 : equipos de personas (<10), sistemas bien definidos, mediano grande, mediano plazo (3 a 4 meses), procesos de desarrollo adaptativo con retroalimentación inteligente en una arquitectura de pizarra. En este nivel, un sitio web de crowdsourcing puede apoyar el proceso de desarrollo adaptativo e incluso los procesos de desarrollo concurrentes con retroalimentación inteligente con la arquitectura de pizarra; análisis inteligente de codificadores, productos de software y comentarios; prueba y evaluación de software multifase; Análisis de Big Data, servicios de software de envoltura automatizada en SaaS (Software-as-a-Service), anotaciones con ontología , referencias cruzadas a DBpedia y Wikipedia; análisis y clasificación automatizados de servicios de software; anotación de ontología y razonamiento, como vincular esos servicios con entradas / salidas compatibles.
Nivel 3 : equipos de personas (<100 y> 10), sistema bien definido, sistemas grandes, lapso de tiempo prolongado (<2 años), verificación cruzada automatizada y comparación cruzada entre contribuciones. Un sitio web de crowdsourcing en este nivel puede contener una coincidencia automática de los requisitos con los componentes existentes, incluida la coincidencia de especificaciones, servicios y pruebas; pruebas de regresión automatizadas.
Nivel 4 : colaboración multinacional de sistemas grandes y adaptables. Un sitio web de crowdsourcing en este nivel puede contener crowdsourcing orientado a dominios con ontología, razonamiento y anotación; procesos automatizados de verificación cruzada y generación de pruebas ; configuración automatizada de la plataforma de crowdsourcing; y puede reestructurar la plataforma como SaaS con personalización de inquilinos.
Eventos significativos
Microsoft crowdsourcing para el desarrollo de Windows 8 . En 2011, Microsoft inició blogs para fomentar el debate entre los desarrolladores y el público en general. [9] En 2013, Microsoft también comenzó a realizar crowdsourcing de sus dispositivos móviles para Windows 8. [10] En junio de 2013, Microsoft también anunció pruebas de software de crowdsourcing ofreciendo $ 100K para técnicas innovadoras para identificar errores de seguridad, y $ 50K para una solución al problema identificado. [11]
En 2011, la Oficina de Patentes y Marcas de los Estados Unidos lanzó un desafío de crowdsourcing bajo la Ley America COMPETES en la plataforma Topcoder para desarrollar algoritmos de procesamiento de imágenes y software para reconocer etiquetas de figuras y partes en documentos de patentes con un premio acumulado de $ 50,000 USD. [12] El concurso resultó en que 70 equipos realizaran colectivamente 1797 envíos de códigos. La solución del ganador del concurso logró una alta precisión en términos de recuperación y precisión para el reconocimiento de regiones de figuras y etiquetas de piezas. [13]
Oracle utiliza crowdsourcing en sus proyectos de CRM. [14]
Conferencias y talleres
En septiembre de 2013 se celebró en Dagstuhl , Alemania, un taller de crowdsourcing de software [15].
Ver también
- Modelo de desarrollo de software colaborativo
- Producción entre pares basada en bienes comunes
- Crowdsourcing
- Software de código abierto
- Desarrollo de software de código abierto
Referencias
- ^ Riedl, Christoph; Woolley, Anita (diciembre de 2016). "Equipos frente a multitudes: una prueba de campo de la contribución relativa de incentivos, capacidad de los miembros y colaboración al rendimiento de resolución de problemas basado en multitudes". Academia de Descubrimientos de Gestión . en prensa (4): 382–403. doi : 10.5465 / enm . 2015.0097 .
- ^ a b Wu, Wenjun; WT Tsai; Wei Li (2013). "Un marco de evaluación para el crowdsourcing de software". Fronteras de la informática . 7 (5): 694–709. doi : 10.1007 / s11704-013-2320-2 . S2CID 3352701 .
- ^ Stol, Klaas-Jan; Fitzgerald, Brian (2014). Two's Company, Three's a Crowd: un estudio de caso de desarrollo de software de crowdsourcing . 36º Congreso Internacional de Ingeniería de Software. ACM. págs. 187–198. doi : 10.1145 / 2568225.2568249 .
- ^ Wu, Wenjun; WT Tsai; Wei Li (2013). "Crowdsourcing de Software Creativo". Revista Internacional de Computación Creativa . 1 : 57. doi : 10.1504 / IJCRC.2013.056925 .
- ^ "El software de crowdsourcing reúne ideas más sólidas" . IdeaScale . Consultado el 19 de marzo de 2016 .
- ^ Buscadores de errores. "Pruebas de software en el mundo real" . Consultado el 21 de junio de 2013 .
- ^ Stol, KJ; Fitzgerald, B. (2014). "Investigación del desarrollo de software de crowdsourcing: perspectivas e inquietudes". Actas del 1er Taller Internacional sobre Crowd Sourcing en Ingeniería de Software - CSI-SE 2014 . pag. 7. doi : 10.1145 / 2593728.2593731 . hdl : 10344/3853 . ISBN 9781450328579. S2CID 7531317 .
- ^ "Crowdsourcing y el dilema del prisionero - asesoramiento de Delling" . Dellingadvisory.com . Consultado el 19 de marzo de 2016 .
- ^ Thomas, Stuart (16 de agosto de 2011). "Microsoft lanza blog de crowdsourcing para Windows 8" . Memeburn . Consultado el 21 de junio de 2013 .
- ^ Simpson, Scott (10 de junio de 2013). "¿CROWDSOURCE SU PRÓXIMO DISPOSITIVO WINDOWS 8?" . Consultado el 21 de junio de 2013 .
- ^ Bell, Lee (20 de junio de 2013). "Microsoft ofrece una recompensa por errores de $ 100.000 por descifrar Windows 8.1" . Archivado desde el original el 25 de junio de 2013 . Consultado el 20 de junio de 2013 .CS1 maint: URL no apta ( enlace )
- ^ Steffen, Robynn Sturm (16 de diciembre de 2011). "Nuevo centro de excelencia en combustibles premio para ayudar a modernizar las herramientas para el examen de patentes" . El Blog de la Casa Blanca . Consultado el 30 de marzo de 2016 .[ enlace muerto permanente ]
- ^ Riedl, C .; Zanibbi, R .; Hearst, MA; Zhu, S .; Menietti, M .; Crusan, J .; Metelsky, I .; Lakhani, K. (20 de febrero de 2016). "Detección de figuras y etiquetas de piezas en patentes: desarrollo basado en competencia de algoritmos de procesamiento de imágenes". Revista Internacional de Análisis y Reconocimiento de Documentos . 19 (2): 155-172. arXiv : 1410.6751 . doi : 10.1007 / s10032-016-0260-8 . S2CID 11873638 .
- ^ Diana, Alison (16 de marzo de 2011). "Oracle integra Crowdsourcing en CRM" . InformationWeek . Consultado el 21 de junio de 2013 .
- ^ Huhns, Michael N .; Li, Wei; Tsai, Wei-Tek (2013). "Schloss Dagstuhl: página de inicio del seminario" . Dagstuhl.de. doi : 10.4230 / DagRep.3.9.34 . Consultado el 19 de marzo de 2016 . Cite revista necesita
|journal=
( ayuda )
enlaces externos
- Desarrollo de WikiMedia colaborativo
- Encontrar proyectos de código abierto en GitHub
Otras lecturas
- Karim R. Lakhani, David A. Garvin, Eric Logstein, "TopCoder: Developing Software through Crowdsourcing", caso de Harvard Business School 610-032, 2010.