DESARROLLO DE APLICACIONES ASISTENTE O ALTERNATIVAS MEDIANTE APLICACIONES WEB (CASO PRÁCTICO: AWAKE) Eric Rodríguez Suazo, José G. Zato Recellado Escuela Universitaria de Informática de la Universidad Politécnica de Madrid Campus Sur, Ctra. Valencia km.7, 28031 Madrid, España enro@erasmus2003.eui.upm.es, jzato@eui.upm.es RESUMEN Este artículo presenta una propuesta para el desarrollo o transformación, según el caso, de navegadores y aplicaciones alternativas en general a aplicaciones Web mediante el uso de distintas tecnologías Java. Se comenta a su vez un caso práctico: la transformación de AWAKE, un navegador Web diseñado para personas con discapacidades físicas severas a una aplicación Web. Se pretende dar a conocer los grandes beneficios de este enfoque y mostrar a su vez al lector las posibilidades e impacto que un desarrollo de este tipo puede tener en la sociedad. Palabras Claves: Acceso a Internet, Navegación Alternativa, Aplicaciones Web 1. INTRODUCCIÓN El concepto de Tecnología Asistente se refiere a ayudas mecánicas que substituyen o aumentan la función de alguna habilidad física o mental que se encuentre impedida. Las Tecnologías Asistentes pueden ser adquiridas comercialmente o hechas en casa, pueden ser adquiridas listas para usarse o habrá que modificarlas1. La clave es que ésta sea utilizada para ayudar a un individuo a realizar una actividad cualquiera de la vida diaria. Las tecnologías usadas pueden incluir cosas tan simples como un mango para sostener un lápiz, o cosas tan complejas como un ordenador, un sintetizador de voz o un lector de braille. En el caso del acceso al ordenador y concretamente a Internet, se puede distinguir entre 3 componentes que deben interactuar conjuntamente para lograr que Internet sea un recurso realmente accesible2: 1. El hardware necesario para la interacción humano-ordenador, 2. Los agentes de usuarios necesarios para la interpretación de la información contenida en la Web (software) y 3. La estructura de datos usada para representar dicha información y facilitar la navegación a través de Internet (diseño efectivo y accesible de páginas HTML). 1 Por hardware se entiende los dispositivos de Entrada y Salida (E/S) necesarios para el intercambio de información con la Web; tales como el teclado, el ratón y por supuesto el monitor de video (considerados todos como dispositivos estándar de E/S). Dicho intercambio de información requiere generalmente del uso de ciertas funciones sensoriales y cognitivas, así como destrezas motoras y el uso de la memoria. Por lo tanto, cuando uno o más partes de las interfaces estándar de E/S impide o previene a un usuario de acceder al ordenador, y por consiguiente, de Internet, es necesario el uso de dispositivos E/S especiales, tales como dispositivos de entrada por voz o mediante interruptores. Un display de Braille es también un buen ejemplo de un dispositivo de salida no estándar. Los agentes de usuario (más conocidos como navegadores) son editores software especiales que interpretan códigos HTML a un formato comprensible por el usuario. Como la mayor parte de las aplicaciones de hoy en día, los navegadores ofrecen su funcionalidad a través del uso de una Interfaz Gráfica de Usuario (IGU) compuesta por controles tales como menús, botones, etc. y mediante los elementos HTML (imágenes, formularios, enlaces de hipertexto, etc.) propios del documento HTML recuperado. Los navegadores constituyen la interfaz por defecto a la World Wide Web (WWW) y proveen el lugar de interacción entre los usuarios y la Web. Por último, al hablar de diseño efectivo y accesible de páginas HTML, se refiere a que estas deben ser diseñadas de modo que las distintas tecnologías, ya sean hardware como un display Braille ó software como un lector de pantalla, puedan interpretar correctamente el contenido de cada documento. Este diseño efectivo y accesible incluye, pero no se limita a: Proporcionar texto asociado y/o alternativo a toda imagen gráfica. Incluir comentarios descriptivos y detallados con todas las imágenes. Proporcionar descripciones o transcripciones de texto para todos los archivos de audio3. Ser consistente en el diseño de las páginas, tal que la navegación sea previsible. Ser claros en la forma de describir lo que hay que hacer y cómo hay que hacerlo, evitando que el usuario con problemas dependa únicamente de la información visual. Ser sensibles con respecto a la claridad y organización en el diseño, de forma que los usuarios no tengan mayores problemas en localizar la información que han ido extrayendo4. La interacción entre un navegador, los dispositivos E/S estándar y los documentos recuperados de la Web suele ser bastante simple e intuitiva: se toma el ratón, se coloca sobre el enlace o 2 botón o lo que sea, se presiona el botón del ratón ¡y se deja que el navegador se encargue del resto! Sin embargo, para las personas con discapacidades esta interacción no es ni simple ni intuitiva. Para usuarios que tienen dificultad o que no pueden usar un ratón o un teclado, estos representan otra puerta cerrada al mundo5. Estos usuarios necesitan de sistemas alternativos, distintos al clásico IGU para poder acceder a la Web, por ello se ha desarrollado lo que se conoce como Navegación Web Alternativa. 2. NAVEGACIÓN WEB ALTERNATIVA Actualmente existe una gran variedad de navegadores “alternativos” diseñados con un enfoque distinto a los típicos navegadores de IGU. Por ejemplo, las personas con discapacidad visual o con dificultades para leer pueden recurrir a navegadores por voz, displays de Braille y en muchos casos al uso del teclado en lugar del ratón. Personas que no pueden usar el teclado recurren al reconocimiento de comandos por voz o a interruptores que pueden ser activados por la cabeza, movimientos del ojo, etc.6. Para un listado mas completo de los distintos Navegadores Alternativos y sus características puede verse http://www.w3.org/WAI/References/Browsing. Algunos de estos navegadores alternativos pueden obtenerse de forma gratuita, mientras que otros son pagados. 3. DESVENTAJAS DE LA NAVEGACIÓN ALTERNATIVA Los diferentes sistemas de Navegación Alternativa proporcionan acceso a Internet a las personas con distintas discapacidades ofreciendo características que compensan las funciones impedidas inherentes a cada tipo de discapacidad. Sin embargo, existen una serie de barreras que dificultan que estas aplicaciones alternativas solucionen el problema de acceso a la Web por parte de las personas con discapacidades, a continuación se nombran las más comunes: Aunque muchas de estas aplicaciones alternativas reconocen lenguajes de script como JavaScript o VBScript, la mayoría no son capaces de interpretarlos correctamente y muchas no las interpretan del todo. Es más, a medida que se desarrollan estos lenguajes de scripts y se les agregan funcionalidades, más difícil es mantener actualizados estos navegadores alternativos. Después de todo, estos lenguajes se desarrollan teniendo en cuenta mayormente a navegadores estándar como el Internet Explorer de Microsoft (MSIE) o el Navegador de Netscape (NN). Lo mismo aplica a los objetos incrustados (embedded) como lo son los Applets de Java, animación Flash, videos, etc. 3 Los navegadores alternativos, por lo general, no incluyen las características más comunes de Accesibilidad que proveen los navegadores estándar, como son: Alto Contraste, Teclas de Filtrado, Teclas “Pegajosas” (StickyKeys), etc. Estas características deben proveerse en todos los navegadores para así lograr un rango más amplio de usuarios beneficiados. Algunos de los navegadores alternativos presentan problemas al tratar con los elementos más avanzados de HTML, por ejemplo, la utilización de marcos y el re-direccionamiento de páginas. Para tener una mejor comprensión de las diferentes barreras que un usuario puede encontrar al utilizar la Web, se puede consultar la Iniciativa de Accesibilidad Web, mejor conocida por sus siglas en inglés WAI. 4. ENFOQUE PROPUESTO El siguiente paso en esta línea de aplicaciones debe solucionar de forma efectiva las barreras que se acaban de mencionar, más algunas más. El enfoque que se propone es el de convertir todas estas aplicaciones alternativas en Aplicaciones Web, las cuales en lugar de ser aplicaciones independientes que deban, además de sus características particulares, también incluir las características estándar de accesibilidad (StickyKeys, FilteKeys, etc.) de los navegadores comunes; simplemente utilicen las que ya estén incluidas en estos. Para lograr esto se propone hacer uso de las tecnologías Java que nos permiten crear aplicaciones Web, concretamente: JSP y Java Servlets. Además, algunas de las operaciones más simples podrían llevarse a cabo mediante el uso de JavaScript, utilizando así tanto los recursos del cliente como los del servidor. ¿Qué son las Aplicaciones Web y porque usarlas? Las aplicaciones Web no son más que aplicaciones comunes con la simple excepción de que estas corren dentro de un servidor Web. Utilizan la Web como mecanismo de transmisión de información entre la aplicación y el usuario, constituyendo el navegador Web su interfaz primaria de usuario lo cual es una gran ventaja dado que los navegadores se han establecido como el estándar de facto y multi-plataforma para acceder a la información en la WWW. Además, cuando una aplicación adopta al navegador Web como interfaz de usuario, elimina la necesidad de que sus usuarios tengan que instalar software adicional para poder correr dicha aplicación. Y, a medida que se desarrollen y distribuyan nuevas versiones de la aplicación en el servidor, los usuarios comienzan a utilizarlas de forma automática, sin que sea necesario hacer actualizaciones y sin tener que pasar por, generalmente, complicadas instalaciones. Esto, claro 4 esta, representa una ventaja añadida cuando los usuarios son personas con una u otra discapacidad. Mientras que las aplicaciones Java normales y los Applets usan componentes AWT y Swing para construir su interfaz (IGU) alrededor de elementos de entrada como campos de texto, botones, etc., y así obtener información del usuario; las aplicaciones Web se valen de los elementos de formulario HTML para realizar la misma función7. Páginas de Servidor Java & Servlets Las páginas de servidor de Java, conocidas por sus siglas en ingles (JSP), consisten en tecnología basada en Java para desarrollar contenido Web dinámico. Estas contienen HTML tradicional junto con código incrustado que accede a código Java que corre en el servidor. A simple vista dan la impresión de ser páginas HTML comunes y corrientes, excepto que tienen la extensión .jsp e incluyen unas cuantas etiquetas comunes a JSP. Esto permite definir una página con botones y demás controles HTML de forma estática y luego generar el contenido dinámico ya sea, mediante “scripting” o mediante la inclusión de Servlets o JSP. Servlets es el nombre dado a pequeñas aplicaciones Java que le añaden funcionalidades dinámicas a los servidores Web. Estos toman solicitudes HTTP del navegador como parámetros de entrada y de acuerdo a estos, localizan y/o generan el contenido apropiado para la respuesta del servidor. Como los Servlets operan exclusivamente dentro del dominio del servidor, estos no necesitan que el navegador utilizado soporte Java8. Una última característica que no se puede dejar de mencionar es que los Servlets son portables: tanto a través de distintos sistemas operativos como de los servidores Web. 5. CASO PRÁCTICO: AWAKE AWAKE, de sus siglas en inglés Alternative Web Access toolKit for impairEd users, es un navegador desarrollado por el Departamento de Sistemas Inteligentes Aplicados (SIA) de la Escuela Universitaria de Informática (EUI) de la Universidad Politécnica de Madrid (UPM) para proveer acceso a Internet a las personas con discapacidades físicas severas. Esto se logra enfocando el problema desde dos puntos principales. Primero, resuelve el problema de la interacción humano-ordenador utilizando un interruptor binario como su principal dispositivo de entrada y a través del barrido de sus comandos y componentes como su método de selección. Luego, para facilitar la navegación a través de los enlaces de hipertexto de un documento, AWAKE extrae dichos enlaces; los muestra en una ventana separados del resto del documento y finalmente los hace accesibles utilizando el método de barrido a través de cada uno de ellos. 5 El primer paso para transformar AWAKE de una aplicación Java a una aplicación Web consiste en pasar de una interfaz creada mediante elementos Java a una que utilice elementos HTML (Figura 1). Como AWAKE consta de 3 paneles o ventanas principales, resulta lógico que como aplicación Web cada ventana se corresponda a una página HTML, de modo que para visualizar las 3 ventanas al mismo tiempo se hace uso de marcos. La sección 1.a corresponde a la barra de navegación, la 1.b es donde se visualizan los enlaces extraídos y la 1.c donde se ve el contenido de la página. La versión original de AWAKE presenta los documentos en forma de un árbol HTML mientras que la versión Web visualiza las páginas tal y como el autor de dicha página desea que se visualicen. Dado que se desea que esta ventana sea tan grande como sea posible, se ha optado por otorgarle a la ventana de visualización de enlaces (1.b) una condición dinámica tal que sea visible únicamente cuando se selecciona el botón de mostrar enlaces “Show Links” y que permanezca oculta el resto del tiempo. Las preferencias del usuario se recuperan automáticamente mediante el uso de “Cookies”, las cuales se usaran para inicializar las distintas variables que la aplicación necesite. Figura 1. Transformación de AWAKE a una Aplicación Web 6 Barrido de Componentes vs. Barrido de Ventanas Una de las características más atractivas que ofrece AWAKE es su sistema de barrido, ya que lo hace de forma tal, que aunque todos sus comandos y componentes están disponibles a través del sistema de barrido, esta tarea no resulta ni agotadora ni tediosa. Esto se logra estableciendo una jerarquía en la interfaz de forma tal que la complejidad de esta tarea se ve reducida al estructurar la interfaz en niveles. Cada nivel se corresponde con uno de los paneles antes mencionados, así que al inicializar la aplicación, el barrido se hace entre cada panel. Luego, según la acción que se desea realizar, el usuario solo debe activar (o desactivar según el método de barrido) el interruptor para cambiar de un barrido entre paneles a un barrido a través de los componentes de cada panel. De esta forma se evita que el usuario tenga que esperar un extenso barrido de a través de todos sus elementos, lo cual resulta especialmente tedioso si, por alguna razón cualquiera, al usuario se le pasa el elemento que deseaba activar por lo que este se vea forzado a tener que esperar a que el barrido termine y vuelva a comenzar de nuevo antes de poder realizar la operación deseada. En el caso de AWAKE, y probablemente en todos los casos, es precisamente su característica más deseada, la técnicamente más difícil de alcanzar. En este caso el problema reside en que el estándar HTTP no cuenta con memoria de estado, lo que imposibilita realizar el barrido a través de métodos más tradicionales, es decir, comprobando el estado de cada elemento AWT o Swing. Esta falta de memoria de estado es probablemente el aspecto más desafiante a la hora de construir aplicaciones Web, sin embargo, tanto JSP como los Servlets nos proveen soluciones alternas a estos problemas. Además al estar trabajando con código HTML y con navegadores estándar existe otro recurso a nuestra disposición: JavaScript. Para resolver el problema del barrido en AWAKE tanto entre ventanas como entre componentes, se hizo uso de la combinación de JavaScript con el poder de los Servlets. JavaScript es un simple, y a la vez poderoso lenguaje de scripts que nos permite crear contenido Web dinámico. Trabaja sobre el navegador del cliente, contrario a las JSP y a los Servlets que trabajan sobre el servidor, lo que significa que usa los recursos de sistema del cliente, liberando así carga al servidor. Otra razón de peso para su uso, es que en JavaScript se puede acceder a cada elemento HTML y sus propiedades de forma directa tratándolos como arrays9. 5. VENTAJAS DEL ENFOQUE PROPUESTO Algunas de las ventajas del enfoque propuesto, convertir las aplicaciones alternativas en aplicaciones Web, se relacionan directamente con las desventajas antes mencionadas de la navegación alternativa, otras en cambio, son inherentes a la naturaleza de las aplicaciones Web y 7 un tercer grupo son el resultado de trabajar con tecnologías Java. Dichas ventajas incluyen, pero no se limitan a: Dado que las aplicaciones Web trabajan “dentro” de un navegador estándar, estas cuentan automáticamente con la interpretación de los mismos lenguajes de scripts, como JavaScript y VBScript, siempre y cuando el navegador utilizado sea capaz de interpretarlos. Por la misma razón, también se soportarían los mismos objetos incrustados, como los Applets de Java, animaciones, archivos de audio y video, etc., que soporte el navegador utilizado. Contarían también, además de con sus propias características de accesibilidad, con las características de accesibilidad que ofrece cada navegador. Por ejemplo, Alto Contraste, Teclas de Filtrado, Teclas “Pegajosas” (StickyKeys), etc. De hecho, el número de tecnologías que se soporten estaría limitado únicamente por el número de tecnologías que el navegador utilizado soporte y crecería acordemente. Lo que es mejor, este crecimiento vendría sin ningún tipo de esfuerzo por parte de los desarrolladores de la aplicación Web ya que esto queda a cargo de los desarrolladores de cada navegador, Microsoft y Netscape por mencionar algunos. Dado que las tecnologías Web se desarrollan teniendo en cuenta principalmente a los navegadores estándar, las aplicaciones desarrolladas serian siempre compatibles con las últimas tecnologías. De esta forma los desarrolladores de aplicaciones alternativas se concentrarían únicamente en aquellas características propias a la funcionalidad alternativa de su respectiva aplicación. Como los navegadores estándar son desarrollados para trabajar bajo un sistema operativo especifico (por ejemplo, MSIE tiene una versión para Windows y otra para MacOS) estos han sido configurados para utilizar los recursos que ofrece cada sistema operativo. De especial interés para las aplicaciones alternativas es el uso de todos los puertos existentes en el ordenador del cliente, lo que libera a los desarrolladores de tener que programar por si mismos la interfaz entre sus aplicaciones alternativas y, por ejemplo, un interruptor. Una ventaja común a todas las aplicaciones Web, es que el usuario no tiene que preocuparse por actualizar la aplicación, ya que estas estarán automáticamente disponibles al iniciar la sesión. 8 Este enfoque resulta verdaderamente independiente de la plataforma utilizada y como trabaja bajo distintos navegadores (como MSIE y Netscape), atrae a un mayor número de usuarios. Debido a las facilidades que ofrece Java para programar en Internet, resulta fácil trabajar sobre el código HTML de cada página, de modo que se puedan controlar aspectos indeseables como la aparición indeseada de ventanas emergentes, que para algunos usuarios con discapacidades, más que indeseables resultan verdaderas barreras que impiden al acceso a la Web. 6. CONCLUSIONES A lo largo del presente documento se han descrito muchas de las ventajas de transformar las aplicaciones alternativas (sean Navegadores Web o cualquier otra) de aplicaciones de escritorio comunes a aplicaciones Web. Sin embargo, cabe mencionar una desventaja de este enfoque que no se puede olvidar. Al trabajar estas aplicaciones desde un servidor, es indispensable que el usuario se mantenga conectado a Internet. En el caso de los navegadores alternativos esto no es tan grave como lo sería para otras aplicaciones como, por ejemplo un editor de signo-escritura, ya que cualquier navegador Web, estándar o no, debe conectarse a Internet. A pesar de este inconveniente, el desarrollo de aplicaciones Web dirigidas a usuarios con discapacidades presenta una solución que no es solo viable sino también aconsejable. No solo por las ventajas anteriormente discutidas, sino porque representaría un paso en la dirección correcta hacia una verdadera integración de las personas con discapacidades a la sociedad y en especial a la educación. ¿Porque? Por que los navegadores estándar son aplicaciones comunes a cualquier ordenador en cualquier parte del mundo, por lo que estas aplicaciones estarían disponibles desde cualquier ordenador que posea acceso a Internet, incluso desde un Café Internet. Esto libera al usuario de la necesidad de tener que trabajar forzosa y exclusivamente desde su hogar, abriéndole la posibilidad de navegar y/o trabajar desde distintas partes de su ciudad, país o incluso del mundo. Además, al ser aplicaciones gratuitas, resultan accesibles a usuarios de países en vías de desarrollo que no cuentan con grandes recursos económicos y, por lo general, tampoco cuentan con representantes de las firmas que desarrollan las aplicaciones alternativas, lo que se traduce a falta de soporte técnico. En referencia al tema de la educación, desarrollar aplicaciones Web a partir de aplicaciones alternativas ya existentes resulta un gran apoyo a Universidades y demás centros educativos y de formación ya que estos cuentan, generalmente, con una conexión permanente a 9 Internet, permitiendo así que los estudiantes con discapacidades puedan combinar las clases presénciales con los recursos disponibles en Internet accesibles a través de los navegadores alternativos. 7. REFERENCIAS 1 Prepared by “Parents, Let's Unite for Kids (PLUK)” in cooperation with The Federation for Children with Special Needs. Family Guide to Assistive Technology. http://www.pluk.org/AT1.html#2. 2 Loy, B. y Batiste, L. (1998). Surfing the net:the three keys to universal access. Trabajo presentado en la CSUN98 3 Hyppönen, H. (1998). The World Wide Web Accessibility. http://www.stakes.fi/include/accessib.html 4 McCain, S. (1998). Web Accesibility of Disabilities. Trabajo presentado en la CSUN98 5 Thomas Wagner, José Zato Recellado (2001). Alternative Web Acess Toolkit (AWAKE). SIA, EUI, UPM. 6 Web Accessibility Iniciative (WAI). Alternative Browsing. http://www.w3.org/WAI/References/Browsing. 7 Fields & Kolb (2000) Web Development with Java Server Pages. Greenwich, CT : Manning. 8 Hall (2003). Core servlets and JavaServer Pages (JSP). Prentice Hall. 9 Goodman (2001). JavaScript Bible Gold Edition. Hungry Minds Inc. 10