Orígenes de la Ingeniería Web Pocos pueden discutir que Internet y la World-Wide Web están cambiando nuestras vidas. Cada día es más común que tareas tales como la lectura del periódico, la compra de libros o discos, operaciones bancarias, reserva de hoteles, compra de billetes de avión o tren, entre otras muchas, las realicemos conectados con nuestro ordenador a Internet. Es así que, durante la última década hemos asistido al crecimiento vertiginoso del desarrollo y uso de aplicaciones y sistemas Web cada vez más complejos y sofisticados. Desafortunadamente, dicha complejidad no parece estar acompañada de los mecanismos adecuados que garanticen la calidad de unos sistemas de los que cada día tenemos mayor dependencia a nivel social, funcional y económico. Esta carencia de calidad ha venido generando una preocupación creciente entre la comunidad científica y técnica involucrada en el desarrollo Web. Así pues, en los últimos años surgen varias iniciativas con el objetivo de poner cierto orden dentro de la maraña que estamos creando y en la que nos movemos habitualmente. En 1998, Roger Pressman moderó una mesa redonda virtual con representantes la ingeniería software tradicional y del desarrollo software basado exclusivamente en Internet. El debate principalmente se centró en discutir si valía la pena aplicar un proceso de ingeniería a las aplicaciones con base en Internet, o qué características tenían éstas que justificaran el no utilizarlo. La conclusión general fue que aplicar un proceso de ingeniería nunca es una mala idea pero que éste debería adaptarse a los requerimientos de cambio continuo y rapidez siempre presentes en el proceso de desarrollo Web. De iniciativas como ésta y de otras como la organización de congresos y talleres especializados en el desarrollo para la Web, surge el nacimiento de una nueva disciplina denominada Ingeniería Web. La Ingeniería Web surge entonces, en 1998, como una nueva disciplina orientada a solucionar los problemas derivados de una proliferación de sistemas web de baja calidad, realizados con una carencia completa de proceso. Esta nueva disciplina identifica nuevos elementos propios de las aplicaciones web que no se cubren en las Ciencias de la Computación, en la Ingeniería del Software o en los Sistemas de Información. La Ingeniería Web como disciplina no es una copia de la Ingeniería del Software, aunque parte de un conjunto de principios bien arraigados en ésta última, adaptándolos a la naturaleza más abierta y flexible de la Web. ¿Que pasa si persiste el enfoque actual para el desarrollo Web? Con la ausencia de un proceso disciplinado para aplicaciones Web, cada vez nos preocupa mas la manera en que nos podemos enfrentar con problemas serios para obtener éxito en el desarrollo, empleo y mantenimiento de estos sistemas. En esencia, a medida que avanzamos en el tiempo, la infraestructura de las aplicaciones que se están creando hoy en día puede llamarnos a lo que podríamos llamar Web Enmarañada. Esta frase connota un cúmulo de aplicaciones basadas en Web pobremente desarrolladas y con una probabilidad de fallo bastante alta. Y lo que es peor, a medida que las aplicaciones Web se van complicando, un fallo en una de ellas puede propagar problemas en otros. Si esto ocurre, la confianza en Internet puede romperse provocando resultados irremediables. Con el objeto de evitar una Web enmarañada y así lograr un mayor éxito en el desarrollo de aplicaciones Web complejas y a gran escala, existe una necesidad apremiante de enfoques de Ingeniería Web disciplinada y de métodos y herramientas nuevos para el desarrollo. Tales enfoques deben tener en cuenta las características propias del medio, los diferentes entornos y escenarios, y en la multiplicidad de perfiles de usuario implicando todo ello un reto adicional para el desarrollo de estas aplicaciones. Definiciones de Ingeniería Web → Aplicación de una aproximación sistemática, disciplinada y cuantificable al desarrollo, operación y mantenimiento de aplicaciones basadas en la Web o la aplicación de la ingeniería al software basado en la Web 1 → Establecimiento y utilización de principios científicos, de ingeniería y de gestión, y con enfoques sistemáticos y disciplinados del éxito del desarrollo, empleo y mantenimiento de aplicaciones basadas en Web. Etapas de la Ingeniería Web Formulación Permite que el cliente y el diseñador establezcan un conjunto común de metas y objetivos para la construcción de la aplicación Web. Para ello se establece un proceso de comunicación entre los dos actores ya mencionados para establecer las razones de construcción de la aplicación Web. También identifica el ámbito de esfuerzo en el desarrollo y proporciona un medio para determinar un resultado satisfactorio. En esta etapa se realiza lo siguiente: • Definir y Describir categorías de usuario: se identifican a todos aquellos que se benefician de forma directa o indirecta de la aplicación Web. La complejidad de las aplicaciones Web es proporcional al número de categorías de usuario. Para realizar esta definición es necesario responder las siguientes preguntas: ¿Cual es el objetivo global del usuario al usar una aplicación Web? ¿Como llegara el usuario a la aplicación Web? ¿Que características gustan o disgustan al usuario? • Definición de Requisitos Básicos: un requisito es una condición o capacidad que debe poseer o cumplir la aplicación Web para satisfacer una necesidad o demanda especifica. Se consideran requisitos aspectos tales como facilidades ofrecidas al usuario, restricciones de la aplicación Web y para el desarrollo de esta y otras propiedades generales. Los clientes deben definir y ordenar sus requisitos de acuerdo a su prioridad y tipo. Por lo tanto, los requisitos pueden ser: Funcionales: describen los servicios que se esperan del sistema No funcionales: restricciones de cómo los requisitos funcionales son implementados De Contenido: responden a la pregunta de que información debe almacenar y administrar la aplicación Web • Analizar la información recopilada y hacer un seguimiento a los clientes. • Definir casos de uso: toda la información recolectada y tratada se modela con la utilización de Casos de Uso y Notación UML. Este paso tiene una connotación especial ya que constituye el puente hacia el Modelado de Análisis. Un Caso de Uso permite capturar información de cómo una aplicación trabaja, o de cómo se desea que trabaje y constituye una especificación de cómo una entidad se comporta e interactúa con los usuarios. Análisis Esta etapa se enfoca en buscar respuestas a las siguientes preguntas: ¿Que información o contenido se presentará o manipulará? ¿Que funciones realizará el usuario final? ¿Que comportamiento tendrá la Aplicación Web? Además se realizan cuatro tipos de Análisis: • Análisis de Contenido: es la identificación del espectro completo de contenido que se va a proporcionar. En el contenido se incluyen datos de texto, gráficos, imágenes video y sonido. • Análisis de Interacción: es la descripción detallada de la interacción del usuario con la aplicación Web. Casos de Uso • Análisis Funcional: es la descripción detallada de todas las funciones y operaciones que se aplicaran en el contenido de la Aplicación Web, y que fueron obtenidas tras el Análisis de Interacción, donde se crearon los escenarios de utilización o Casos de Uso. • Análisis de la Configuración: es la descripción en detalle del entorno y de la infraestructura donde reside la aplicación Web. Se hace debido a que es necesario que el diseño e implementación de la aplicación Web se acomode a una diversidad de ambientes, tanto del lado del servidor como del 2 cliente. Para ello se especifican elementos tales como hardware del servidor, sistemas operativos, protocolos de comunicación, grado de utilización de la base de datos, entre otros. Diseño Esta etapa se centra mayoritariamente en el usuario, e incluye la influencia de las artes o aspectos visuales (parte visual de la aplicación), el contenido (información que se muestra al usuario), la tecnología (funcionalidad de la aplicación y la finalidad (beneficios). En la etapa de Diseño de la Ingeniería Web son aplicables los conceptos y principios usados en la Ingeniería del Software, aunque no es un clónico perfecto de esta. Calidad en el Diseño de Aplicaciones Web La calidad se refiere a las características mensurables que se pueden comparar con estándares conocidos como longitud, color, entre otros. A nivel de software existen unas métricas técnicas que proporcionan una manera sistemática de valorar un conjunto de reglas claramente definidas. Las métricas o requisitos de calidad más importantes para evaluar la calidad de las aplicaciones Web son: → Usabilidad → Funcionalidad → Fiabilidad → Eficiencia → Capacidad de Mantenimiento • Diseño Arquitectónico: se centra en la filosofía de navegación que será establecida para los usuarios que utilizan la aplicación Web y visualizan información en ella. → Arquitectura de contenido: se refiere a la estructura hipermedia global de la aplicación Web. Existen 4 tipos de estructuras que son: Estructuras lineales: aparecen cuando es común la sucesión predecible de interacciones. Por ejemplo, la presentación de un manual de usuario en las que las paginas de información se presentan con gráficos relacionados, videos cortos y sonidos solo después de haber presentado un prerrequisito. Estructuras reticulares: esta opción puede aplicarse cuando el contenido de la aplicación Web se puede organizar categóricamente en dos dimensiones o mas. Por ejemplo, considere una situación en la que un sitio de comercio electrónico vende zapatos deportivos. La dimensión horizontal de la retícula representa el tipo de zapato deportivo en venta (de atletismo, ) la dimensión vertical representa la oferta proporcionada por los fabricantes de zapatos deportivos Estructuras Jerárquicas: es el tipo de estructura más común. Consiste en diseñar una estructura jerárquica de la aplicación Web que permita el flujo en horizontal atravesando las ramas verticales de la estructura. Por tanto, el contenido presentado en la rama del extremo izquierdo de la jerarquía puede tener enlaces de hipertexto que lleven al contenido que existe en medio de la rama derecha de la estructura. Sin embargo, debería de destacarse que aunque dicha rama permite una navegación rápida por la estructura de la aplicación Web, puede originar también confusión por parte del usuario. Estructuras de Red: en este tipo, las aplicaciones Web se diseñan de tal forma que pueden pasar el control (mediante enlaces de hipertexto) a otros componentes del sistema. Este enfoque permite una flexibilidad de navegación considerable, aun cuando puede resultar confuso para el usuario. • Diseño de Navegación: se refiere a la definición de las rutas de navegación que permitan al usuario acceder a los contenidos de la aplicación Web. Generalmente una aplicación Web tendrá una variedad de roles de usuarios diferentes. Cada uno de estos roles pueden tener asociados 3 diferentes niveles de acceso al contenido de la aplicación. Por ejemplo, un usuario con un rol de visitante puede tener acceso a un contenido limitado, mientras que un usuario con un rol de cliente registrado puede tener una variedad más amplia de información y servicios. Debido a esto se hace necesario lo siguiente: → Identificar la semántica de Navegación para diferentes usuarios: es necesario crear una Unidad Semántica de Navegación para cada una de las metas asociadas a los roles de usuario. Una USN es un conjunto de estructuras de información y navegación relacionadas que colaboran en el cumplimiento de ciertos requisitos del usuario. Las USN están compuestas por los siguientes elementos: Formas de Navegación: representan la mejor forma o ruta de navegación para que los usuarios con ciertos perfiles logren la meta deseada. Nodos de Navegación: son las partes que contienen información accesible al usuario. → Definir la mecánica o sintaxis de navegación: entre las mecánicas de navegación encontramos las siguientes: → Vinculo de Navegación Individual: vínculos basados en texto, iconos, botones y metáforas gráficas. Barra de Navegación horizontal: lista de las principales categorías de contenido en una barra que contiene vínculos de forma horizontal. Columna de navegación vertical Pestañas: representan las categorías de contenido por medio de marcas que se seleccionan cuando se requiere un vinculo. Mapas de Sitio: proporcionan una tabla de contenido que incluye todos los objetos de la aplicación. • Diseño Estético: también llamado Diseño Gráfico, describe la apariencia de la aplicación desde un punto de vista artístico, complementando de esta forma los aspectos técnicos de la aplicación Web. Sin él, la aplicación Web puede ser funcional pero no atractiva. Implica la realización de las siguientes actividades: → Establecer la plantilla de pantalla: las plantillas se pueden utilizar para proporcionar un marco de trabajo esquemático al diseño estético de una aplicación Web. → Establecer el tema o imagen de la aplicación Web: se refiere a cual va a ser el tratamiento gráfico que van a tener los elementos de la interfaz de la aplicación Web • Diseño de Contenido: desarrolla una representación de diseño para lo siguiente: → Objetos de Contenido: se refiere a entidades que incluyen información específica de contenido y determinadas características de implementación como parte de su diseño. → Mecanismos requeridos para establecer relaciones entre cada uno de esos objetos. • Diseño de la Interfaz: se describe la estructura y organización de la interfaz de usuario de la aplicación Web, la cual debe ofrecer al usuario final una experiencia gratificante y satisfactoria. Toda interfaz de usuario debe presentar las siguientes características: Fácil de Aprender Navegar Usar Intuitiva Consistente Eficiente Libre de errores Funcional Básicamente, se debe seguir el siguiente flujo de trabajo en esta etapa: 1. Revisar la información obtenida en el modelo de análisis 2. Desarrollar un bosquejo aproximado de la plantilla de la interfaz de la aplicación Web 3. Correlacionar los objetivos del usuario con acciones específicas de la interfaz. 4. Definir un conjunto de tareas de usuario que estén asociadas con cada acción 4 5. Elaborar bosquejos con imágenes de la pantalla para cada acción de la interfaz 6. Identificar los objetos de la interfaz de usuario que se requieren para implementarla. Este flujo de actividades genera una Plantilla de la Interfaz que sirve para esbozar de manera general la distribución de los objetos en la aplicación. También se genera una serie de Guiones que están formados por una serie de escenas individuales que presentan una línea secuencial de la interacción y el recorrido de las distintas pantallas con sus respectivos objetos. Generación de Páginas Es una actividad de construcción que hace uso extensivo de las herramientas automatizadas para la creación de la Aplicación Web. Por lo general, el contenido definido en fases anteriores, se fusiona con los diseños arquitectónicos, de navegación y de la interfaz para elaborar páginas Web ejecutables en algún lenguaje como HTML. Durante esta actividad también se lleva a cabo la integración con el software intermedio, el cual constituye una capa de software intermedio entre el cliente y el servidor y permite gestionar los mecanismos de comunicaciones. Por ejemplo, si se hace la petición de una página Web desde un navegador en el cliente, el software intermedio determina la ubicación y envía una petición para dicha página. El servidor Web, interpreta la petición y envía la página al software intermedio, quien la dirige al navegador de la máquina cliente que la solicitó. Pruebas Dado que las aplicaciones Web residen en una red y operan con muchos sistemas operativos, diferentes navegadores, plataformas e hardware y protocolos de comunicaciones, la búsqueda de errores representa un reto significativo en esta etapa. La aplicación Web se implementa en una variedad de configuraciones de entornos y comprobar así la compatibilidad con cada configuración y el desempeño en una diversidad de condiciones operativas y de cargas para asegurar que la aplicación Web responde a la interacción del usuario. Se crea una matriz de referencias cruzadas que define todos los sistemas operativos probables, plataformas de hardware para navegadores y protocolos de comunicación. Entonces se llevan a cabo pruebas para descubrir los errores asociados con todos y cada una de las configuraciones posibles. La aplicación Web también se prueba con una población de usuarios finales controlada y monitorizada para descubrir errores que indiquen que no hay concordancia con los requisitos del cliente. Para ello se selecciona un grupo de usuarios que abarque todos los roles posibles de usuarios. La aplicación Web se pone en práctica con estos usuarios y se evalúan los resultados de su interacción con el sistema para ver los errores de navegación y contenido, los intereses en usabilidad, compatibilidad, fiabilidad y rendimiento de la aplicación Web. Métodos de Desarrollo de Aplicaciones Web Las metodologías de desarrollo de aplicaciones Web presentadas a continuación, están agrupadas de acuerdo a su Modelo de Proceso, que especifica un conjunto de acciones requeridas para desarrollar la aplicación Web; y al contexto particular donde pueden ser aplicadas estas acciones: Métodos para el Desarrollo de Sistemas de Información Web: estos métodos se caracterizan por: → Imponer una disciplina de trabajo sobre el proceso de desarrollo → Hacer un especial hincapié en la planificación total de todo el trabajo a realizar y una vez que esta todo detallado, comienza el ciclo de desarrollo de la aplicación Web → No se adaptan adecuadamente a los cambios, por lo que no son métodos adecuados cuando se trabaja en un entorno, donde los requisitos no pueden predecirse o bien pueden variar de forma continua y rápida. 5 Métodos para el Desarrollo de Aplicaciones Hipermedia: Hipermedia es el término con que se designa al conjunto de métodos o procedimientos para escribir, diseñar o componer contenidos que tengan texto, video, audio, mapas u otros medios, y que además tenga la posibilidad de interactuar con los usuarios. Métodos o Procesos Ágiles para el Desarrollo de Aplicaciones Web: Los procesos ágiles son una buena elección cuando se trabaja con requisitos desconocidos o variables. Si no existen requisitos estables, no existe una gran posibilidad de tener un diseño estable y de seguir un proceso totalmente planificado, que no vaya a variar ni en tiempo ni en dinero. En estas situaciones, un proceso adaptativo será mucho más efectivo que un proceso predictivo. En general, las aplicaciones Web cumplen la mayor parte de las características mencionadas anteriormente, por lo que la utilización de procesos ágiles podría ser beneficiosa para este tipo de desarrollos. Métodos para el Desarrollo de Sitios Web Instruccionales: Un Sitio Web Instruccional es el ambiente o entorno interactivo de enseñanza-aprendizaje, que permite al estudiante obtener la posibilidad de interactuar o comunicarse, a través de Internet, con el contenido, con el profesor o facilitador y con los demás participantes del curso, por medio de las asignaciones, charlas, debates, exámenes, pruebas cortas, y otros dispositivos que puedan tomar el lugar de un libro, una unidad o un capítulo del material. Un Sitio Web Instruccional se compone básicamente de los siguientes elementos: Contenido (enmarcado en una Guía de Estudio y un Proceso de Evaluación), Instructor(es), Estudiantes, Medios de Transmisión de la Información, Herramientas de Comunicación y un Sistema Administrativo del Curso. Métodos para el Desarrollo de Aplicaciones de Comercio Electrónico: El Comercio Electrónico puede definirse como el uso de las tecnologías computacional y de telecomunicaciones que se realiza entre empresas o bien entre vendedores y compradores, para apoyar el comercio de bienes y servicios. El Comercio Electrónico es una metodología moderna para hacer negocios que detecta la necesidad de las empresas, comerciantes y consumidores de reducir costos, así como mejorar la calidad de los bienes y servicios, además de mejorar el tiempo de entrega de los bienes o servicios. Por lo tanto no debe seguirse contemplando el comercio electrónico como una tecnología, sino que es el uso de la tecnología para mejorar la forma de llevar a cabo las actividades empresariales. También puede entenderse como cualquier forma de transacción comercial en la cual las partes involucradas interactúan de manera electrónica en lugar de hacerlo de la manera tradicional con intercambios físicos o trato físico directo. Actualmente la manera de comerciar se caracteriza por el mejoramiento constante en los procesos de abastecimiento, y como respuesta a ello los negocios a nivel mundial están cambiando tanto su organización como sus operaciones. El comercio electrónico es el medio de llevar a cabo dichos cambios dentro de una escala global, permitiendo a las compañías ser más eficientes y flexibles en sus operaciones internas. Las compañías utilizan el Comercio Electrónico para desarrollar los aspectos siguientes: → Creación de canales nuevos de mercadeo y ventas. → Acceso interactivo a catálogos de productos, listas de precios y folletos publicitarios. → Venta directa e interactiva de productos a los clientes. → Soporte técnico interrumpido, permitiendo que los clientes encuentren por sí mismos, y fácilmente, respuestas a sus problemas mediante la obtención de los archivos y programas necesarios para resolverlos. 6