Desarrollo por el Usuario Final José Antonio Macías Iglesias Departamento de Ingeniería Informática Universidad Autónoma de Madrid Ctra. De Colmenar Km. 15 28049 Madrid j.macias@uam.es Resumen Este artículo trata sobre lo que en los últimos años se ha denominado Desarrollo por el Usuario Final (End-User Development). El contenido fundamental que encierra este término no es en sí novedoso, sino que está formado por una serie de paradigmas consensuadas años atrás, re-enfocados esta vez a partir de la tecnología y los requerimientos actuales de la nueva era de la computación. En este artículo se describirá en qué consiste este nuevo paradigma, sus principales objetivos, así como los sistemas y aplicaciones más recientes diseñados bajo esta filosofía. 1. Introducción En la última década se ha venido produciendo un significativo avance en el mundo de las nuevas tecnologías de la información. La aparición paulatina de nuevos dispositivos y soportes ha originado que la forma de llevar a cabo la computación tradicional cambie considerablemente. Este desplazamiento ha provocado que gran parte de la población mundial haya acabado, de una u otra forma, manejando software, pasando de tener personas que utilizaban de forma esporádica el ordenador a tener usuarios finales expertos en su dominio que manejan distintos programas enfocados a fines muy concretos, como la simulación, experimentación, desarrollo de pequeñas aplicaciones o módulos con entornos de alto nivel, macros, aplicaciones web, etc. La diversidad en cuanto a las preferencias de las personas y los intereses individuales de cada usuario es un hecho. Las aplicaciones han dejado de ser generales para tener que adaptarse, en cierta forma, a las personas que las manejan, personas con diferente cultura, conocimientos y habilidades cognitivas. Otros de los fenómenos acontecidos en los últimos años, en relación con lo anteriormente comentado, es el hecho de que el concepto clásico del diseñador software, como experto en el dominio de la informática, haya cambiado notablemente. Hoy en día existe un gran número de usuarios finales que han pasado de ser meros usuarios del ordenador a convertirse en diseñadores, es decir, personas que finalmente acaban componiendo o creando algún tipo de artefacto software en función de sus propias necesidades. Esto corrobora en cierta forma una de las frases más acertadas de uno de los grandes visionarios del mundo de las tecnologías de la información, Ben Shneiderman, que manifestó que la computación actual debe versar sobre lo que los usuarios pueden hacer con los ordenadores, a diferencia de la computación tradicional donde lo importante era lo que los ordenadores podían hacer por sí mismos [15]. En base a estas argumentaciones, hay que decir que, afortunadamente, se ha incrementado en gran medida la producción de software interactivo. Sin embargo, la utilización de este software requiere del usuario, en cierta forma, conocer o abstraerse a partir de distintos lenguajes de especificación visuales o textuales que demandan grandes niveles de experiencia. Este es un problema inherente, ya que la mayoría de estos usuarios son expertos en su dominio y no en lenguajes informáticos de programación o especificación. Se hace necesario, por tanto, proporcionar entornos que permitan a los usuarios finales, sin conocimientos en programación, desarrollar o modificar aplicaciones existentes, permitiéndoles así emplear tecnologías avanzadas de la información , actuales y/o futuras, aplicadas al desarrollo de su labor cotidiana. La diversidad imperante en el mundo de las tecnologías de la información hace plantearse de qué forma podrían estandarizarse los mecanismos de autoría, dotando a un usuario no experto la capacidad de crear a partir de aplicaciones informáticas. La solución es probablemente un cambio de mentalidad, es decir, que de alguna forma al diseñar estas aplicaciones los diseñadores tengan en cuenta los requerimientos de cada usuario final, para que el desarrollo del producto sea más adecuado en función de cada contexto de uso. Este aspecto provoca un cambio de tendencia que desplaza a los actuales diseños desde el concepto de «facilidad de uso» (easy-to-use) hasta el concepto de «facilidad para el desarrollo de aplicaciones software interactivas» (easy-todevelop interactive software systems) [14]. 2. EUD como paradigma El EUD (End-User Development) o Desarrollo por el Usuario Final se define como un conjunto de actividades o técnicas que permiten a las personas, que no son desarrolladores profesionales, crear o modificar software [4]. Este paradigma está basado en campos de investigación ya conocidos y explorados, como es el caso de la Interacción Persona Ordenador y la Ingeniería de Software, principalmente. El EUD surge como iniciativa europea a partir del proyecto EUD-Net [11], una Red de Excelencia Europea que tiene como objetivo hacer posible, de una forma rápida y barata, la coevolución de sistemas y usuarios finales como uno solo, a partir de la adaptación explícita de las aplicaciones informáticas a las actividades de los propios usuarios. Los sistemas basados en el EUD deben ser fáciles de entender, de aprender, de usar, de enseñar y de evaluar [4]. 2.1. Objetivos Aunque a grandes rasgos el principal objetivo que persigue el Desarrollo por el Usuario Final es facilitar la autoría de software a cualquier tipo de usuario, es necesario plantear unos objetivos más concretos, basados en el análisis de la situación actual y que permitan, finalmente, conseguir ese objetivo principal marcado como hito. De esta forma, son los objetivos que a continuación se detallan los que se marcan como prioritarios dentro del EUD: Aumentar la participación del usuario en el proceso inicial de diseño. Se trata de tener en cuenta la opinión del usuario en todo momento, haciendo un diseño mucho más centrado en el usuario y adaptado a sus propias necesidades. En cualquier caso, los requerimientos del usuario final son muy diversos y cambiantes, y pueden ser difíciles de especificar en un momento dato. Los métodos tradicionales utilizados para el ciclo de vida de aplicaciones software son difíciles de adaptar a la filosofía del EUD. Se necesitan por tanto métodos evolutivos, haciendo más hincapié en el «Diseño durante el uso» en vez del «Diseño antes del uso». Utilizar lenguajes visuales de modelado. Es primordial conseguir lenguajes fáciles de usar para el usuario, más intuitivos, así como lenguajes de dominio específico. Esto permite hacer frente a la diferencia de abstracción existente entre los profesionales del software y usuarios finales o expertos del dominio. Llegar a un compromiso aceptable entre la expresividad y la facilidad de uso. Lo deseable para este caso es conseguir entornos de creación de software fáciles de utilizar, intuitivos, a partir de técnicas WYSIWYG, disminuyendo por el contrario la capacidad expresiva de los mismos. En definitiva se trata de evaluar lo que se denomina el Gentle Slope of Complexity [4], es decir, conseguir un compromiso aceptable entre la expresividad y la facilidad de uso a base de reducir la complejidad conceptual de las aplicaciones. Para ello sería deseable que el software basado en EUD incorporara características tales como permitir al usuario establecer parámetros y seleccionar objetos, integrar componentes existentes en el sistema y extender el sistema programando nuevos componentes. Diseñar más software adaptativo. Teniendo al usuario final como objetivo en el diseño de software para autoría, sería conveniente, como ayuda al usuario, construir sistemas que se adapten a éste durante el uso. Para ello el software adaptativo debe realizar un seguimiento del comportamiento del usuario, así como de otras actividades contextuales, como la actividad actual o la situación y el contexto de uso. Es importante que el sistema lleve a cabo una adaptación no intrusiva, intentando no distraer el usuario de su tarea principal. 3. Aplicaciones y sistemas Entre los sistemas basados en entornos visuales y herramientas de prototipado está TERESA [10], una herramienta enfocada al diseño y desarrollo de aplicaciones nómadas (nomadic). Esta herramienta permite una migración del paradigma basado en modelos al desarrollo natural de aplicaciones, con un soporte integrado para representaciones formales e informales, permitiendo además la modificación de aplicaciones existentes o la creación de nuevas aplicaciones desde cero. TERESA lleva a cabo un proceso de ingeniería directa, generando una interfaz de usuario Web multiplataforma a partir de un modelo de tareas basado en ConcurTaskTrees [13]. Por otro lado, WebRevenge [12] lleva a cabo el proceso de ingeniería inversa, es decir, genera un modelo de tareas a partir del análisis de la interacción y los componentes de una interfaz Web final. La combinación de estas dos herramientas, TERESA y WebRevenge, permite la migración de aplicaciones y la re-ingeniería en función de distintas plataformas de acceso. Dentro de los sistemas basados en la web se encuentran los Sistemas Adaptativos Hipermedia [3], que permiten adaptar la información presentada durante la navegación en función del usuario que interactúa con la aplicación Web mediante el browser o navegador. Aunque ha habido numerosos trabajos de investigación y distintas aportaciones basados en estos sistemas, la realidad es que la mayoría de los Sistemas Hipermedia Adaptativos existentes no soportan lo que se denomina el round-trip problem, es decir, el proceso que permite a un usuario final poder modificar o hacer cambios en estas aplicaciones Web a partir de la página HTML generada. Una aportación EUD a este campo es la herramienta LAPIS [9], un Web Scraper cuya interfaz es un navegador estándar. LAPIS maneja una librería de patrones extensible que se utiliza para mostrar al usuario información de la Web con mayor nivel conceptual que el HTML. De esta forma el usuario se aleja de conceptos meramente técnicos sobre las páginas Web (links, etiquetas, estilos, etc.) para centrarse únicamente en conceptos relacionados con su propio dominio. LAPIS además permite que el usuario pueda realizar búsquedas conceptuales por la Web, a través de la comparación con los elementos de la librería de patrones que la herramienta contiene. El campo de la Programación por Demostración es esencial como aportación al EUD, aunque no es en sí novedoso. Prueba de ello son los diferentes trabajos que se han ido presentado a lo largo de estos últimos diez años a través de autores ya clásicos en este campo de investigación, como por ejemplo Henry Lieberman. Una referencia obligada es el libro Your Wish is my Command: Programming by Example [5], donde se proponen distintas herramientas, muchas utilizadas hoy en día, como ejemplo de sistemas que hacen uso del paradigma de la Programación por Demostración para resolver problemas concretos. Este es el caso de Personal Wizards [1], uno de los últimos trabajos desarrollado por autores ya clásicos en PbE como son Lawrence Bergman y Tessa Lau. Esta herramienta captura los eventos generados por un usuario experto bajo una aplicación. Seguidamente el sistema crea un asistente, a partir de los eventos generados, para guiar a usuarios menos expertos paso a paso a través de las tareas propuestas. Otra aportación en EUD, esta vez personal, consiste en un sistema híbrido o multi-paradigma que roza cada uno de los campos relatados anteriormente. DESK [6], [7] es una herramienta de autor WYSIWYG que funciona como editor y navegador Web. Con DESK un usuario puede navegar por páginas Web generadas dinámicamente por el sistema PEGASUS [2] y editarlas directamente en un entorno visual de libre manipulación. Una vez hechos los cambios DESK lleva a cabo un proceso de ingeniería inversa [8], que consiste en inferir los cambios en los modelos subyacentes de PEGASUS, a partir de las modificaciones hechas por el usuario en la interfaz generada. De esta forma se evita que el usuario tenga que aprender directamente los lenguajes de creación de páginas o interfaces Web habituales. DESK cumple las premisas exigidas por el EUD, siendo una herramienta fácil de usar a base de sacrificar parte de la expresividad implícita mediante el entorno WYSIWYG. Esto además ayuda a suavizar la curva de complejidad (Gentle Slope of Complexity) en el uso de la herramienta. 4. Conclusiones El Desarrollo por el Usuario Final es un paradigma orientado a crear una sociedad de la información mucho más centrada en las necesidades reales de los usuarios finales, permitiendo que éstos puedan acceder fácilmente a información específica en el contexto adecuado y en base a sus habilidades o discapacidades físicas y/o cognitivas. Se pretende que las personas tengan acceso a personalizar los sistemas de información a sus requerimientos individuales y al diseño de sistemas que puedan ser más socialmente aceptados mediante la implicación colaborativa de todos sus actores. Además, el EUD pretende aumentar la productividad, alentando a que los empleados adapten los sistemas a sus requerimientos específicos en la empresa. Referencias [1] Bergman, L., Lau, T., Castelli, V., Oblinger, D.: Personal Wizards: collaborative end-user programming. Proceedings of the End User Development Workshop at CHI’2003 Conference. Ft. Lauderdale, Florida, USA. April 5-10, 2003. [2] Castells, P.; Macías, J.A.: Context-Sensitive User Interface Support for Ontology-Based Web Applications. Poster Session of the 1st. International Semantic Web Conference (ISWC’02), Sardinia, Italia; June 9-12th, 2002. [3] Encarnação, L.M.: Multi-Level user Support through Adaptive Hypermedia: A Highly Application-Independent Help Component. Proceedings of the IUI’97 Conference. Orlando, Florida, USA, 1997, pp. 187-194. [4] Klann, M.; Fit, F.: End-User Development. D1.1 Roadmap. Proceedings of the End User Development Workshop at CHI’2003 Conference. Ft. Lauderdale, Florida, USA. April 5-10, 2003. [5] Lieberman, H. (ed): Your Wish is my Command. Programming By Example. Morgan Kaufmann Publishers. Academic Press, USA. 2001. [6] Macías, J.A.; Castells, P.: Dynamic Web Page Authoring by Example Using Ontology-Based Domain Knowledge. Proceedings of the International Conference on Intelligent User Interfaces (IUI’03). Miami, Florida, USA. January 12-15, 2003, pp. 133-140. [7] Macias Iglesias, J.A.: Autoría de Documentos Web Dinámicos Mediante Ontologías y Técnicas de Programación por Demostración. Tesis Doctoral. Escuela Politécnica Superior. Universidad Autónoma de Madrid. Septiembre de 2003. Disponible on-line en: http://www.ii.uam.es/~jamacias/tesis/tesis.htm l. [8] Macías, José A., Puerta, Angel R. y Castells, Pablo: MBUI para Procesos de Ingeniería Inversa. Actas del Congreso Interacción Persona-Ordenador (Interacción’04). Editores: Jesús Lorés Vidal y Raquel Navarro Prieto. Lérida 3-7 de 2004, pp. 186-193. [9] Miller, R.C.: End User Programming for Web Users. Proceedings of the End User Development Workshop at CHI’2003 Conference. Ft. Lauderdale, Florida, USA. April 5-10, 2003. [10] Mori, G., Paternò, F., Santoro, C.: CTTE: Support for Developing and Analysing Task Models for Interactive System Design. IEEE Transactions on Software Engineering, pp. 797-813, August 2002 (Vol. 28, No. 8), IEEE Press. [11] Network of Excellence on End-User Development (EUD-Net). http://giove.cnuce.cnr.it/eud-net.htm. [12] Paganelli, L., Paternò, F.: Automatic Reconstruction of the Underlying Interaction Design of Web Applications, Proceedings of SEKE Conference, pp. 439-445, ACM Press, Ischia. [13] Paternò, F.: Model-Based Design and Evaluation of Interactive Applications. Springer Verlag, 2001. [14] Paternò, F.: From Model-Based to Natural Development. Proceedings of the End User Development Workshop at CHI’2003 Conference. Ft. Lauderdale, Florida, USA. April 5-10, 2003. [15] Shneiderman, B.: Leonardo’s Laptop. The MIT Press, 2003.