Soporte a la Implementación
Visión de Conjunto
Las herramientas de programación para sistemas interactivos permiten traducir diseños abstractos y principios de usabilidad a un formato ejecutable. Estas herramientas ofrecen diferentes niveles de servicio al programador. Los sistemas de ventanas actúan como un entorno central tanto para el programador como para el usuario, permitiendo una única estación de trabajo para la interacción. Los kits de herramientas proporcionan abstracción, separando la entrada y la salida, y permitiendo al programador describir el comportamiento de los objetos de forma similar a como el usuario los percibe. Los sistemas de gestión de interfaz de usuario (UIMS) controlan la relación entre los objetos de presentación de un kit de herramientas y su semántica funcional en la aplicación.
Introducción
Este capítulo aborda el soporte de programación para la implementación de un sistema interactivo. El diseño y análisis de sistemas interactivos se aborda desde una perspectiva abstracta. Aunque el examen detallado del hardware puede dificultar la comprensión de la interacción desde la perspectiva del usuario, no podemos ignorar la especificación del dispositivo. La especificación detallada proporciona instrucciones al programador sobre las acciones de la aplicación interactiva, que deben traducirse a instrucciones ejecutables por la máquina. A nivel básico, el software permite acciones como leer eventos de dispositivos de entrada y escribir comandos gráficos a la pantalla. Si bien es posible crear sistemas interactivos con lenguaje de bajo nivel, resulta tedioso y propenso a errores. El énfasis está en cómo los niveles de abstracción sobre los servicios de hardware y software permiten al programador construir el sistema en términos de las técnicas de interacción deseadas. Aunque existe una separación fundamental entre entrada y salida a bajo nivel, esta distinción se puede eliminar a nivel de programación con las abstracciones correctas. A continuación, se abordan las capas desde el hardware hasta los conceptos abstractos de programación para la interacción.
8.1
8.2 Elementos de Sistemas de Ventanas
En capítulos anteriores, se discutieron los elementos de la interfaz WIMP. Aquí se detallan los sistemas de ventanas usados para construirla. La primera característica importante es la independencia del programador respecto a las especificaciones de hardware. El programador se dirige a un terminal abstracto con un lenguaje genérico traducible al lenguaje de dispositivos específicos. Un sistema de ventanas tiene un lenguaje genérico para el terminal abstracto llamado modelo de imágenes. Por eficiencia, se usan primitivas para el procesamiento de imágenes de texto.
8.2.1 Arquitecturas de Sistemas de Ventanas
Bass y Coutaz [29] identifican tres arquitecturas para implementar las funciones de un sistema de ventanas. La arquitectura cliente-servidor (Figura 8.2) ofrece la mayor portabilidad. El servidor X permite el acceso a la visualización, interpreta peticiones, demultiplexa eventos de entrada y minimiza el tráfico de red. El gestor de ventanas resuelve conflictos de entrada/salida entre clientes. El Consorcio X creó el Manual de Convenciones de Comunicación Inter-Client (ICCCM) para estandarizar políticas como la transferencia de datos, la selección del cliente activo y la disposición de ventanas.
Paradigmas de programación
Existen dos paradigmas: basado en eventos, donde la aplicación controla el bucle de eventos, y basado en notificación, donde un notificador centralizado filtra los eventos a la aplicación. La programación con kits de herramientas se adapta al paradigma basado en notificación.
Kits de Herramientas
Los kits de herramientas proporcionan objetos de interacción (widgets) predefinidos. Dos características los hacen adecuados para la programación orientada a objetos: la definición de clases como moldes para objetos y la herencia. El kit de herramientas de Java, AWT, mapea objetos de interfaz a clases de Java.
Sistemas de Gestión de Interfaz de Usuario (UIMS)
Los UIMS añaden servicios al diseño de sistemas interactivos. Sus principales preocupaciones son: una arquitectura conceptual que separa la semántica de la aplicación de la presentación, técnicas para implementar la separación y técnicas para la gestión en tiempo de ejecución. Algunos prefieren el término sistemas de desarrollo de interfaz de usuario (UIDS) para las herramientas que abordan las actividades de diseño.
8.5.1 UIMS como Arquitectura Conceptual
La separación entre semántica de aplicación y presentación permite la portabilidad, múltiples interfaces, personalización y control de diálogo. El modelo Seeheim separa la aplicación, el diálogo y la presentación. El modelo MVC (Modelo-Vista-Controlador) y el modelo PAC (Presentación-Abstracción-Control) son otras arquitecturas conceptuales.
Técnicas de Control de Diálogo
Se describen varias técnicas: redes de menú, gramáticas de anotaciones, lenguajes para eventos, lenguajes declarativos, restricciones y especificaciones gráficas.
Resumen
Este capítulo describe las herramientas de soporte a la programación para la implementación de sistemas interactivos, desde sistemas de ventanas hasta kits de herramientas y UIMS. Los sistemas de ventanas proporcionan independencia del dispositivo y control de múltiples aplicaciones. Los kits de herramientas combinan entrada y salida en objetos de interacción. Los UIMS separan la aplicación de la presentación y ofrecen diversas técnicas de control de diálogo.