Articulo de referencia

Desarrollo de software mediante crowdsourcing

El desarrollo de software mediante crowdsourcing o crowdsourcing de software es un área emergente de la ingeniería de software . Es una convocatoria abierta para participar en c...

El desarrollo de software mediante crowdsourcing o crowdsourcing de software es un área emergente de la ingeniería de software . Es una convocatoria abierta para participar en cualquier tarea de desarrollo de software , incluida la documentación , el diseño , la codificación y las pruebas . Estas tareas normalmente las llevan a cabo 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 son abordadas por miembros del público en general. Los individuos y los equipos también 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 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 tiene como objetivo 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 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 presentará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.

Ampliar la participación : un objetivo es reclutar tantos participantes como sea posible para obtener la mejor solución o difundir conocimientos relevantes.

Educación de los participantes : los organizadores están interesados ​​en enseñar a los participantes nuevos conocimientos. Un ejemplo es nonamesite.com, patrocinado por DARPA para enseñar ciencia, tecnología, ingeniería y matemáticas .

Aprovechamiento de fondos : el objetivo es estimular a otras organizaciones a patrocinar proyectos similares para aprovechar fondos.

Marketing: Los proyectos de crowdsourcing pueden utilizarse 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: sistemas de clasificación, reputación y premios para productos y participantes. 3) Herramientas de redes sociales: permiten a los participantes comunicarse y apoyarse entre sí. 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 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 objeto de crowdsourcing, 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, pruebas de experiencia de usuario), mantenimiento, experiencia de usuario o cualquier combinación de estas. [4]

Los procesos de desarrollo de software existentes se pueden modificar 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 se pueden publicar, descubrir, componer, personalizar, simular y probar; 6) métodos formales: los métodos formales se pueden subcontratar.

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. En el crowdsourcing no competitivo, participarán en él individuos individuales o varios individuos pueden colaborar para crear software. Los productos producidos pueden ser evaluados de forma cruzada para garantizar la consistencia y calidad de los productos y para identificar talentos, y la evaluación cruzada puede ser evaluada mediante crowdsourcing.

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

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

La preselección de los participantes es importante para la calidad del crowdsourcing de software. En el crowdsourcing competitivo, un participante de bajo rango no debería competir con un participante de alto rango.

Plataformas

Las plataformas de crowdsourcing de software, como la App Store de Apple Inc. , Topcoder y uTest, demuestran las ventajas 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 entregar directamente sus diseños y productos creativos a los clientes de teléfonos inteligentes. Estos desarrolladores están motivados a contribuir con diseños innovadores tanto para la reputación como para el pago mediante 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, hay muchas plataformas colaborativas basadas en la comunidad para las incubadoras de aplicaciones para teléfonos inteligentes. Por ejemplo, AppStori presenta un enfoque de financiación colectiva para construir una comunidad en línea para desarrollar ideas prometedoras sobre nuevas aplicaciones para iPhone. IdeaScale es otra plataforma para el crowdsourcing de software. [5]

Otro ejemplo de crowdsourcing es Topcoder , que 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 premio principal. Siguiendo este modelo, Topcoder ha establecido una plataforma en línea para respaldar su ecosistema y ha reunido una fuerza laboral global virtual con más de un 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 de Topcoder consta de varias fases diferentes y dentro de cada fase puede haber diferentes tipos de competencia: [ cita requerida ]

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

Cada paso puede ser una competición de crowdsourcing.

Proceso de prueba de BugFinders: [6]

  1. Involucrar a BugFinders;
  2. Definir Proyectos;
  3. Administrado por BugFinders;
  4. Revisar errores;
  5. Corregir errores; y
  6. Lanzamiento de software.

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 una base para las métricas.

Los modelos económicos pueden proporcionar incentivos para la participación en iniciativas de crowdsourcing.

Arquitectura de referencia

El desarrollo de software mediante crowdsourcing puede seguir diferentes metodologías de ingeniería de software utilizando diferentes modelos de procesos, técnicas y herramientas. También tiene procesos de crowdsourcing específicos que involucran actividades únicas como tareas de licitación, asignación de expertos, evaluación de calidad e integración de software. [ cita requerida ] Para respaldar el proceso de subcontratación y facilitar la colaboración de la comunidad, generalmente se crea 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 involucrarse en casi todos los aspectos del desarrollo de software, incluida 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 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: [ cita requerida ]

  1. Personalizable para soportar modelos de procesos típicos;
  2. Configurable para componer diferentes componentes funcionales;
  3. Escalable para facilitar la solución de problemas de variado tamaño.

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 utiliza para describir una variedad de conceptos informáticos diferentes que involucran una gran cantidad de computadoras conectadas a través de una red de comunicación en tiempo real (normalmente Internet). Al trasladar aplicaciones de crowdsourcing a la nube se pueden encontrar muchas ventajas: se centra en el desarrollo del proyecto en lugar de en la infraestructura que respalda este proceso, se fomenta la colaboración entre equipos distribuidos geográficamente, se escalan los recursos al tamaño de los proyectos, se trabaja en un entorno virtualizado, distribuido y colaborativo.

Arquitectura de referencia para el crowdsourcing de software

Las demandas de los sistemas de crowdsourcing de software están en constante evolución a medida que nuevas filosofías y tecnologías de desarrollo ganan terreno. La arquitectura de referencia presentada anteriormente está diseñada para abarcar la generalidad en muchas dimensiones, incluyendo, 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, 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 entregarse como servicios alojados. Al alojar estos servicios, las barreras de entrada se reducirían significativamente. Finalmente, a través de las 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 dichos 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 del crowdsourcing en el desarrollo de software está asociado con una serie de puntos de tensión clave, o facetas, que deben tenerse en cuenta (véase la figura siguiente). Al mismo tiempo, la investigación puede realizarse desde la perspectiva de los tres actores clave 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:

Garantía de calidad: un proceso de crowdsourcing de software se puede describir como un proceso de juego, en el que una de las partes intenta minimizar una función objetivo, pero la otra intenta maximizar la misma función objetivo como si ambas partes compitieran entre sí en el juego. Por ejemplo, un equipo de especificaciones debe producir especificaciones de calidad para que el equipo de codificación desarrolle el código; el equipo de especificaciones 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 de mínimo-máximo es importante porque es un mecanismo de control de calidad y, a menudo, un equipo debe realizar 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 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 individuales, módulos bien definidos, tamaño pequeño, tiempo limitado (menos de 2 meses), productos de calidad, procesos de desarrollo actuales como el de Topcoder y uTest. En este nivel, los programadores están clasificados, los sitios web contienen materiales de colaboración colectiva en repositorios en línea, el software puede ser clasificado por los participantes, tienen herramientas de comunicación como wiki, blogs, comentarios, 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 y grandes, lapso de tiempo mediano (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 simultáneos con retroalimentación inteligente con la arquitectura de pizarra; análisis inteligente de codificadores, productos de software y comentarios; evaluación y prueba de software en múltiples fases; análisis de Big Data, empaquetado automatizado de servicios de software en SaaS (Software como servicio), anotaciones con ontología , referencias cruzadas a DBpedia y Wikipedia; análisis y clasificación automatizados de servicios de software; anotaciones y razonamientos de ontologías, como vincular esos servicios con entradas/salidas compatibles.

Nivel 3 : equipos de personas (<100 y >10), sistema bien definido, sistemas grandes, período 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 correspondencia automatizada de requisitos con componentes existentes, incluida la correspondencia 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 al dominio 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 colabora con desarrolladores para Windows 8. En 2011, Microsoft creó blogs para fomentar el debate entre desarrolladores y público en general. [9] En 2013, Microsoft también comenzó a colaborar con desarrolladores para Windows 8 en sus dispositivos móviles. [10] En junio de 2013, Microsoft también anunció la colaboración con desarrolladores para pruebas de software, ofreciendo 100.000 dólares para técnicas innovadoras de identificación de errores de seguridad y 50.000 dólares para una solución al problema identificado. [11]

En 2011, la Oficina de Patentes y Marcas de los Estados Unidos lanzó un concurso de colaboración colectiva en virtud de 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 dio como resultado que 70 equipos presentaran colectivamente 1797 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 partes. [13]

Oracle utiliza el 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]

Véase también

Referencias

  1. ^ Riedl, Christoph; Woolley, Anita (diciembre de 2016). "Equipos frente a multitudes: una prueba de campo de la contribución relativa de los incentivos, la capacidad de los miembros y la colaboración al rendimiento de la resolución de problemas en grupo". Academy of Management Discoveries . en prensa (4): 382–403. doi :10.5465/amd.2015.0097.
  2. ^ ab 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). Dos son compañía, tres son multitud: un estudio de caso de desarrollo de software mediante crowdsourcing. 36.ª Conferencia internacional sobre ingeniería de software. ACM. págs. 187–198. doi :10.1145/2568225.2568249. hdl : 10344/3982 .
  4. ^ Wu, Wenjun; WT Tsai; Wei Li (2013). "Crowdsourcing de software creativo". Revista internacional de informática creativa . 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 1.er taller internacional sobre crowdsourcing en ingeniería de software - CSI-SE 2014. pág. 7. doi :10.1145/2593728.2593731. hdl :10344/3853. ISBN 9781450328579. Número de identificación del sujeto  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 colaboración colectiva para Windows 8». Memeburn . Consultado el 21 de junio de 2013 .
  10. ^ Simpson, Scott (10 de junio de 2013). "¿USTED MISMO DISPOSITIVO WINDOWS 8 COMO PARTICIPACIÓN COLECTIVA?" . Consultado el 21 de junio de 2013 .
  11. ^ Bell, Lee (20 de junio de 2013). «Microsoft ofrece una recompensa de 100.000 dólares por hackear Windows 8.1». Archivado desde el original el 25 de junio de 2013. Consultado el 20 de junio de 2013 .{{cite news}}: CS1 maint: URL no apta ( enlace )
  12. ^ Steffen, Robynn Sturm (16 de diciembre de 2011). "Nuevo centro de excelencia impulsa premio para ayudar a modernizar herramientas para el examen de patentes". The White House Blog . 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 piezas en patentes: desarrollo basado en la competencia de algoritmos de procesamiento de imágenes". 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 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 .

Lectura adicional

  • Karim R. Lakhani, David A. Garvin, Eric Logstein, "TopCoder: desarrollo de software a través del crowdsourcing", Harvard Business School, caso 610-032, 2010.
  • Desarrollo de WikiMedia con colaboración colectiva
Obtenido de "https://es.wikipedia.org/w/index.php?title=Desarrollo_de_software_mediante_crowdsourcing&oldid=1237253774"