UNIDAD 1. INTRODUCCIÓN A LAS INTERFACES Programación de Interfaces CONCEPTO DE INTERFAZ • La idea fundamental en el concepto de interfaz es lo que "media", lo que facilita la comunicación, la interacción, entre dos sistemas de diferente naturaleza, típicamente el ser humano y una máquina como el computador. Esto implica, además, que se trata de un sistema de traducción, ya que los dos "hablan" lenguajes diferentes: verbo-icónico en el caso del hombre y binario en el caso del procesador electrónico. LAS GUI EN LA ACTUALIDAD • Windows • Después de la decadencia de las otras GUI, Windows logró un crecimiento importante en el ámbito del software, sacando sus versiones más conocidas y comercializadas de Windows, comenzando desde la 3.0 a la 3.1, Windows 95, Windows 98, Millenium, y NT con cambios graduales y significativos; pero sobre una misma línea de diseño. • En el Windows 95 se hace una gran aportación, el uso del botón de inicio, en el que se despliega la lista de aplicaciones contenidas en la computadora, y en el Windows 98 se presenta la ahora muy útil barra de tareas. • Windows 3 fue la primera GUI más popular en las PC y Windows 95 a su vez, rompió todos los records de ventas y rápidamente se convirtió en la más popular GUI de todos los tiempos. • Fue hasta 2003 que con el lanzamiento de Windows XP, que se rediseñó la GUI dándole más efectos de color y más manejabilidad para el usuario. Posterior a XP, en lo que respecta a Windows, existen más versiones en las que la GUI juega un papel esencial, entre ellas: Windows Vista, Windows 7 y Windows 8. • En las siguientes imágenes, se muestra la evolución que ha tenido esta interfaz desde sus inicios hasta la actualidad. • Mac OS X y Aqua • Apple lanzó su GUI llamada Aqua cuyos elementos del diseño hacen uniforme el aspecto de las aplicaciones del Mac OS X. • Su meta es "incorporar el color, profundidad, translúcido, y texturas complejas visualmente atractivas" en aplicaciones del Mac OS X. Cuenta con dos características: • Botones tipo gel y • Un Dock, el cual facilita el lanzamiento y navegación entre aplicaciones. • Actualmente Macintosh ha hecho importantes aportaciones a la GUI, haciéndola única entre los competidores, con una gran serie de efectos y visualizaciones únicas de Mac. 1.2. Interfaces para el usuario, bases de datos e Internet • El desarrollo de software para la creación de las interfaces ha tenido un notable desarrollo desde la década de los setentas. La interfaz, como lo hemos visto en el tema anterior, es un medio de comunicación entre el usuario y la computadora a través del software. El usuario se comunica con el programa a través de menús o un conjunto de comandos • La interfaz brinda al usuario la facilidad de indicarle al programa, la aplicación y/o sistema lo que quiere hacer, de este modo se vuelve una de las partes más importantes del software. Por muy eficiente que sea una aplicación y/o sistema, si no cuenta con una interfaz bien elaborada, es muy factible que la funcionalidad de la aplicación y/o sistema, no sea aprovechada en su totalidad si el usuario es poco experimentado y no indaga en cómo hacer un mejor uso de la aplicación. • Se requiere de mucho tiempo y dedicación para diseñar y desarrollar una interfaz de calidad, enfatizando la usabilidad de la misma para el usuario, por lo que es de suma importancia, considerar el trabajo que se debe enfocar a las interfaces. Es importante mencionar que la complejidad de las interfaces, está proporcionalmente relacionada a la dificultad que representa su implementación y mantenimiento. • A través de las generaciones de las computadoras, se pueden distinguir diferentes tipos de interfaces: Por línea de comando Interfaces por menús Interfaces de manipulación directa (o GUI) Interfaces por interacción asistida • Interfaces por línea de comandos. Éstas se empleaban cuando iniciaron las computadoras (y que aún es empleada por los programadores, comúnmente en sistemas Unix), donde la comunicación con el sistema se hace mediante comandos específicos, aspecto que no es conveniente para el usuario final que no es experimentado o no conocedor del ambiente informático. • Interfaces por menús. En éstas se accede al sistema por una lista de opciones que se muestran en pantalla y el usuario puede escoger algunas de ellas para realizar cierta función. • Interfaces de manipulación directa (o GUI). Se han convertido en las interfaces de utilización universal y un estándar en el mercado (Shneiderman 1998), y se caracterizan por contener elementos gráficos tales como íconos, menús y ventanas. • Interfaces por interacción asistida, que actúan de forma autónoma a modo de ayudar a la persona a través de un agente. Programa que el usuario ve como asistente y no como herramienta de manipulación directa, con la capacidad de aprender, adaptarse, inferir, ser independiente y creativo de manera que se puedan delegar tareas en él. • Siendo la interfaz un punto de enlace entre el usuario y la computadora, adquiere desde el punto de vista del usuario, mayor utilidad, incluso más que el hardware y software en sí mismos, pasando a ser herramientas secundarias sobre las que está construida la interfaz. La definición de una interfaz está dada por la tarea que tenga asignada. • Las interfaces tienen un sistema de ventanas que dividen la pantalla de la computadora en regiones rectangulares conocidas como ventanas. • El sistema Unix, por ejemplo, tiene un sistema de ventanas XWindows y un administrador de ventanas. El primero provee las herramientas para dibujar figuras en la pantalla de la computadora y sirve como medio para recibir las acciones del usuario. El segundo, permite mover las ventanas a través de la pantalla y despliega en éstas los títulos y los bordes e íconos en torno de las ventanas. • En el sistema de ventanas, la caja de herramientas representa el elemento central y es comúnmente conocida como toolkit, la cual contiene una galería de objetos gráficos (widgets) como: botones de comandos, listas desplegables, etiquetas, cajas de texto, etcétera. • El toolkit se conecta con los programas de aplicación a través de procedimientos que contienen rutinas de programación que establecen el comportamiento de los objetos gráficos. Las cajas de herramientas de Windows y Macintosh son algunos ejemplos de toolkits con una galería de widgets, otros ejemplos de toolkits son: Tcl/Tk, Java, Gamet, InterViews, etcétera. • Los toolkits virtuales o también llamados “sistemas de desarrollo multiplataforma” permiten la creación y ejecución de una misma aplicación en diversos sistemas operativos tales como Windows, MacOS, Unix, etcétera. • Interfaz web • Las aplicaciones web han sufrido una evolución análoga a la que ya padecieron las aplicaciones de escritorio que utilizan los recursos propios de cada sistema operativo para construir su interfaz de usuario. Inicialmente, estas aplicaciones se ejecutaban en una única máquina, que era además la máquina donde se almacenaban los datos que manipulaban. • Posteriormente, se hicieron populares las arquitecturas cliente/servidor, en las que la interfaz de usuario de las aplicaciones de gestión se ejecuta en la máquina del cliente; pero los datos se suelen almacenar en un sistema gestor de bases de datos. • La aplicación cliente se conecta al sistema gestor de bases de datos de forma similar a como el navegador web accede al servidor HTTP en una aplicación web como las descritas en el apartado anterior. • Finalmente, para determinadas aplicaciones de gestión se han impuesto las arquitecturas multicapa y el uso de middleware. En estas aplicaciones, la máquina cliente sólo ejecuta la interfaz de usuario y la lógica de la aplicación se ejecuta en un servidor de aplicaciones independiente tanto de la interfaz de usuario como de la base de datos donde se almacenan los datos. • Middleware es un software que asiste a una aplicación para interactuar o comunicarse con otras aplicaciones, software, redes, hardware y/o sistemas operativos. Éste simplifica el trabajo de los programadores en la compleja tarea de generar las conexiones que son necesarias en los sistemas distribuidos. De esta forma se provee una solución que mejora la calidad de servicio, seguridad, envío de mensajes, directorio de servicio, etc. • Las aplicaciones web sólo se distinguen de las aplicaciones de escritorio tradicionales en que, en vez de implementar la interfaz de usuario utilizando un lenguaje particular como C/C++ o Java, se utilizan páginas web como punto de acceso a las aplicaciones. • Dichas aplicaciones construyen su interfaz utilizando formularios HTML, implementan su lógica en sistemas distribuidos y suelen almacenar sus datos en sistemas gestores de bases de datos relacionales. • De hecho, en el caso de las aplicaciones web incluso se han propuesto estándares que utilizan los mismos protocolos que las aplicaciones web cliente/servidor como canal de comunicación entre las distintas partes de una aplicación distribuida. Este es el caso de los servicios web, que intercambian mensajes en formato XML utilizando protocolos de transporte como HTTP. • Los servicios web, básicamente, establecen un lenguaje común mediante el cual distintos sistemas puedan comunicarse entre sí y, de esta forma, facilitan la construcción de sistemas distribuidos heterogéneos. • Así pues, una interfaz web es el conjunto de elementos gráficos usados en una red (Internet, Intranet) que permiten al usuario acceder a los contenidos, navegar e interactuar. • Se deben considerar los siguientes lineamientos al desarrollar una interfaz web: • Bases de datos • En lo referente a bases de datos, es esencial tener en cuenta que es una manera ordenada de almacenar información; pero siempre será necesario contar con una interfaz que sirva para que el usuario final de la información pueda explotar toda la información existente en ella. • Actualmente, la arquitectura más usada para este propósito es la conocida como arquitectura de triple capa. Ésta se caracteriza por separar por completo la arquitectura lógica y la administración de los datos. El cliente maneja la interfaz de usuario, que se llama capa de presentación o la primera capa. La interfaz puede estar basada en la web. Un servidor de aplicación ejecuta la lógica de la aplicación y constituye la capa intermedia. El servidor de la base de datos, que ejecuta el DBMS y administra el acceso a los datos, es la tercera capa. • La red de comunicación conecta cada capa con la siguiente. Esta arquitectura en capas es similar a la formación de capas que se encuentra en los protocolos de comunicaciones y otros campos, y su propósito es dar apoyo a la estandarización entre proveedores y proporcionar flexibilidad. • Así pues, la capa de presentación, es en la que se encuentra la interfaz gráfica, que sea apropiada para el usuario final, para tal finalidad es necesario el uso de alguno de los lenguajes que ya se han mencionado. 1.3. Lenguajes de programación para el desarrollo de interfaces • Como ya lo has visto a lo largo de la licenciatura, las instrucciones que permiten a una computadora realizar tal o cual acción dependen de ciertas aplicaciones que se lo vayan indicando; estas instrucciones se programan a través de un lenguaje de programación. Actualmente existe una gran variedad de lenguajes orientados a actividades específicas y que facilitan la creación de interfaces y su uso en diferentes ambiente, como Python, Visual Basic, Java, PHP, entre otros. • Es posible desarrollar programas cuya ejecución se pueda realizar de modo que se ejecute el código en sí; sin embargo, para un usuario que no cuente con los conocimientos necesarios, sería muy complicado utilizar dicho programa y/o aplicación. En este punto recae la importancia del desarrollo de interfaces, pues mediante éstas es como se provee la facilidad y flexibilidad al usuario de manejar la información. • La elección del lenguaje a emplear dependerá de la aplicación que se desea obtener, las tareas que ejecutará, aunque también tiene mucho que ver la experiencia del programador. A continuación se describen algunos de ellos. • PHP • PHP es una combinación de diferentes características de C, Java y Perl, pero mucho más fácil de aprender. • Aporta librerías con múltiples funciones predeterminadas para el cálculo matemático, acceso a red, envío de correo, utilización de expresiones regulares y otras posibilidades. • Tcl/Tk • Su nombre viene de tool command language, es un lenguaje de órdenes (interpretado) de acceso libre para el desarrollo de aplicaciones multiplataforma por medio de variables, estructuras de control y procedimientos que incorpora un intérprete a sus aplicaciones llamado tclsh, similar a los scripts de shell de UNIX tales como el Bourne Shell, C Shell, Korn Shell, y Perl. • Python • Es un lenguaje de programación de alto nivel cuya sintaxis es muy sencilla lo cual favorece la creación de un código legible. Es un lenguaje que soporta diferentes paradigmas de programación: orientación a objetos, programación imperativa y la programación funcional. • Es un lenguaje interpretado porque el cliente (local) envía al servidor (remoto) las instrucciones, y este último las interpreta para devolver el resultado de la ejecución. Su licencia de código abierto permite la modificación de su código fuente y puede distribuirse de manera libre.
© Copyright 2024