EXAMEN UNIDAD 1. ARQUITECTURA 1.1. Evolución de las aplicaciones Web El objetivo era crear una red de comunicaciones militar capaz de seguir funcionando después de un ataque nuclear. Los primeros pasos fueron: • En 1964 Paul Baran, de Rand Corporation propuso la utilización de una red de conmutación de paquetes. • En 1968 se puso en funcionamiento el NPL (National Physics Laboratory) en el Reino Unido. • En 1969 se creó ARPANET, una red para comunicar los distintos centros implicados en el proyecto ARPA. Los miembros de ARPANET fueron: • Stanford Research Institute (SRI). • Universidad de California, Santa Bárbara. • Universidad de California, Los Ángeles (UCLA). • Universidad de Utah. Evolución de ARPANET: • 1973. Primera conexión internacional con Inglaterra y Noruega. • Surge el protocolo TCP/IP para estandarizar la comunicación entre redes. • 1986. Surge NSFNET (National Science Foundation Network) para interconectar 5 grandes centros de supercomputación. Miembros de NSFNET: • Prinston • Pittsbourgh • UCSD • UIUC • Cornell Evolución: • 1990. Desmantelamiento de ARPANET. • 1992. Tim Berners-Lee, físico del CERN (Suiza), inventa la Word Wide Web (WWW). • 1993. Surge InterNIC. • 1995. Sun Microsystems presenta un nuevo lenguaje de programación (Java). Internet nació a partir de una red denominada ARPANET, diseñada y desarrollada en 1969 para el Departamento de Defensa de Estados Unidos, creada para mantener la comunicación entre ordenadores en caso de guerra. Según el Pentágono suponía un gran peligro el hecho de que todas las comunicaciones dependieran de un gran centro neurálgico que podría ser destruido con una sola bomba, quedando así sin posibilidades ante el enemigo. Debido a todas estas circunstancias, la red fue diseñada sin centro neurálgico. Estados Unidos fue capaz de desarrollar una red que funcionara (la antecesora de la actual Internet) y los usuarios académicos e investigadores que tenían acceso a ella rápidamente se volvieron adictos. La demanda por la red muy pronto se esparció. Los desarrolladores de Internet en Estados Unidos, el Reino Unido y Escandinavia, en respuesta a las presiones del mercado, empezaron a poner el software de IP (Internet Protocol) en todo tipo de computadoras. Se llegó a convertir en el único método práctico para comunicar computadoras de diferentes fabricantes. Al mismo tiempo que Internet se consolidaba, al mismo tiempo, muchas compañías y otras organizaciones empezaron a construir redes privadas usando los mismos protocolos de ARPAnet. Parecía obvio que si estas redes podían comunicarse entre sí, los usuarios de una red podrían comunicarse con usuarios de otra y todo el mundo sería beneficiado. De estas nuevas redes, una de las más importantes fue la NSFNET, auspiciada por la Fundación Nacional de la Ciencia (National Science Foundation), una agencia del gobierno de Estados Unidos. Al final de los ochenta la NSF creó cinco centros de supercómputo en universidades importantes. Hasta ese entonces, las computadoras más rápidas del mundo sólo estaban a disposición de los fabricantes de armamento y de algunos investigadores de compañías muy grandes. Con la creación de centros de supercómputo, la NSF ponía éstas a disposición de cualquier investigación escolar. Al principio, la NSF trató de utilizar la red ARPAnet para la comunicación de los centros, pero esta estrategia falló debido a problemas burocráticos. En respuesta a esto, la NSF decidió construir su propia red basada en la tecnología IP de ARPAnet, ésta red conectaba los centros mediante enlaces telefónicos de 56,000 bits por segundo. El costo de la línea telefónica depende de la distancia por esta razón, se decidió crear redes regionales. En cada región del país las escuelas podían conectarse a su vecino más cercano. Cada cadena estaba conectada a un centro de supercómputo en un solo punto. El hecho de compartir supercomputadoras permitió a los centros de cómputo compartir recursos no relacionados con los centros. Repentinamente, las escuelas que participaban en la red contaron con un amplio universo de información y colaboradores al alcance de sus manos. El tráfico en la red se incrementó con el tiempo hasta que las computadoras que la controlaban y las líneas de teléfono conectadas a ellas se saturaron. . En 1987 se celebró un contrato para administrar y actualizar la red, con la compañía Merit Network Inc., en colaboración con IBM y MCI. La vieja red fue mejorada con líneas telefónicas de mayor velocidad (por un factor de 20) y con computadoras más poderosas. 1.1.1. WEB 1.0 1.1.2 WEB 2.0 1.1.3 WEB 3.0 Cuando en 1989 se creó la WWW (World Wide Web) por Tim Berners-Lee, era sólo un sistema para compartir información entre miembros de la CERN (Organización Europea de Investigación Nuclear). Para comienzo de los años 90’s, la web era un sistema en el cual los usuarios solo podían leer lo que el dueño de la página (Webmaster) escribía, es decir, de sólo lectura, ya que los usuarios no podían contestar u opinar; y fue llamada Web 1.0. Más tarde se implementó la Web 2.0 o Web Social, en la que al ver las necesidades de la sociedad, era ya un sistema donde lo que informaba el webmaster podía ser opinado, y ocasionar un intercambio de información entre los usuarios, ejemplo de esto es lo que hoy conocemos como Redes Sociales, Blogs, etc. Cuando se determina el término de Web 3.0 o Web Semántica, se pretende que este sistema sea capaz de manejar información entre una gran comunidad de usuarios, enlazando temas de varias páginas, permitir el uso de etiquetas e implementar las Ontologías, para lograr que el sistema por sí solo, reconozca las etiquetas y se convierta en un sistema automatizado, y realice búsquedas más complejas. La evolución de la Web nos ha ayudado a saber más sobre temas que antes se desconocían, sin embargo aún no se logra realizar consultas complejas, o consultas en las cuales requerimos un resultado muy específico, es aquí donde las Ontologías nos ayudan a enlazar los conceptos sobre un cierto dominio, y lo que la Web Semántica quiere lograr. 1.2. Arquitectura de las aplicaciones Web La arquitectura del WWW se puede ver desde dos puntos de vista Arquitectura física y Arquitectura lógica Dentro de la arquitectura física podemos mencionar los diferentes tipos de redes: – Computadoras personales (PCs) – Redes de área local (LAN’s) – Redes de área global (WANs) Las Computadoras personales tienen las siguientes características • Conexión esporádica a Internet. • Necesaria la colaboración de otra computadora que esté conectada de forma continua a Internet (ISP). • Debe establecerse un diálogo con el ISP a través de algún canal de comunicación. Las formas de conexión pueden ser: 1.- Línea telefónica estándar. Necesario el uso de un hardware que actúe de interfaz entre el ordenador y la línea telefónica (módem). Módems internos o externos. Velocidad baja 2.- RDSI. Línea digital. Sigue siendo necesario un hardware específico que actúe de interfaz entre la línea y la computadora. Hardware distinto del usado para la línea telefónica estándar (módem RDSI). Posibilidad de conexión a Internet y al mismo tiempo disponibilidad de línea telefónica. Posibilidad de videoconferencia punto a punto. 3.- ADSL. Línea de comunicación de alta velocidad. Utiliza como soporte el par de cables de cobre de la línea telefónica estándar. Velocidad de comunicación asimétrica 4.- Cable. Utiliza uno de los canales de vídeo de un suministrador de acceso a cable. Suele suministrarse en unión de otros servicios (televisión, teléfono, etc.). 5.- Satélite. Al igual que ADSL, se trata de un canal de comunicación asimétrico. Los datos de salida viajan generalmente a través de teléfono. La recepción se realiza a través de uno o más canales de vídeo emitidos por un satélite. Redes de Área Local (LAN’s) • Sirve para unir ordenadores situados en general en un mismo edificio o grupo de edificios. • En la red pueden cohexistir sistemas actuando como servidores y como clientes. • Los ordenadores se unen formando topologías (lineales, anillo, estrella,...). • Sigue siendo necesario un hardware dedicado que actúe como interfaz entre la computadora y la red (tarjeta de red). • Velocidades típicas – Ethernet: 10 Mbaudios. – Token Ring: 4 y 16 Mbaudios. – Fast Ethernet: 100 Mbaudios. – Giga Ethernet: 1 Gbaudio. • Nuevas tendencias: redes inalámbricas Redes de Área Global (WAN) • Unión de múltiples LAN’s. • La unión de múltiples WANs a nivel mundial es lo que se conoce como Internet. Arquitectura lógica de Internet La arquitectura de Internet a nivel lógico está estructurada por lo que se conoce como capas de servicio. Modelo OSI de 7 capas: 7 Capa de aplicación 6 Capa de presentación 5 Capa de Sesión 4 Capa de transporte 3 Capa de red 2 Capa de datos 1 Capa física 1.2.1. El modelo cliente-servidor o de dos capas Gran parte de la aplicación corre en el lado del cliente (fat client). Las capas son: Cliente (fat client): La lógica de negocio está inmersa dentro de la aplicación que realiza el interfaz de usuario, en el lado del cliente. Servidor: Administra los datos. Las limitaciones de este modelo son: Es difícilmente escalable Número de conexiones reducida Alta carga de la red. La flexibilidad es restringida La funcionalidad es limitada. 1.2.2. Arquitectura de tres capas Está diseñada para superar las limitaciones de las arquitecturas ajustadas al modelo de dos capas, introduce una capa intermedia (la capa de proceso) entre presentación y los datos, los procesos pueden ser manejados de forma separada a la interfaz de usuario y a los datos, esta capa intermedia centraliza la lógica de negocio, haciendo la administración más sencilla, los datos se pueden integrar de múltiples fuentes, las aplicaciones web actuales se ajustan a este modelo. Las capas de este modelo son: 1.- Capa de presentación (parte en el cliente y parte en el servidor) Recoge la información del usuario y la envía al servidor (cliente) Manda información a la capa de proceso para su procesado Recibe los resultados de la capa de proceso Generan la presentación Visualizan la presentación al usuario (cliente) 2.- Capa de proceso (servidor web) Recibe la entrada de datos de la capa de presentación Interactúa con la capa de datos para realizar operaciones Manda los resultados procesados a la capa de presentación 3.- Capa de datos (servidor de datos) Almacena los datos Recupera datos Mantiene los datos Segura la integridad de los datos 1.3. Tecnologías para el desarrollo de aplicaciones Web Tanto el web server como el web browser son dependientes de la plataforma. Sin embargo, existen distribuciones gratuitas de ambos prácticamente para cualquier plataforma. Se aplican las mismas consideraciones que en modelo clásico para la aplicación corriendo en el servidor. Para el desarrollo del componente puede optarse por dos tecnologías similares en funcionalidad, de diferentes proveedores; estas son ActiveX (Microsoft) y Java Applet (Sun). La elección de la tecnología en el cliente puede determinar el cliente universal (Netscape Navigator no soporta ActiveX), la plataforma del cliente (ActiveX corre sobre plataforma Windows), y el middleware a utilizar entre el componente y la aplicación en el servidor (a no ser que se utilicen bridges que enmascaren una tecnología sobre otra). Dependiendo de la tecnología utilizada la aplicación servidor deberá residir en el mismo nodo que el servidor web. Esto se debe a restricciones en las tecnologías que limitan al componente alojado en el cliente a comunicarse únicamente con el servidor desde el cual fue descargado. Otras limitaciones incluyen acceso a disco del cliente. 1.3.1. Servidores Un servidor web es un programa informático que procesa una aplicación del lado del servidor realizando conexiones bidireccionales y/o unidireccionales y síncronas o asíncronas con el cliente generando o cediendo una respuesta en cualquier lenguaje o Aplicación del lado del cliente. Los tipos de servidores que existen son: Servidor dedicado: Que se refiere a una computadora servidor dedicada exclusivamente al sitio del cliente Servidor Compartido: Quiere decir que en un mismo servidor se usara para a varios clientes compartiendo los recursos Entre los tipos más encontrados de servidores Web podemos encontrar: » Apache: Este es el más común y más utilizado en todo el mundo. Además, es gratuito (cómo no), y de código abierto, así que podríamos decir que corre sobre cualquier plataforma. » Microsoft IIS: Sólo funciona sobre sistemas Windows, como ya habréis imaginado. Si quieres empalarlo sobre otro sistema, tendrás que utilizar una máquina virtual. » Sun Java System Web Server: Este producto pertenece a la casa Sun, y suele empalarse sobre entorno de este sistema. Sin embargo, como Apache, es multiplataforma, y recientemente Sun ha decidido distribuirlo con licencias de código abierto (BSD concretamente). » Ngnix: Este es un servidor Web muy ligero y corre sobre sistemas Unix y Windows. Se ha convertido en el 4º servidor HTTP más popular de la red y también se distribuye bajo licencia BSD. » Lighttp: Este servidor Web es otro de los más ligeros que hay en el mercado. Está especialmente pensado para hacer cargas pesadas sin perder balance, utilizando poca RAM y poca de CPU. Algunas páginas populares que lo usan son Youtube, Wikipedia y otras que soportan gran tráfico diariamente. También es gratuito y se distribuye bajo licencia BSD. 1.3.2. Lenguajes de Programación Web (HTML, XHTML, XML, PHP, ASP, JSP, JSCRIPT, VBSCRIPT, AJAX, entre otros) a) Lenguajes de programación del lado del cliente. Los lenguajes de programación del lado cliente se usan para su integración en páginas web. Un código escrito en un lenguaje de script se incorpora directamente dentro de un código HTML y se ejecuta interpretado, no compilado. Con la programación del lado del cliente se pueden validar algunos de los datos en la máquina cliente antes de enviarlos al servidor. Esto proporciona a los usuarios informes de error inmediatos, mientras siguen en esa página de formulario y sin necesidad de volver atrás tras recibir un mensaje de error. Puede resultar necesario acceder a una base de datos para validar determinados valores, mientras que no suele disponer de un acceso directo a la base de datos en la máquina del cliente, aunque ese acceso a la base de datos es factible. Para incorporar un fragmento de código script en una página HTML se introduce el script entre los tags <SCRIPT> y </SCRIPT>. Dos son los lenguajes de script que hay en la actualidad: el VBScript (derivado de Visual Basic) y el JavaScript (derivado de Java). Vbscript (Visual Basic Script): Es un lenguaje de script, directamente derivado de Visual Basic. Para insertar código VBScript en una página HTML se añade al tag <SCRIPT> el parámetro LANGUAGE="VBScript", que determina cuál de los lenguajes de script se utiliza. Decimos que los lenguajes de script se ejecutan interpretados, no compilados. Esto significa que un código escrito en un lenguaje de script no sufre ninguna transformación previa a su ejecución. Cada línea de código es traducida a lenguaje máquina justo antes de su ejecución. Después es ejecutada y la traducción no se conserva en ningún sistema de almacenamiento (como discos, cintas, etc). Si es necesaria otra ejecución, el intérprete se verá abocado a realizar una nueva traducción de cada línea de código. Sin embargo el lenguaje Visual Basic, del cual deriva el VBScript, es un leguaje compilado. Esto significa que un código en Visual Basic sufre un proceso global de traducción a lenguaje máquina. Todo el código es traducido de una sola vez y el resultado de esa traducción se almacena en el disco con la extensión .EXE. Cuando llega el momento de la ejecución, se ejecuta el código compilado, no el código original del programa (llamado código nativo o código fuente). Cada sistema tiene sus ventajas e inconvenientes. Las ventajas e inconvenientes de la interpretación son: El código es cómodo para depurar, ya que no es necesario volver a compilar tras un cambio. No es necesario disponer de un compilador, ya que el intérprete (que forma parte del navegador) ejecuta el script. El mantenimiento es fácil y rápido, por parte del autor o de otro programador. La ejecución se realiza, al ser necesaria la interpretación línea a línea cada vez. El código es visible y puede ser objeto de plagio por parte de otras personas. El usuario tiene acceso al código y puede modificarlo, estropeando alguna operación. Las ventajas e inconvenientes de la compilación son: El código compilado se ejecuta muy rápido, al no ser necesaria una traducción cada vez. El código compilado no puede ser "abierto" por otras personas. No es necesario transmitir el código fuente. El código compilado puede estar, íntegramente, incluido en un solo fichero. Es necesario disponer de un compilador-linkador para el proceso de la compilación. El código compilado suele ocupar bastante en disco, ya que incorpora en el propio código algunas librerías del sistema. Depurar un programa implica volver a compilar tras los cambios. El código en VBScript puede, además, estar diseñado para su ejecución en el lado del cliente o en el del servidor. La diferencia es que un código que se ejecuta en el lado del servidor no es visible en el lado del cliente. Este recibe los resultados, pero no el código. El código que se debe de ejecutar en el lado del servidor estará incluido en la página web correspondiente entre los tags <% y %>. Además habrá que renombrar la página para aplicarle la extensión .asp (Active Server Page página activa en servidor-). El funcionamiento intrínseco de la ASP se especificará con mayor detalle en el capítulo 4. Lenguajes del servidor Un ejemplo de una sencillísima página web que incluye código VBScript: <HTML> <HEAD> <TITLE>Cuadro de mensaje</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE = "VBScript"> MSGBOX ("Ejemplo de mensaje") </SCRIPT> </BODY> </HTML> Este código incluye la instrucción MSGBOX ("Cuadro de mensaje"), que genera en pantalla lo siguiente: JavaScript: JavaScript es un lenguaje de scripts compacto basado en objetos (y no orientado a objetos). Originariamente era denominado LiveScript, y fue desarrollado por Netscape para su navegador Netscape Navigator 2.0. Fue éste el primer cliente en incorporarlo. Se ejecuta sobre 16 plataformas diferentes, incluyendo los entornos de Microsoft. Las diferentes versiones de JavaScript han sido finalmente integradas en un estándar denominado ECMAScript-262. Dicho estándar ha sido realizado por la organización ECMA dedicada a la estandarización de información y sistemas de comunicación. Las versiones actuales de los navegadores soportan este estándar. JavaScript permite la realización de aplicaciones de propósito general a través de la WWW y aunque no está diseñado para el desarrollo de grandes aplicaciones es suficiente para la implementación de aplicaciones WWW completas o interfaces WWW hacia otras más complejas. Por ejemplo, una aplicación escrita en JavaScript puede ser incrustada en un documento HTML proporcionando un mecanismo para la detección y tratamiento de eventos, como clics del ratón o validación de entradas realizadas en formularios. Sin existir comunicación a través de la red una página HTML con JavaScript incrustado puede interpretar, y alertar al usuario con una ventana de diálogo, de que las entradas de los formularios no son válidas. O bien realizar algún tipo de acción como ejecutar un fichero de sonido, un applet de Java, etc. <html> </head> <body> <br> Este es un documento HTML normal <br> <script language="JavaScript"> document.write("Esto es JavaScript!") </script> <br> En HTML otra vez. </body> </html> Este primer programa se limita a escribir en pantalla un determinado texto para lo que se emplea el código document.write. En este código, document es un objeto creado por el sistema que hace referencia al propio documento y write es uno de los métodos que proporciona para interactuar con él. El resultado de cargar este documento en un visualizador que interprete JavaScript será la aparición de los dos textos, el escrito en JavaScript y el escrito en HTML, sin que el usuario sea consciente del proceso. Podemos hablar también de páginas dinámicas del servidor, que son reconocidas, interpretadas y ejecutadas por el propio servidor. b) Lenguajes de programación del lado del servidor. Los Lenguajes de programación del lado del servidor son especialmente útiles en trabajos que se tiene que acceder a información centralizada, situada en una base de datos en el servidor, y cuando por razones de seguridad los cálculos no se pueden realizar en la computadora del usuario. Es importante destacar que los lenguajes de programación del lado del servidor. Son necesarias porque para hacer la mayoría de las aplicaciones web se debe tener acceso a muchos recursos externos a la computadora del cliente, principalmente bases de datos alojadas en servidores de Internet. Un caso claro es un banco: no tiene ningún sentido que el cliente tenga acceso a toda la base de datos, sólo a la información que le concierne. Las páginas dinámicas del servidor se suelen escribir en el mismo archivo HTML, mezclado con el código HTML, al igual que ocurría en las páginas del cliente. Cuando una página es solicitada por parte de un cliente, el servidor ejecuta los scripts y se genera una página resultado, que solamente contiene código HTML. Este resultado final es el que se envía al cliente y puede ser interpretado sin lugar a errores ni incompatibilidades, puesto que sólo contiene HTML Luego es el servidor el que maneja toda la información de las bases de datos y cualquier otro recurso, como imágenes o servidores de correo y luego envía al cliente una página web con los resultados de todas las operaciones. Las ventajas de este tipo de programación son que el cliente no puede ver los scripts, ya que se ejecutan y transforman en HTML antes de enviarlos. Además son independientes del navegador del usuario, ya que el código que reciben es HTML fácilmente interpretable. Como desventajas se puede señalar que será necesario un servidor más potente y con más capacidades que el necesario para las páginas de cliente. Además, estos servidores podrán soportar menos usuarios concurrentes, porque se requerirá más tiempo de procesamiento para cada uno. Para escribir páginas dinámicas de servidor existen varios lenguajes. Practical Extraction and Report Language (PERL): es un lenguaje de programación desarrollado por Larry Wall (lwall at netlabs.com) inspirado en otras herramientas de UNIX. PERL es el lenguaje más utilizado para la creación de programas CGI en los servidores web. Es más rápido que los programas shell script de UNIX, puede leer y escribir ficheros binarios, y puede procesar ficheros grandes. La ventaja más importante de PERL sobre C es que PERL no necesita ser recompilado, es un lenguaje interpretado. Active Server Pages (ASP): es una tecnología del lado servidor de Microsoft para páginas web generadas dinámicamente, que ha sido comercializada como un anexo a Internet Information Server (IIS). EL estándard ASP permite poder utilizar cualquier lenguaje para la programación, si bién Microsoft favorece que se utilice el VBScript, y en segundo término el JScript (versión del estándard Javascript hecha por Microsoft). En teoría, y mediante la programación, es posible adaptar versiones de lenguajes como Pascal, C y otros, para utilizarlos dentro de páginas ASP. Java Server Pages (JSP): es la tecnología para generar páginas web de forma dinámica en el servidor, desarrollado por Sun Microsystems, basado en scripts que utilizan una variante del lenguaje Java. La tecnología JSP, o de JavaServer Pages, es una tecnología Java que permite a los programadores generar dinámicamente HTML, XML o algún otro tipo de página web. Esta tecnología permite al código Java y a algunas acciones predefinidas ser embebidas en el contenido estático. La principal ventaja de JSP frente a otros lenguajes es que permite integrarse con clases Java (.class) lo que permite separar en niveles las aplicaciones web, almacenando en clases java las partes que consumen más recursos así como las que requieren más seguridad, y dejando la parte encargada de formatear el documento 'html ' en el archivo jsp. Además Java se caracteriza por ser un lenguaje que puede ejecutarse en cualquier sistema, lo que sumado a jsp le da mucha versatilidad. Hipertext Preprocesor (PHP): PHP (acrónimo recursivo de "PHP: Hypertext Preprocessor", originado inicialmente del nombre PHP Tools, o Personal Home Page Tools) es un lenguaje de programación interpretado. Aunque fue concebido en el tercer trimestre de 1994 por Rasmus Lerdorf no fue hasta el día 8 de Junio de 1995 que fue lanzada la versión 1.0. Se utiliza entre otras cosas para la programación de páginas web activas, y se destaca por su capacidad de mezclarse con el código HTML. Aunque su creación y desarrollo se da en el ámbito de los sistemas libres, bajo la licencia GNU, existe además un compilador comercial denominado (Zend Optimizer). El desarrollo del código abierto por un lado y el firme respaldo comercial por el otro, han llevado a PHP a alcanzar una popularidad más que notable. El nuevo soporte JAVA y DCOM, las avanzadas características de XML y las mejoras de la programación orientada a objetos (POO) que incorpora su última versión PHP5, han incrementado la aceptación de PHP en entornos comerciales, y lo han convertido en una herramienta viable para la programación en entornos empresariales. 1.3.3. Entornos de Programación Web Un ambiente de desarrollo para aplicaciones web es una estructura definida, reusable en el que sus componentes facilitan la creación de aplicaciones web. En cierto sentido podemos afirmar que nos proveen una capa de abstracción sobre la arquitectura original ocultándola o adaptándola para no tener que utilizar el protocolo http de manera nativa y así acelerar los tiempos de desarrollo y mantenimiento. Struts: consta de un servlet que actúa de controlador central que recibe todas las peticiones de los clientes. Las facilidades de desarrollo que ofrece son: 1. Lógica de navegación entre páginas 2. Binding entre java y el html 3. Validación de entradas 4. Internacionalización 5. Independencia del motor de visualización 6. Maquetación Su funcionamiento básico es el siguiente: El cliente solicita una página que contiene datos a completar El servidor le envía la página. El cliente, con los datos completados envía de regreso la página. El ActionServlet verifica la ruta con la que se lo invocó y extrae el path de esa ruta y busca en los actionMappings cuál es la Acción a invocar y que formulario necesita recibir como entrada. El controlador crea o reutiliza el Formulario dependiendo el ámbito en que es ejecutada la petición, carga los datos en el formulario, los valida y luego crea la acción y le pasa el formulario como parámetro. La acción recibe el formulario y con sus datos invoca a las reglas del negocio (generalmente delegadas en otros objetos). A partir de la respuesta recibida, carga los valores de salida y selecciona la siguiente vista a enviar. Tapestry: es una herramienta de código abierto de Apache que está pensado para realizar aplicaciones web en Java que sean dinámicas, robustas y altamente escalables, que funciona en todo contenedor de servlets o servidor de aplicaciones. La filosofía de Tapestry se basa en lo siguiente: Simplicidad en la creación de aplicaciones web. Consistencia a la hora de que distintos desarrolladores pueden encontrar soluciones similares a problemas similares. Eficiencia, las aplicaciones deben ser escalables. Reacción ante los errores, aportando modos de diagnósticos. ASP.NET: es un conjunto de tecnologías definidas por Microsoft para la capa de presentación WEB que forma parte del .NET Framework. En pocas palabras, una página ASP.NET es un archivo de texto con extensión aspx que el servidor sabe que debe procesar de una manera especial. El texto de las páginas puede ser html junto con código scripting que se compila dinámicamente y se ejecuta en el servidor. La página aspx se compila (sólo la primera vez) a código ejecutable .net cuando algún cliente la solicita al servidor. Para incluir código embebido en la página se utilizan los separadores <% y %>. En este sentido es similar al funcionamiento de las páginas JSP de java. Las páginas ASP.NET pueden tener controles que se ejecutan del lado del servidor (server controls) que son objetos que representan elementos de la interfaz de usuario que se ejecutan en el servidor y generan código html como resultado de su ejecución. Los controles tienen propiedades, métodos y eventos a los que pueden responder y mediante los que se puede modificar su estado y comportamiento. Este comportamiento se puede declarar en los atributos de su declaración html o de manera programática. Los controles permiten contener otros controles dentro de ellos y es posible, al igual que cualquier objeto, heredar y redefinir parte de su comportamiento. Un control de servidor se identifica en una página html por su atributo runat="server". De esta manera un webform es una página html que contiene en algún lado una etiqueta del estilo: Trabajar con ASP.NET permite Separación del html y el código .NET. Binding entre los elementos de la vista y el código .net Validación de entradas Manejo de eventos Creación de componentes propios Internacionalización (*) Maquetación (*) Cocoon: Está desarrollado en java y es completamente diferente a los que se detallaron anteriormente. Se basa en un modelo de componentes y en el concepto de tuberías (pipelines) de componentes. Este concepto se asemeja a una línea de producción donde cada componente se especializa en una operación en particular (existen componentes generadores, transformadores, serializadores, etc). El contenido ingresa en la tubería y es modificado por las sucesivas etapas hasta generar la respuesta que es enviada al cliente. De esta manera se busca separar el contenido, el estilo, la lógica y la administración de un sitio web basado en contenido XML. Esta herramienta tiene varios componentes: Generadores (generators): generan XML como eventos SAX y dan inicio al procesamiento del pipeline Transformadores (transformers): transforman los eventos SAX recibidos en otros eventos SAX Serializadores (serializers): transforman los eventos SAX en streams binarios o de texto que pueden ser entendibles por el cliente. Selectores (selectors): permiten implementar lógica condicional básica (if-then o switch) Mapeadores (matchers): mapea un patrón de entrada con un recurso Acciones (actions): son invocadas desde el pipeline y ejecutan algun tipo de operación antes de continuar con el resto del proceso. Las acciones tienen un método act() en donde ejecutan su lógica y devuelven un conjunto de resultados en forma de diccionario (map). Generalmente son las encargadas de invocar a la lógica del negocio. El mecanismo básico de trabajo de Cocoon es tomar un documento XML y ponerlo en una tubería que lo transformará hasta generar la salida correspondiente. Cada tubería empieza con un generador, sigue con cero o más transformadores y termina con un serializador. Los mapeadores y selectores permiten seleccionar la tubería a utilizar y las vistas permiten definir puntos de salida dentro de cada tubería. Además, es posible definir cómo manejar los flujos de excepción si ocurre algún error durante el procesamiento dentro de la tubería. Construir aplicaciones con Cocoon permite Control de flujo de navegación Separación de incumbencias Internacionalización Independencia del dispositivo de presentación Validación de entradas 1.4. Instalación y administración de servidores. 1.4.1. Instalación y configuración de un servidor en ambiente Windows Servidor Web IIS. Internet Information Services Es una serie de servicios para los ordenadores que funcionan con Windows. Los servicios que ofrece son: FTP SMTP NNTP HTTP/HTTPS. Ventajas: Fácil de usar. ASP preparado en la instalación por defecto. Soporte ODBC integrado. Configuración gráfica y en línea de comandos Desventajas: x Multitud de nuevos fallos de seguridad. x La mayoría de funcionalidad extra debe ser comprada separadamente. x Sólo funciona en Windows ¿Para qué sirve? Este servicio convierte a un ordenador en un servidor de Internet , con este servicio instalado se pueden publicar páginas web tanto local como remotamente (servidor web). Instalación IIS Presionamos Windows + R Escribimos lo siguientes appwiz.cpl Se abrirá la ventana programa y características, después hacemos clic en "Activar las características de Windows o desactivar. Ahora haga clic en la casilla de verificación Servicios de Internet Information Server. Vamos al navegador. 1.4.2. Instalación y configuración de un servidor en ambiente Linux LAMP Acrónimo de Linux Apache MySQL PHP. Hay que tener en cuenta que la mayoría de los sitios de internet, hoy en día, utiliza estos servidores LAMP o su versión para Windows WAMP. APACHE Servidor de páginas web. Un servidor de páginas web es un programa que permite acceder a páginas web alojadas en un ordenador. MYSQL Gestor de bases de datos de código abierto. PHP Lenguaje de código abierto muy popular, adecuado para desarrollo web y que puede ser incrustado en HTML. 1.5. Planificación de aplicaciones Web 1.5.1. Análisis de requerimientos A la hora del desarrollo de un sitio Web se debe comenzar por dar respuesta a un grupo muy concreto de interrogantes, que permitirán aclarar y definir de manera básica las expectativas existentes en torno a la aplicación Web e interacción que se va a generar. Dichas preguntas podrían ser las siguientes: ¿Se necesita realmente el sitio Web? ¿Para qué se necesita el sitio Web? ¿Qué es lo que buscarán los usuarios en el sitio Web? ¿Qué imagen se quiere proyectar con el sitio Web a los usuarios? ¿Qué servicios interactivos se integrarán a través del sitio Web? ¿Con qué recursos se cuenta para el desarrollo del sitio Web? ¿Cuánto tiempo debe ser invertido en el desarrollo del sitio Web? ¿Qué impacto causará el sitio Web en los usuarios? Selección de Objetivos Todo proyecto debe contar con objetivos definidos, contra los cuales puede medirse la efectividad de las acciones que se desarrollen. Green, Chilcott y Flick (2003) denominan esta etapa, resumen de objetivos, donde establecen tres puntos primordiales para esta selección, los cuales son definir los usuarios, lo que los usuarios esperan de la visita, y qué se pretende comunicar a través del sitio Web (p. 39). Puntos que para este escrito serán denominados: selección de usuarios, expectativas de usuario y expectativas de la organización; se describen a continuación: Selección de usuarios Los usuarios o la audiencia, se refiere a aquella parte de la población a la que se pretende alcanzar o influir con el sitio Web; esto está estrechamente vinculado con la naturaleza del sitio que se propone. Toda la información que se obtenga servirá para establecer parte de los criterios de diseño de contenido, lenguajes, estética, entre otros. “El modelado del usuario se basa en definir clases o perfiles de los usuarios, y así poder diseñar con el objetivo de satisfacer las necesidades propias de cada grupo de usuarios” (Montero, Y. y Martín, F., 2003). Expectativas de Usuario La organización puede o no, ser conocida por los usuarios en potencia del sitio. Al plantearse la puesta en marcha de un sitio Web es necesario conocer hacia quién va dirigido éste y qué podrían esperar dichos usuarios al visitarlo. “Tómese un tiempo para contactar con sus clientes, proveedores y amigos, con el fin de averiguar cómo harían ellos para encontrar su sitio Web y qué les gustaría ver en él” (Morris, S. y Dickinson, P., 2002, p. 28). Expectativas de la organización Es vital establecer o fijar qué resultados pretende conseguir la organización con la creación del sitio Web. Con ello se busca definir el propósito del sitio Web, y se deben incluir aspectos que van desde los más generales, relacionados con el público de destino, hasta los más específicos, relacionados con la organización. Morris y Dickinson (2001) indican que se debe decidir si lo que se busca con el sitio Web es: aumentar ventas, ofrecer servicios especializados y conocimientos, publicidad y patrocinio, incentivos (productos gratis para promoción), o para publicitar (p.p. 29-32). Fase de Planificación Todo proyecto posee una fase de planificación. En ella se deben definir cuáles son los requerimientos técnicos para este fin, quiénes serán los miembros del equipo, seleccionar la estructura, planear un sitio bien organizado, y realizar estudios de mercadeo comparativo. Selección de Software En esta etapa de la metodología se busca determinar los requerimientos en cuanto al software que se utilizará para el desarrollo de la aplicación; es decir, sistemas operativos, servidor (software), editores para diseño Web, lenguajes de programación, animaciones y otros componentes. Esta definición dependerá de muchos aspectos como la existencia de licencias de software o los recursos técnicos y hardware. Selección de Hardware Antes de emprender el desarrollo de una aplicación Web, se deben determinar los requerimientos de hardware de la aplicación, el equipo servidor, la capacidad de respuesta, terminales, requerimientos de red si la aplicación ha de disponerse en una intranet o extranet. En el caso que la aplicación vaya a estar publicada en Internet, se debe reservar el dominio y ubicar el servicio de hospedaje de empresas que se especializan en este servicio (Morris y Dickinson, 2002, p.p. 4950). Selección del Equipo Adecuado “El entorno de trabajo en equipo surge de la necesidad de segmentar el proceso de producción en varias funciones diferenciadas” (Green, Chilcott y Flick, 2003, p. 43). Cada miembro del Equipo Web debe estar capacitado en su campo de trabajo (la presencia o el nivel de experiencia de ciertos miembros del equipo puede variar dependiendo del proyecto). Green, Chilcott y Flick (2003) sugieren una lista de miembros que podrían ser parte de este equipo, de esta lista se extrajeron los siguientes: Jefe de Proyecto: Encargado de la supervisión y control del resto del equipo. Actúa como enlace entre el usuario y los demás miembros. Productor: Este se encarga de establecer el aspecto, percepción y funcionalidad del sitio. Editor: Ayuda a establecer y mantener el estilo, además de la integridad del sitio. Tiene la responsabilidad de controlar la corrección y el flujo de texto y en algunos casos el contenido multimedia del sitio. Escritor: Los escritores deben interesarse por los detalles técnicos y la incorporación al desarrollo de estándares con respecto al sitio, utilización de las palabras apropiadas, ortografía y gramática. Es necesario que el escritor tenga conocimiento de HTML, o de herramientas con FrontPage u otra aplicación. Diseñador de bases de datos: Desarrolla las bases de datos que gestiona el sitio Web, se ocupa de definir sus relaciones. Diseñador de scripts: Trabaja en conjunto con el diseñador de la base de datos. Desarrolla y depura los scripts, los componentes Activex y otros elementos interactivos de la Web. Diseñador gráfico: Se encarga de crear los archivos visuales del sitio, también puede encargarse de la creación de los archivos de sonido y de película. Trabaja con imágenes y pequeñas labores de programación. Técnico de hardware: Configura, prueba, opera y mantiene las computadoras, impresoras y máquinas necesarias para la ejecución y mantenimiento del sitio. Técnico de prueba: Si se dispone de un sitio grande o complejo, puede resultar provechosa la incorporación de un Técnico de prueba al equipo. Su labor consiste en garantizar que todo funcione como debería, se encarga de probar los elementos de todas las páginas. Aunque estas funciones podrían tomarse como esenciales, la estructura siempre vendrá determinada por el alcance del proyecto. Benchmarking Es una manera de detallar, observar y evaluar todas aquellas páginas Web calificadas como las mejores que se encuentren en la red, con la finalidad de diseñar una forma que permita crear un producto de alta calidad, productividad y competitividad. Una manera práctica de realizar el benchmarking es plantearse una serie de preguntas al momento de visitar las páginas que se han seleccionado como las mejores del ramo, Morris y Dickinson (2002) sugieren las siguientes: ¿Cuáles son los objetivos del sitio? ¿Cuánto tiempo tardo en descargar? ¿Se descargó en un orden lógico? ¿Es un sitio Web interesante? ¿Cómo son los gráficos? ¿Refleja el género de la empresa o compañía? ¿Es de fácil uso y es cómodo navegar en él? ¿El contenido está estructurado de manera lógica? ¿Hay demasiados o insuficientes niveles de información? En conjunto ¿el sitio es un éxito? 1.5.2. Usabilidad Se refiere a la experiencia del usuario al interactuar con un sitio web. Un sitio web con usabilidad es aquél que muestra todo de una forma clara y sencilla de entender por el usuario. Aunque es imposible crear un sitio que sea claro y eficiente para cada usuario, el diseñador debe enfocarse para mostrar las cosas tan claramente como sea posible, de tal modo que reduzca al mínimo cualquier aspecto que pueda ser confuso. 1.5.3. Diseño del sitio “La base de un sitio bien diseñado es una estructura definida con precisión” (Green, Chilcott y Flick, 2003, p. 107). Las relaciones de las páginas entre sí configuran la estructura del sitio. A partir de la página principal se vinculan mediante enlaces al resto de las páginas, esto es bastante sencillo mediante código HTML, pero es más complicado decidir el orden, de qué manera y con qué configuración se establecerán los vínculos. La estructura de un conjunto de páginas Web es muy importante, ya que permitirá al lector visualizar todos los contenidos de una manera fácil y clara (buena estructura), o provocar en el lector una sensación de estar perdido, por lo cual no encontrará rápidamente lo que busca y terminará por abandonar el sitio (mala estructura). Los autores Green, Chilcott y Flick (2003), destacan los tipos de estructura de navegación: Estructura Lineal Esta estructura consiste en una línea recta que recorre el sitio desde la página de inicio hasta la página final, de esta manera lo definen Green, Chilcott y Flick (2003, p. 107). Esto se puede apreciar en la figura 1. Es muy útil cuando se desea que el lector siga un camino fijo y guiado, además el de impedir que se distraiga con enlaces a otras páginas. Por otra parte se puede causar al lector la sensación de estar encerrado si el camino es muy largo o poco interesante. Este tipo de estructura sería válido para tutoriales de aprendizaje o tours de visita guiada. Estructura Jerárquica La estructura jerárquica, como se observa en la figura 2, es la típica estructura de árbol, en el que la raíz es la página de bienvenida, ésta se puede también sustituir por la de contenido, en la que se exponen las diferentes secciones que contiene el sitio. Para Green, Chilcott y Flick (2003) la ventaja de esta estructura es que el usuario siempre está ubicado y puede moverse fácilmente por el sitio. Gracias a que la mayoría de las páginas secundarias permiten regresar a la página de inicio, los visitantes controlan completamente la navegación. (p. 108). Estructura Radial En este modelo las páginas secundarias no se conectan entre sí, y se debe navegar por la página principal para ir de una secundaria a otra, es decir, la principal contiene enlaces a todas las secundarias, pero las secundarias sólo contienen un retorno a la principal, tal cual se aprecia en la figura que sigue. La ventaja de esta estructura es que facilita la navegación, los visitantes sólo tendrán que efectuar uno o dos clics para retornar a la página principal; sin embargo esto podría también ser un inconveniente porque obliga al usuario a regresar siempre a la página de inicio. Estructura de Red En ella se plantea un modelo en el que todas las páginas están relacionadas entre sí. Es una estructura ideal para sitios especializados en un tema, en la que se le permite al usuario una navegación libre y sin limitaciones. La estructura de red se aprecia en la figura 4. 10 factores para incrementar la productividad o o o o o o o o o o Visual Audio Cinestésico Simbólico Calidad Técnica Calidad Institucional Calidad de Marketing Mensaje Receptor Retroalimentación 1.5.4. Estándares Un estándar es un conjunto de reglas normalizadas que describen los requisitos que deben ser cumplidos por un producto, proceso o servicio, con el objetivo de establecer un mecanismo base para permitir que distintos elementos hardware o software que lo utilicen, sean compatibles entre sí. El W3C, organización independiente y neutral, desarrolla estándares relacionados con la Web también conocidos como Recomendaciones, que sirven como referencia para construir una Web accesible, interoperable y eficiente, en la que se puedan desarrollar aplicaciones cada vez más robustas. En la creación de las Recomendaciones del W3C participan sus Miembros (más de 400 organizaciones, distribuidas a lo largo de todo el mundo y de diversos ámbitos: grandes empresas de hardware o software, centros investigadores, universidades, administraciones públicas, etc.), el Equipo del W3C, expertos invitados, y cualquier usuario de la Web que quiera mostrar su opinión. Todos ellos trabajan conjuntamente a través de un proceso basado en el consenso, la neutralidad y la transparencia de la información. El resultado: más de 110 tecnologías desde 1996. Algunos de los estándares Web más conocidos y ampliamente utilizados son: HTML (HyperText Markup Language), para definir la estructura de los documentos; XML (eXtensible Markup Language), que sirve de base para un gran número de tecnologías; y CSS (Cascading Style Sheets), que permite asignar estilos para la representación de los documentos. ¿Para qué sirven? La finalidad de los estándares es la creación de una Web universal, accesible, fácil de usar y en la que todo el mundo pueda confiar. Con estas tecnologías abiertas y de uso libre se pretende evitar la fragmentación de la Web y mejorar las infraestructuras para que se pueda evolucionar hacia una Web con la información mejor organizada. Acceso Universal El W3C se guía por los principios de accesibilidad, internacionalización, e independencia de dispositivo, entre otros. Esto facilita que el acceso a la Web sea posible desde cualquier lugar, en cualquier momento y utilizando cualquier dispositivo. No importa si se utiliza hardware, software, o una infraestructura de red específica. Además de las posibles restricciones técnicas, se tiene en cuenta la existencia de múltiples idiomas, las diversas localizaciones geográficas, y las diferencias culturales o tradiciones, así como las posibles limitaciones físicas, psíquicas o sensoriales de los usuarios. La concienciación de que no todas las personas acceden a la Web de la misma forma, permite centrarse en determinados colectivos que tienen necesidades concretas, como pueden ser las personas de edad avanzada en el caso de limitaciones psíquicas, físicas o sensoriales. El avance de las tecnologías inalámbricas, así como la gran variedad de dispositivos con acceso a la Web presentes en sectores como el de la telefonía móvil, en el de automoción (navegadores en los salpicaderos de automóviles), en los electrodomésticos (refrigeradores con pantallas táctiles) o en los televisores, fomenta la ubicuidad de la Web. Esto pone de manifiesto la necesidad de utilizar tecnologías y lenguajes unificados, libres y gratuitos, cuyo uso no esté limitado por patentes comerciales. Una Web con significado Tradicionalmente, se podría considerar la Web como un conjunto de documentos conexos entre sí a través de términos léxicos y sintácticos. Estos documentos están expresados en lenguaje natural y contienen contenido destinado a personas. Esto limita a las máquinas a la hora de procesar la información de forma eficiente, ya que no pueden evitar las ambigüedades del lenguaje natural. Gracias al nuevo enfoque del W3C, la Web evoluciona hacia lo que se denomina Web Semántica, una ampliación de la Web tradicional, que ofrece mecanismos para añadir significado a los recursos (documentos, imágenes, vídeos, etc.), de forma que cualquier máquina pueda interpretar los datos existentes en la Web de una forma similar a como lo hacen los humanos. La información no sólo está especificada como una serie de información textual o gráfica inconexa entre sí, sino que la Web se puede considerar como una gran base de datos organizada y estructurada teniendo en cuenta la naturaleza semántica de los elementos que la componen. La Web Semántica fomenta una mejora en el rendimiento y eficiencia de la Web, lo que se transmite en una experiencia más satisfactoria para el usuario, el que obtendrá mayor precisión en sus búsquedas y operaciones, y podrá tener acceso a mayores cantidades de información específica y útil. De la misma forma, esta estructuración y tratamiento de los datos más preciso evitará las tareas frustrantes y difíciles, como es la búsqueda, obtención y mezcla de información desde distintas fuentes. Confianza en la Web La Web es un medio colaborativo, donde los usuarios interactúan creando contenidos (en wikis, blogs o foros), realizan transacciones (compras online, operaciones bancarias), o crean redes sociales (de amistad o laborales), donde se relacionan entre sí. Estas actividades requieren que los usuarios confíen entre sí y han promovido el desarrollo de ciertas tecnologías para asegurar esta confianza: firmas digitales de documentos que fomentan la responsabilidad de las personas que se declaran autores de estos; encriptación de los datos para la confidencialidad; y mecanismos de establecimiento y declaración de las políticas de privacidad de los datos de los sitios Web. ¿Cómo funcionan? La creación de un estándar Web requiere un proceso controlado, que consta de varias etapas que aseguran la calidad de la especificación. Este proceso permite la intervención de todos los usuarios de las tecnologías, con el objetivo de que puedan aportar su conocimiento y opiniones para la mejora de los documentos. Tras este proceso, elaborado por especialistas en la materia, se obtienen unos estándares de calidad, y al estar disponible para todo el mundo, las especificaciones se depuran exhaustivamente antes de ser consideradas como Recomendación. Estos estándares, están sujetos a la Política de Patentes del W3C, lo que permite que sean utilizados libremente por toda la comunidad Web. Al utilizar las mismas tecnologías, las máquinas se entienden entre sí y cualquier usuario puede interactuar con el resto. 1.5.5. Revisión y mantenimiento 1.5.6. Accesibilidad Hablar de Accesibilidad Web es hablar de un acceso universal a la Web, independientemente del tipo de hardware, software, infraestructura de red, idioma, cultura, localización geográfica y capacidades de los usuarios. Con esta idea de accesibilidad nace la Iniciativa de Accesibilidad Web, conocida como WAI (Web Accessibility Initiative). Se trata de una actividad desarrollada por el W3C, cuyo objetivo es facilitar el acceso de las personas con discapacidad, desarrollando pautas de accesibilidad, mejorando las herramientas para la evaluación y reparación de accesibilidad Web, llevando a cabo una labor educativa y de concienciación en relación a la importancia del diseño accesible de páginas Web, y abriendo nuevos campos en accesibilidad a través de la investigación en este área. ¿Para qué sirve? La idea principal radica en hacer la Web más accesible para todos los usuarios independientemente de las circunstancias y los dispositivos involucrados a la hora de acceder a la información. Partiendo de esta idea, una página accesible lo sería tanto para una persona con discapacidad, como para cualquier otra persona que se encuentre bajo circunstancias externas que dificulten su acceso a la información (en caso de ruidos externos, en situaciones donde nuestra atención visual y auditiva no están disponibles, pantallas con visibilidad reducida, etc.). ¿Cómo funciona? Para hacer el contenido Web accesible, se han desarrollado las denominadas Pautas de Accesibilidad al Contenido en la Web (WCAG), cuya función principal es guiar el diseño de páginas Web hacia un diseño accesible, reduciendo de esta forma barreras a la información. WCAG consiste en 14 pautas que proporcionan soluciones de diseño y que utilizan como ejemplo situaciones comunes en las que el diseño de una página puede producir problemas de acceso a la información. Las Pautas contienen además una serie de puntos de verificación que ayudan a detectar posibles errores. World Wide Web Consortium Es una asociación internacional formada por organizaciones miembro del consorcio, personal y el público en general, que trabajan conjuntamente para desarrollar estándares Web. Guiar la Web hacia su máximo potencial a través del desarrollo de protocolos y pautas que aseguren el crecimiento futuro de la Web. Principio 1: El contenido debe ser contemplado de la siguiente manera: 1.1 Proveer Alternativas de Texto para todos los contenidos no textuales 1.2 Proveer Alternativas sincronizadas para multimedia 1.3 Asegurarse que la información y la estructura puedan ser separadas de la presentación 1.4 Fácil distinción entre el fondo y la información contenida en la página. Principio 2: Los componentes de la interfaz en el contenido deben ser manejables 2.1 Elaborar todo funcionalmente manejable vía teclado 2.2 Permitir a los usuarios controlar límites de tiempo en su lectura o interacción. 2.3 Permitir que los usuarios eviten el contenido que podría causar fallas debido a la fotosensibilidad 2.4 Proveer mecanismos para ayudar a los usuarios a encontrar los contenidos de su interés y navegar a través de ellos. 2.5 Ayudar a los usuarios a evitar errores y facilitarles la corrección de errores que pudieran ocurrir. Principio 3 : El Contenido y controles deben ser entendibles 3.1 Elaborar el contenido del texto legible y entendible. 3.2 Definir la colocación y la funcionalidad del contenido predecible. Principio 4: El contenido debe ser lo suficientemente fuerte para trabajar con agentes de usuario actuales y futuros (incluyendo tecnologías asistentes). 4.1 Soporte de compatibilidad con agentes de usuario actuales y futuras (incluyendo tecnologías asistentes) 4.2 Asegurarse que el contenido sea accesible o que contenga una alternativa accesible. Cada punto de verificación está asignado a uno de los tres niveles de prioridad establecidos por las pautas. 1. Prioridad 1: son aquellos puntos que un desarrollador Web tiene que cumplir ya que, de otra manera, ciertos grupos de usuarios no podrían acceder a la información del sitio Web. 2. Prioridad 2: son aquellos puntos que un desarrollador Web debería cumplir ya que, si no fuese así, sería muy difícil acceder a la información para ciertos grupos de usuarios. 3. Prioridad 3: son aquellos puntos que un desarrollador Web debería cumplir ya que, de otra forma, algunos usuarios experimentarían ciertas dificultades para acceder a la información. En función a estos puntos de verificación se establecen los niveles de conformidad: Nivel de Conformidad "A": todos los puntos de verificación de prioridad 1 se satisfacen. Nivel de Conformidad "Doble A": todos los puntos de verificación de prioridad 1 y 2 se satisfacen. Nivel de Conformidad "Triple A": todos los puntos de verificación de prioridad 1,2 y 3 se satisfacen. Las pautas describen cómo hacer páginas Web accesibles sin sacrificar el diseño, ofreciendo esa flexibilidad que es necesaria para que la información sea accesible bajo diferentes situaciones y proporcionando métodos que permiten su transformación en páginas útiles e inteligibles. Igualmente, se han desarrollado Pautas de Accesibilidad para Herramientas de Autor, cuyo objetivo es ayudar a los desarrolladores de software a la hora de crear herramientas de autor para producir contenido Web accesible. También se han desarrollado Pautas de Accesibilidad para XML, donde se explica cómo asegurar la accesibilidad de aplicaciones basadas en XML. Y por último, Pautas de Accesibilidad para Agentes de Usuario 1.0, donde se explica cómo hacer accesible los navegadores, reproductores multimedia y otras tecnologías asistivas. Por otro lado, se han desarrollado otro tipo de documentos como las Técnicas para Pautas de Accesibilidad al Contenido en la Web, que ofrecen una serie de ejemplos de etiquetado y explicaciones muy detalladas de cómo implementar las Pautas de Accesibilidad al contenido en la Web. Entre ellas se pueden destacar Técnicas esenciales para Pautas de Accesibilidad al Contenido en la Web 1.0, las Técnicas HTML para Pautas de Accesibilidad al Contenido a la Web 1.0 y las Técnicas CSS para Pautas de Accesibilidad al Contenido en la Web 1.0. Ejemplos Un ejemplo de prioridad 1 sería la identificación clara de cualquier cambio de idioma que se pueda producir en el texto de un documento. Es decir, si se utilizan diferentes idiomas es necesario que cualquier cambio esté claramente señalado con el atributo lang: Un ejemplo de código correcto sería el siguiente: <p> <q>Buenos días Philip</q> <q lang="en">Good morning</q>. Respondió Philip en inglés. <q>¿Qué tal estás?</q> <q lang="fr">Très bien.</q> Volvió a responder, pero esta vez en francés. </p> Otro ejemplo de prioridad 1 sería la utilización del atributo alt para incorporar texto equivalente al contenido de una imagen cuando se quieren utilizar gráficos; esto permitiría que dispositivos o personas que no pueden visualizar los gráficos, obtengan una representación alternativa textual. El código correspondiente sería: <img src="wai.png" alt="Web Accessibility Initiative" lang="en"/> Referencias: http://moodle2.unid.edu.mx/dts_cursos_mdl/pos/TI/LP/AM/01/Arquitecturas_y_tecnologias _para_el_desarrollo_de_aplicaciones_web.pdf http://w3c.es/Divulgacion/GuiasBreves/Estandares http://w3c.es/Divulgacion/GuiasBreves/Accesibilidad http://www.casupo.org.ve/CV/may/tesis/web.pdf http://www.itlalaguna.edu.mx/academico/carreras/sistemas/prograweb/accesibilidad%20w eb.ppt http://servidoreswebalh.blogspot.mx/ http://servidoresswebb.blogspot.mx/2013/02/tipos-de-servidores-web.html