Articulo de referencia

Desarrollo de software mediante crowdsourcing

El desarrollo de software colaborativo , o crowdsourcing de software, es un área emergente de la ingeniería de software . Se trata de una convocatoria abierta para participar en...

El desarrollo de software colaborativo , o crowdsourcing de software, es un área emergente de la ingeniería de software . Se trata de una convocatoria abierta para participar en cualquier tarea de desarrollo de software , incluyendo documentación , diseño , codificación y pruebas . Estas tareas suelen ser realizadas por miembros de una empresa de software o por personas contratadas por ella. Sin embargo, en el crowdsourcing de software , todas las tareas pueden ser asignadas o abordadas por miembros del público en general. Tanto individuos como equipos pueden participar en concursos de crowdsourcing . [ 1 ]

Objetivos

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 suele provenir de participantes 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 exista algo idéntico o similar. Esto permite reducir el tiempo de adquisición del software.

Identificación de talentos : Un organizador de crowdsourcing puede estar interesado principalmente en identificar talentos demostrados por su desempeño en la competición.

Reducción de costes : Un organizador de crowdsourcing puede adquirir software a bajo coste pagando una pequeña fracción del coste de desarrollo, ya que el precio del premio puede incluir reconocimientos.

Diversidad de soluciones : Dado que los equipos presentarán diferentes soluciones para el mismo problema, la diversidad de estas soluciones será útil para la computación tolerante a fallos.

Generación de ideas : Uno de los objetivos es obtener nuevas ideas de los concursantes, y estas ideas pueden conducir a nuevas direcciones.

Ampliar la participación : Uno de los objetivos es reclutar al mayor número posible de participantes para obtener la mejor solución o para difundir conocimientos relevantes.

Educación de los participantes : Los organizadores están interesados ​​en brindar nuevos conocimientos a los participantes. Un ejemplo es nonamesite.com, patrocinado por DARPA para enseñar STEM (Ciencia, Tecnología, Ingeniería y Matemáticas) .

Apalancamiento financiero : El objetivo es incentivar a otras organizaciones a patrocinar proyectos similares para movilizar fondos.

Marketing: Los proyectos de crowdsourcing pueden utilizarse para el reconocimiento de marca entre los participantes.

Ecosistema

Soporte de arquitectura

Un sistema de soporte para crowdsourcing debe incluir: 1) Herramientas de desarrollo de software: herramientas de requisitos, diseño, codificación, compiladores, depuradores, IDE, análisis de rendimiento, pruebas y mantenimiento. 2) Herramientas de gestión de proyectos: sistemas de clasificación, reputación y premios para productos y participantes. 3) Herramientas de redes sociales: que permiten a los participantes comunicarse y apoyarse mutuamente. 4) Herramientas de colaboración: por ejemplo, una plataforma de pizarra donde los participantes pueden ver un área común y sugerir ideas para mejorar las soluciones presentadas en ella.

Redes sociales

Las redes sociales pueden proporcionar comunicación, documentación, blogs, cuentas de Twitter, wikis, comentarios, opiniones e indexación.

Organización

Procesos

Cualquier fase del desarrollo de software puede ser realizada mediante crowdsourcing, y esa fase puede ser la de requisitos (funcionales, de interfaz de usuario, de rendimiento), diseño (algoritmo, arquitectura), codificación (módulos y componentes), pruebas (incluidas pruebas de seguridad, pruebas de interfaz de usuario, pruebas de experiencia de usuario), mantenimiento, experiencia de usuario o cualquier combinación de estas. [ 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) donde los componentes del servicio pueden publicarse, descubrirse, componerse, personalizarse, simularse y probarse; 6) Métodos formales: los métodos formales pueden ser utilizados mediante crowdsourcing.

El crowdsourcing puede ser competitivo o no competitivo. En el crowdsourcing competitivo, solo ganan los participantes seleccionados, y en proyectos altamente competitivos, muchos concursantes participan, pero pocos ganan. En el crowdsourcing no competitivo, pueden participar personas individualmente o varias personas pueden colaborar para crear software. Los productos resultantes se pueden evaluar de forma cruzada para garantizar su consistencia y calidad, así como para identificar talentos, y esta evaluación cruzada se puede realizar mediante crowdsourcing.

Los elementos desarrollados mediante crowdsourcing pueden ser evaluados por crowdsourcing para determinar el trabajo producido, y la evaluación de la evaluación puede ser realizada mediante crowdsourcing para determinar la calidad de la evaluación.

Entre los procesos de crowdsourcing más destacados se encuentran los de AppStori y Topcoder .

La preselección de participantes es importante para la calidad del crowdsourcing de software. En el crowdsourcing competitivo, un participante con baja clasificación no debería competir contra uno con alta clasificación.

Plataformas

Las plataformas de crowdsourcing de software, como la App Store de Apple Inc. , Topcoder y uTest, demuestran la ventaja del crowdsourcing en términos de expansión del ecosistema de software y mejora de la calidad del producto. La App Store de Apple es un mercado de aplicaciones iOS en línea , donde los desarrolladores pueden ofrecer directamente sus diseños y productos creativos a los usuarios de teléfonos inteligentes. Estos desarrolladores se ven incentivados a contribuir con diseños innovadores tanto por su reputación como por la remuneración que les brinda el mecanismo de micropagos 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, existen numerosas plataformas colaborativas basadas en la comunidad para incubadoras de aplicaciones para teléfonos inteligentes. Por ejemplo, AppStori introduce un enfoque de financiación colectiva para construir una comunidad en línea que desarrolle ideas prometedoras para nuevas aplicaciones de iPhone. IdeaScale es otra plataforma de crowdsourcing de software. [ 5 ]

Otro ejemplo de crowdsourcing, Topcoder , crea un modelo de concurso de software donde 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 ha reunido una fuerza laboral virtual global con más de un millón de miembros registrados y cerca de 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 de Topcoder consta de varias fases diferentes, y dentro de cada fase puede haber diferentes tipos de competición:

  1. Arquitectura;
  2. Producción de componentes;
  3. Ensamblaje de la aplicación;
  1. Despliegue
Tipos y fases de la competición Topcoder

Cada paso puede convertirse en una competición de colaboración colectiva.

Proceso de prueba de BugFinders: [ 6 ]

  1. Contrata a BugFinders;
  2. Definir proyectos;
  3. Gestionado por BugFinders;
  4. Revisar errores;
  5. Solucionar errores; y
  6. 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 servir de base para las métricas.

Los modelos económicos pueden ofrecer incentivos para la participación en iniciativas de financiación colectiva.

Arquitectura de referencia

El desarrollo de software mediante crowdsourcing puede seguir diferentes metodologías de ingeniería de software, utilizando distintos modelos de proceso, técnicas y herramientas. También cuenta con procesos de crowdsourcing específicos que implican actividades únicas como la licitación de tareas, la asignación de expertos, la evaluación de la calidad y la integración del software. Para respaldar el proceso de crowdsourcing y facilitar la colaboración de la comunidad, se suele crear una plataforma que proporciona los recursos y servicios necesarios. Por ejemplo, Topcoder sigue el proceso tradicional de desarrollo de software con reglas de competición integradas, mientras que AppStori permite procesos flexibles y la participación de la comunidad puede involucrarse en casi todos los aspectos del desarrollo de software, incluyendo la financiación, los conceptos del proyecto, el diseño, la codificación, las pruebas y la evaluación.

La arquitectura de referencia define, por lo tanto, las actividades generales y la estructura para el desarrollo de software colaborativo, unificando las mejores prácticas y los logros de la investigación. En general, la arquitectura de referencia abordará las siguientes necesidades:

  1. Adaptable para admitir modelos de procesos típicos;
  2. Configurable para componer diferentes componentes funcionales;
  3. Adaptable para facilitar la solución de problemas de diversa envergadura.

En particular, el crowdsourcing se utiliza para desarrollar software complejo y de gran tamaño de forma virtualizada y descentralizada. La computación en la nube es un término coloquial que describe diversos conceptos informáticos que involucran un gran número de ordenadores conectados a través de una red de comunicación en tiempo real (normalmente Internet). Migrar aplicaciones de crowdsourcing a la nube ofrece numerosas ventajas: permite centrarse en el desarrollo del proyecto en lugar de en la infraestructura que lo sustenta, fomenta la colaboración entre equipos distribuidos geográficamente, adapta los recursos al tamaño de los proyectos y permite trabajar en un entorno virtualizado, distribuido y colaborativo.

Arquitectura de referencia para el crowdsourcing de software.

Las exigencias de los sistemas de crowdsourcing de software evolucionan constantemente a medida que nuevas filosofías y tecnologías de desarrollo ganan popularidad. La arquitectura de referencia presentada anteriormente está diseñada para abarcar la generalidad en múltiples dimensiones, incluyendo, por ejemplo, diferentes metodologías de desarrollo de software, esquemas de incentivos y enfoques competitivos/colaborativos. Existen varias líneas de investigación claras que podrían explorarse 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, comprender el uso de la plataforma es una consideración importante; los datos sobre usuarios, proyectos e interacción entre ambos pueden explorarse 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 propósito general y podrían ofrecerse como servicios alojados. Al alojar estos servicios, las barreras de entrada se reducirían significativamente. Finalmente, mediante la implementación de esta arquitectura, existe el potencial de derivar un marco de propósito general que podría utilizarse para diferentes proyectos de crowdsourcing de desarrollo de software o, de forma más amplia, para otras aplicaciones de crowdsourcing. La creación de dichos marcos ha tenido efectos transformadores en otros ámbitos, por ejemplo, el uso predominante de BOINC en la computación voluntaria.

Aspectos y métricas

El crowdsourcing, en general, es un tema de investigación multifacético. Su uso en el desarrollo de software se asocia con una serie de puntos de tensión clave, o facetas, que deben considerarse (véase la figura a continuación). Asimismo, la investigación puede llevarse a cabo desde la perspectiva de los tres actores principales del crowdsourcing: el cliente, el trabajador y la plataforma. [ 7 ]

Marco de investigación para el desarrollo de software mediante crowdsourcing

Descomposición de tareas:

Coordinación y comunicación:

Planificación y programación:

Control de calidad: Un proceso de crowdsourcing de software puede describirse como un juego, donde una parte intenta minimizar una función objetivo, mientras que la otra intenta maximizarla, como si ambas compitieran entre sí. Por ejemplo, un equipo de especificaciones debe elaborar especificaciones de calidad para que el equipo de programación desarrolle el código; el equipo de especificaciones minimizará los errores de software en las especificaciones, mientras que el equipo de programación identificará tantos errores como sea posible antes de comenzar a programar.

El proceso min-max es importante, ya que constituye un mecanismo de garantía de calidad y, a menudo, un equipo necesita aplicar ambos. Por ejemplo, el equipo de codificación debe maximizar la identificación de errores en la especificación, pero también debe minimizar la cantidad de errores en el código que produce.

Bugcrowd demostró 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:

Nivel 1 : personas individuales, módulos bien definidos, tamaño reducido, plazo limitado (menos de 2 meses), productos de calidad, procesos de desarrollo actuales como los de Topcoder y uTest. En este nivel, los programadores están clasificados, los sitios web contienen un repositorio en línea de materiales de crowdsourcing, el software puede ser clasificado por los participantes, se dispone de herramientas de comunicación como wikis, blogs y comentarios, y herramientas de desarrollo de software como IDE, pruebas, compiladores, simulación, modelado y análisis de programas.

Nivel 2 : equipos de personas (< 10), sistemas bien definidos, medianos, plazo medio (3 a 4 meses), procesos de desarrollo adaptativos con retroalimentación inteligente en una arquitectura de pizarra. En este nivel, un sitio web de crowdsourcing puede admitir procesos de desarrollo adaptativos e incluso procesos de desarrollo concurrentes con retroalimentación inteligente con la arquitectura de pizarra; análisis inteligente de codificadores, productos de software y comentarios; pruebas y evaluación de software multifase; análisis de Big Data, empaquetado automatizado de servicios de software en SaaS (Software como servicio), anotación con ontología , referencia cruzada 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 entrada/salida compatibles.

Nivel 3 : equipos de personas (entre 10 y 10 personas), sistema bien definido, sistemas de gran tamaño, periodo de tiempo prolongado (menos de 2 años), verificación cruzada automatizada y comparación cruzada entre contribuciones. Un sitio web de crowdsourcing de este nivel puede incluir la correspondencia automatizada de requisitos con componentes existentes, incluyendo la correspondencia de especificaciones, servicios y pruebas; así como pruebas de regresión automatizadas.

Nivel 4 : colaboración multinacional de sistemas grandes y adaptativos. Un sitio web de crowdsourcing de este nivel puede incluir 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 para el usuario.

Eventos importantes

Microsoft recurre al crowdsourcing para el desarrollo de Windows 8. En 2011, Microsoft comenzó a usar blogs para fomentar el debate entre desarrolladores y el público en general. [ 9 ] En 2013, Microsoft también comenzó a utilizar el crowdsourcing para el desarrollo de sus dispositivos móviles con Windows 8. [ 10 ] En junio de 2013, Microsoft también anunció el crowdsourcing para las pruebas de software, ofreciendo 100 000 dólares por técnicas innovadoras para identificar fallos de seguridad y 50 000 dólares por una solución al problema identificado. [ 11 ]

En 2011, la Oficina de Patentes y Marcas de los Estados Unidos lanzó un concurso de crowdsourcing bajo la Ley America COMPETES en la plataforma Topcoder para desarrollar algoritmos y software de procesamiento de imágenes para reconocer etiquetas de figuras y partes en documentos de patentes, con un premio de 50 000 USD. [ 12 ] El concurso resultó en 70 equipos que presentaron colectivamente 1797 códigos. La solución del ganador del concurso logró una alta precisión en términos de exhaustividad y exactitud para el reconocimiento de regiones de figuras y etiquetas de partes. [ 13 ]

Oracle utiliza el crowdsourcing en sus proyectos de CRM. [ 14 ]

Conferencias y talleres

En septiembre de 2013 se celebró un taller de crowdsourcing de software en Dagstuhl , Alemania. [ 15 ]

Véase también

Referencias

  1. Riedl, Christoph; Woolley, Anita (diciembre de 2016). "Equipos vs. Multitudes: una prueba de campo de la contribución relativa de los incentivos, la capacidad de los miembros y la colaboración al rendimiento en la resolución de problemas basada en la multitud". Academy of Management Discoveries . en prensa (4): 382–403 . doi : 10.5465/amd.2015.0097 .
  2. 1 2 Wu, Wenjun; WT Tsai; Wei Li (2013). "Un marco de evaluación para el crowdsourcing de software". Frontiers of Computer Science . 7 (5): 694– 709. doi : 10.1007/s11704-013-2320-2 . S2CID 3352701 . 
  3. Stol, Klaas-Jan; Fitzgerald, Brian (2014). Two's Company, Three's a Crowd: A Case Study of Crowdsourcing Software Development . 36th International Conference on Software Engineering. ACM. pp. 187– 198. doi : 10.1145/2568225.2568249 . hdl : 10344/3982 . 
  4. Wu, Wenjun; WT Tsai; Wei Li (2013). "Creative Software Crowdsourcing" . International Journal of Creative Computing . 1 : 57. doi : 10.1504/IJCRC.2013.056925 .
  5. "El software de crowdsourcing reúne ideas más sólidas" . IdeaScale . Consultado el 19 de marzo de 2016 .
  6. Bugfinders. "Pruebas de software en el mundo real" . Consultado el 21 de junio de 2013 .
  7. Stol, KJ; Fitzgerald, B. (2014). "Investigación sobre el desarrollo de software mediante crowdsourcing: perspectivas y preocupaciones". Actas del 1er Taller Internacional sobre Crowdsourcing en Ingeniería de Software - CSI-SE 2014. p. 7. doi : 10.1145/2593728.2593731 . hdl : 10344/3853 . ISBN  9781450328579. S2CID 7531317 . 
  8. "Crowdsourcing y el dilema del prisionero — Delling Advisory" . Dellingadvisory.com. 11 de abril de 2013. Consultado el 19 de marzo de 2016 .
  9. Thomas, Stuart (16 de agosto de 2011). "Microsoft lanza un blog de crowdsourcing para Windows 8" . Memeburn . Consultado el 21 de junio de 2013 .
  10. Simpson, Scott (10 de junio de 2013). "¿CORREGISTRO COLECTIVO PARA TU PRÓXIMO DISPOSITIVO WINDOWS 8?" . Recuperado el 21 de junio de 2013 .
  11. Bell, Lee (20 de junio de 2013). "Microsoft ofrece una recompensa de 100 000 dólares por encontrar una vulnerabilidad en Windows 8.1" . Archivado del original el 25 de junio de 2013. Consultado el 20 de junio de 2013 .
  12. Steffen, Robynn Sturm (16 de diciembre de 2011). "Nuevo centro de excelencia impulsa un premio para ayudar a modernizar las herramientas para el examen de patentes" . Blog de la Casa Blanca . Consultado el 30 de marzo de 2016 .
  13. 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 partes en patentes: desarrollo de algoritmos de procesamiento de imágenes basado en la competencia". Revista internacional sobre análisis y reconocimiento de documentos . 19 (2): 155– 172. arXiv : 1410.6751 . doi : 10.1007/s10032-016-0260-8 . S2CID 11873638 . 
  14. Diana, Alison (16 de marzo de 2011). "Oracle integra el crowdsourcing en el CRM" . InformationWeek . Consultado el 21 de junio de 2013 .
  15. ^ Huhns, Michael N.; Li, Wei; Tsai, Wei-Tek (2013). "Schloss Dagstuhl : página de inicio del seminario" . Informes Dagstuhl . 3 (9). Dagstuhl.de: 34– 58. doi : 10.4230/DagRep.3.9.34 . Consultado el 19 de marzo de 2016 . 

Lecturas adicionales

  • Karim R. Lakhani, David A. Garvin, Eric Logstein, "TopCoder: Desarrollo de software mediante crowdsourcing", Caso de estudio 610-032 de la Harvard Business School, 2010.