unidad 1. introducción a las interfaces - TAPS-CB-16

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.