stringtranslate.com

Desarrollo de usuario final

El desarrollo de usuario final ( EUD ) o la programación de usuario final ( EUP ) se refiere a actividades y herramientas que permiten a los usuarios finales (personas que no son desarrolladores de software profesionales) programar computadoras . Las personas que no son desarrolladores profesionales pueden utilizar herramientas EUD para crear o modificar artefactos de software (descripciones de comportamiento automatizado) y objetos de datos complejos sin un conocimiento significativo de un lenguaje de programación . En 2005 se estimó (utilizando estadísticas de la Oficina de Estadísticas Laborales de EE. UU .) que para 2012 habría más de 55 millones de desarrolladores usuarios finales en los Estados Unidos, en comparación con menos de 3 millones de programadores profesionales. [1] Existen varios enfoques de EUD y es un tema de investigación activo dentro del campo de la informática y la interacción persona-computadora . Los ejemplos incluyen programación en lenguaje natural , [2] [3] hojas de cálculo , [4] lenguajes de secuencias de comandos (particularmente en una suite de oficina o aplicación artística), programación visual , programación de acción desencadenante y programación por ejemplo .

La herramienta EUD más popular es la hoja de cálculo . [4] [5] Debido a su naturaleza ilimitada, las hojas de cálculo permiten a los usuarios de computadoras relativamente poco sofisticados escribir programas que representan modelos de datos complejos, al tiempo que los protegen de la necesidad de aprender lenguajes de programación de nivel inferior. [6] Debido a su uso común en los negocios, las habilidades con hojas de cálculo se encuentran entre las habilidades más beneficiosas para un empleado graduado y, por lo tanto, son las más buscadas [7] Solo en los Estados Unidos de América, se estima que hay 13 millones de desarrolladores usuarios finales programando con hojas de cálculo [8]

El enfoque de programación por ejemplo ( PbE ) reduce la necesidad de que el usuario aprenda las abstracciones de un lenguaje de programación clásico. En cambio, el usuario introduce algunos ejemplos de los resultados u operaciones deseadas que deben realizarse con los datos, y el sistema PbE infiere algunas abstracciones correspondientes a un programa que produce esta salida, que el usuario puede refinar. Luego se pueden introducir nuevos datos en el programa creado automáticamente y el usuario puede corregir cualquier error cometido por el programa para mejorar su definición. Las plataformas de desarrollo de código bajo también son un enfoque para la DUE.

Una evolución en esta área ha considerado el uso de dispositivos móviles para respaldar las actividades de desarrollo del usuario final. En este caso, los enfoques anteriores para aplicaciones de escritorio no pueden simplemente volver a proponerse, dadas las características específicas de los dispositivos móviles. Los entornos EUD de escritorio carecen de las ventajas de permitir a los usuarios finales crear aplicaciones de forma oportunista mientras están en movimiento. [9]

Más recientemente, ha aumentado el interés en cómo explotar EUD para respaldar el desarrollo de aplicaciones de Internet de las cosas. En esta área, la programación de acciones desencadenantes parece un enfoque prometedor. [10]

Las lecciones aprendidas de las soluciones EUD pueden influir significativamente en los ciclos de vida del software para productos de software comerciales , desarrollos internos de intranet / extranet e implementaciones de aplicaciones empresariales .

Plataformas de desarrollo de código bajo para aplicaciones específicas

Aproximadamente 40 proveedores ofrecen ahora soluciones dirigidas a usuarios finales diseñadas para reducir los esfuerzos de programación. Estas soluciones no requieren programación tradicional y pueden basarse en una funcionalidad relativamente limitada, por ejemplo, gestión de contratos, gestión de relaciones con los clientes, seguimiento de problemas y errores. A menudo denominadas plataformas de desarrollo de código bajo, las interacciones basadas en la web guían al usuario a desarrollar una aplicación en tan solo 40 a 80 horas. [11] [ referencia circular ]

Definición

Lieberman et al. proponer la siguiente definición: [12]

El desarrollo de usuario final se puede definir como un conjunto de métodos, técnicas y herramientas que permiten a los usuarios de sistemas de software, que actúan como desarrolladores de software no profesionales, en algún momento crear, modificar o ampliar un artefacto de software.

Ko et al. proponer la siguiente definición: [13]

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

Los artefactos definidos por los usuarios finales pueden ser objetos que describen algún comportamiento automatizado o secuencia de control, como solicitudes de bases de datos o reglas gramaticales, [14] que pueden describirse con paradigmas de programación como programación por demostración , programación con ejemplos , programación visual o generación de macros . . [15] También pueden ser parámetros que eligen entre comportamientos alternativos predefinidos de una aplicación. [16] Otros artefactos del desarrollo del usuario final también pueden referirse a la creación de contenido generado por el usuario, como anotaciones, que pueden o no ser interpretables computacionalmente (es decir, pueden ser procesados ​​por funciones automatizadas asociadas). [17]

Ejemplos

Ejemplos de desarrollo para el usuario final incluyen la creación y modificación de:

Modelado de costo-beneficio

Según Sutcliffe , [23] EUD esencialmente subcontrata el esfuerzo de desarrollo al usuario final. Dado que siempre hay que hacer algún esfuerzo para aprender a utilizar una herramienta EUD, la motivación de los usuarios depende de su confianza en que potenciará su trabajo, ahorrará tiempo en el trabajo o aumentará la productividad. En este modelo, los beneficios para los usuarios se basan inicialmente en el marketing, las demostraciones y el boca a boca. Una vez que la tecnología se pone en uso, la experiencia de los beneficios reales se convierte en el motivador clave.

Este estudio define los costos como la suma de:

Los costos primero y segundo se incurren una vez durante la adquisición, mientras que el tercero y el cuarto se incurren cada vez que se desarrolla una aplicación. Los beneficios (que pueden ser percibidos o reales) se consideran:

Colaboraciones en el desarrollo del usuario final

Muchas actividades de desarrollo de usuarios finales son de naturaleza colaborativa, incluida la colaboración entre desarrolladores profesionales y desarrolladores de usuarios finales y la colaboración entre desarrolladores de usuarios finales.

El desarrollo mutuo [24] es una técnica en la que los desarrolladores profesionales y los desarrolladores de usuarios finales trabajan juntos para crear soluciones de software. En el desarrollo mutuo, los desarrolladores profesionales a menudo “diseñan” el sistema y proporcionan las herramientas que permiten a los “propietarios de los problemas [25] " crear la solución adecuada en el momento de su uso para sus necesidades, objetivos y contextos situacionales. [26] Luego La comunicación entre desarrolladores profesionales y desarrolladores de usuarios finales a menudo puede estimular la formalización de modificaciones ad hoc por parte de los usuarios finales en artefactos de software, transformando soluciones desarrolladas por el usuario final en características de productos comerciales con impactos más allá de las soluciones locales.

En esta colaboración, se proponen varios enfoques, como el Software Shaping Workshop [27], para cerrar la brecha de comunicación entre los desarrolladores profesionales y los desarrolladores de usuarios finales. Estos enfoques a menudo proporcionan translucidez según el modelo de translucidez social, [28] permitiendo que todos en la colaboración sean conscientes de los cambios realizados por otros y sean responsables de sus acciones debido a la conciencia.

Además de las plataformas de colaboración de programación como GitHub, que son utilizadas principalmente por desarrolladores expertos debido a su pronunciada curva de aprendizaje, las colaboraciones entre desarrolladores usuarios finales a menudo tienen lugar en plataformas wiki donde se comparten los artefactos de software creados. El desarrollo de usuario final también se utiliza a menudo para crear scripts de automatización o tutoriales interactivos para compartir conocimientos prácticos. Ejemplos de dicha aplicación incluyen CoScripter [29] y HILC. [30] En dichas aplicaciones, el usuario puede crear scripts para tareas utilizando un lenguaje pseudonatural o mediante programación mediante demostración. Los usuarios pueden optar por cargar el script en un repositorio de scripts de estilo wiki. En este wiki, los usuarios pueden explorar los scripts disponibles y ampliar los scripts existentes para admitir parámetros adicionales, manejar condiciones adicionales u operar con objetos adicionales.

También se han formado comunidades en línea y fuera de línea de desarrolladores de usuarios finales, donde los desarrolladores de usuarios finales pueden resolver en colaboración problemas EUD de interés compartido o de beneficio mutuo. En dichas comunidades, los expertos locales difunden sus conocimientos y consejos. Los miembros de la comunidad también se brindan apoyo social entre sí para respaldar la construcción colaborativa de software. [31]

Crítica

A los comentaristas les preocupa que los usuarios finales no comprendan cómo probar y proteger sus aplicaciones. Warren Harrison, profesor de informática en la Universidad Estatal de Portland, escribió: [32]

Es simplemente incomprensible que podamos esperar seguridad... de la gran mayoría de las aplicaciones de software que existen cuando están escritas con poco o ningún conocimiento de las buenas prácticas generalmente aceptadas, como especificar antes de codificar, pruebas sistemáticas, etc. ... ¿Cuántos libros de X para completos idiotas (donde "X" es tu lenguaje de programación favorito) hay por ahí? Inicialmente me divirtió esta tendencia, pero últimamente me siento incómodo al pensar en dónde están aplicando estos aficionados sus nuevos conocimientos.

Este punto de vista supone que todos los usuarios finales son igualmente ingenuos cuando se trata de comprender el software, aunque Pliskin y Shoval sostienen que ese no es el caso, que los usuarios finales sofisticados son capaces de desarrollarlo. [33] Sin embargo, en comparación con los programadores expertos, los programadores de usuarios finales rara vez tienen el tiempo o el interés en actividades sistemáticas y disciplinadas de ingeniería de software, [34] lo que hace que garantizar la calidad del artefacto de software producido por el desarrollo del usuario final sea particularmente desafiante.

En respuesta a esto, ha surgido el estudio de la ingeniería de software de usuario final . Se ocupa de cuestiones que van más allá del desarrollo del usuario final, mediante las cuales los usuarios finales se motivan a considerar cuestiones como la reutilización, la seguridad y la verificabilidad al desarrollar sus soluciones. [35]

Un escenario alternativo es que los usuarios finales o sus consultores empleen herramientas declarativas que respalden reglas comerciales y de seguridad rigurosas a expensas del rendimiento y la escalabilidad; Las herramientas creadas con EUD normalmente tendrán peor eficiencia que las creadas con entornos de programación profesionales. Aunque separar la funcionalidad de la eficiencia es una separación válida de preocupaciones , puede conducir a una situación en la que los usuarios finales completarán y documentarán el análisis de requisitos y la creación de prototipos de la herramienta, sin la participación de analistas de negocios . Por lo tanto, los usuarios definirán las funciones requeridas antes de que estos expertos tengan la oportunidad de considerar las limitaciones de una aplicación o marco de software específico . El apoyo de la alta dirección a dichas iniciativas de usuarios finales depende de su actitud ante la dependencia de un proveedor existente o potencial .

Ver también

Referencias

  1. ^ Scaffidi, C.; Shaw, M.; Myers, B. (1 de septiembre de 2005). "Estimación del número de usuarios finales y programadores de usuarios finales". Simposio IEEE 2005 sobre lenguajes visuales y computación centrada en el ser humano (VL/HCC'05) . págs. 207–214. doi :10.1109/VLHCC.2005.34. ISBN 978-0-7695-2443-6. S2CID  14608501.
  2. ^ Pequeño, Greg y Robert C. Miller. "Traducir comandos de palabras clave a código ejecutable". Actas del 19º simposio anual de ACM sobre software y tecnología de interfaz de usuario. ACM, 2006.
  3. ^ 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 lenguaje natural". Actas de la conferencia SIGCHI sobre factores humanos en sistemas informáticos. ACM, 1999. APA
  4. ^ ab Burnett, Margaret M .; Scaffidi, Christopher (enero de 2024). Desarrollo de usuario final. Interacción-Design.org.en "Enciclopedia de la interacción persona-computadora".
  5. ^ Hornsby, Peter (3 de agosto de 2009). "Empoderar a los usuarios para que creen su propio software". UX importa . Consultado el 31 de enero de 2014 .
  6. ^ Abraham, R.; Burnett, M; Erwig, M (2009). "Programación en hoja de cálculo". Enciclopedia Wiley de Ingeniería y Ciencias de la Computación . págs. 1–10.
  7. ^ Kruck, S. & Sheetz, S., 2001. Teoría de la precisión de la hoja de cálculo Archivado el 18 de agosto de 2018 en Wayback Machine . Revista de educación en sistemas de información.
  8. ^ Scaffidi, C., Shaw, M. & Myers, B., 2005. Estimación del número de usuarios finales y programadores de usuarios finales 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.
  9. ^ Paternò F., 2013, ISRN Ingeniería de software, Desarrollo de usuarios finales: estudio de un campo emergente para empoderar a las personas
  10. ^ Ghiani, G., Manca, M., Paternò, F., Santoro, C.: Personalización de aplicaciones dependientes del contexto mediante reglas de activación-acción. Transacciones ACM sobre interacción computadora-humano, Vol.24, Número 2, Artículo N.14, abril de 2017.
  11. ^ Plataformas de desarrollo de código bajo
  12. ^ Lieberman, H., Paternò, F., Klann, M. y Wulf, V. (2006). Desarrollo del usuario final: un paradigma emergente. En: End-User Development, Lieberman, H., Paternò, F. y Wulf, V. (eds.), Springer Holanda, 2006, ser. Serie de interacción persona-computadora, vol. 9, Capítulo 1, págs. 1-7, doi :10.1007/1-4020-5386-X_1
  13. ^ Ko, Andrew J.; Abrahán, Robin; Beckwith, Laura; Blackwell, Alan; Burnett, Margarita; Erwig, Martín; Scaffidi, Chris; Lawrence, José; Liberman, Henry (1 de abril de 2011). "El estado del arte en ingeniería de software para usuario final". Computación ACM. Sobrevivir . 43 (3): 21:1–21:44. CiteSeerX 10.1.1.159.8597 . doi :10.1145/1922649.1922658. ISSN  0360-0300. S2CID  9435548. 
  14. ^ H. Lieberman, BA Nardi y D. Wright. Grammex: Definición de gramáticas con el ejemplo. En la conferencia ACM sobre factores humanos en sistemas informáticos (resumen, demostraciones) (CHI '98), Los Ángeles, California, EE. UU., páginas 11–12. Prensa ACM, abril de 1998.
  15. ^ María Francesca Costabile, Daniela Fogli, Piero Mussio, Antonio Piccinno. Desarrollo de usuario final: el enfoque del taller de configuración de software . En Lieberman, H., Paternò, F., Wulf, V. (Eds) (2004) Desarrollo del usuario final: empoderamiento de las personas para emplear de manera flexible tecnologías avanzadas de información y comunicación, © 2004 Kluwer Academic Publishers, Dordrecht, Países Bajos.
  16. ^ Costabile, MF, Fogli, D., Letondal, C., Mussio, P., Piccinno, A., Dominio: usuarios expertos y sus necesidades de desarrollo de software ", Conferencia de la UAHCI, Creta, 22 al 27 de junio de 2003, 232 -236.
  17. ^ Gerhard Fischer Desarrollo del usuario final y metadiseño: bases para las culturas de participación . Notas de conferencias sobre desarrollo de usuarios finales en informática, 2009, volumen 5435/2009, 3-14,
  18. ^ Scaffidi, Christopher; Brandt, Joel; Burnett, Margarita; Paloma, Andrés; Myers, Brad (2012). "SIG: programación de usuario final". Resúmenes ampliados de CHI '12 sobre factores humanos en sistemas informáticos . Chi Ea '12. págs. 1193–1996. doi :10.1145/2212776.2212421. ISBN 9781450310161. S2CID  17748945.
  19. ^ Leonardo, Nicola; Manca, Marco; Paternò, Fabio; Santoro, Carmen (2019). "Programación de acción desencadenante para personalizar el comportamiento del robot humanoide". Actas de la Conferencia CHI de 2019 sobre factores humanos en sistemas informáticos . págs. 1-13. doi :10.1145/3290605.3300675. ISBN 978-145035970-2. S2CID  140220651.
  20. ^ Sarkar, Advait; Blackwell, Alan; Jamnik, Mateja; Spott, Martín (julio de 2014). "Enseñar y probar: una técnica de interacción simple para el modelado exploratorio de datos por parte de usuarios finales". Simposio IEEE 2014 sobre lenguajes visuales y computación centrada en las personas (VL/HCC) . págs. 53–56. CiteSeerX 10.1.1.695.2025 . doi :10.1109/VLHCC.2014.6883022. ISBN  978-1-4799-4035-6. S2CID  14845341.
  21. ^ Haynes, John L. (otoño de 1985). "Diseño de circuitos con Lotus 1-2-3". BYTE . págs. 143-156 . Consultado el 19 de marzo de 2016 .
  22. ^ Roy Chowdhury, Soudip; Rodríguez, Carlos; Daniel, Florián; Casati, Fabio (2010). Computación consciente de la sabiduría: sobre la recomendación interactiva del conocimiento de composición. Icsoc'10. págs. 144-155. ISBN 9783642193934.
  23. ^ Sutcliffe, Alistair (julio de 2005). "Evaluación de los costos y beneficios del desarrollo del usuario final". Notas de ingeniería de software de ACM SIGSOFT . 30 (4): 1–4. doi :10.1145/1082983.1083241.
  24. ^ Andersen, Renate; Mørch, Anders I. (2 de marzo de 2009). "Desarrollo mutuo: un estudio de caso sobre el desarrollo de productos de software iniciado por el cliente". Desarrollo de usuario final . Apuntes de conferencias sobre informática. vol. 5435, págs. 31–49. CiteSeerX 10.1.1.598.9066 . doi :10.1007/978-3-642-00427-8_3. ISBN  978-3-642-00425-4.
  25. ^ Fischer, Gerhard (1 de enero de 1994). "Poner a cargo a los propietarios de los problemas con entornos de diseño orientados al dominio". Requisitos centrados en el usuario para entornos de ingeniería de software . Springer, Berlín, Heidelberg. págs. 297–306. CiteSeerX 10.1.1.310.8814 . doi :10.1007/978-3-662-03035-6_23. ISBN  978-3-642-08189-7.
  26. ^ Fischer, Gerhard; Giaccardi, Elisa (1 de enero de 2006). Liberman, Henry; Paternò, Fabio; Wulf, Volker (eds.). Desarrollo de usuarios finales. Serie de interacción persona-computadora. Springer Países Bajos. págs. 427–457. doi :10.1007/1-4020-5386-x_19. ISBN 9781402042201.
  27. ^ Liberman, Enrique; Paternò, Fabio; Klann, Markus; Wulf, Volker (1 de enero de 2006). Liberman, Henry; Paternò, Fabio; Wulf, Volker (eds.). Desarrollo de usuarios finales. Serie de interacción persona-computadora. Springer Países Bajos. págs. 1–8. doi :10.1007/1-4020-5386-x_1. ISBN 9781402042201. S2CID  15559793.
  28. ^ Erickson, Thomas; Kellogg, Wendy A. (1 de marzo de 2000). "Translucidez social: un enfoque para el diseño de sistemas que apoyen los procesos sociales". Transmisión ACM. Comput.-Hum. Interactuar . 7 (1): 59–83. doi :10.1145/344949.345004. ISSN  1073-0516. S2CID  5943805.
  29. ^ Con correa, Gilly; Haber, Eben M.; Mateos, Tara; Lau, Tessa (1 de enero de 2008). "Coguionista". Actas de la Conferencia SIGCHI sobre factores humanos en sistemas informáticos . CHI '08. Nueva York, NY, Estados Unidos: ACM. págs. 1719-1728. doi :10.1145/1357054.1357323. ISBN 9781605580111. S2CID  5989563.
  30. ^ Intharah, Thanapong; Turmukhambetov, Daniyar; Brostow, Gabriel J. (1 de enero de 2017). "Ayuda, parece confuso". Actas de la 22ª Conferencia Internacional sobre Interfaces de Usuario Inteligentes . IUI '17. Nueva York, NY, Estados Unidos: ACM. págs. 233–243. doi :10.1145/3025171.3025176. ISBN 9781450343480. S2CID  16596496.
  31. ^ Fischer, G.; Giaccardi, E.; Sí, Y.; Sutcliffe, AG; Mehandjiev, N. (1 de septiembre de 2004). "Metadiseño: un manifiesto para el desarrollo del usuario final". Comunitario. ACM . 47 (9): 33–37. doi :10.1145/1015864.1015884. ISSN  0001-0782. S2CID  11675776.
  32. ^ Harrison, Warren (julio-agosto de 2004). "Los peligros de la programación del usuario final". Software IEEE . 21 (4): 5. doi :10.1109/MS.2004.13.
  33. ^ Pliskin, Nava; Shoval, Peretz (1987). "Creación de prototipos de usuario final: usuarios sofisticados que respaldan el desarrollo de sistemas". Base de datos ACM SIGMIS . 18 (4): 7–17. doi : 10.1145/1017816.1017817 . S2CID  18183262.
  34. ^ Brandt, Joel; Guo, Philip J.; Lewenstein, Joel; Klemmer, Scott R. (1 de enero de 2008). "Programación oportunista". Actas del cuarto taller internacional sobre ingeniería de software para usuario final . USA '08. Nueva York, NY, Estados Unidos: ACM. págs. 1 a 5. doi :10.1145/1370847.1370848. ISBN 9781605580340. S2CID  17479074.
  35. ^ "Ingeniería de software para usuario final: hallazgos empíricos". "Usuarios finales que dan forma al consorcio de software eficaz ". Consultado el 28 de mayo de 2008 .

Otras lecturas

enlaces externos