# Autoweb

Autoweb es una metodología para el desarrollo de aplicaciones web. La metodología está basada en modelos y técnicas utilizados anteriormente en hipermedia, en los sistemas de información y en la ingeniería del software; todos ellos adaptados y unidos para formar una técnica original.
El trabajo realizado está parcialmente incluido en el proyecto Interdata, financiado por el Italian Ministry of University and Scientific and Technological Research (MURST) y la mayor parte de su desarrollo se ha realizado en el Instituto Politécnico de Milán.

## Características

El proyecto propone una metodología y también un entorno de diseño para páginas web con gran cantidad de datos. Las principales características del sistema son:
* Adaptarse a los modelos actuales de hipermedia para desarrollo web y a las necesidades de la generación automática de software.
* Utilizar la tecnología de las bases de datos no solo para almacenar el contenido de una aplicación web sino para almacenar una descripción de su estructura, navegabilidad y presentación, para que se permita la implementación automática y una evolución mejor.
* Definir un proceso de desarrollo software para construir nuevas aplicaciones web y para poder practicar ingeniería inversa sobre aplicaciones basadas en base de datos ya existentes.
* Dar soporte a estos procesos mediante herramientas sencillas.

## Herramienta case: Autoweb System

La metodología Autoweb está firmemente ligada al desarrollo del sistema Autoweb, que da soporte a gran parte de los procesos a realizar durante la metodología. Además Autoweb System no solo se centra en la implementación de la web si no en todas las actividades que conllevan el desarrollo de la misma, como la realización de esquemas conceptuales o la creación de las bases de datos asociadas.

## Arquitectura

La arquitectura Autoweb, implementada en el Autoweb System, comprende un entorno de diseño y un entorno de ejecución.
* Entorno de diseño: consiste en un conjunto de aplicaciones de diseño, que servirán para producir los metadatos o descriptores de las aplicaciones. Estos se almacenan en una base de datos relacional para que de comienzo la producción de páginas web mediante el entorno de ejecución.
* Entorno de ejecución: en la implementación de Autoweb System es un proceso CGI que produce dinámicamente páginas mediante la aplicación de los metadatos y los contenidos. Los primeros se almacenarán en una base de datos relacional y los segundos se guardarán parte en una base de datos relacional y parte en el sistema de archivos. Las páginas web se generan automáticamente en cada petición de los usuarios, aunque la implementación que comentamos permite que páginas determinadas se introduzcan en la caché del servidor para mejorar el rendimiento.

## Metodología

El proceso de creación de una aplicación web utilizando la metodología Autoweb consta básicamente de tres fases:
* El primer paso para crear una aplicación mediante la metodología Autoweb es conseguir los requerimientos del sistema y formalizarlos como un conjunto de esquemas conceptuales de HDM-lite. Esta fase es la que conlleva un mayor trabajo humano (aunque en la implementación Autoweb System se facilita mediante una herramienta llamada Visual HDM).
* La segunda fase es la generación de la base de datos de soporte. Esta fase toma como entrada el esquema conceptual de HDM-lite y produce como salida una base de datos relacional, que dará soporte a la aplicación en tiempo de ejecución. La base de datos generada posee dos partes, una pequeña base de datos que contiene una representación de la estructura, la navegación y la presentación (que son las partes por las que está formado un hiperesquema de descripción de una aplicación web, según la metodología HDM-Lite). Esta primera es la base de datos metaesquema, ya que almacena los datos del propio esquema conceptual que dará soporte a la aplicación). La segunda parte de la base de datos será una base de datos vacía para almacenar el contenido de la aplicación. En la implementación Autoweb System esta fase está totalmente automatizada mediante una herramienta llamada VHDM Database Schema Generator.
* La tercera y última fase será la implementación y el despliegue de la aplicación Web. Mediante el contenido que va a tener la página web, las hojas de estilo que quiera emplear el usuario y los esquemas de aplicación, navegación y presentación; se realiza la implementación final de la web, que será la que se mostrará a los usuarios.

## Implementación automática

El paso del esquema conceptual del sitio (especificado mediante HDM-Lite) a las páginas reales que constituirán la aplicación requiere, básicamente de dos transformaciones distintas. Estas transformaciones irán generando progresivamente unas especificaciones de cada vez más alto nivel hasta llegar a las páginas web en sí.
* Transformación de modelo conceptual a modelo lógico: toma como entrada el esquema conceptual del sitio, expresado por los esquemas de presentación, estructura y navegación, además de la definición de un esquema de base de datos que tendrá el objetivo de almacenar los metadatos sobre la navegación y la presentación.
Tiene dos salidas: un metaesquema para la base de datos que contendrá una descripción de la estructura, la navegación y la presentación de la página y una base de datos vacía, preparada para almacenar el contenido estructurado que posteriormente mostrará la aplicación. El proceso detallado es el siguiente:
* Esquema estructural de HDM-lite es analizado para obtener el esquema de la base de datos que dará soporte a la aplicación. La transformación del esquema de estructura de HDM-lite en un esquema relacional es análogo al mapeado de un esquema de entidad interelacción en uno relacional. Cada componente de HDM-lite es mapeado a un conjunto de relaciones. Cada lista de valores es mapeada a una tabla secundaria, unida a la primera mediante una clave ajena. Los contenidos multimedia de gran tamaño pueden ser almacenados tanto en la tabla como en el sistema de archivos, en este segundo caso una referencia para su localización es almacenada en la tabla de componentes. Las relaciones de parte-de y los enlaces entre componentes son traducidos o a referencias entre las tablas de componentes o a tablas puente, dependiendo de la cardinalidad de la conexión.
* El esquema de HDM-lite es analizado para completar el metaesquema de la base de datos con información acerca de entidades, componentes, modos de navegación, visión de las colecciones y hojas de estilos. El mapeado del modelo conceptual al lógico está implementado en Autoweb System en una herramienta llamada HDM Relational Schema Generator.
* Transformación de modelo lógico a modelo físico: esta transformación recibe tres entradas, el metaesquema de la base de datos, el esquema de la aplicación producido en la transformación anterior y los datos de la aplicación. El mapeado desde el modelo lógico al modelo físico está implementado en una herramienta del Autoweb System llamada Page Generator. Como salida, produce las páginas de la aplicación, en lenguaje compatible para su visualización.
* La fase de análisis que toma como entrada la hoja de estilos de la página que se va a implementar y obtiene de ella un esqueleto abstracto de página. El esqueleto abstracto de página es una representación de la página que es independiente del lenguaje en el que se implementará y de los elementos específicos que describe la página.
* La fase de rellenado de datos transforma el esqueleto abstracto de página producido por el primer paso en una instancia abstracta de página. Es decir una representación que todavía es independiente del lenguaje en el que se implementará pero cuyos elementos son específicos.
* La fase de mapeado del lenguaje toma como entrada las propiedades de la hoja de estilos que dependen del lenguaje y mapea la instancia de página abstracta en una página con características específicas del lenguaje de implementación seleccionado.
* La fase de generación de código realmente transforma la instancia de página dependiente del lenguaje, generada en el paso anterior, en un trozo de código escrito en el lenguaje de implementación elegido.

## Utilización de Autoweb

Autoweb fue originalmente concebido para dar soporte al proyecto CorsiOnline (cursos en línea) del Politécnico de Milán, un proyecto de dos años de duración consistente en el diseño y la implementación de un entorno de gestión de alumnos del Politécnico. Autoweb permitió a los desarrolladores dar a los profesores involucrados unos números que mostrasen las alternativas en los aspectos del curso en línea, como la estructura de los materiales docentes y otros.
La aproximación Autoweb para desarrollo web ha sido probada en varias aplicaciones tanto en la industria como en la investigación, con el propósito de estudiar la aceptación del modelo entre los desarrolladores. Algunas de las experiencias en las que se ha hecho uso de Autoweb son los siguientes:
* TechDoc: es una aplicación industrial desarrollada por una empresa italiana. Techdoc está pensado para reemplazar la documentación en papel de las máquinas.
* RAI-EMSF: es una iniciativa de la televisión pública italiana. Este proyecto está basado en 400 horas de entrevistas a algunos de los filósofos y científicos más modernos, hablando de temas filosóficos y científicos.
* DSU: es un punto de información de la oficina regional de Lumbardy, encargado de dar información sobre los recursos educativos que se encuentran en Lumbardy.
* Mediateca: es una página web de tamaño medio desarrollada en el proyecto DISCETECH, que explora las implicaciones prácticas de utilizar productos multimedia en el sistema educativo italiano.

## Bibliografía

* Piero Fraternale y Paolo Maldini. Politecnico di Milano. Model-Driven Development of Web Applications: The Autoweb System.
* Datos: Q5712952