Consideraciones para el diseño de interfaces de usuario en sistemas operativos

Eugenio Jacobo Hernández Valdelamar Fundación Arturo Rosenblueth. Insurgentes Sur 670-3. Colonia del Valle. CP 03100. México, D.F., México. jack@mail.rosenblueth.mx , jack_hv@yahoo.com

Resumen. La manera en que los usuarios de computadoras interactúan con sus aplicaciones es uno de los tópicos más interesantes en el área de computación. Muchos de los avances podemos verlos plasmados en los sistemas operativos que usamos a diario, pero aún queda mucho por hacer, por lo que se plantean en este trabajo los antecedentes de las interfaces de usuario existentes y se presentan algunas consideraciones para el diseño de estos subsistemas de los sistemas operativos. Palabras clave: sistemas operativos, interacción hombre-máquina, interfaz de usuario, interfaz gráfica de usuario.

1. Diseño de sistemas operativos: la interacción con el usuario
Aunque el uso de los recursos del hardware de la computadora sea el objetivo principal del diseño de un sistema operativo, no se puede dejar de pensar en como los usuarios interactuarán con la computadora, pues hay que recordar que por lo menos en la arena de las computadoras personales, esto ha sido el factor principal para el éxito de cualquier producto, ya sea una computadora o alguno de sus periféricos. En un principio los operadores expertos tenían que recurrir a teclados especiales para perforar tarjetas que alimentaban a la máquina, y debían consultar sus resultados en manojos de hojas que salían de las impresoras. Poco a poco, la mejora en interfaces con el usuario ha permitido que pueda disminuirse la complejidad de interacción entre las computadoras y usuarios. Tareas como reconocer información del teclado o el ratón, desplegar información en un monitor, o controlar la impresión de un documento, son faenas básicas que un sistema operativo debe realizar actualmente. Además de esto, el SO debe ofrecer una serie de servicios y recursos que puedan ser aprovechados por el software de aplicación. En este trabajo se exponen algunas consideraciones de diseño útiles para su implantación.

2. Interacción humano-computadora
La interacción humano-computadora (HCI) es la disciplina relacionada con el estudio, diseño, construcción e implementación de sistemas de cómputo interactivos centrados en el usuario. HCI va más allá de diseñar pantallas o menús que sean más fáciles de usar (usabilidad), pues estudia el razonamiento que implica construir determinada funcionalidad en las computadoras y sus efectos a largo plazo que estos sistemas tienen

en los humanos. Una de las principales actividades en esta área, es el desarrollo de nuevos sistemas de interfaz para el usuario, lo que implica desarrollar nuevos dispositivos de interfaz, nuevas técnicas de graficación por computadora y técnicas de diálogo [1]. Una interfaz de usuario es un medio para que el usuario interactúe con la computadora. Este medio se constituye tanto de software como de hardware. Aunque las interfaces de usuario pueden adoptar diversas formas, sus objetivos fundamentales son: comunicar información de la máquina al usuario y comunicar información del usuario a la máquina. Douglas Engelbart fue el pionero en esta área, pues planteó una visión en la que “las computadoras fueran extensiones de las capacidades de comunicación del ser humano y fueran un recurso para aumentar el intelecto humano” [2]. Él, junto con un grupo de jóvenes investigadores en el Instituto de Investigación de Stanford (SRI) desarrollaron el ratón, el concepto de hipermedia, la interfaz de ventanas y la teleconferencia. La importancia de las interfaces de usuario es muy trascendente no solo para el usuario convencional, sino para los usuarios con discapacidades, pues para hacer la tecnología accesible para ellos, deben contemplarse nuevos dispositivos y aplicaciones que les permitan usar la computadora.

3. Interfaz basada en texto
Los programas orientados a caracteres solo eran capaces de desplegar códigos ASCII en pantalla. Estos programas trataban al área de despliegue como un arreglo de bloques, donde cada uno solo puede contener un caracter. En contraste los programas gráficos tratan al monitor como un arreglo de puntos (pixeles). Las primeras interfaces de usuario con la computadora estaban orientadas al uso de texto proveniente de un teclado, y usualmente consistían de un conjunto de comando que el usuario debía memorizar y a los que la computadora respondía . Así que por una parte está el manejo del modo gráfico correspondiente a la interfaz para desplegar sus resultados en el monitor, y por otro esta el programa encargado de captar y ejecutar los comandos correspondientes. Dichos comandos corresponden a un lenguaje que debe ser especificado por una gramática. Este programa por lo general es un interprete que puede basar su codificación en el patrón Interpreter. Un paso intermedio entre la interfaz de línea de comando y las interfaces gráficas, fue el uso de interfaces basadas en menús en modo texto, donde se podía interactuar por medio de un ratón en lugar de escribir el comando correspondiente en el teclado. Esto demandaba un esfuerzo considerable de programación, y por lo general no había una manera estandarizada de programar este tipo de interfaces. En este punto, muchas librerías para interfaces de usuario aparecieron prometiendo disminuir los tiempos de desarrollo, pero con el advenimiento de las interfaces gráficas integradas en el sistema operativo, mucho de este trabajo fue efímero.

4. Interfaz gráfica de usuario
Una interfaz gráfica de usuario (GUI) es un programa de interfaz que aprovecha las capacidades de despliegue gráfico de la computadora que permite hacer más sencillo el uso de los programas [3]. Este cambio de paradigma en las interfaces de usuario se dio en el centro de investigación de Xerox, cuando se construyó la computadora Alto (1973). La metáfora más usada actualmente es la de un espacio de trabajo bidimensional, donde como en un escritorio se tienen los implementos que el usuario

usa en su trabajo diario. Este tipo de interfaz gráfica de usuario usa iconos y menús para realizar comandos tales como abrir archivos o ejecutar aplicaciones. Algunos de los componentes gráficos comunes en este tipo de interfaces son: Apuntador. Es un símbolo que aparece en la pantalla y que se desplaza para seleccionar objetos y comandos. Dispositivo apuntador. Un dispositivo como el ratón que permite seleccionar objetos de la pantalla. Iconos. Pequeñas imágenes que representan comandos, archivos o ventanas. Menús. Opciones o comandos agrupados en forma de listas. Ventanas. Son áreas que dividen la pantalla, y en cada una de ellas puede ejecutarse un programa o abrir un archivo diferente. Escritorio. Es el área de la pantalla donde los iconos son agrupados. Además de sus componentes gráficos, la interfaz debe permitir mover datos de una aplicación a otra. Una buena GUI debe incluir formatos estándar para representar texto y gráficos, lo que permite que las aplicaciones puedan compartir sus contenidos (p.ej. llevar un gráfico de una hoja de cálculo a un procesador de palabras). Una arquitectura que es comúnmente usada para el desarrollo de la GUI es el patrón modelo-vistacontrolador (MVC), que permite separar los componentes gráficos, el control de los dispositivos periféricos y eventos, y sus efectos en el modelo (fig. 1).

Fig. 1. Patrón MVC como base de una GUI En este esquema las aplicaciones usan los elementos del GUI que proporciona el sistema operativo, y es posible agregar elementos gráficos adicionales. Tómese como ejemplo el caso de Java donde se tiene un marco de trabajo llamado Swing que permite la programación de interfaces de usuario. Cada sistema operativo tiene su propia arquitectura de GUI, pues sistemas como BeOS o el Mac OS X, orientados a diseñadores y artistas gráficos, hacen un uso intensivo de las capacidades gráficas de la computadora, por lo que debe optimizar el uso de estos recursos. Una tendencia adicional es la personalización del diseño gráfico de los elementos de la interfaz gráfica. Para ello se ha introducido el concepto de tema, donde existe una separación en el trabajo de los diseñadores gráficos y los programadores [4]. De esta manera, pueden cambiarse el diseño y distribución de los controles sin tener que recompilar el código encargado del GUI (fig. 2)

Fig. 2. Arquitectura de una GUI que integra la metáfora de tema

5. Interfaces alternativas
En un futuro la forma de interacción de los humanos con las computadoras cambiará de forma radical. Al aumentar el poder de cómputo, formas de interacción planteadas como futuristas se están haciendo realidad. Algunos ejemplos de esto son: • Una interfaz de usuario basada en el habla (speech user interface - SUI) es aquella que soporta un diálogo interactivo entre el usuario y una aplicación de software, ofreciendo una forma de interacción más natural para el usuario. Un escenario propicio para este tipo de interfaces es el de dispositivos móviles, en especifico plataformas como el Auto-PC [8]. En donde se requiere que el usuario tenga desocupadas las manos para manejar. Los dispositivos de interfaz neuronal (Neural Interface Devices) [7] permiten a los usuarios aprovechar las señales eléctricas generadas por sus cuerpos para controlar una computadora o dispositivos eléctricos conectados a ella. Las señales pueden adquirirse de forma directa o indirecta. Los métodos directos implican implantes quirúrgicos en el cuerpo del usuario. El implante puede localizarse en el cerebro o en algún miembro amputado, dependiendo de la aplicación. Este tipo de tecnología aún está en desarrollo. Los métodos indirectos de obtención de señales no requieren cirugía. Estas señales neuronales indirectas pueden obtenerse de los músculos (EMG), movimiento de los ojos (EOG) o de las ondas cerebrales (EEG). Después de que las señales eléctricas se obtienen del cuerpo se amplifican, y se traducen en su equivalente digital para que el software pueda interpretar las señales. Dicho software permite a los usuarios controlar un cursor, jugar videojuegos especialmente diseñados o controlar otros dispositivos conectados a la computadora.

6. Diseño de interfaces de usuario
El principal objetivo del desarrollo de interfaces de usuario es el diseñar e implementar interfaces que sean eficientes efectivas al ser utilizadas por el usuario [5]. Este proceso debe estar contemplado en el proceso de desarrollo de software, y por lo general empieza en la fase de diseño, donde se plantean prototipos de interfaces donde se determinan que eventos ocurrirán y los procesos lógicos soportarán a dichos eventos; en otras palabras, se visualiza la funcionalidad del sistema y las interacciones con el usuario. Dichos prototipos servirán como referencia para codificar las interfaces de usuario con una tecnología específica, dependiendo de los requerimientos del sistema.

Después de codificar la aplicación, se procede a la etapa de pruebas. Existe una técnica específica llamada pruebas de usabilidad que puede validar el diseño de la interfaz y revelar áreas que requieran refinamiento. La idea básica es observar a los usuarios mientras operan la interfaz. Previamente se les debe capacitar para que puedan verbalizar sus pensamientos y acciones mientras los realizan. Por ejemplo, un usuario podría narrar algo como lo siguiente: "Quiero encontrar un archive de texto con mis notas. Veo un botón que dice “Archivos”, pero no se si es para crear o para buscar archivos". Comprendiendo que es lo que están pensando los sujetos de prueba es posible detectar problemas de comprensión o uso de la interfaz de usuario. En el contexto de los sistemas operativos, sobre todo de los de uso general, dichas interfaces deben implementar una metáfora del espacio de trabajo y sus correspondientes elementos de diseño, así como contemplar los dispositivos con que la computadora podrá contar, lo que lleva al desarrollo de: Controladores para dispositivos de interfaz (Ratón, visores, tarjetas gráficas, cámaras, etc.) APIs de interfaz de usuario (GUI, SUI, etc.) APIs de graficación (2D, 3D, etc.) Ambientes de trabajo (modo texto o gráficos) Herramientas para diseño de aplicaciones con interfaz de usuario Un ejemplo palpable de este enfoque es la arquitectura del Mac OS X. Como soporte se tiene un microkernel muy potente (Darwin), sobre el que se monta la capa del sistema de gráficos que integra 3 tecnologías [6]: Quartz, que es un servidor de ventanas y un motor de despliegue gráfico bidimensional que define las formas en términos de sus componentes vectoriales, y que usa como lenguaje gráfico de representación interna el estándar PDF (Portable Document Format). OpenGL, que es el estándar para gráficos tridimensionales. QuickTime, que es una tecnología multimedia que permite la manipulación de imágenes, sonidos, texto, música, animación y hasta realidad virtual. Aqua es la interfaz gráfica de usuario de este sistema operativo, que integra la apariencia y comportamiento de la interfaz, que basa mucha de su funcionalidad gráfica en las capacidades de Quartz. Estas tecnologías de manipulación gráfica, en combinación con las interfaces de programación Carbon, Cocoa (Java/Objective C), Java y el soporte de UNIX, permiten el desarrollo de aplicaciones con interfaz gráfica de usuario en diversas plataformas. Todo esto queda plasmado en el término definido por Apple como experiencia del usuario (User Experience) el cuál abarca la apariencia visual, comportamiento interactivo, y capacidades asistivas del software. Todo este soporte debe ser considerado por quien desarrolle un sistema operativo, pues esta infraestructura representa una ventaja competitiva si se quiere que el SO sea adoptado por el mayor numero de usuarios posible, y sobre todo si se quiere que las comunidades de desarrolladores produzcan aplicaciones en la nueva plataforma. Incluso aunque la parte de interfaz de usuario este contemplada en el diseño del SO, puede que su implementación no sea del gusto de los desarrolladores, o que por estar implementada en un lenguaje estructurado, si se requiere desarrollar con orientación a objetos existan problemas de compatibilidad. Estos escenarios pueden provocar de nuevo que algunos desarrolladores prefieran programar sus propias APIs.

6. Conclusiones
La forma en que interactuamos con las computadoras está por cambiar, pues toda una nueva generación de dispositivos está apareciendo en el mercado. Desde los dispositivos móviles (PDAs y teléfonos celulares) que implican restricciones en las regiones de despliegue rápido y uso racional del ancho de banda, aparatos electrodomésticos, nuevos diseños de computadoras personales (p.ej. Tablet PC) y paradigmas como el cómputo ubicuo, todos implican el desarrollo de nuevas formas de interacción. Dichos desarrollos no solo dependen de nuevas librerías de manejo de gráficos, sino de una nueva infraestructura de comunicaciones, conectividad y dispositivos de interfaz que provocarán una ampliación en nuestras capacidades de comunicación y percepción. Esto lo que implica es el desarrollo de nuevo hardware, software y además probar intensivamente no solo el funcionamiento de las nuevas interfaces, sino de sus efectos en los usuarios [9].

Referencias
[1] ACM SIGCHI Curricula for Human-Computer Interaction. http://sigchi.org/cdg/index.html [2] Mouse Site. http://sloan.stanford.edu/MouseSite/ [3] GUI – Webopedia.

http://www.webopedia.com/TERM/G/Graphical_User_Interface_GUI.html
[4] WCEfA. Using Automotive Graphical User Interface. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/apcguide/htm/acc_guide_1.asp [5] User Interface Design http://cfg.cit.cornell.edu/cfg/design/contents.html . Common Front John Group. Siracusa. devices.

[6] Mac OS X Update: Quartz & Aqua. http://www.arstechnica.com/reviews/1q00/macos-x-gui/macos-x-gui-1.html [7] ATRC – Neural http://www.utoronto.ca/atrc/reference/tech/neuralinterface.html [8] WCEfA. Using Automotive Speech Architecture. http://msdn.microsoft.com/library/default.asp?url=/library/enus/apcguide/htm/spc_overview_1.asp interface

[9] Diseño y simulación de sistemas operativos. Eugenio Jacobo Hernández Valdelamar. Tesis MCC. Fundación Arturo Rosenblueth . 2003.