Programación de usuario

Los términos desarrollo de usuarios (Desarrollo de usuarios finales - EUD ) o programación de usuarios (Programación de usuarios finales - EUP ) denotan un conjunto de técnicas y herramientas que permiten la programación por parte de usuarios finales , personas que no son desarrolladores de software profesionales . Las personas que no son desarrolladores profesionales pueden utilizar las herramientas de EUD para crear o modificar artefactos de software (descripciones de acciones automáticas) y objetos de datos complejos sin conocimientos de lenguajes de programación .

Existen varios enfoques para el problema de la programación del usuario: este tema se explora activamente en la informática y la ciencia de la interacción humano-computadora . Los ejemplos incluyen sistemas de programación de lenguaje natural [1] [2] , hojas de cálculo [3] , lenguajes de secuencias de comandos (especialmente en suites ofimáticas o aplicaciones para artistas), programación visual, programación de acción desencadenante y programación de ejemplo .

La herramienta de programación de usuario más popular son las hojas de cálculo [3] [4] Debido a su naturaleza no restrictiva, permiten a los usuarios con poca experiencia escribir programas que representan modelos de datos complejos mientras los protegen de tener que aprender lenguajes de programación de bajo nivel. [5] Las habilidades con hojas de cálculo se consideran unas de las más útiles para los graduados universitarios debido al uso generalizado de hojas de cálculo para resolver problemas comerciales . [6] A partir de 2005, el número de usuarios que usan hojas de cálculo en los Estados Unidos se estimó en 13 millones de personas. [7]

El uso de la programación de ejemplo la necesidad de que el usuario aprenda las abstracciones de los lenguajes de programación clásicos. En cambio, el usuario especifica ejemplos de los resultados deseados u operaciones que se realizarán en los datos, y el sistema de programación del ejemplo sí mismo deriva abstracciones de esto, correspondientes al programa que genera el resultado deseado. Se pueden ingresar nuevos datos en el programa creado automáticamente de esta manera, y el usuario puede corregir errores en la salida para corregir el programa. Las plataformas de desarrollo con un mínimo de código también son una opción para la programación del usuario.

Un área de desarrollo en esta área es el uso de dispositivos móviles para apoyar el desarrollo de software personalizado. La especificidad de los dispositivos móviles no permite aplicar los mismos enfoques que funcionaron para las aplicaciones de escritorio. Los entornos de escritorio de EUD carecen de los beneficios de permitir que los usuarios finales creen aplicaciones siempre que sea posible. [ocho]

Recientemente, también ha aumentado el interés en cómo utilizar las técnicas de EUD para desarrollar aplicaciones de Internet de las cosas . En esta área, la programación de acciones desencadenantes se considera un enfoque prometedor. [9]

Las decisiones de la EUD pueden tener un impacto significativo en áreas tales como el ciclo de vida del software para productos de software comerciales, el desarrollo web doméstico y la implementación de aplicaciones empresariales .

Plataformas de desarrollo con código mínimo

Actualmente hay aproximadamente 40 proveedores que ofrecen soluciones a los usuarios finales para reducir el esfuerzo de programación. Crear programas en ellos no requiere conocimientos de programación tradicional, sin embargo, están diseñados para crear sistemas bastante especializados, como sistemas de gestión de contratos, sistemas de gestión de relaciones con clientes , sistemas de seguimiento de fallos y errores . Dichos sistemas de desarrollo a menudo se denominan plataformas de desarrollo con un mínimo de código . Por regla general, son una guía interactiva que permite al usuario desarrollar una aplicación en tan solo 40-80 horas (1,7-3,3 días).

Definición

Lieberman y otros ofrecen la siguiente definición: [10]

El desarrollo de usuarios se puede definir como un conjunto de métodos, técnicas y herramientas que permiten a los usuarios de software que no son desarrolladores de software profesionales crear, modificar o ampliar artefactos de software hasta cierto punto.

Ko et al., ofrecen la siguiente definición: [11]

La programación del usuario es la programación para lograr el resultado de un programa principalmente para uso personal en lugar de público.

Los artefactos de software creados por los usuarios finales pueden ser descripciones de comportamientos automatizados o secuencias de control, como consultas de bases de datos o reglas gramaticales [12], que se pueden crear utilizando paradigmas de programación como programación por demostración , programación por ejemplos , programación visual o crear macros . [13] Ellos (artefactos) también pueden ser un conjunto de parámetros que apuntan a una de las formas predefinidas en que funciona el programa. [14] Otros artefactos generados por el usuario final pueden ser formas de contenido generado por el usuario, como anotaciones, que pueden o no ser interpretables mediante programación (es decir, pueden ser procesadas por funciones automatizadas apropiadas). [quince]

Ejemplos

Los ejemplos de desarrollo personalizado incluyen:

Modelado de costos y beneficios

Según Sutcliff , [21] EUD es esencialmente subcontratar el desarrollo al usuario final. Aprender las herramientas de EUD siempre requiere un poco de esfuerzo, por lo que la motivación de los usuarios depende de su creencia de que ayudarán a facilitar el trabajo, ahorrar tiempo o aumentar la productividad. En este modelo, los beneficios para el usuario se basan en marketing, demostraciones y el boca a boca. Una vez que la tecnología se usa activamente, la experiencia real y los beneficios se convierten en un motivador clave.

El estudio anterior define costos como la suma de lo siguiente:

Los costos del primer y segundo punto son únicos, y los costos del tercero y cuarto surgen cada vez durante el desarrollo. Los beneficios (reales o percibidos) en este caso son los siguientes:

Colaboración en desarrollo a medida

La mayoría de las actividades de desarrollo de usuarios, por su propia naturaleza, requieren colaboración, ya sea entre los propios desarrolladores de usuarios o entre los usuarios y los desarrolladores profesionales.

El desarrollo mutuo [22] es una técnica en la que los desarrolladores profesionales y usuarios intentan conjuntamente crear un producto de software. Los desarrolladores profesionales suelen crear la columna vertebral del sistema y proporcionan herramientas que los "propietarios de tareas [23] " pueden usar cuando sea necesario para crear soluciones adecuadas que tengan en cuenta los objetivos y contextos de un problema particular [24] . Como resultado de la comunicación entre los desarrolladores profesionales y los usuarios, las modificaciones específicas de estos últimos pueden transformarse en artefactos de software y convertirse en una funcionalidad comercial completa que afecta globalmente al producto.

Se han propuesto varios enfoques para cerrar la brecha de comunicación entre los desarrolladores profesionales y los usuarios, como los talleres de moldeado de software [25] . Estos enfoques tratan de proporcionar transparencia (de acuerdo con el modelo de transparencia social [26] ), para que cada participante en el proceso sea consciente de los cambios realizados por otros participantes y pueda ser responsable de sus acciones debido a esta conciencia.

Mientras que los desarrolladores profesionales usan plataformas de colaboración especializadas (como GitHub), los desarrolladores de usuarios prefieren usar sistemas wiki donde comparten sus artefactos de software creados. El desarrollo personalizado también se usa a menudo para crear scripts de automatización o tutoriales interactivos para compartir conocimientos prácticos. Los ejemplos incluyen los programas CoScripter [27] y HILC [28] . En dichas aplicaciones, el usuario puede crear scripts utilizando un lenguaje seminatural o programando mediante demostración. Al mismo tiempo, los usuarios pueden compartir el script creado cargándolo en un repositorio especial en línea organizado en estilo wiki. En esta página wiki, los usuarios no solo pueden buscar scripts disponibles, sino también mejorarlos agregando parámetros adicionales para adaptarlos a diferentes condiciones o trabajar con otros objetos.

Además, existen comunidades en línea y fuera de línea de desarrolladores de usuarios, donde pueden resolver problemas de desarrollo de manera conjunta sobre una base de beneficio mutuo. En tales comunidades, los expertos locales comparten sus conocimientos y brindan asesoramiento. Los miembros de la comunidad a menudo se apoyan socialmente entre sí, lo que ayuda al desarrollo de software público [29] .

Crítica

A los investigadores les preocupa que los usuarios finales a menudo no entiendan cómo probar o asegurar sus aplicaciones. Warren Harrison, profesor de informática en la Universidad Estatal de Portland, escribió [30] :

Es alucinante que estemos tratando de esperar algún tipo de seguridad... de la gran mayoría de las aplicaciones si están escritas con poco o ningún conocimiento de las buenas prácticas generalmente aceptadas (como una definición clara del problema antes de codificar, pruebas sistemáticas , etc.) ... ¿Cuántos libros "X for Dummies" hay (donde "X" es tu lenguaje de programación favorito)? Al principio me divirtió esta tendencia, pero últimamente me inquieta pensar en dónde estos diletantes pueden aplicar sus nuevos conocimientos.

Desde este punto de vista, se supone que todos los usuarios finales son igualmente malos en el desarrollo de software, pero Pliskin y Shoval argumentan que no es cierto que los usuarios avanzados sean capaces de desarrollar un desarrollo de calidad. [31] . Sin embargo, a diferencia de los profesionales, los programadores de usuarios rara vez tienen el tiempo o la motivación para dominar sistemática y disciplinadamente el arte del desarrollo [32] , lo que hace que sea muy difícil garantizar la calidad de los productos de software de usuario.

La investigación sistemática sobre el desarrollo de software de usuario ha sido una respuesta a esto. Se ocupan de cuestiones que van más allá del propio desarrollo, en particular, la motivación de los usuarios-desarrolladores para garantizar que sus productos sean seguros, verificables o reutilizables [33] .

Una solución alternativa es que los usuarios finales o sus asesores utilicen herramientas declarativas que brinden seguridad y reglas comerciales sólidas a expensas del rendimiento y la escalabilidad; por regla general, los productos creados con EUD son menos eficientes que los creados con entornos de programación profesionales. Sin embargo, la separación de la funcionalidad y la eficiencia es un principio aceptable : puede conducir a una situación en la que los usuarios desarrolladores realicen análisis de requisitos y creación de prototipos de herramientas sin la participación de analistas comerciales . Por lo tanto, los usuarios determinarán por sí mismos la funcionalidad requerida incluso antes de que estos expertos puedan evaluar las limitaciones impuestas por una determinada tendrán la oportunidad de considerar las limitaciones de una aplicación o plataforma de software en particular . Dichas iniciativas de los usuarios pueden contar con el respaldo de la gerencia, según las afiliaciones existentes o potenciales con los proveedores de software.

Véase también

Enlaces

  1. Greg Little y Robert C (Miller Little, Greg y Robert C. Miller). Traducción de comandos de palabras clave en código ejecutable. Archivado el 10 de diciembre de 2017 en Wayback Machine / 19th Annual Proceedings ACM Symposium on User Interface Technologies. ACM, 2006.
  2. Bruckman, Amy y Elizabeth Edwards. " ¿Deberíamos aprovechar el conocimiento del lenguaje natural? Un análisis de los errores del usuario en un lenguaje de programación de estilo de lenguaje natural" Archivado el 29 de agosto de 2017 en Wayback Machine "/ Actas de la conferencia SIGCHI sobre factores humanos en sistemas informáticos. ACM, 1999. A.P.A.
  3. 1 2 Burnett, Margaret M. Desarrollo de usuarios finales  / Margaret M. Burnett, Christopher Scaffidi. — Interacción-Diseño.org. Archivado el 3 de julio de 2015 en Wayback Machine en Encyclopedia of Human-Computer Interaction.
  4. Hornsby, Peter Capacitar a los usuarios para crear su propio software . UX Matters (3 de agosto de 2009). Consultado el 31 de enero de 2014. Archivado desde el original el 26 de enero de 2022.
  5. Abraham, R. Programación de hojas de cálculo // Enciclopedia Wiley de informática e ingeniería / R. Abraham, M Burnett, M ​​Erwig. - 2009. - P. 1–10.
  6. Kruck, S. & Sheetz, S., 2001. Teoría de precisión de la hoja de cálculo . Archivado el 18 de agosto de 2018 en Wayback Machine . Revista de Pedagogía en Sistemas de Información (Journal of Information Systems Education).
  7. Scaffidi, C., Shaw, M. & Myers, B., 2005. Estimating the Numbers of End Users and End User Programmers) Archivado el 12 de septiembre de 2011 en Wayback Machine . Simposio IEEE de 2005 sobre lenguajes visuales y computación centrada en el ser humano (VL/HCC'05), págs. 207–214.
  8. Paternò F., 2013, Ingeniería de software ISRN, Desarrollo de usuarios finales: Encuesta de un campo emergente para empoderar a las personas . Consultado el 17 de noviembre de 2020. Archivado desde el original el 31 de enero de 2022.
  9. G. Giani, M. Manca, F. Paterno, S. Santoro (Ghiani, G., Manca, M., Paternò, F., Santoro, C.): Personalización de programas dependientes del contexto mediante acciones desencadenantes (Personalización de aplicaciones dependientes del contexto a través de reglas de acción desencadenante). ACM Transactions on Computer-Human Interaction, Vol.24, Número 2, Artículo N.14, abril de 2017.
  10. Lieberman, H., Paternò, F., Klann, M. y Wulf, V. (2006). Desarrollo a la medida: un nuevo paradigma. En: Desarrollo de software personalizado, Lieberman, H., Paternò, F. y Wulf, V. (eds.), Springer Países Bajos, 2006, ser. Interacción humano-computadora, Volumen 9, Capítulo 1, págs. 1-7, doi : 10.1007/1-4020-5386-X_1
  11. Ko, ​​Andrew J.; Abraham, Robín; Beckwith, Laura; Blackwell, Alan; Burnett, Margaret; Erwig, Martín; Scaffidi, Chris; Lawrence, José; Liberman, Henry (2011-04-01). “El estado del arte en ingeniería de software de usuario final” Cómputo ACM. sobrev . 43 (3): 21:1–21:44. CiteSeerX  10.1.1.159.8597 . DOI : 10.1145/1922649.1922658 . ISSN  0360-0300 .
  12. H. Lieberman, B. A. Nardi y D. Wright. Grammex: Definiendo gramáticas con ejemplos (Grammex: Definiendo gramáticas con ejemplos). Conferencia ACM sobre factores humanos en sistemas informáticos (resumen y demostraciones) (CHI '98), Los Ángeles, CA, EE. UU., págs. 11 y 12. ACM Press, abril de 1998. (Conferencia de ACM sobre factores humanos en sistemas informáticos)
  13. Maria Francesca Costabile, Daniela Fogli, Piero Mussio, Antonio Piccinno. Desarrollo del usuario final: el enfoque del taller de configuración de software . Archivado el 18 de agosto de 2018 en Wayback Machine . En Lieberman, H., Paternò, F., Wulf, V. (Eds) (2004) Desarrollo de usuarios finales — Capacitar a las personas para que empleen de forma flexible tecnología avanzada de información y comunicación, © 2004 Kluwer Academic Publishers, Dordrecht, Países Bajos.
  14. Costabile, MF, Fogli, D., Letondal, C., Mussio, P., Piccinno, A., Domain-Expert Users and their Needs of Software Development Copia archivada con fecha del 31 de enero de 2022 en la Wayback Machine ", Conferencia UAHCI , Creta, 22-27 de junio de 2003, 232-236.
  15. Gerhard Fischer Desarrollo de usuarios finales y metadiseño: Fundamentos para culturas de participación Archivado el 18 de agosto de 2018 en Wayback Machine . Apuntes de clase sobre programación de usuario en informática, 2009, volumen 5435/2009, 3-14,
  16. Scaffidi, Christopher. SIG: Programación de Usuario / Christopher Scaffidi, Joel Brandt, Margaret Burnett … [ y otros ] . - 2012. - Pág. 1193-1996. — ISBN 9781450310161 . -doi : 10.1145/ 2212776.2212421 .
  17. Leonardo, Nicola. Programación de acciones sobre un gatillo para personalizar el comportamiento de robots humanoides / Nicola Leonardi, Marco Manca, Fabio Paternò … [ et al. ] . - 2019. - ISBN 978-145035970-2 . -doi : 10.1145/ 3290605.3300675 .
  18. Sarkar, Advait. Aprenda y pruebe: una técnica interactiva simple para el modelado de datos arbitrarios del usuario final / Advait Sarkar, Alan Blackwell, Mateja Jamnik … [ et al. ] . - Julio 2014. - Págs. 53-56. — ISBN 978-1-4799-4035-6 . -doi : 10.1109/ VLHCC.2014.6883022 .
  19. ↑ Haynes , John L. Circuit Design with Lotus 1-2-3 , BYTE  (otoño de 1985), págs. 143–156. Consultado el 19 de marzo de 2016.
  20. Roy Chowdhury, Soudip. Computación con sabiduría: sobre recomendaciones interactivas basadas en la composición de datos  / Soudip Roy Chowdhury, Carlos Rodríguez, Florian Daniel … [ y otros ] . - 2010. - P.  144–155 . — ISBN 9783642193934 .
  21. Alistair Sutcliff (julio de 2005). “Evaluación de pérdidas y beneficios en el desarrollo de usuarios”. Notas de diseño del software ACM SIGSOFT . 30 (4): 1-4. DOI : 10.1145/1082983.1083241 .
  22. Andersen, Renata. Desarrollo mutuo: un estudio de caso sobre el desarrollo de software iniciado por el cliente: [ ing. ]  / Renate Andersen, Anders I. Mørch. — 2009-03-02. — vol. 5435.—Pág. 31–49. - ISBN 978-3-642-00425-4 . -doi : 10.1007 / 978-3-642-00427-8_3 .
  23. Fischer, Gerhard. Transferir el control a los propietarios de tareas en entornos de desarrollo basados ​​en temas // Requisitos para entornos de desarrollo basados ​​en usuarios: [ ing. ] . — Springer, Berlín, Heidelberg, 1994-01-01. - Pág. 297-306. — ISBN 978-3-642-08189-7 . -doi : 10.1007/ 978-3-662-03035-6_23 .
  24. Fischer, Gerhard. Desarrollo personalizado  : [ ing. ]  / Gerhard Fischer, Elisa Giaccardi. — Springer Holanda, 2006-01-01. — pág  . 427–457 . — ISBN 9781402042201 . -doi : 10.1007 / 1-4020-5386-x_19 .
  25. Liberman, Henry. Desarrollo personalizado  : [ ing. ]  / Henry Lieberman, Fabio Paternò, Markus Klann … [ et al. ] . — Springer Holanda, 2006-01-01. — P.  1–8 . — ISBN 9781402042201 . -doi : 10.1007 / 1-4020-5386-x_1 .
  26. Erickson, Thomas; Kellogg, Wendy A. (2000-03-01). “Transparencia social: un enfoque de desarrollo de sistemas que apoya los procesos sociales”. ACM Trans. Comput.-Hum. Interactuar . 7 (1): 59-83. DOI : 10.1145/344949.345004 . ISSN  1073-0516 .
  27. Leshed, Gilly. CoScripter: Automatización y transferencia de conocimientos prácticos en un entorno corporativo  / Gilly Leshed, Eben M. Haber, Tara Matthews … [ et al. ] . - Nueva York, NY, EE. UU.: ACM, 2008-01-01. — Pág  . 1719–1728 . — ISBN 9781605580111 . -doi : 10.1145/ 1357054.1357323 .
  28. Intharah, Thanapong. Ayuda, no puedo resolverlo: Automatización de tareas en la GUI con demostraciones y preguntas de seguimiento / Thanapong Intharah, Daniyar Turmukhambetov, Gabriel J. Brostow. — Nueva York, NY, EE. UU.: ACM, 2017-01-01. - Pág. 233-243. — ISBN 9781450343480 . -doi : 10.1145/ 3025171.3025176 .
  29. Fisher, G.; Giaccardi, E.; Vosotros, Y.; Sutcliffe, AG; Mehandjiev, N. (2004-09-01). "Meta Diseño: El Manifiesto de Desarrollo de Usuario". común ACM . 47 (9): 33-37. DOI : 10.1145/1015864.1015884 . ISSN  0001-0782 .
  30. Harrison, Warren (julio-agosto de 2004). "Los peligros de la programación de usuario". software IEEE . 21 (4): 5. DOI : 10.1109/MS.2004.13 .
  31. Pliskin, Nava; Shoval, Peretz (1987). “Prototipado personalizado: participación de usuarios avanzados en el desarrollo de sistemas”. Base de datos ACM SIGMIS . 18 (4): 7-17. DOI : 10.1145/1017816.1017817 .
  32. Brandt, Joel. Programación oportunista: cómo se lleva a cabo la creación rápida de prototipos de ideas en la práctica / Joel Brandt, Philip J. Guo, Joel Lewenstein ... [ et al. ] . - Nueva York, NY, EE. UU.: ACM, 2008-01-01. — págs. 1–5. — ISBN 9781605580340 . -doi : 10.1145/ 1370847.1370848 .
  33. Ingeniería de software de usuario final: Hallazgos empíricos . Usuarios finales que dan forma al consorcio de software eficaz. Consultado el 28 de mayo de 2008. Archivado desde el original el 31 de marzo de 2022.

Lecturas adicionales

Enlaces externos