G4: Usabilidad

Ir al contenido | Ir al menú | Ir a la búsqueda

PATRONES DE DISEÑO DE ACCESIBILIDAD

Los Patrones de Diseño de la Accesibilidad nos dan soluciones a problemas de accesibilidad en contextos concretos con la posibilidad de poder ser reutilizados en contextos similares. Son una buena forma de pasar información desde el diseñador experimentado al novel.

Como estoy realizando mi tesis doctoral en temas relacionados con la accesibilidad, me he "atrevido" a escribir mi propia familia de patrones con la esperanza de que, con las aportaciones de todos, obtener un producto que nos sirva para diseñar sitios web accesibles para todos. Gracias al SIDAR y en concreto a Yusef por poner los medios para poder realizar esta puesta en común.

Diseño del contenido

Nombre: Ubiquitous Content. versión 1.1. (Contenido Ubicuo)

Sinopsis: Uno de los objetivos principales que debe perseguir un diseñador web es separar el contenido de la presentación. Para que la interacción que existe entre estas dos dimensiones quede clara hay que dar un significado al contenido (marcado semántico) para que así pueda ser correctamente presentado. De esta forma cada elemento correctamente definido, podrá colocarse en la zona de la página que el diseñador gráfico considere oportuna. Llamamos a este patrón ubicuo porque la ubicuidad representa la mayor forma de independencia respecto del espacio. Y con este patrón el contenido es diseñado para poder ser presentado en cualquier lugar y con cualquier tamaño.

Problema: Uno de los problemas principales de accesibilidad que tienen los sitios web actuales es que el diseñador se fija como meta principal el lograr una página con una apariencia determinada. Y para ello utiliza las herramientas que tiene a su disposición: HTML, CSS… indistintamente, sin tener en cuenta que cada herramienta ha sido concebida con un fin concreto. HTML para estructurar el contenido de la página y CSS para presentar dicho contenido. EL diseñador debe de estructurar el contenido de la página (HTML) antes de presentarlo (CSS), obteniendo además una separación entre estas dos partes del diseño de la página: Contenido y presentación. Diseñando de esta forma, el acceso a dicha información desde cualquier dispositivo (PDA, móvil…), agente (Navegador, buscadores, lector de pantalla…) y por parte de cualquier usuario será el óptimo.

Un ejemplo muy típico del problema que representa la no separación del contenido y la presentación es el caso del uso de las tablas para maquetar. Esto provoca que la ubicación de los componentes sea controlada por código HTML y que información de carácter no tabular quede identificada como tabular.

El objetivo de este patrón es facilitar el proceso de diseño de la página para poder separar de forma natural el contenido de la presentación.

Principios de accesibilidad: Los principios de accesibilidad que este patrón trata de mejorar son:

Pauta 3. Utilice marcadores y hojas de estilo y hágalo apropiadamente.
• 3.1 Cuando exista un marcador apropiado, use marcadores en vez de imágenes para transmitir la información.
• 3.2 Cree documentos que estén validados por las gramáticas formales publicadas
• 3.5 Utilice elementos de encabezado para transmitir la estructura lógica y utilícelos de acuerdo con la especificación
• 3.6 Marque correctamente las listas y los ítems de las listas
• 3.7 Marque las citas. No utilice el marcador de citas para efectos de formato tales como sangrías

Pauta 5. Cree tablas que se transformen correctamente.
• 5.3 No utilice tablas para maquetar, a menos que la tabla tenga sentido cuando se alinee. Por otro lado, si la tabla no tiene sentido, proporcione una alternativa equivalente (la cual debe ser una versión alineada ).
• 5.4 Si se utiliza una tabla para maquetar, no utilice marcadores estructurales para realizar un efecto visual de formato.

Pauta 6. Asegúrese de que las páginas que incorporan nuevas tecnologías se transformen correctamente.
•6.1 Organice el documento de forma que pueda ser leído sin hoja de estilo. Por ejemplo, cuando un documento HTML es interpretado sin asociarlo a una hoja de estilo, tiene que ser posible leerlo.

Pauta 11. Utilice las tecnologías y pautas W3C

Solución: Para poder culminar esta separación entre contenido y presentación tenemos que realizar un marcado semántico de la página. Hay que marcar los títulos como tales, separar los párrafos, definir las listas… consiguiendo así un documento cuyo contenido esté correctamente calificado y estructurado. De esta forma nos aseguramos que el agente que acceda a la página sabrá cuales son los puntos importantes de la misma porque estarán marcador como títulos, podrá presentar de forma adecuada a un usuario una lista de opciones porque estará marcada como tal etc.

Arbol ordenado de contenidos: Para poder llevar a cabo el marcado semántico tenemos que construir el árbol ordenado de contenidos. Dicho árbol ordenado de contenidos persigue como fin la estructuración de dichos contenidos: Para ello se definirán qué contenidos se desean mostrar en la página, cuál es el orden en el que se van a mostrar y la relación existente entre los mismos. Cuando hablamos de relación nos referimos únicamente a relaciones que tratan de estructurar el contenido. Es decir qué elemento está contenido en otros. No tratamos de otros tipos de dependencia de otra naturaleza. (Por ej. Comportamiento de los elementos)

El criterio a seguir para establecer el orden de los elementos debe de ser el orden de acceso a los elementos por parte de agentes o usuarios que no utilicen hojas de estilo. (Por diferentes motivos: Por el uso de Navegadores solo texto, Navegadores antiguos, Lectores de pantalla…)

Identificación de etiquetas XHTML: Una vez conseguido el árbol de contenidos hay que identificar cada elemento con la etiqueta XHTML adecuada. Se recomienda XHTML sobre HTML porque su validación contra una definición de lenguaje no es tan formal y puede provocar la inclusión de elementos no estándar. Para llevar a cabo este paso correctamente hay que conocer en profundidad las posibilidades que nos da el lenguaje de marcas utilizado. Para ello hay que saber cuales son los atributos de cada etiqueta y cual es su uso apropiado. Es imprescindible buscar el máximo número de elementos a categorizar para conseguir una página bien estructurada. Identificando los títulos, párrafos, listas, citas… De esta forma si hay alguna etiqueta que identifique la naturaleza (o significado) del elemento, se le aplicará, y si no la hay, se utilizará la etiqueta “comodín” DIV, en ambos casos con un atributo ID adecuado que identifique el significado de dicho elemento. Es importante tener en cuenta que DIV por si sola no aporta ningún significado al elemento que califica, por lo que necesita del atributo ID para aportar dicho significado.

Uno de los problemas que se encuentra un diseñador es la no existencia, en los lenguajes de marcas utilizados en la actualidad (HTML, XHTML…), de todas las marcas que identifiquen las diferentes estructuras que una página Web puede tener. Por ej. Sabemos que un elemento muy típico de un documento Web es el menú. El menú es en sí una lista de opciones y como tal deberá ser marcado como una lista. Pero es una lista de opciones especial y por lo tanto exige una categorización más detallada para que luego se pueda asignar una presentación adecuada a dicha categorización. Esta categorización se puede conseguir dando un ID especial a dicha lista, por ej. “menu”. De esta forma conseguimos indicar que es una lista y a su vez un menú. Es decir el identificador que se le asigna a un elemento puede servirnos para dar un significado más concreto a dicho elemento. A pesar que dicho identificador es texto libre (por lo que su uso no está normalizado) nos da la suficiente información para que después desde la hoja de estilos CSS se pueda determinar la presentación de dicho elemento (posición, tamaño, aspecto gráfico…). Dicha hoja de estilos no tiene porqué ser única y por lo tanto la presentación de estos elementos puede cambiar.

Es importante no asociar mentalmente ninguna etiqueta con su presentación predeterminada. “Solo” estructurar el contenido. No debe de haber ningún elemento que defina la presentación en esta estructuración del contenido, ni explícita ni implícitamente:

• Explícitamente:

* No utilizar ni elementos de presentación como <FONT>, <B>… ni atributos de presentación como color, width, height
* No introducir atributos style y minimizar el uso del atributo class. Hay veces que el uso de class puede facilitar mucho la definición de la página. (El uso de class será tratado un poco más adelante). Hay que tener en cuenta que no estamos presentando la información, solo estructurándola.

• Implícitamente: No utilizar nombres que se asocien con efectos de presentación en los selectores de identificación: Por ej. <DIV id=”colDerecha”…

Contenido dinámico: En el caso de que el (X)HTML se genere de una forma dinámica(Mediante programa y con datos de un origen de datos externo), el diseñador no escribe la totalidad del (X)HTML que se envía al cliente sino que una plantilla que luego se completará utilizando la información del origen de datos. Dado que el valor del atributo ID es irrepetible en una página, en muchos casos no se puede incluir en la plantilla por lo que puede resultar que haya elementos sin atributo ID o que el valor de dicho atributo ID sea generado automáticamente y por lo tanto desconocido en tiempo de diseño. En estos casos se puede utilizar el atributo class (Cuyo valor se puede duplicar en la página) para determinar la función de dichos elementos en la página. Es importante dar a class un nombre que sea significativo para el diseñador y que defina la funcionalidad del elemento en sí y no su presentación. Es decir es mejor llamarlo class=”filaTabla” que class=”verdePequeño”. Ya que si se le llama “filaTabla” se especifica la función del elemento en la página mientras que si se le denomina “verdePequeño” se define su presentación. A la hora de mantener el código, si se desea cambiar la presentación de todas las filas de una tabla, solo habrá que cambiar la definición de la clase “filaTabla” en la hoja de estilos, mientras que si se le llama “verdePequeño” se debería de cambiar de clase en la página HTML a otra como por ej. “azulGrande”, es decir se debería de retocar el contenido para cambiar la presentación.

Es importante no reutilizar la clase “filaTabla” en elementos que coyunturalmente vayan a tener la misma presentación. Reutilizarla solo en elementos cuya función en esta u otras páginas sea la misma.

Nota: En algunos casos, cuando se diseña la presentación (la hoja de estilos), se pueden detectar situaciones que nos obliguen a retocar el contenido para facilitar el diseño o para economizar medios.

Ejemplo: Supongamos una página HOME tipo de un sitio web. Podríamos mostrar el siguiente árbol de contenidos:

	Contenedor
		Indice
			Título indice
			Opciones indice
		Cabecera
			Título pagina
			Logo
			Buscar
		Menu
			Título menu
			OpcionesMenu
		Migas de Pan
			Título migas de pan
			Camino
		Contenido
			Título contenido
			ContenidoQuienesSomos
			ContenidoServicios
		Pie

El detalle de este árbol de contenidos dependerá de la previa definición de algunas de sus partes. Es decir si la estructura del elemento menú ya ha sido definido previamente no hace falta volverlo a descomponer, simplemente indicar dónde está definido.

Y para dicho árbol de contenidos obtendremos el siguiente cuerpo de página XHTML:

Autor

----------------------------------------------------                                         
  Ruben Arrizabalaga Muniategi           
<mailto:rarrizabalaga@eps.mondragon.edu>      
  Computer Science Department            
 University Of Mondragon - MGEP   
  Tel. +34 943739635 Fax. +34 943791536
----------------------------------------------------

Comentarios: Se agradecen

Palabras clave:

Accesibilidad, Contenido, Presentación, HTML, CSS, Patrón, Diseño.

Copyright:Dado que este patrón forma parte de una tesis doctoral aun sin publicar se permite el uso, modificación y referencia a este patrón siempre que se preserve la identidad de su autor.

Trackbacks

1. El Jueves 16 Febrero 2006 a las 03:54, por Los textos de qweos.net

Yahoo! Design Pattern Library

Yahoo! ha publicado su Biblioteca de Patrones de Diseño. Desde el año 2004, Yahoo! ha estado recopilando y catalogando patrones de diseño de interacción como recurso interno de la empresa y, desde ayer, está disponible para todos. Aunque no están...

Los trackbacks sobre esta entrada están cerrados.

Comentarios

1. El Miércoles 15 Febrero 2006 a las 03:03, por xar

nunca he llamado diseñador a alguien que utiliza html, css, etc... :P aunque alguna vez ya me lo han llamado y me resulta extraño porque yo ese concepto lo entiendo diferente

2. El Miércoles 15 Febrero 2006 a las 03:22, por ruben

¿Quizás sería interesante definir previamente los roles de diseñador e implementador?

3. El Miércoles 15 Febrero 2006 a las 12:54, por ruben

Para poder diferenciar mejor las funciones de un diseñador y un implementador voy a tratar de exponer las diferencias con un ejemplo del mundo real ya conocido por todos:

La labor de un diseñador de automóviles no termina ni mucho menos con un dibujo del coche a fabricar, ni la labor de un diseñador de ropa termina con el dibujo de un patrón. Ambos dos deben de validar el prototipo creado con sus diseños. En el caso de los automóviles, el prototipo no es una maqueta sino que es un coche que funciona y en el caso de la ropa es una prenda que se lucirá en diferentes pasarelas. La implementación de estos coches y esta ropa será la fabricación, en seria o artesana de los mismos, pero utilizando el diseño creado previamente por el diseñador.

Adaptando esto al mundo web, hay que tener en cuenta que un diseñador no se debe de entender como diseñador gráfico, sino que debe diseñar otras muchas facetas: Usabilidad, accesibilidad, funcionalidad… Podemos decir que tanto HTML y CSS son herramientas que un diseñador web debe saber utilizar para crear la especificación del documento que quiere crear. El implementador aplicará dicha especificación a otras páginas web con el mismo o parecido diseño.

Espero que con este ejemplo quede claro el uso que se hace del concepto de diseño en este patrón.

4. El Miércoles 15 Febrero 2006 a las 17:09, por yusef :: yusefhassan  arroba  gmail  punto  com

Ruben, creo que ha quedado perfectamente claro :)

5. El Jueves 16 Febrero 2006 a las 06:33, por Christophe Strobbe

Interesting. Have you checked www.hcipatterns.org/patte... ? They even have a DTD for 'Pattern Language Markup Language' - PLML (which does not really impress me and needs more work). More info on PLML is linked from www.cs.kent.ac.uk/people/...
(Apologies for commenting in English; my Spanish is too rusty for this.)

6. El Jueves 16 Febrero 2006 a las 07:13, por Fran Tarifa :: tarifamengibarf  arroba  hotmail  punto  com

Me parece muy buena iniciativa, esperamos los nuevos patrones.

7. El Jueves 16 Febrero 2006 a las 12:32, por ruben

Muchas gracias Cristophe por la información acerca de PLML puesto que puede resultar interesante para especificar los patrones de una manera más formal.
Gracias también a Fran por los ánimos y para la semana que viene pondremos algún patrón más. (Para que sean más fácilmente digeribles)

8. El Domingo 19 Febrero 2006 a las 05:07, por pobrecito hablador

Me parece algo extraña la estructura que has elegido. Es confusa y no refleja la jerarquia de un documento. Por ejemplo:
- el camino de migas -un elemento secundario- tiene el mismo nivel que del contenido -la parte principal de cualquier documento.
- los saltosLinks ¿forman parte de la estructura general de un documento? En tal caso, no sería mas claro un nombre como indice.
- ¿que es el h1 encabezado de la página? ¿en que se diferencia de la cabecera (que al parecer ya no es un encabezado)..

En cuanto al marcado, tampoco me gusta. En el menu por ejemplo, utilizas un h2 para el título y un ul para la lista de opciones. No me convence tal solución ya que en la jeraquia de cabeceras el menu es mas importante que el contenido, y pie, por ejemplo, ya va tiene una cabecera de nivel 3. Es decir, que si intentamos "resumir" el documento leyendo las cabeceras obtendriamos:
h1: titulo.
h2: Opciones de menu,
h3: Pie.
¿donde esta todo el contenido? Has priorizado la estructura de la página y te has olvidado del contenido, que es lo más importante ¿o no?

9. El Lunes 20 Febrero 2006 a las 04:17, por ruben :: rarrizabalaga  arroba  eps  punto  mondragon  punto  edu

Antes de nada agradecerte tus comentarios "pobrecito hablador" que espero que sirvan para mejorar este patrón, o por lo menos en este caso para mejorar el ejemplo que es el elemento sobre el que realizas tus aportaciones. Respecto a las mismas me gustaría comentarte lo siguiente:

El ejemplo NO ES UNA PÁGINA REAL sino que un ejemplo de aplicación de un patrón, por eso NO HAY CONTENIDO. El contenido será el que cada uno quiera ponerle.
A mi modesto entender, el nivel en el que se encuentra un elemento en la jerarquía de una página (El arbol de contenidos) no tiene porqué ser directamente proporcional a su grado de importancia. ¿Lo podemos discutir?

Totalmente de acuerdo que el nombre "indice" es más claro que "saltoslinks" y que el encabezado de la página está repetido

10. El Martes 21 Febrero 2006 a las 18:14, por pobrecito hablador

mi dudas son:

¿como sabe un agente automático (robot de busqueda, o un programa de lectura web) que es importante en una página y que es secundario? ¿es el contenido prioritario o son los elementos de navegación ? ¿como sabe que esta leyendo?

Si tenemos un documento donde los titulos principales del contenido estan marcado con h1, y los titulos de cada bloque estan marcados con h2 ( y paro aquí para no aburrir) nuestro robotijo puede presentarnos un resumen razonable de lo que dice el texto solo repetiendo h1, enumrando cada h2, seguido quizás de la primeras frase de cada bloque. Un agente de voz incluso podría decir algo como:
"esta pagina trata sobre : h1"
"el tema esta dividido en : h2, h2, h2...¿desea una lectura continua o le interesa un bloque en particular?"

El problema viene con los dichosos menu de navegación de la pagina ¿les asignamos un h2 ? ¿un h3?
Si los consideramos prioritarios (es decir pensamos mas en asistentes que en robots de busquedas) podriamos establecer:
cabecera
h1->titulo
h2->para cada menu principal como "Cambiar Idioma", "Navegación Principal", "migas de pan"..
contenido
h2 ->primer titulo del contenido
pie
h3 ->del tipo "validado por "
h3 ->avisos legales

Asi establecemos:
- mediante h1, que el bloque principal es la cabecera. Con los h2 hemos creado el "indice".
- el bloque de contenido es el segundo bloque, ya que cuenta con encabezados h2.
Con un marcado asi (bueno hay que pulirlo y mucho) un agente automático podria presentar la página con:
esta pagina es sobre h1, tiene ustéd las siguientes opciones de navegación (enumeración de los h2 de la cabecera) y los bloque de contenido son "enumeración de los h2 del segundo bloque jerarquico".
Adicionalmente tenemos "enumeracion de los h3 del tercer bloque jerarquico".

Sospecho, pequeño saltamontes, que en tu patrón de has dejado influir mas por aspectos visuales que estructurales.

ale, ahi estan mis dos centavos..

















11. El Miércoles 22 Febrero 2006 a las 06:30, por ruben

Gracias de nuevo por tu par de centavos <guiño>. Tienes razón, el ejemplo tiene errores de bulto en la colocación de las cabeceras. Espero solucionarlos en breve, junto con otras aportaciones que se han hecho en la lista de distribución.

Añadir un comentario

Los comentarios sobre esta entrada están cerrados.