2.1+Capa+de+interfaz+de+usuario.

2.1 Capa de interfaz de usuario.

**// Interfaces de usuario y su arquitectura //**

**ARQUITECTURA DE INTERFACES GRÁFICAS EN AMBIENTE DISTRIBUIDOS.** El modo en que el usuario se comunica con una aplicación para solicitar los recursos del sistema operativo constituye la interfaz del mismo. La interfaz es particularmente importante para establecer una vinculación amigable entre el usuario de la computadora y la aplicación. Históricamente las interfaces estuvieron basadas en comandos formateados por palabras clave que se combinaban con otras cadenas de caracteres (sintaxis) para ser interpretados por el sistema operativo. Estas interfaces se denominan; **interfaces orientadas a carácter**. Un ejemplo clásico de una interfaz orientada a carácter es el COMMAND de MS-DOS. ** Interfaz de modo carácter ** En esta clase de interfaz entre la aplicación y el usuario en la que las órdenes se pasan en ASCII existen algunas ventajas y desventajas: Las ventajas que tienen las interfaces orientadas a carácter son su simplicidad, confiabilidad y poco costo en el desarrollo del sistema operativo que las soporta. Las desventajas son que requieren un usuario calificado que estudie y conozca los comandos, lo cual resulta muy restrictivo para la difusión del uso de las computadoras. Uno de los beneficios de los sistemas cooperativos visto anteriormente es que: para el usuario lo que importa es lo que éste ve en la pantalla, la presentación. Al software que simula la presentación de un sistema se le conoce como emulador de terminal, el cuál debe ser interactivo como cuando uno redacta un informe en una máquina de escribir, lo que el usuario teclea se ve reflejado en el documento, una terminal la cuál solo realiza tareas de presentación debería funcionar de la misma manera. ** Principio general de emulación de terminal ** La terminal tradicional de minicomputadoras o mainframe tiene que ejecutar dos tipos básicos de comandos. Primero, debe desplegar los caracteres enviados por el servidor remoto. Segundo, debe enviar al servidor los caracteres introducidos por el usuario o solicitados por el servidor. Algunas terminales realizan tareas adicionales. Ejemplos de emuladores de terminal basados en carácter son: ANSI.SYS, y VT-100. Cuando los caracteres llegan desde el servidor, la terminal no puede simplemente escribirlos en la pantalla y avanzar el cursor, la terminal debe analizar la cadena de caracteres para detectar posibles comandos. De acuerdo al estándar ANSI X3.64 los comandos son identificados por una secuencia de dos caracteres ascii, ESC (ascii=27h) y [ (ascii=5bh) ]. Ejemplo: ESC[ 2 ] : Cuando la terminal recibe este comando, limpia la pantalla. Una interfaz basada en caracteres, por lo general ofrece los siguientes servicios: Comandos de posicionamiento del cursor. Comandos para limpiar la pantalla. Comandos para indicar los atributos de los caracteres. ** Interfaz gráfica de usuario ** En la actualidad millones de nuevos usuarios de las computadoras se han beneficiado con la aparición de las Interfaces Gráficas de Usuario/Graphical User Interface, GUI), las computadoras pueden dar la apariencia de un escritorio común y corriente de una oficina, mostrando iconos, imágenes y otros objetos visuales los cuales permiten que el usuario se acerque más a las computadoras.  ** Características de las interfaces gráficas de usuarios **   En general, las GUI´s presentan información en áreas rectangulares en la pantalla llamadas ventanas. Las ventanas se pueden sobreponer. Al usuario se le permite manipular la ventana y su contenido, puede cambiar el tamaño y la posición. Las ventanas pueden contener objetos los cuales pueden ser seleccionados haciendo clic con el botón del ratón una vez que el indicador del ratón se encuentra sobre el dibujo del objeto al cual se le llama icono. El tamaño total de una ventana puede ser reducido a un icono, y el usuario puede restablecer la ventana a su tamaño normal. GUI´s avanzados eliminan completamente la necesidad de teclear comandos, permitiéndole al usuario seleccionar comandos desde menús usando el ratón o teclas de función. Las ventanas también pueden contener barras de desplazamiento y botones. En la programación con GUI´s se debe estar atento para aceptar y procesar eventos asíncronos iniciados por el usuario o por el sistema. ** Tipos de eventos ** El conjunto de eventos generados tanto por el usuario o por el sistema los cuales deben ser soportados por las implementaciones de GUI´s son los siguientes: ** Evento de ratón. ** Ocurre cuando el usuario mueve el apuntador del ratón dentro o fuera de una ventana, hace clic en el botón dentro o fuera de la ventana o libera el botón del ratón. ** Evento de teclado. ** Ocurre cuando el usuario oprime o libera una tecla del teclado. ** Evento de menú. ** Ocurre cuando el usuario selecciona un comando desde un menú. ** Evento de actualización de ventana. ** Ocurre cuando una porción de la imagen de la presentación de una aplicación ha sido alterado (posiblemente por que se sobrepuso otra ventana) y se tenga que restablecer. ** Evento de ajuste. ** Ocurre cuando el usuario ha modificado el tamaño de una ventana. ** Evento de Activación/Desactivación. ** Se generan por la GUI para permitirle al usuario activar y desactivar ventanas. ** Evento de Inicializar/Terminar. ** Ocurre cuando una entidad GUI se ha creado o destruido. ** Distribución de eventos ** Los eventos deben ser procesados por la lógica de presentación en cooperación con la lógica de procesamiento. El procesamiento puede ser distribuido entre el mismo GUI, la lógica de la aplicación y el API (Aplication Programming Interface) del GUI. Un API es un conjunto de rutinas de un GUI específico que hacen funciones como crear ventanas y desplegar varios gráficos. El procesamiento de los eventos se puede distribuir de la siguiente manera: ** Modelo de ciclo de evento. ** Específica que una aplicación debe contener un ciclo de evento. El ciclo de evento llama a una rutina de librería en particular para ver si hay eventos pendientes. Cada evento pendiente causa que la aplicación atienda (despache) el evento antes de regresar el control al ciclo de evento. ** Modelo de aviso (callback) de evento. ** Requiere que la aplicación registre una función manejadora de eventos por cada entidad GUI que crea, de esta manera se libera a la aplicación de una sobre carga con el ciclo de evento. Cuando el GUI detecta un evento (de teclado, menú, etc.) para una ventana, llama a la rutina apropiada de la aplicación. La aplicación tiene el control sólo cuando se inicia una entidad GUI o cuando se llama a una de sus rutinas de atención a eventos. ** Modelo híbrido. ** Combina el modelo ciclo de evento y el modelo aviso de evento. Microsoft Windows emplea un modelo (donde una aplicación debe contener un ciclo de evento) el cuál llama a una rutina para obtener el siguiente evento. En ese momento, una aplicación puede llamar a otra rutina del API, el cual puede, en su momento, llamar al manejador de eventos de la aplicación. ** TIPOS DE INTERFACES (Front-end, back-end). **  Básicamente existen dos tipos de interfaces, las interfaces estáticas y las interfaces dinámicas. Las interfaces estáticas son aquellas que no tienen cambio y son difíciles de modificar y por su ubicación pueden ser: De propósito especial (stand-alone). Centralizado (novell). Distribuido (internet). Las interfaces dinámicas son aquellas que cambian de acuerdo a los requerimientos del usuario y por su uso pueden ser: Front-End. Back-End. ** Interfaz Front-End. ** Es una aplicación donde los usuarios interactúan directamente con las funciones del sistema, cubre todas las interfaces con las cuales un usuario interactúa con los sistemas, ya sean locales o remotos, sus funciones principales son: Diseño de formatos. Presentación. Lógica de la aplicación. Manipulación de datos. Herramientas de consulta. Utilerías/menús ** Interfaz Back-End. ** Es un conjunto de elementos (programas) que sirven como complemento de una interfaz Front-End. Ayuda en la administración, control y configuración de los sistemas teniendo un acceso directo a los recursos (base de datos, comunicaciones, servidores, etc.), que el sistema requiere, entre sus funciones principales se tienen: Administración de la memoria. Seguridad. Manejo de base de datos. Procesamiento remoto.