scieee AI-readable full text Open interactive document viewer

Portal web para una tienda online de horticultura

Diego Oviedo, Enrique

Abstract

La realización de este proyecto llevará a cabo una tienda virtual de venta de productos hortícolas, donde los distintos usuarios, tanto registrados como no registrados podrán ver el catalogo de nuestros productos.

Full text

Escola Tècnica Superior d’Enginyeria Informàtica Universitat Politècnica de València Portal web para una tienda online de horticultura Proyecto Final de Carrera Ingeniería Superior de Informática Autor: Enrique Diego Oviedo Director: Sergio Sáez Barona 16/09/2012 Portal web para una tienda online de horticultura 2 3 Tabla de contenidos Contenido 1. Introduccion ..................................................................................................................... 6 Motivación ......................................................................................................................... 6 2. ESPECIFICACION DE REQUISITOS ......................................................................................... 8 2.1. Introducción ................................................................................................................ 8 2.1.1. Propósito .............................................................................................................. 8 2.1.2. Ámbito del Sistema ............................................................................................... 8 2.1.3. Definiciones, Acrónimos y Abreviaturas. ................................................................ 8 2.1.4 Referencias. ......................................................................................................... 10 2.1.5. Visión global ....................................................................................................... 10 2.2. Descripción general .................................................................................................... 11 2.2.1 Perspectiva del producto ....................................................................................... 11 2.2.2 Funciones del producto ......................................................................................... 11 2.2.3 Características de los usuarios. .............................................................................. 11 2.2.4 Restricciones. ....................................................................................................... 12 2.2.5 Supuestos y dependencias. ................................................................................... 12 2.2.6 Requisitos futuros. ............................................................................................... 12 2.3. Requisitos específicos. ............................................................................................... 13 2.3.1 Requisitos de interfaces externas ......................................................................... 13 2.3.2 Requisitos funcionales .......................................................................................... 13 2.3.3 Requisitos de Rendimiento ................................................................................... 15 2.3.4 Restricciones de Diseño ........................................................................................ 15 2.3.5 Requisitos hardware ............................................................................................ 16 2.3.6 Atributos del sistema ........................................................................................... 16 2.3.7 Otros requisitos ................................................................................................... 17 3 Análisis ............................................................................................................................. 18 3.1 Diagrama de clases. .................................................................................................... 18 3.2 Diagrama de casos de uso. .......................................................................................... 19 3.3 Plantillas de casos de uso ............................................................................................20 3.3.1 Consultar categoría ..................................................................................................20 3.3.2 Consultar producto ..................................................................................................20 3.3.3 Búsqueda producto .................................................................................................. 21 Portal web para una tienda online de horticultura 4 3.3.4 Alta usuario ............................................................................................................. 21 3.3.5 Contacto .................................................................................................................. 22 3.3.6 Añadir al carro ......................................................................................................... 23 3.3.7 Quitar del carro ....................................................................................................... 23 3.3.8 Realizar compra ....................................................................................................... 23 3.3.9 Modificar datos de usuario ................................................................................... 24 3.3.10 Visualizar historial de pedidos ................................................................................ 24 3.3.1 Cambiar contraseña ................................................................................................. 25 3.3.12 Cerrar sesión.......................................................................................................... 26 3.3.13 Recuperar contraseña ............................................................................................ 26 3.3.14 Visualizar un pedido ............................................................................................... 27 3.4 Diagramas de secuencia. ............................................................................................. 27 3.4.1 Añadir al carrito. .................................................................................................. 27 3.4.2 Listar el historial de los pedidos de un usuario ...................................................... 28 3.4.3 Registro de usuario nuevo. ................................................................................... 28 4. Diseño ............................................................................................................................. 29 4.1. Arquitectura del Sistema ............................................................................................ 29 4.2 Nivel de interfaz. ..................................................................................................... 30 4.3 Nivel de negocio. ........................................................................................................ 32 4. 4 Capa de persistencia. ................................................................................................. 32 4.4.1 Diseño lógico. ...................................................................................................... 33 5. Implementación e integración .......................................................................................... 34 5.1. Tecnologías ............................................................................................................... 34 5.1.1 MySQL ................................................................................................................. 34 5.1.2 PHP ..................................................................................................................... 34 5.1.3 CSS: ..................................................................................................................... 35 5.1.4 AJAX: .................................................................................................................. 35 5.1.5 HTML: .................................................................................................................. 35 5.1.6 Arquitectura Cliente Servidor:.............................................................................. 36 5.2. Herramientas ............................................................................................................. 36 5.2.1 WAMP ................................................................................................................. 36 5.2.2 PhpMyAdmin ....................................................................................................... 36 5.2.3 Notepad++ ........................................................................................................... 36 5.3. Detalles de la implementación ................................................................................... 37 5 5.3.1 Perfiles de usuario. ............................................................................................... 37 5.3.2 Autenticación de usuarios. ................................................................................... 37 5.3.3 Selección fichero PHP. .......................................................................................... 38 5.3.4 Inserción de HTML en el DOM .............................................................................. 38 5.4 Diagrama de navegabilidad. .................................................................................... 39 6. Evaluación y pruebas ....................................................................................................... 40 6.1 Evaluación. .............................................................................................................. 40 6.2 Pruebas. .................................................................................................................... 40 6.2.1 Enlaces rotos. ...................................................................................................... 40 6.2.2. Pruebas de Validación HTML y CSS. ...................................................................... 41 6.2.2. Pruebas de compatibilidad en navegadores ......................................................... 42 6.2.3. Pruebas de compatibilidad de resolución ............................................................. 43 6.2.4 Casos de prueba. .................................................................................................. 44 7. Conclusiones .................................................................................................................... 49 8. Bibliografía ....................................................................................................................... 50 Portal web para una tienda online de horticultura 6 1. Introduccion La realización de este proyecto llevara a cabo una tienda virtual de venta de productos hortícolas, donde los distintos usuarios, tanto registrados como no registrados podrán ver el catalogo de nuestros productos. El catalogo de los productos lo podremos navegar o bien seleccionado el tipo de producto que queremos ver mediante los menús o bien utilizando la función de búsqueda. Los productos tendrán una breve descripción de la especie y variedad de la que se esta hablando así como las características especiales de la misma. Los usuarios de nuestra página podrán ir añadiendo productos a un carrito que al final podrán comprar pagando el importe mediante tarjeta de crédito. Los usuarios que no estén registrados, si quieren comprar lo que hayan depositado en el carrito tendrán que registrarse. Un usuario registrado puede loguearse y entrar en su historial de pedidos así como para ver cómo van las compras que aun no han finalizado. Los usuarios que quieran, podrán participar en un foro que pondremos a disposición de ellos para que formulen preguntas o den consejos a otros compradores de cómo tienen que cultivar sus variedades o que hacer ante una determinada plaga. Los objetivos concretos consistirán en: - Ofrecer un catalogo de productos a nuestros clientes así como la navegación y el filtrado de los productos. - Permitir poder comprar los productos que se encuentran en nuestra página. - Facilitar el mantenimiento de dicho catálogo. Los resultados y productos que se piensan obtener: - Una tienda virtual on-line. - Una aplicación para el control de usuarios, gestión de productos y pedidos, así como el mantenimiento del catalogo. El método para guiar el desarrollo del proyecto se basará en las siguientes etapas: - La especificación de requisitos basada en la definición de casos de uso. - El proceso de análisis basado en modelos UML. - La definición de la arquitectura basada en tres capas. La codificación de un prototipo de la aplicación. - La realización de pruebas técnicas del sitio Web. Los recursos disponibles consistirán en: - Un entorno de diseño Web basado en herramientas convencionales. WAMP el cual Incluye PHP5, MySQL y Apache. - Un servidor Web. - Un plazo de dos meses. - Un alumno con dedicación completa. Motivación La motivación para realizar este proyecto es el hecho de poder tener conocimiento sobre un campo que me puede dar trabajo yendo por libre sin tener que depender de una empresa. 7 Gracias a la realización de este tipo de proyecto me adentrare en un campo en el que cualquier persona desde su casa puede ver y en el caso de estar interesada comprar. Con comercio online puedo montar una tienda sin ningún coste que no sea el del material que voy a vender. Cada vez más personas montan su propia tienda on-line, con lo que saber cómo hacer una tienda on-line podrá llevarme a construir tiendas para otras personas o, una vez controlado el php, mysql y ajax, poder crear otro tipo de aplicaciones web. Al realizar una tienda on-line entramos en la importantísima tarea de la gestión de usuarios y visibilidad de los mismos, por esto nuestra aplicación debe tener diferentes perfiles, eso es lo que diferencia el control sobre bases de datos y perfiles y lo que da calidad a una página web, el hacer que una persona se sienta especial por poder acceder a una parte de la aplicación que nadie mas puede acceder. En resumen poder tener conocimientos de la creación de aplicaciones web, siempre te servirá para poder desenvolverte en la vida. Portal web para una tienda online de horticultura 8 2. ESPECIFICACION DE REQUISITOS 2.1. Introducción En esta sección explicaremos cual es la meta del proyecto, como lo vamos a hacer y las características y funcionalidades del mismo. 2.1.1. Propósito El propósito de la ESR (especificación de requisitos) va dirigida para poder tener un conocimiento inicial global de la aplicación que vamos a abordar, y dando así una guía de trabajo sobre las características y condiciones de debe tener y cumplir nuestra aplicación. Esto va dirigido a cualquier persona que esté interesada en la aplicación web ya que se hablara en un lenguaje lo menos técnico posible (sin pérdida de información claro está) para poder llegar al máximo de personas. 2.1.2. Ámbito del Sistema Nuestro futuro sistema será una tienda virtual on-line de venta de productos hortícolas. El sistema permitirá la búsqueda de productos así como su compra. Se permitirá el registro de usuarios, así como visualizar el historial de los pedidos pasados y el seguimiento de los pedidos presentes. El sistema dará como soporte un foro donde los usuarios podrán exponer sus dudas, preguntas o afirmaciones. Gracias al sistema una sola persona podrá gestionar la tienda virtual dedicándole muy pocas horas al día una vez ya este en producción, con el objetivo de poder exponer a la clientela nuestros productos de la forma mas clara posible y venderlas de la manera mas simple que tenemos ahora en el mercado de las tiendas on-line. Con todo esto tendremos una aplicación de venta de productos on-line de última generación totalmente funcional y al alcance de cualquier persona que tenga internet. 2.1.3. Definiciones, Acrónimos y Abreviaturas. 2.1.3.1 Definiciones Tienda online: Se refiere a un comercio convencional que usa como medio principal para realizar sus transacciones un sitio web de Internet. Sitio web: Un sitio web es una colección de páginas web relacionadas y comunes a un dominio de Internet o subdominio en la www. 9 Dominio de Internet: Un dominio de Internet es una red de identificación asociada a un grupo de dispositivos o equipos conectados a la red Internet. Foro: es una aplicación web que da soporte a discusiones u opiniones en línea, permitiendo al usuario poder expresar su idea o comentario respecto al tema tratado. Contenido dinámico: es aquél que se genera automáticamente en el momento que alguien solicita su visualización, por tanto, puede cambiar dependiendo de quién lo solicite o en que momento lo haga. JavaScript: es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos,3basado en prototipos, imperativo, débilmente tipado y dinámico. Usuario anónimo: es un individuo que visitara nuestra página y que no se logeera contra el sistema. Usuario registrado: Es un usuario que visitara nuestra página y que se logueara contra el sistema para acceder a una serie de características de la aplicación que no se podrían acceder Loguearse: cuando un usuario pone su loguin y contraseña y se comprueba en la base de datos que existe ese usuario dándole paso a una parte privada de la aplicación. Loguin: Es el nombre con el que se identifica a un usuario, que con anterioridad ha realizado un proceso de registro, suele formarse con un código alfanumérico de varios dígitos. Dependiendo de la aplicación se le pueden asignar distintos roles y accesos. Base de datos: es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. Contraseña: Palabra secreta perteneciente a un nombre de usuario que dan paso a la parte privada de la aplicación de ese usuario. 2.1.3.2. Acrónimos. PHP: PHP es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Se usa principalmente para la interpretación del lado del servidor. MySQL: es un sistema de gestión de bases de datos relacional, multihilo y multiusuario. HTML: siglas de HyperText Markup Language («lenguaje de marcado de hipertexto»), hace referencia al lenguaje de marcadopredominante para la elaboración de páginas web que se utiliza para describir y traducir la estructura y la información en forma de texto, así como para complementar el texto con objetos tales como imágenes. CSS: es un lenguaje usado para definir la presentación de un documento estructurado escrito en HTML. Portal web para una tienda online de horticultura 16 Los documentos basados en XHTML válido son más relevantes para los motores de búsqueda, contienen mayor información y menos código, por lo que un sitio basado en estándares web tendrá una mejor posición. De igual manera, la posición en directorios, editados por humanos, se verá beneficiada pues el sitio será más usable. XHTML es una aplicación de XML, por lo que el contenido puede ser procesado de muchas formas, permitiendo la creación de sitios extensibles. El uso de validadores nos permite crear XHTML bien formado. Un sitio basado en estándares web es compatible con todos los navegadores actuales, y lo será con versiones futuras. Funcionará tan bien en un PC, un navegador aural y un teléfono móvil dentro de diez años. Un sitio basado en estándares web es más fácil de mantener y actualizar, el código es más simple, de esta forma se elimina la dependencia de un solo desarrollador. Un sitio basado en estándares web es más accesible, permitiendo a personas con discapacidades utilizar su contenido. 2.3.5 Requisitos hardware Los requisitos hardware en la parte cliente para poder mover la aplicación son, hoy en día, superadas por cualquier ordenador personal de los que nos podamos encontrar, aun así los requisitos hardware serian: Un procesador de 1.0 GHz. Una RAM de 256 Mbytes. Los demás datos del ordenador son irrelevantes. Teniendo un ordenador de estas características en adelante nuestra aplicación web funcionara correctamente. Por la parte del servidor las limitaciones serán de un doble núcleo así como una RAM de 2 GB. Un disco duro de 50 GB para el almacenamiento de la BBDD y en un caso extremo, para la memoria virtual en caso de quedarnos sin RAM al estar sirviendo a demasiada gente. Además de tener una tarjeta de red, así como una conexión mínima de 1 GB. 2.3.6 Atributos del sistema Mantenimiento Para llevar el mantenimiento de la pagina debe ser añadiendo productos a la base de datos. Para ello se necesita hacerlo desde la interfaz de phpMyAdmin. Si se quiere hacer un cambio estructural se deberá recurrir a personal cualificado ya que habrá que modificar código. Seguridad 17 Para la gestión de la seguridad de la aplicación se llevara a cabo mediante petición de usuario y contraseña. Cualquier usuario que no pase por este punto lo único que podrá hacer es visitar la página. Las diferentes cuentas con sus atributos estarán guardadas en el servidor, en la BBDD que se encontrara en el servidor. Para poder modificar las diferentes cuentas con sus privilegios deberá ser a través de phpMyAdmin. 2.3.7 Otros requisitos Bases de datos Será necesaria la utilización de una base de datos para poder almacenar toda la información necesaria para el correcto funcionamiento de la aplicación. Se ha optado por almacenar la misma en phpMyAdmin. Portal web para una tienda online de horticultura 18 3 Análisis Una vez que ya se han captado los requisitos y necesidades del cliente y de la aplicación que se quiere crear, es el momento de realizar el análisis de forma detallada antes de ponernos a desarrollar. Para ello la nos hemos ayudado de diagramas UML con los que explicaremos las partes y el funcionamiento de nuestra aplicación y cómo interactúan los diferentes elementos que la componen. Los diagramas UML que utilizaremos son los siguientes:  Diagrama de clases.  Diagrama de casos de uso.  Diagramas de secuencia. Pasamos a explicar en detalle cada uno de los diagramas. 3.1 Diagrama de clases. Para la creación de este diagrama no hemos sido muy estrictos ya que realmente no hay clases en nuestra aplicación debido a la utilización de Ajax y de ficheros PHP, pero para ver claramente la relación de las diferentes partes de la aplicación he considerado oportuno incluirlo. 19 3.2 Diagrama de casos de uso. Aquí pasamos a mostrar el diagrama de casos de uso de nuestra aplicación. Portal web para una tienda online de horticultura 20 3.3 Plantillas de casos de uso Ahora vamos a especificar cada uno de los casos de uso de nuestra aplicación web mediante plantillas de casos de uso. 3.3.1 Consultar categoría Caso de uso: Consultar categoría. Actores: Usuario ocasional y registrado. Descripción: Accede a los productos de la categoría seleccionada imprimiéndolos en pantalla. Requerimientos: Ninguno. Curso normal Acciones de los actores Acciones del sistema 1.- El usuario entra en la página web y selecciona una de las categorías de productos. 2.- El sistema busca en la base de datos todos los productos de la categoría y lo imprime por pantalla Curso Alternativo Acciones de los actores Acciones del sistema 2. El sistema no puede comunicarse con el servidor y la base de datos y muestra un mensaje acorde con el problema. 3.3.2 Consultar producto Caso de uso: Consultar producto. Actores: Usuario ocasional y registrado. Descripción: Una vez accedida a la categoría se selecciona un producto para ver su descripción y si se quiere incluir al carro. Requerimientos: Haber hecho una selección de categoría. Curso normal Acciones de los actores Acciones del sistema 1.- El usuario selecciona uno de los productos para ver el detalle de él. 2.- El sistema recupera la información del producto y lo saca por pantalla. 21 Curso Alternativo Acciones de los actores Acciones del sistema 2. El sistema no puede comunicarse con el servidor y la base de datos y muestra un mensaje acorde con el problema. 3.3.3 Búsqueda producto Caso de uso: Búsqueda producto. Actores: Usuario ocasional y registrado. Descripción: El usuario puede hacer uso de un formulario donde poner una cadena a buscar entre los productos de la base de datos. Requerimientos: Ninguno. Curso normal Acciones de los actores Acciones del sistema 1.- El usuario pone una cadena en el cuadro de texto y pulsa buscar. 2.- El sistema busca en los nombres y en la descripción palabras que coincidan con la palabra a buscar, sacando por pantalla los elementos seleccionados. Curso Alternativo Acciones de los actores Acciones del sistema 2. El sistema no puede comunicarse con el servidor y la base de datos y muestra un mensaje acorde con el problema. 3.3.4 Alta usuario Caso de uso: Alta usuario. Actores: Usuario ocasional. Descripción: El usuario rellena el formulario de registro para pasar a ser un usuario registrado. Requerimientos: El usuario no debe estar registrado. Curso normal Acciones de los actores Acciones del sistema 1.- El usuario selecciona la opción de registro de usuario. En esa página rellena los datos que le pide la aplicación. 2.- El sistema crea un nuevo usuario con los datos introducidos y le devuelve un mensaje de confirmación. Portal web para una tienda online de horticultura 22 Curso Alternativo 1 Acciones de los actores Acciones del sistema 1.-El usuario no rellena todos los campos del formulario. 2.- El sistema devuelve un mensaje diciendo que falta algún campo por rellenar y pone un botón para volver otra vez a la página de alta de usuario. Curso Alternativo 2 Acciones de los actores Acciones del sistema 2.- El sistema comprueba que el nombre de usuario o email elegido ya están dados de alta en el sistema comunicándoselo al usuario rellenar y pone un botón para volver otra vez a la página de alta de usuario. Curso Alternativo 3 Acciones de los actores Acciones del sistema 2.- El sistema comprueba que las contraseñas puestas no coinciden dando un mensaje de error y pone un botón para volver otra vez a la página de alta de usuario. 3.3.5 Contacto Caso de uso: Contacto. Actores: Usuario ocasional y registrado. Descripción: El usuario accede a la página donde puede rellenar los datos y escribir un correo para comunicarse con la empresa. Requerimientos: Ninguno. Curso normal Acciones de los actores Acciones del sistema 1.- El usuario selecciona en el menú la opción de contacto, rellena el formulario y pulsa enviar. 2.- El sistema crea un correo y lo envía al propietario de la aplicación. Curso Alternativo Acciones de los actores Acciones del sistema 1.-El usuario no rellena todos los campos del formulario. 2.- El sistema devuelve un mensaje diciendo que falta algún campo por rellenar y vuelve otra vez a poner la página de contacto. 23 3.3.6 Añadir al carro Caso de uso: Añadir al carro. Actores: Usuario ocasional y registrado. Descripción: El usuario una vez en la página de descripción de un producto selecciona añadir al carro poniendo la cantidad de quiere de los mismos. Requerimientos: Ninguno. Curso normal Acciones de los actores Acciones del sistema 1.- El usuario accede al producto y pone la cantidad de producto que quiere y pulsa añadir. 2.- El sistema añade al carro el producto con la cantidad seleccionada, visualizándolo en el carro de la barra lateral derecha. 3.3.7 Quitar del carro Caso de uso: Quitar del carro. Actores: Usuario ocasional y registrado. Descripción: El usuario quita productos que tenía en el carro. Requerimientos: Ninguno. Curso normal Acciones de los actores Acciones del sistema 1.- El usuario quita del carrito de la barra lateral derecha o desde su perfil un elemento. 2.- El sistema quita del carro el elemento seleccionado. 3.3.8 Realizar compra Caso de uso: Realizar compra. Actores: Usuario registrado. Descripción: El usuario una vez que tiene hecha la compra puede hacer efectivo el pedido dando a comprar, una vez que ha accedido al carro. Requerimientos: El usuario debe estar registrado en el sistema y en la pantalla del carro. Curso normal Acciones de los actores Acciones del sistema 1.- El usuario entra en el carro tanto por la entrada que esta en el lateral como la que esta en la entrada de la cuenta. Allí el usuario pulsa comprar. 2.- El sistema crea el pedido y las líneas de pedido y saca la factura por pantalla. Portal web para una tienda online de horticultura 24 Curso Alternativo Acciones de los actores Acciones del sistema 2.- El sistema no puede comunicarse con el servidor y la base de datos y muestra un mensaje acorde con el problema. 3.3.9 Modificar datos de usuario Caso de uso: Modificar datos de usuario. Actores: Usuario registrado. Descripción: El usuario accede a su cuenta y allí puede cambiar los datos con los que se dio de alta. Requerimientos: El usuario debe estar registrado en el sistema. Curso normal Acciones de los actores Acciones del sistema 1.- El usuario entra en su cuenta y pulsa modificar datos. Allí cambia los datos y pulsa guardar. 2.- El sistema cambia los datos del usuario de la base de datos, saca un mensaje comunicándolo y pone un botón para volver al menú de la cuenta. Curso Alternativo Acciones de los actores Acciones del sistema 1.-El usuario no rellena todos los campos del formulario. 2.- El sistema devuelve un mensaje diciendo que falta algún campo por rellenar y pone un botón para volver a sacar el formulario. 3.3.10 Visualizar historial de pedidos Caso de uso: Visualizar historial de pedidos. Actores: Usuario registrado. Descripción: El usuario accede a su cuenta y allí puede visualizar el historial de pedidos que ha realizado el usuario. Requerimientos: El usuario debe estar registrado en el sistema. Curso normal Acciones de los actores Acciones del sistema 1.- El usuario entra en su cuenta y pulsa ver pedidos. 2.- El sistema saca todos los pedidos realizados por el usuario. 25 Curso Alternativo Acciones de los actores Acciones del sistema 2.- El sistema no puede comunicarse con el servidor y la base de datos y muestra un mensaje acorde con el problema. Aquí va un botón 3.3.1 Cambiar contraseña Caso de uso: Cambiar contraseña. Actores: Usuario registrado. Descripción: El usuario accede a su cuenta y allí puede cambiar contraseña. Requerimientos: El usuario debe estar registrado en el sistema. Curso normal Acciones de los actores Acciones del sistema 1.- El usuario entra en su cuenta y pulsa cambiar contraseña. Allí pone su antigua contraseña y la nueva por duplicado. 2.- El sistema comprueba que la contraseña antigua es correcta, y que las nuevas coinciden. 3.- El sistema cambia la contraseña del usuario en la base de datos. Curso Alternativo 1 Acciones de los actores Acciones del sistema 1.-El usuario no rellena todos los campos del formulario. 2.- El sistema devuelve un mensaje diciendo que falta algún campo por rellenar y pone un botón para volver a sacar el formulario. Curso Alternativo 2 Acciones de los actores Acciones del sistema 2.- El sistema comprueba que la contraseña no se corresponde con la contraseña del usuario loggeado sacando por pantalla el mensaje pertinente y pone un botón para volver a sacar el formulario. Curso Alternativo 3 Acciones de los actores Acciones del sistema 2.- El sistema comprueba que las contraseñas nuevas no coinciden sacando el mensaje pertinente y poniendo un botón para volver al formulario. Portal web para una tienda online de horticultura 32  Cerrar sesión: Desde aquí podremos salir de la sesión, borrando también todos los elementos que teníamos puestos en el carro.  Pedidos: En esta entrada podremos ver todos los pedidos que hemos hecho en la aplicación. Es un historial. Dentro de la tabla de los pedidos podemos acceder en detalle a cada uno de ellos pulsando en la lupa, como podemos ver a continuación. 4.3 Nivel de negocio. En esta parte es en donde trabajaremos con las peticiones hechas por la capa presentación las cuales de la mayoría necesitaran de llamadas a la base de datos. Para poder distinguir esta parte se ha separado los ficheros php. Para poder realizar la aplicación lo mas dinámica posible debe ser el cliente web el que debe hacer las peticiones mediante AJAX y el resultado que recibirá en HTML el propio AJAX lo montara en una parte del DOM. Puede ser en la parte central como en el carrito, así como cuando el usuario se loguea. En todos estos casos es AJAX el que le hace la petición de lo que se quiere hacer, se lo comunica a un fichero PHP y este lo redirección al fichero php correspondiente. Esto se hace para poder, por así decirlo, llamar a funciones desde AJAX a un fichero php. Desde AJAX pasamos los parámetros y un índice a un fichero php. Dependiendo del índice que recibe el fichero PHPFile.php redirige a una función o a otra, siendo ese fichero el que llama a una función php en concreto de un determinado fichero. Tenemos un fichero PHPFile.php que actúa como redireccionador y luego un fichero func_usuarios.php, donde encontramos todas las funciones referentes a usuarios como darse de alta, cerrar sesión, modificar datos, etc. También tenemos el fichero func_productos.php, func_carrito.php, y func_pedidos.php, en los cuales hacen las respectivas operaciones. Casi todas las funciones se comunican con la base de datos para poder traer información, eliminarla o modificarla, por lo que esta capa hace de enlace entre el usuario y la base de datos. Además al estar separadas por tipo es mas legible y entendible para programadores externos, para en un futuro posibles modificaciones. 4. 4 Capa de persistencia. En esta capa es donde están alojados los datos. Aquí es un gestor de base de datos el que mantiene eficientemente la persistencia de los datos y la integridad. Esta capa es la encargada de buscar los datos pedidos por la capa de negocio, así como la modificación y la eliminación de registros. A continuación mostramos el diagrama entidad-relación de la base de datos con la que trabaja la aplicación. 33 4.4.1 Diseño lógico. Usuarios(IdUsuario: INTEGER, NombreUsuarios: varchar(10), Password: VARCHAR (20), Nombre: VARCHAR(20), Apellidos: VARCHAR (20), Direccion: VARCHAR (20), Email: varchar(50)) CP{IdUsuario} VNN{ IdUsuario, NombreUsuarios, Password, Nombre, Apellidos, Direccion, Email} Pedidos(IdPedidos: INTEGER, Fecha: DATETIME, Precio: FLOAT, FkUser: INTEGER) CP{IdPedidos} CAj{FkUser} Usuarios VNN{ IdPedidos, Fecha, Precio, FkUser } LineasPedido( IdLineas: INTEGER, cantidad: INTEGER, FkProducto: INTEGER, FkPedido: INTEGER) CP{IdLineas} CAj{ FkPedido } Pedidos CAj{ FkProducto } Productos VNN{ ( IdLineas, cantidad, FkProducto, FkPedido } Productos(IdProductos: INTEGER, Nombre: VARCHAR(100),Descripcion: VARCHAR(500) Precio: FLOAT,Imagen: VARCHAR(200),Categoria: VARCHAR(100)) CP{ IdProductos } VNN{ IdProductos, Nombre, Descripcion, Precio ,Imagen, Categoria} Portal web para una tienda online de horticultura 34 5. Implementación e integración En esta sección pasamos a detallar las tecnologías que hemos utilizado para hacer la aplicación. También hablaremos de las herramientas que han facilitado nuestro trabajo y por ultimo hablaremos de los detalles mas importantes que caracterizan a la implementación. 5.1. Tecnologías Una de las partes importantes del proyecto es el dinamismo que trasmite debido a la modificación del DOM, trabajando siempre con la misma pagina HTML y modificando esta en el navegador del ordenador del usuario. Para poder realizar la aplicación hemos utilizado las siguientes tecnologías, de las cuales más abajo se encentran las definiciones que he buscado en la red. Las he referenciado con el número entre paréntesis, al final del texto con las que están numeradas las direcciones web en la bibliografía. (18) 5.1.1 MySQL MySQL es un sistema de gestión de bases de datos relacional, licenciado bajo la GPL de la GNU. Su diseño multihilo le permite soportar una gran carga de forma muy eficiente. MySQL fue creada por la empresa sueca MySQL AB, que mantiene el copyright del código fuente del servidor SQL, así como también de la marca. Aunque MySQL es software libre, MySQL AB distribuye una versión comercial de MySQL, que no se diferencia de la versión libre más que en el soporte técnico que se ofrece, y la posibilidad de integrar este gestor en un software propietario, ya que de no ser así, se vulneraría la licencia GPL. Este gestor de bases de datos es, probablemente, el gestor más usado en el mundo del software libre, debido a su gran rapidez y facilidad de uso. Esta gran aceptación es debida, en parte, a que existen infinidad de librerías y otras herramientas que permiten su uso a través de gran cantidad de lenguajes de programación, además de su fácil instalación y configuración. Las principales características de este gestor de bases de datos son las siguientes: 1. Aprovecha la potencia de sistemas multiprocesador, gracias a su implementación multihilo. 2. Soporta gran cantidad de tipos de datos para las columnas. 3. Dispone de API's en gran cantidad de lenguajes (C, C++, Java, PHP, etc). 4. Gran portabilidad entre sistemas. 5. Soporta hasta 32 índices por tabla. 6. Gestión de usuarios y passwords, manteniendo un muy buen nivel de seguridad en los datos. (9) 5.1.2 PHP PHP (HyperText Preprocessor) es un lenguaje script (no se compila para conseguir códigos máquina si no que existe un intérprete que lee el código y se encarga de ejecutar las instrucciones que contiene éste código), para el desarrollo de páginas web dinámicas del lado 35 del servidor, cuyos fragmentos de código se intercalan fácilmente en páginas HTML, debido a esto, y a que es de Open Source (código abierto), es el más popular y extendido en la web. PHP es capaz de realizar determinadas acciones de una forma fácil y eficaz sin tener que generar programas programados en un lenguaje distinto al HTML. Esto se debe a que PHP ofrece un extenso conjunto de funciones para la explotación de bases de datos sin complicaciones. Es por esto, que levanta un mayor interés con respecto a los lenguajes pensados para los CGI. PHP fue desarrollado originalmente por Rasmus Ledford en 1994 como un CGI escrito en Perl que permitía la interpretación de un número limitado de comandos. El sistema fue denominado Personal Home Page Tools y consiguió relativo éxito gracias a que otras personas pidieron a Rasmus que les permitiese utilizar sus programas en sus propias páginas. Cuando Rasmus tuvo la necesidad de crear páginas dinámicas que trabajasen con formularios, creó una serie de etiquetas a las que denominó “Form Interpreters”, y lo sacó al público con el nombre de PHP/FI en 1995. Luego salió la versión mejorada, llamada PHP/FI 2.0. (10) 5.1.3 CSS: Hojas de Estilo en Cascada (Cascading Style Sheets), es un mecanismo simple que describe cómo se va a mostrar un documento en la pantalla, o cómo se va a imprimir, o incluso cómo va a ser pronunciada la información presente en ese documento a través de un dispositivo de lectura. Esta forma de descripción de estilos ofrece a los desarrolladores el control total sobre estilo y formato de sus documentos. CSS se utiliza para dar estilo a documentos HTML y XML, separando el contenido de la presentación. Los Estilos definen la forma de mostrar los elementos HTML y XML. CSS permite a los desarrolladores Web controlar el estilo y el formato de múltiples páginas Web al mismo tiempo. Cualquier cambio en el estilo marcado para un elemento en la CSS afectará a todas las páginas vinculadas a esa CSS en las que aparezca ese elemento. (11) 5.1.4 AJAX: AJAX, acrónimo de Asynchronous JavaScript And XML (JavaScript asíncrono y XML), es una técnica de desarrollo web para crear aplicaciones interactivas o RIA (Rich Internet Applications). Estas aplicaciones se ejecutan en el cliente, es decir, en el navegador de los usuarios mientras se mantiene la comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre las páginas sin necesidad de recargarlas, lo que significa aumentar la interactividad, velocidad y usabilidad en las aplicaciones. Ajax es una tecnología asíncrona, en el sentido de que los datos adicionales se solicitan al servidor y se cargan en segundo plano sin interferir con la visualización ni el comportamiento de la página. JavaScript es el lenguaje interpretado (scripting language) en el que normalmente se efectúan las funciones de llamada de Ajax mientras que el acceso a los datos se realiza mediante XMLHttpRequest, objeto disponible en los navegadores actuales. En cualquier caso, no es necesario que el contenido asíncrono esté formateado en XML. Ajax es una técnica válida para múltiples plataformas y utilizable en muchos sistemas operativos y navegadores dado que está basado en estándares abiertos como JavaScript y Document Object Model (DOM). (12) 5.1.5 HTML: El HTML o HyperText Markup Language, en inglés, es el lenguaje utilizado para las páginas web o de Internet. En español su traducción vendría a ser Lenguaje de Etiquetado de Documentos hipertextual. El etiquetado se refiere a que los archivos HTML, además de texto, contienen una Portal web para una tienda online de horticultura 36 serie de atribuciones o información adicional acerca del texto. Hypertexto, término acuñado en 1965 por Ted Nelson, es información no lineal, lo que en palabras sencillas significa texto con enlaces o links a otros textos. El lenguaje HTML estructura la información, que luego es visualizada utilizando un navegador. (13) 5.1.6 Arquitectura Cliente Servidor: El modelo cliente-servidor (client-server), describe el proceso de interacción entre la computadora local (el cliente) y la remota (el servidor). El cliente le hace peticiones (requests, solicitudes, requerimientos) al servidor, el cual procesa dicho requerimiento y retorna los resultados al cliente apropiado. Por lo general, los clientes y los servidores se comunican entre sí a través de una red, pero también pueden residir ambos en un mismo sistema (el mismo hardware). Siguen este modelo de cliente/servidor servicios como el intercambio de emails, el acceso a webs, el acceso a bases de datos, y muchos otros protocolos de internet se basan en esta idea (HTTP, SMTP, Telnet, DNS), etc. (14) 5.2. Herramientas A continuación pasaremos a explicar brevemente las herramientas que hemos utilizado para el desarrollo del proyecto. 5.2.1 WAMP (Windows-Apache-MySQLPHP/Python/PERL). El término hace referencia al sistema creado por la conjunción de esas aplicaciones libres (de código abierto) y el sistema operativo Windows. Este grupo de aplicaciones generalmente son usados para crear servidores web. WAMP provee a los desarrolladores con los cuatro elementos necesarios para un servidor web: un sistema operativo (Windows), un manejador de base de datos (MySQL), un software para servidor web (Apache) y un software de programación script web (PHP, Python o PERL). Otra popular combinación de aplicaciones es el LAMP, que es totalmente gratuito. También existen el MAMP y el FAMP. (15) 5.2.2 PhpMyAdmin PhpMyAdmin es una herramienta escrita en PHP con la intención de manejar la administración de MySQL a través de páginas web, utilizando Internet. Actualmente puede crear y eliminar Bases de Datos, crear, eliminar y alterar tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios, exportar datos en varios formatos y está disponible en 62 idiomas. Se encuentra disponible bajo la licencia GPL. (16) 5.2.3 Notepad++ Notepad++ es un editor de texto y de código fuente libre con soporte para varios lenguajes de programación. Solo funciona en Microsoft Windows. 37 Se parece al Bloc de notas en cuanto al hecho de que puede editar texto sin formato y de forma simple. No obstante, incluye opciones más avanzadas que pueden ser útiles para usuarios avanzados como desarrolladores y programadores. Se distribuye bajo los términos de la Licencia Pública General de GNU. (17) 5.3. Detalles de la implementación Ahora pasaremos a explicar los detalles de como hemos implementado la aplicación. 5.3.1 Perfiles de usuario. El uso de la aplicación la va a realizar dos perfiles distintos de usuarios. Uno es el perfil del usuario ocasional y otro el usuario registrado.  Perfil de usuario ocasional Este usuario tiene una lista de operaciones reducida. Al no estar aun registrado las únicas operaciones que pude hacer es visitar las diferentes categorías que dispone el catalogo. Puede añadir productos a la cesta de la compra así como eliminarlos. Estando en esta parte de la compra se le invita a que realice el pedido, así podremos captar su atención. Si el usuario intenta realizar la compra salta un mensaje diciendo que debe registrarse para poder hacer efectiva la compra. Por otra parte tiene acceso para ponerse en contacto con la empresa, para exponer sus inquietudes, además de tener acceso al foro. En el foro solo podrá visitar los hilos que haya abiertos pero no podrá postear ni abrir nuevos debates.  Perfil de usuario registrado Este es el perfil de los usuarios que se han dado de alta en la aplicación. Puede realizar todas las operaciones que realiza el usuario no registrado. Para poder logarse en la aplicación deben poner su usuario y contraseña en el cuadro lateral derecho. Una vez que el sistema comprueba que el usuario y la contraseña son correctos la página se modificara dando la bienvenida al usuario y modificando la página con dos nuevas entradas en vez del cuadro de loguin. En estas entradas tenemos la cuenta y el cierre de sesión, características de este usuario. En la entrada cuenta el usuario accede a su zona personal, donde puede cambiar sus datos y mirar su historial de pedidos. 5.3.2 Autenticación de usuarios. La aplicación para el seguimiento de usuarios se basa en sesiones. El usuario cuando se loguea se crea en el servidor una entrada en la sesión con el nombre del usuario. Así cuando el usuario intenta acceder a alguna parte de la aplicación en la cual necesita estar logueado, la aplicación lo comprueba, si no hay nadie logueado se le invita a que se loguee. Para la comprobación de los datos AJAX hace una petición al servidor con los datos del usuario y este los comprueba en la base de datos. Si la base de datos da una respuesta válida se crea la entrada en la sesión, si no se le informa al usuario de que la contraseña o usuario son incorrectos. Portal web para una tienda online de horticultura 38 Cuando el usuario cierra la sesión destruimos la sesión con sesión_destroy(), así también eliminamos lo que tenía el usuario en el carrito. 5.3.3 Selección fichero PHP. La aplicación como esta hecha se basa en un fichero php que actúa como índice. Este índice redirecciona la petición que hace AJAX al fichero php que contiene la función que se solicita, haciendo así que AJAX solicite una función con sus parámetros. La idea es que no haya un fichero php por cada función que necesita llamar Ajax. Esta función se puede encontrar en el fichero PhpFile.php La función AJAX pasara al fichero índice un numero de índice, el cual le dice al fichero la función que quiere ejecutar, y una serie de parámetros. 5.3.4 Inserción de HTML en el DOM La parte importante de la aplicación es la inserción de HTML en el DOM. De esta manera solo tenemos una página en la que iremos construyendo dependiendo de la zona en la que estemos. La modificación del DOM viene por parte de AJAX. AJAX hace una petición de una función al servidor, este le devuelve el código que tiene que incrustar o modificar (en varios casos quitaremos un código para poner otro) y AJAX lo pone en el DOM creando así una nueva página y dando dinamismo a la misma. El código insertado que viene desde AJAX es cuando el código introducido no necesita información por parte de la base de datos, por esta razón podemos tener funciones en el fichero JavaScript que ponen HTML. Normalmente estos son los formularios que no necesitan de información como el de registrarse en la aplicación y el de contacto. 39 Veamos un ejemplo de cómo se inserta código como de un típico formulario que se puede montar desde JavaScript sin la necesidad del servidor. Como se puede observar el código se incrusta en el div con identificador llamado “cont”. 5.4 Diagrama de navegabilidad. Para poder ver una relación de las páginas que puede componer nuestra aplicación hacemos uso de un diagrama de navegabilidad. Con este diagrama vemos la diferentes paginas que componen nuestra web y como podemos llegar a ellas. Hemos distinguido con colores para ver las páginas que puede ver un usuario ocasional, ya que todas las demás son la que puede ver un usuario registrado. Portal web para una tienda online de horticultura 40 6. Evaluación y pruebas Una vez que hemos acabado con la fase de implementación debemos realizar una serie de pruebas y evaluar nuestra aplicación antes de darla por concluida. Gracias a esto podremos identificar fallos para corregirlos antes de dar por terminada nuestra aplicación. 6.1 Evaluación. Para evaluar nuestra página web vamos a tener que buscar una serie de características comportándonos lo mas objetivamente posible. Las características a las que nos referimos son las que nos aporta la usabilidad. Cuando hablamos de usabilidad en una página web nos estamos refiriendo a la capacidad que tiene esta para resultar intuitiva, fácil, productiva y entendible para un usuario ocasional, el cual no suele visitar una página. En resumen, que la pagina le resulte lo mas productible posible en el menor tiempo de visita. Para conseguir esto nos basamos en 4 conceptos que hacen una web usable: - Ponernos siempre en la posición del usuario para intuir como desearía la pagina para encontrar lo que busca. - Tener en la pagina un árbol de navegación sin demasiados enlaces e intuitivo. - Hacer una página con un diseño visual atractivo sin que sea recargado ni pesado. - Tener en cuenta las posibles limitaciones que tengan los usuarios como son el ancho de banda o la resolución. En todas las fases que hemos llevado a cabo para la resolución de la aplicación se ha tenido siempre encuentra estos factores. Nuestra página tiene el formato normal que tienen normalmente las tiendas online, por lo que es lo que se espera encontrar el usuario. Nuestro árbol de navegación tiene, como máximo, una profundidad de 4 pantallas que es la de su caso más extenso, el de realizar el pedido. La página se ha hecho de la manera más atractiva que se ha podido, ya que considero que ese es un trabajo de un diseñador y que está orientado mas la bellas artes, de todas maneras, he puesto todo mi empeño en que así lo sea. Y por último se ha tenido en cuenta las resoluciones, y no se ha recargado con flash ni animaciones complicadas por lo que resulta muy ligera. 6.2 Pruebas. Las pruebas que vamos a realizar para poder hacer una aproximación de que esta correcta la pagina en algunos sentidos es la de comprobación de enlaces rotos, la de validación de estándares W3C, la comprobación de el funcionamiento en los distintos navegadores y las pruebas de resolución de pantalla, antes de pasar a hacer unas pruebas funcionales de algunos casos de uso, para comprobar que se ejecutan correctamente. 6.2.1 Enlaces rotos. Para comprobar toda la navegabilidad de la aplicación comprobando los enlaces nos hemos ayudado de aplicaciones gratuitas que hay en la web. Un enlace roto dificulta a los buscadores la indexación de la página, le dice al buscador que algo anda mal, que tiene poco mantenimiento o que no se actualiza. Tampoco deja muy buena 41 impresión a los usuarios. Es decir, los enlaces rotos perjudican nuestro posicionamiento web. Después de estar buscando nos hemos tenido que basar en una aplicación que lo compruebe en local, ya que nuestra página no está en la red. El programa que hemos elegido es el Xenu. Después de hacer unos cambios en el fichero del css hemos quitado todos los enlaces rotos. Aquí mostramos una captura de pantalla del resultado de pasar la ruta donde se muestra que todos los enlaces están correctos. 6.2.2. Pruebas de Validación HTML y CSS. Otra de las pruebas útiles es la validación de los estándares de HTML y CSS. Gracias a esto podemos encontrar errores que los navegadores son capaces de ocultar y que no se saben que están allí, pudiendo aparecer en el momento mas inesperado. Para poder realizar estas pruebas hemos ido a la página oficial de W3C y allí hemos puesto nuestros ficheros uno por uno y hemos comprobado que todo esta correcto. En primer lugar hemos puesto el fichero index.html, en el cual hemos encontrado unos errores de cerrar tags y una lista de elementos que estaba vacía y que había que borrar. Después de esto hemos dejado el documento correcto para el estándar. El mensaje que ha mostrado la aplicación es el siguiente. Portal web para una tienda online de horticultura 48 6.2.4.2 Cambiar datos de contacto Para poder cambiar los datos del usuario se necesita estar loggeado en el sistema. Una vez hecho esto podemos acceder al cambio de datos desde la página de nuestra cuenta. Allí pulsaremos en “Administrar datos personales” y cambiaremos los datos que nos interesen cambiar. Una vez hecho esto el sistema nos pondrá un mensaje como que ha cambiado los datos. Luego podremos volver a verlos en nuestra cuenta y otra vez “Administrar datos personales”. En primer lugar cambiamos los datos que quedamos modificar. Una vez que pulsamos guardar el sistema da el siguiente mensaje. Para comprobar que el sistema reconoce que se haya dejado un campo sin rellenar dejaremos todos los campos que podamos, el de nombre de usuario no nos deja ya que esta fijo, vacios comprobando que el sistema lo reconoce. Esta es la captura de pantalla. 49 7. Conclusiones Una vez hecho el proyecto podemos hacer una valoración clara de lo que se ha conseguido. Respecto a la productividad de lo aprendido he de decir que he conseguido mas de lo que me esperaba, no creía que los conocimientos en HTML, AJAX, php y mysql fueran a aumentar tanto. La verdad es que creía que me iba a costar mas el aprender los lenguajes que he comentado. Respecto a CSS creo que hay que dedicarle especial atención. En primer lugar es algo a lo que no te enseñan en la carrera, al estar acostumbrado a programar, pasas a poner estilos a DIV y te resulta complicado. En concreto tengo que hacer especial mención al poder centrar la página y que al dar zoom mas y menos siempre se quedase en el centro. Para poder manejarlo un poco me costó mucho tiempo y no he indagado a penas nada. De todas maneras ahora me manejo con soltura y cualquier hoja de estilo que tenga en mis manos la podre moldear a mi gusto, siempre y cuando tenga tiempo para ello. Por otro lado esta la satisfacción de haber realizado un proyecto personal que se puso como meta al principio del curso. Tuvo sus altibajos, porque no sabía si lo iba a acabar o no, pero al final se ha conseguido y el resultado y estoy muy contento Hay que decir que el proyecto está abierto a muchas mejoras, empezando por la parte administrador. Poder controlar todos los productos y los usuarios desde la aplicación hacer que la pagina se vuelva totalmente mantenible por el cliente, lo que le da un valor mucho mayor. También sería interesante hacer uso de JQuery ya que da resultados muy profesionales con apenas código lo que hacer que sea especialmente interesante. Por último hacer una mención a la propia memoria que me ha ayudado bastante a realizarme como persona trabajadora, al ser algo a lo que le tienes que dedicar horas y de las cuales muchas veces no escribes ya que tienes que hacer un proceso de investigación que requiere de mucho tiempo. Dicho todo esto el balance es tremendamente positivo y una experiencia para recordar toda la vida. Portal web para una tienda online de horticultura 50 8. Bibliografía En esta sección solo podre enlaces a páginas web ya que es de donde he recogido el material para hacer el proyecto.  [1] http://es.wikipedia.org/wiki/Wikipedia:Portada/  [2] http://www.programacionweb.net/  [3] http://www.php.net/  [4] http://www.javascriptsource.com/  [5] http://www.librosweb.es/css/  [6] http://validator.w3.org/  [7] http://oness.sourceforge.net/proyecto/html/ch03s02.html/  [8] http://www.tiendadesemillas.es/  [9] http://www.danielpecos.com/docs/mysql_postgres/x57.html/  [10] http://php.ciberaula.com/articulo/introduccion_php/  [11] http://www.photoshopytutoriales.com/introduccion-al-css/comment-page-1/  [12] http://es.wikipedia.org/wiki/AJAX  [13] http://www.misrespuestas.com/que-es-html.html  [14] http://juliansanchez6606gta.blogspot.com.es/2011/05/ruby-es-un-lenguajeinterpretado-de.html  [15] http://www.alegsa.com.ar/Dic/wamp.php  [16] http://es.wikipedia.org/wiki/PhpMyAdmin  [17] http://es.wikipedia.org/wiki/Notepad%2B%2B  [18] http://biblioteca.utalca.cl/html/servicios/Citas%20bibliograficas/guia.pdf  [19] http://www.upv.es/entidades/ABDC/infoweb/bg/info/798082normalc.html  [20]http://www.upv.es/entidades/ABDC/infoweb/bg/info/798082normalc.html Durante el proyecto me he estado ayudando de otros proyectos hechos por alumnos que fueron dirigidos por Sergio Sáez Barona, es decir, nuestro director de proyecto. Estas son las direcciones donde puedes encontrarlas en riunet:  http://riunet.upv.es/handle/10251/9110  http://riunet.upv.es/handle/10251/8634  http://riunet.upv.es/handle/10251/8736  http://riunet.upv.es/handle/10251/11166  http://riunet.upv.es/handle/10251/15249  http://riunet.upv.es/handle/10251/16952  http://riunet.upv.es/handle/10251/10028  http://riunet.upv.es/handle/10251/9110  http://riunet.upv.es/handle/10251/8634  http://riunet.upv.es/handle/10251/9120