TRABAJO FIN DE ESTUDIOS PROYECTO FIN DE CARRERA Aplicación web para la gestión de la Sociedad Española de Historia de las Ciencias y de las Técnicas (SEHCYT) Daniel Delgado Pinillos Tutor: Ana Romero Ibáñez Curso 2011-2012 Aplicación web para la gestión de la Sociedad Española de Historia de las Ciencias y de las Técnicas (SEHCYT), trabajo fin de estudios de Daniel Delgado Pinillos, dirigido por Ana Romero Ibáñez (publicado por la Universidad de La Rioja), se difunde bajo una Licencia Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported. Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a los titulares del copyright. © © El autor Universidad de La Rioja, Servicio de Publicaciones, 2012 publicaciones.unirioja.es E-mail: publicaciones@unirioja.es FACULTAD DE CIENCIAS, ESTUDIOS AGROALIMENTARIOS E INFORMÁTICA TITULACIÓN: Ingeniería Técnica en Informática de Gestión TÍTULO DEL PROYECTO: Aplicación web para la gestión de la Sociedad Española de Historia de las Ciencias y de las Técnicas (SEHCYT) DIRECTOR DEL PROYECTO: Ana Romero Ibáñez DEPARTAMENTO: Dpto. de Matemáticas y Computación ALUMNO: Daniel Delgado Pinillos CURSO ACADÉMICO: 2011/12 Memoria PFC SEHCYT Daniel Delgado Página 2 de 95 Memoria PFC SEHCYT Daniel Delgado Acuerdo inicial Decisiones y motivaciones que se acuerdan entre el cliente y el proyectando tras la primera reunión (feb-2011) La Sociedad Española de Historia de las Ciencias y de las Técnicas (SEHCYT) es una institución que agrupa a personas interesadas y a estudiosos de los ámbitos de la historia de las ciencias y de las técnicas, cuenta con más de 20 años de antigüedad y con más de 400 socios. Tiene una junta directiva formada por presidente, vicepresidente, secretario, tesorero y vocales. La sociedad tiene actualmente en internet un servicio a disposición de todo el mundo, socios y no socios, una página web: http://www.unirioja.es/dptos/dmc/Sehcyt/ Creada hace algunos años, con el auge de las nuevas tecnologías y de las nuevas posibilidades técnicas esta web ya no cubre las necesidades de la sociedad. Además, la sociedad dispone de otros recursos de información (lista de correo de socios, publicaciones, etc.) que deberían de estar incorporadas al nuevo espacio web. Para alojar la información de la sociedad, el objetivo es crear un espacio web abierto al público en el que se incluyan todas las actividades, jornadas, congresos, etc., de la sociedad. Bajo un nuevo diseño o siguiendo la misma estructura que hasta ahora. Además los socios que pagan una cuota tendrían visible ciertos contenidos que son restringidos para el usuario externo que no lo hace. Los socios estarían almacenados en una base de datos con un perfil, sus datos personales y otros datos de interés, lo que les daría derecho por ejemplo a consultar las revistas creadas por SEHCYT. Podría incluso haber casos en los que un antiguo socio o ciertos miembros de nuestra base de datos también pueden ver las revistas; esto significa que existirían ciertas excepciones, lo que nos lleva a que debe haber un administrador que gestione todo este tipo de asuntos y que tendrá acceso a los datos de los socios. Es interesante también que haya un histórico de socios que cuente tanto con los socios actuales como con los miembros que ya no pertenecen a la sociedad. También, dentro de la intranet sería interesante que los socios tuviesen la posibilidad de enviar mensajes a otros socios y/o a una lista de estos. Por último, la SEHCYT edita y publica libros que pueden ser consultados en la biblioteca de la Universidad de La Rioja, estos nos invita a crear otra base de datos propia con la información de estos libros para que la información sea más concreta y completa. Página 3 de 95 Memoria PFC SEHCYT Daniel Delgado Página 4 de 95 Memoria PFC SEHCYT Daniel Delgado Índice Figuras ______________________________________________________________ 8 1. Documento de objetivos del proyecto __________________________________ 9 1.1. Antecedentes ________________________________________________________ 9 1.2. Justificación _________________________________________________________ 9 1.3. Objetivos __________________________________________________________ 10 1.4. Descripción ________________________________________________________ 10 1.5. Plan de comunicaciones ______________________________________________ 11 1.5.1. 1.5.2. 1.5.3. 1.6. Estructura del equipo ____________________________________________________ 11 Tecnología para la comunicación __________________________________________ 11 Conexiones entre los miembros del equipo __________________________________ 11 Planificación del proyecto _____________________________________________ 12 1.6.1. 1.6.2. 1.6.3. 1.6.4. 1.6.5. 1.6.6. 1.6.7. Calendario de trabajo____________________________________________________ 12 Metodología ___________________________________________________________ 13 Estructura de descomposición del proyecto _________________________________ 13 Listado de procesos, actividades y tareas ____________________________________ 13 Estimación de la duración de los procesos, actividades y tareas _________________ 16 Orden de procesos ______________________________________________________ 19 Diagrama de Gantt ______________________________________________________ 20 1.7. Tecnología _________________________________________________________ 21 1.8. Entregables principales del proyecto ____________________________________ 21 1.9. Dirección de riesgos __________________________________________________ 21 2. Análisis ___________________________________________________________ 23 2.1. Definición del sistema ________________________________________________ 23 2.1.1. 2.1.2. 2.1.3. Determinación de los objetivos del proyecto_________________________________ 23 Identificación del entorno tecnológico ______________________________________ 24 Identificación de los usuarios participantes y finales __________________________ 24 2.2. Obtención de requisitos ______________________________________________ 25 2.3. Especificación de casos de uso _________________________________________ 26 2.3.1. 2.3.2. 2.3.3. 2.3.4. 2.4. Definición de interfaces_______________________________________________ 30 2.4.1. 2.4.2. 2.4.3. 2.5. Usuario no socio ________________________________________________________ 26 Usuario socio __________________________________________________________ 27 Tesorero ______________________________________________________________ 28 Administrador __________________________________________________________ 29 Especificación de principios generales de la interfaz ___________________________ 30 Identificación de ventanas de diálogo ______________________________________ 32 Especificación del comportamiento de la interfaz _____________________________ 35 Especificación del plan de pruebas ______________________________________ 35 3. Diseño ____________________________________________________________ 37 Página 5 de 95 Memoria PFC SEHCYT 3.1. Definición de la arquitectura del sistema _________________________________ 37 3.1.1. 3.1.2. 3.1.3. 3.1.4. 3.2. Definición de los niveles de arquitectura ____________________________________ 37 Identificación de requisitos de diseño y construcción __________________________ 38 Especificación del entorno tecnológico _____________________________________ 38 Especificación de los requisitos para la utilización ____________________________ 39 Diseño de la base de datos ____________________________________________ 39 3.2.1. 3.2.2. 3.2.3. 3.2.4. 3.2.5. 3.3. Daniel Delgado Diseño conceptual de la base de datos ______________________________________ 40 Diseño lógico de la base de datos __________________________________________ 41 Normalización del modelo lógico de datos __________________________________ 44 Diseño físico de la base de datos __________________________________________ 45 Modificaciones al diseño de la base de datos ________________________________ 45 Diseño de interfaces _________________________________________________ 45 4. Implementación ____________________________________________________ 47 4.1. Instalación del entorno _______________________________________________ 47 4.1.2. 4.2. Preparación del entorno para la generación de código _________________________ 47 Generación de código ________________________________________________ 48 4.2.1. 4.2.2. 4.2.3. 4.2.4. 4.2.5. 4.2.6. 4.2.7. 4.2.8. 4.2.9. 4.2.10. 4.2.11. 4.2.12. Maquetación ___________________________________________________________ 48 Estilo _________________________________________________________________ 49 Navegabilidad __________________________________________________________ 53 Páginas estáticas _______________________________________________________ 53 Acceso a la zona de socios ________________________________________________ 54 Foro __________________________________________________________________ 54 Correo electrónico ______________________________________________________ 55 Revistas/actas y biblioteca _______________________________________________ 56 Sistema de publicación de noticias _________________________________________ 57 Paginación _____________________________________________________________ 57 Estructura de archivos y carpetas __________________________________________ 58 JavaScript _____________________________________________________________ 60 5. Pruebas ___________________________________________________________ 63 5.1. Ejecución de pruebas _________________________________________________ 63 6. Instalación y configuración de un servidor virtual _________________________ 67 6.1. Instalación del servidor virtual _________________________________________ 67 6.1.1. 6.1.2. 6.1.3. 6.1.4. 6.1.5. 7. Sistema operativo ______________________________________________________ 68 Instalación / Configuración Apache ________________________________________ 69 Instalación / Configuración PHP ___________________________________________ 69 Instalación / Configuración MySQL _________________________________________ 69 Instalación / Configuración Exim4 __________________________________________ 70 Gestión del plan de proyecto ________________________________________ 73 7.1. Duración real de los procesos, actividades y tareas _________________________ 73 7.2. Comparativa de horas ________________________________________________ 75 7.3. Otras consideraciones ________________________________________________ 77 Bibliografía __________________________________________________________ 79 Página 6 de 95 Memoria PFC SEHCYT Daniel Delgado Actas _______________________________________________________________ 81 Manual de usuario ____________________________________________________ 91 Página 7 de 95 Memoria PFC SEHCYT Daniel Delgado Figuras Captura de pantalla de la web de SEHCYT (marzo 2011) ______________________________________ 9 Diagrama de Gantt ___________________________________________________________________ 20 Descripción de los actores ______________________________________________________________ 26 Caso de uso No Socio __________________________________________________________________ 27 Caso de uso Socio _____________________________________________________________________ 28 Caso de uso Tesorero __________________________________________________________________ 28 Caso de uso Secretario _________________________________________________________________ 30 Interfaz general ______________________________________________________________________ 31 Diálogo login ________________________________________________________________________ 32 Diagrama de actividad login ____________________________________________________________ 32 Diálogo datos para ser socio ____________________________________________________________ 33 Diagrama de actividad pedir ser socio ____________________________________________________ 33 Diálogo escribir en el foro ______________________________________________________________ 34 Diagrama de actividad escribir en el foro __________________________________________________ 34 Diagrama Entidad Relación _____________________________________________________________ 40 Tablas Base de Datos __________________________________________________________________ 41 Interfaz Página Principal _______________________________________________________________ 45 Interfaz Noticias ______________________________________________________________________ 49 Interfaz Biblioteca ____________________________________________________________________ 50 Interfaz Dialogo Login _________________________________________________________________ 50 Interfaz Zona Privada __________________________________________________________________ 51 Interfaz Listado de Socios ‘Administrador’ _________________________________________________ 51 Interfaz Temas Foro 'Administrador' ______________________________________________________ 52 Interfaz Comentarios Foro 'Administrador' _________________________________________________ 52 Interfaz Nuevo Tema Foro ______________________________________________________________ 53 Inicio SO Ubuntu______________________________________________________________________ 68 Web en servidor virtual ________________________________________________________________ 68 Configuración Exim4 (1) ________________________________________________________________ 71 Configuración Exim4 (2) ________________________________________________________________ 71 Horas de trabajo estimadas / Horas reales _________________________________________________ 76 Porcentaje horas estimadas ____________________________________________________________ 76 Porcentaje horas reales ________________________________________________________________ 77 Página 8 de 95 Memoria PFC SEHCYT Daniel Delgado 1. Documento de objetivos del proyecto 1.1. Antecedentes La Sociedad Española de Historia de las Ciencias y de las Técnicas (SEHCYT) es una institución que agrupa a personas interesadas y estudiosos de los ámbitos de la historia de las ciencias y de las técnicas, cuenta con más de 30 años de antigüedad y con más de 400 socios. Tiene una junta directiva formada por presidente, vicepresidente, secretario, tesorero y vocales. La SEHCYT tiene actualmente en internet un servicio a disposición de todo el mundo, socios y no socios, una página web: http://www.unirioja.es/dptos/dmc/Sehcyt/ Captura de pantalla de la web de SEHCYT (marzo 2011) 1.2. Justificación El proyecto surge como propuesta de Luis Español, que es miembro activo de la sociedad y que a lo largo de la realización del proyecto será nuestro cliente y con quién deberemos contar a la hora de tomar ciertas decisiones del portal. Creado hace algunos años, con el auge de las nuevas tecnologías y de las nuevas posibilidades técnicas esta web ya no cubre las necesidades de la sociedad. Además, la sociedad dispone de otros recursos de información (lista de correo de socios, publicaciones, etc.) que deberían de estar incorporadas al nuevo espacio web. Página 9 de 95 Memoria PFC SEHCYT Daniel Delgado Actualmente la web tiene un diseño basado en los estándares corporativos que sigue la página web de la Universidad de La Rioja. En la parte izquierda podemos ver un menú con los enlaces principales, estos enlaces nos traen la información que podemos ver en la parte central y que contiene ciertos submenús que aparecen en la parte derecha y que enlazan con otro tipo de información más esporádico como noticias, congresos, simposios, boletines y otros. Es por esto que se creará una nueva aplicación web para cubrir las necesidades de publicación de información, de noticias, de gestión de los socios, etc. 1.3. Objetivos El principal objetivo del proyecto que nos ocupa es la creación de una aplicación web que cumpla las necesidades de la SEHCYT. Si se cree conveniente, después, podrá ser alojado en un dominio de internet para el disfrute de los miembros de la sociedad. 1.4. Descripción El proyecto consta de una aplicación/portal web en la que se pueda gestionar la sociedad en cuestión. Cualquier usuario tendrá acceso al portal y podrá ver los contenidos públicos además de identificarse si es necesario como usuario (socio) de la aplicación. Así, tendremos varios grupos de usuarios y cada uno de ellos tendrá una restricción u otra a la hora de usar nuestra aplicación web. Estas restricciones nos permitirán o no el poder interactuar y/o ver la información sobre los congresos o sobre las actividades que desarrolla la sociedad. También limitará y restringirá el acceso a otras cosas como la revista LLull que se publica semestralmente, o a otro tipo de publicaciones como libros o artículos. El portal web será rediseñado pero seguirá contando con los mismos contenidos que tiene actualmente, si es caso se podrán incluso completar los que ya hay. Ahora mismo, la sociedad tiene repartida por múltiples universidades todos sus contenidos y la idea es agrupar todo para ayudar a su gestión. Se creará una base de datos con los socios de la sociedad en la que cada uno tendrá un perfil y en la que el administrador podrá otorgar permisos para poder entrar a ciertas partes de la aplicación. Por ejemplo, los socios, que pagan una cuota tendrán acceso a través de una intranet a la consulta de la revista. Incluso podría haber casos en los que un antiguo socio o ciertos miembros de nuestra base de datos también pueden ver las revistas; esto significa que existirían ciertas excepciones gestionadas por el administrador. Es interesante también que haya un histórico de socios que cuente tanto con los socios actuales como con los miembros que ya no pertenecen a la sociedad. Página 10 de 95 Memoria PFC SEHCYT Daniel Delgado Además, la aplicación también tendrá que tener un sistema de mensajería en el que los socios puedan enviar mensajes de correo, ya sea a uno o a un grupo de estos. Los libros o artículos que la sociedad publica están físicamente alojados en la biblioteca de la Universidad de La Rioja, la aplicación tendrá otra base de datos con la información sobre estos libros. Como ya hemos comentado, cualquier usuario tendrá acceso al portal pero dependiendo del grupo en el que estén tendrán unas restricciones u otras. 1.5. Plan de comunicaciones 1.5.1. Estructura del equipo Las personas que participarán directa o indirectamente en el proyecto serán: Director del proyecto: Daniel Delgado -dedicación completa. Tutora del proyecto: Ana Romero -dedicación esporádica. Cliente: SEHCYT (por mediación de Luis Español) -dedicación esporádica. Miembros del tribunal de evaluación: grupo de profesores que evalúa el proyecto. -dedicación esporádica. 1.5.2. Tecnología para la comunicación Las herramientas que se utilizarán para la comunicación entre los miembros del equipo serán: Correo electrónico: para resolver dudas puntuales, para concertar citas o para el envío de documentos. Reuniones: jugarán el papel más importante en la toma de decisiones del proyecto. Defensa del proyecto: se presentarán los puntos más importantes del proyecto usando presentaciones, demostraciones online y cualquier otra herramienta para la mejor comprensión de lo presentado. 1.5.3. Conexiones entre los miembros del equipo Comunicación Daniel – Ana: A través de correo electrónico y mediante reuniones cuando se crea conveniente. Comunicación Daniel – Luis: A través de correo electrónico y mediante reuniones cuando se crea conveniente. Comunicación Daniel – Tribunal: Personalmente el día de la defensa del proyecto. Página 11 de 95 Memoria PFC SEHCYT 1.6. Daniel Delgado Planificación del proyecto 1.6.1. Calendario de trabajo 2011 Febrero Marzo Lun Mar Mie Jue Vie Sab Dom Lun Mar Mie Jue Vie Sab Dom 7 14 21 28 1 8 15 22 2 9 16 23 3 4 10 11 17 18 24 25 5 12 19 26 6 13 20 27 7 14 21 28 1 8 15 22 29 2 9 16 23 30 3 4 10 11 17 18 24 25 31 5 12 19 26 6 13 20 27 Abril Mayo Junio Lun Mar Mie Jue Vie Sab Dom Lun Mar Mie Jue Vie Sab Dom Lun Mar Mie Jue Vie Sab Dom 4 11 18 25 5 12 19 26 6 13 20 27 1 7 8 14 15 21 22 28 29 2 9 16 23 30 3 10 17 24 2 9 16 23 30 3 10 17 24 31 4 11 18 25 Julio Lun Mar Mie Jue Vie 4 11 18 25 5 12 19 26 6 13 20 27 1 7 8 14 15 21 22 28 29 5 6 12 13 19 20 26 27 7 14 21 28 1 8 15 22 29 6 13 20 27 7 14 21 28 Agosto Sab Dom 2 3 9 10 16 17 23 24 30 31 Lun Mar Mie Jue Vie 1 8 15 22 29 2 9 16 23 30 3 10 17 24 31 4 5 11 12 18 19 25 26 1 8 15 22 29 2 3 9 10 16 17 23 24 30 4 11 18 25 5 12 19 26 Septiembre Sab Dom 6 7 13 14 20 21 27 28 Lun Mar Mie Jue Vie Sab Dom 5 12 19 26 6 13 20 27 7 14 21 28 1 2 8 9 15 16 22 23 29 30 3 10 17 24 Este calendario de trabajo da una idea de la disponibilidad para la realización del proyecto. Nuestra estimación se basa en tres posibilidades. En color amarillo, los días en los que se dedicará la mayor parte del tiempo a la realización del proyecto. En color rojo se muestran los días en los que se combinará el trabajo con el estudio de la asignatura que tengo pendiente. En color azul, los días que por viaje no se le dedicará tiempo al proyecto. Además los fines de semanas no están marcados en el calendario porque a día de hoy no se puede evaluar si se va a realizar trabajo o no, en cualquier caso, estos se aprovecharán cuando sea posible para recuperar trabajo. Tampoco puedo decir que podré hacer en los meses de Julio, Agosto y Septiembre así que en un principio se podría decir que serán meses de dedicación intensa aunque habrá más o menos dos semanas en las que no se podrá realizar trabajo por las vacaciones. Ahora mismo no podemos concretar qué días tendremos disponibles o no en esos meses pero en principio y a estas alturas supondremos las mismas horas de trabajo que los meses precedentes. Página 12 de 95 4 11 18 25 Memoria PFC SEHCYT Daniel Delgado 1.6.2. Metodología Para nuestro proyecto habíamos barajado la posibilidad de seguir como metodología la métrica 3 pero para un proyecto de estas características y dada su extensión hemos declinado seguirla. Así, vamos a seguir una metodología propia basándonos en la descomposición de ciertos procesos en actividades más pequeñas. El orden asignado a estas actividades no debe interpretarse como una secuencia lineal, aunque si que debemos acabar cada proceso para poder empezar con el siguiente. A su vez, estas actividades pueden ser subdivididas en tareas. El orden de estos procesos se puede ver en la sección 1.6.6 Orden de procesos. 1.6.3. Estructura de descomposición del proyecto Gestión del proyecto D.- Dirección A.- Análisis D1.- Gestión A1.- Definición del sistema del plan D2.- Reuniones A2.- Obtención de requisitos D3.- Creación del DOP A3.Especificación de casos de uso D4.- Creación de la memoria Di.- Diseño I.- Implementación Di1.- Definición de la arquitectura del sistema Di2.- Diseño de base de datos I1.- Instalación del entorno P1.- Ejecución de pruebas I2.- Generación de código P2.- Creación de manuales de usuario Di3.- Diseño de interfaces A4.- Definición de interfaces D5.- Preparación de la defensa In1.- Integración P.- Pruebas A5.Especificación del plan de pruebas In1.Establecimiento del plan de implantación In2.- Carga de datos In3.- Pruebas de aceptación del sistema In4.Presentación del sistema 1.6.4. Listado de procesos, actividades y tareas A continuación se describen los procesos, sus actividades y si es necesario, las tareas que se van a desarrollar. Los seis procesos principales son: Dirección, Análisis, Diseño, Implementación, Pruebas e Integración. D.- Dirección Página 13 de 95 Memoria PFC SEHCYT Daniel Delgado Este proceso sirve para mantener y establecer un desarrollo desde el inicio hasta el final del proyecto. D1.- Gestión del plan D1.1.- Seguimiento del plan de objetivos D1.2.- Seguimiento del plan de comunicaciones D1.3.- Seguimiento del plan de riesgos D2.- Reuniones D2.1.- Preparación de temas a tratar D2.2.- Exposición de temas D2.3.- Redacción de actas D3.- Creación del DOP D3.1.- Recopilación de información para la realización del proyecto D3.2.- Análisis de la información obtenida D3.3.- Redacción de la memoria D4.- Creación de la memoria D4.1.- Documentación y recopilación de información necesaria D4.2.- Redacción de la memoria D5.- Preparación de la defensa D5.1.- Resumen con los puntos importantes D5.2.- Preparación de material para la presentación D5.3.- Ensayo de la defensa A.-Análisis Este proceso servirá para la obtención de una especificación detallada del sistema de información siendo esta la base para el diseño de nuestro proyecto. A1.- Definición del sistema A1.1.- Determinación de los objetivos del proyecto A1.2.- Identificación del entorno tecnológico A1.3.- Identificación de los usuarios participantes y finales A2.- Obtención de requisitos A3.- Especificación de casos de uso A4.- Definición de interfaces A4.1.- Especificación de principios generales de la interfaz A4.2.- Identificación de ventanas de diálogo A4.3.- Especificación del comportamiento de la interfaz A5.- Especificación del plan de pruebas Página 14 de 95 Memoria PFC SEHCYT Daniel Delgado Di.- Diseño Este proceso es la definición de la arquitectura del sistema, el diseño de la base de datos y el diseño de elementos visuales tales como las interfaces. Di1.- Definición de la arquitectura del sistema Di1.1.- Definición de los niveles de arquitectura Di1.2.- Identificación de requisitos de diseño y construcción Di1.3.- Especificación del entorno tecnológico Di1.4.- Especificación de los requisitos para la utilización Di2.- Diseño de la base de datos Di2.1.- Diseño conceptual de la base de datos Di2.2.- Diseño lógico de la base de datos Di2.3.- Normalización del modelo lógico de datos Di2.4.- Diseño físico de la base de datos Di3.- Diseño de interfaces I.- Implementación Este proceso tiene como objetivo principal la creación del entorno de trabajo y la generación del código que dará resultado a nuestra aplicación. I1.- Instalación del entorno I1.1.- Implantación de la base de datos I1.2.- Preparación del entorno para la generación de código I2.- Generación de código P.-Pruebas Este proceso tiene por objetivo hacer las pruebas necesarias para comprobar el correcto funcionamiento del sistema y la creación de los manuales de usuario que sean necesarios. P1.-Ejecución de pruebas P1.1.- Pruebas de integración en el sistema P1.2.- Pruebas del sistema P2.- Creación de manuales de usuario In.- Integración Este proceso tiene como objetivo principal la entrega y aceptación del sistema y la realización de las actividades necesarias para el paso a producción. In1.- Establecimiento del plan de implantación In2.- Carga de datos Página 15 de 95 Memoria PFC SEHCYT Daniel Delgado In3.- Presentación del sistema In3.1.- Convocatoria de la presentación del sistema In3.2.- Aprobación del sistema 1.6.5. Estimación de la duración de los procesos, actividades y tareas D.- Dirección D1.- Gestión del plan D1.1.- Seguimiento del plan de objetivos 2 h. D1.2.- Seguimiento del plan de comunicaciones 2 h. D1.3.- Seguimiento del plan de riesgos 2h. 6h. D2.- Reuniones D2.1.- Preparación de temas a tratar 2h. D2.2.- Exposición de temas 5h. D2.3.- Redacción de actas 4h. 11h. D3.- Creación del DOP D3.1.- Recopilación de información para la realización… 5h. D3.2.- Análisis de la información obtenida 10h. D3.3.- Redacción de la memoria 10h. 25h. D4.- Creación de la memoria D4.1.- Documentación y recopilación… 10h. D4.2.- Redacción de la memoria 40h. 50h. D5.- Preparación de la defensa D5.1.- Resumen con los puntos importantes 4h. D5.2.- Preparación de material para la presentación 4h. D5.3.- Ensayo de la defensa 4h. 12h. Total Dirección.- 104h. A.-Análisis A1.- Definición del sistema A1.1.- Determinación de los objetivos del proyecto 3h. A1.2.- Identificación del entorno tecnológico 1h. A1.3.- Identificación de los usuarios participantes y finales 1h. 5h. A2.- Obtención de requisitos 7h. A3.- Especificación de casos de uso 5h. A4.- Definición de interfaces A4.1.- Especificación de principios generales de la interfaz 3h. 13h. Página 16 de 95 Memoria PFC SEHCYT Daniel Delgado A4.2.- Identificación de ventanas de diálogo 5h. A4.3.- Especificación del comportamiento de la interfaz 5h. A5.- Especificación del plan de pruebas 8h. Total Análisis.- 38h. Di.- Diseño Di1.- Definición de la arquitectura del sistema Di1.1.- Definición de los niveles de arquitectura 2h. Di1.2.- Identificación de requisitos de diseño y construcción 1h. Di1.3.- Especificación del entorno tecnológico 1h. Di1.4.- Especificación de los requisitos para la utilización 1h. Di2.- Diseño de la base de datos Di2.1.- Diseño conceptual de la base de datos 15h. Di2.2.- Diseño lógico de la base de datos 5h. Di2.3.- Normalización del modelo lógico de datos 5h. Di2.4.- Diseño físico de la base de datos 4h. Di3.- Diseño de interfaces 5h. 29h. 25h. Total Diseño.- 59h. I.- Implementación I1.- Instalación del entorno 10h. I1.1.- Implantación de la base de datos 7h. I1.2.- Preparación del entorno para la generación de código 3h. I2.- Generación de código P.-Pruebas P1.-Ejecución de pruebas P1.1.- Pruebas de integración en el sistema 2h. P1.2.- Pruebas del sistema 8h. P2.- Creación de manuales de usuario In.- Integración In1.- Establecimiento del plan de implantación In2.- Carga de datos In3.- Presentación del sistema 180h. Total Implementación.- 190h. 10h. 15h. Total Pruebas.- 25h. 3h. 10h. 2h. Página 17 de 95 Memoria PFC SEHCYT Daniel Delgado In3.1.- Convocatoria de la presentación del sistema 1h. In3.2.- Aprobación del sistema 1h. Total Integración.- 15h. Así, el total de horas estimadas para la realización del proyecto es de 431 horas. A continuación mostramos el calendario previsto para la realización de cada proceso, actividad y tarea. La duración se refiere a la aproximada en días. Proceso/Actividad/Tarea Fecha de inicio Fecha de fin Duración Proyecto completo 14/02/2011 23/08/2011 114 Dirección Gestión del plan D1.1 D1.2 D1.3 Reuniones D2.1 D2.2 D2.3 Creación del DOP D3.1 D3.2 D3.3 Creación de la memoria D4.1 D4.2 Preparación de la defensa D5.1 D5.2 D5.3 Análisis Definición del sistema A1.1 A1.2 A1.3 Obtención de requisitos Especificación de casos de uso Definición de interfaces A4.1 A4.2 A4.3 Especificación del plan de pruebas Diseño 14/02/2011 14/02/2011 14/02/2011 14/02/2011 14/02/2011 14/02/2011 14/02/2011 14/02/2011 14/02/2011 21/02/2011 21/02/2011 22/02/2011 24/02/2011 04/03/2011 04/03/2011 04/03/2011 18/08/2011 18/08/2011 19/08/2011 22/08/2011 04/03/2011 04/03/2011 04/03/2011 04/03/2011 04/03/2011 07/03/2011 09/03/2011 10/03/2011 10/03/2011 11/03/2011 14/03/2011 15/03/2011 17/03/2011 114 114 114 114 114 114 114 114 114 6 1 2 3 100 100 100 3 1 1 1 9 1 1 1 1 2 1 3 1 1 1 2 18 23/08/2011 23/08/2011 23/08/2011 23/08/2011 23/08/2011 23/08/2011 23/08/2011 23/08/2011 23/08/2011 01/03/2011 22/02/2011 24/02/2011 01/03/2011 18/08/2011 18/08/2011 18/08/2011 23/08/2011 19/08/2011 20/08/2011 23/08/2011 17/03/2011 05/03/2011 05/03/2011 05/03/2011 05/03/2011 09/03/2011 10/03/2011 15/03/2011 11/03/2011 12/03/2011 15/03/2011 17/03/2011 15/04/2011 Página 18 de 95 Memoria PFC SEHCYT Daniel Delgado Definición de la arquitectura del sistema Di1.1 Di1.2 Di1.3 Di1.4 Diseño de la base de datos Di2.1 Di2.2 Di2.3 Di2.4 Diseño de interfaces Implementación Instalación del entorno I1.1 I1.2 Generación de código Pruebas Ejecución de pruebas P1.1 P1.2 Creación de manuales de usuario Integración Establecimiento del plan de implantación Carga de datos Presentación del sistema In3.1 In3.2 17/03/2011 17/03/2011 18/03/2011 21/03/2011 22/03/2011 23/03/2011 23/03/2011 28/03/2011 01/04/2011 05/04/2011 06/04/2011 15/04/2011 15/04/2011 15/04/2011 20/04/2011 28/04/2011 15/07/2011 15/07/2011 15/07/2011 18/07/2011 20/07/2011 10/08/2011 10/08/2011 11/08/2011 16/08/2011 16/08/2011 17/08/2011 23/03/2011 18/03/2011 19/03/2011 22/03/2011 23/03/2011 06/04/2011 26/03/2011 29/03/2011 05/04/2011 06/04/2011 15/04/2011 15/07/2011 21/04/2011 20/04/2011 21/04/2011 15/07/2011 10/08/2011 20/07/2011 16/07/2011 20/07/2011 10/08/2011 18/08/2011 11/08/2011 16/08/2011 18/08/2011 17/08/2011 18/08/2011 4 1 1 1 1 7 3 1 2 1 7 49 4 3 1 45 18 3 1 2 15 6 1 3 2 1 1 1.6.6. Orden de procesos Dirección Análisis Diseño Integración Implementación Pruebas Página 19 de 95 Memoria PFC SEHCYT Daniel Delgado 1.6.7. Diagrama de Gantt Diagrama de Gantt Página 20 de 95 Memoria PFC SEHCYT 1.7. Daniel Delgado Tecnología El cliente no nos ha especificado las tecnologías que debemos usar. Por lo tanto, y ya que personalmente me interesa por motivos de formación las tecnologías que se aplicarán para el desarrollo del proyecto serán: Tecnología software web: PHP Tecnología contenedor web: Apache Servidor de bases de datos: MySQL Esto no quiere decir que serán únicas y exclusivas. Además, si por algún motivo nos vemos en dificultades en las fases iniciales podremos optar por cambiarlas. Notar que estas tecnologías son todas de código libre lo que nos ayuda para con el trabajo y su difusión. 1.8. DOP (Documento de objetivos del proyecto). Aplicación web. Manual de usuario. Memoria. Presentación pública del proyecto ante los miembros del tribunal. 1.9. Entregables principales del proyecto Dirección de riesgos Pérdida de información debido a problemas informáticos. o Actuación: Se recupera la última versión del backup. Enfermedad o accidente tanto del director del proyecto como del tutor. o Actuación: Podría ser necesario ampliar los plazos de entrega o reducir el alcance del proyecto. El cliente no está satisfecho con el trabajo presentado o hay errores en la compresión de los requisitos. o Actuación: Se intentará que desde un primer momento esto no pase consultando al cliente si está de acuerdo con el proyecto tanto en las fases iniciales de obtención de requisitos como en las fases de diseño. El cliente debe dar confirmación cuando se le presenten los borradores de las interfaces gráficas para su posterior implementación. Desconocimiento de las herramientas necesarias. o Actuación: Se amplían los plazos de entrega o se reduce el alcance del proyecto. Página 21 de 95 Memoria PFC SEHCYT Daniel Delgado Mala estimación de la duración real del proyecto. o Actuación: Se tiene en cuenta que esto puede ocurrir y entonces se necesitaría replanificar el proyecto y volver a hacer otra estimación. Página 22 de 95 Memoria PFC SEHCYT Daniel Delgado 2. Análisis Este proceso servirá para la obtención de una especificación detallada del sistema de información siendo ésta la base para el diseño de nuestro proyecto. Parte de este trabajo puede haber sido ya hecho en el DOP. 2.1. Definición del sistema 2.1.1. Determinación de los objetivos del proyecto [Adaptación de la sección 1.4 Descripción del DOP] Se desea construir una aplicación/portal web en la que se pueda gestionar vía web diversos aspectos de la sociedad española de historia de las ciencias y de las técnicas. Cualquier usuario tendrá acceso al portal y podrá ver los contenidos públicos además de identificarse si es necesario como usuario (socio) de la aplicación. Así, tendremos varios grupos de usuarios y cada uno de ellos tendrá una restricción u otra a la hora de usar nuestra aplicación web. Estas restricciones nos permitirán o no el poder interactuar y/o ver la información sobre los congresos o sobre las actividades que desarrolla la sociedad. También limitará y restringirá el acceso a otras cosas como la revista Llull que se publica semestralmente, o a otro tipo de publicaciones como libros o artículos. El portal web será rediseñado pero seguirá contando con los mismos contenidos que tiene actualmente, si es caso se podrán incluso completar los que ya hay. Además, será posible el crear una plantilla/ejemplo para que si un miembro de la sociedad es el encargado de organizar una conferencia o unas jornadas pueda fácilmente seguir la estructura y el diseño de nuestra web para su difusión. Así todo quedará más organizado y visualmente más atractivo. Ahora mismo, la sociedad tiene repartida por múltiples universidades todos sus contenidos y la idea es agrupar todo para ayudar a su gestión. Se creará una base de datos con los socios de la sociedad en la que cada uno tendrá un perfil y en la que el administrador podrá otorgar permisos para poder entrar a ciertas partes de la aplicación. Por ejemplo, los socios, que pagan una cuota tendrán acceso a través de una intranet a la consulta de la revista. Incluso podría haber casos en los que un antiguo socio o ciertos miembros de nuestra base de datos también pueden ver las revistas; esto significa que existirían ciertas excepciones gestionadas por el administrador. Existirá un administrador único, el secretario, pero también habrá un tesorero que tendrá acceso a los datos bancarios de la sociedad, sólo a estos datos, que no podrán ser vistos por los socios normales. Página 23 de 95 Memoria PFC SEHCYT Daniel Delgado Si hay alguien que quiere ser socio de SEHCYT tiene que pedirlo a la junta directiva, en nuestro caso personificado en el secretario (administrador), tras realizar la junta y tras los pagos será el administrador el que dé de alta en el sistema a este usuario, entonces al nuevo socio se le enviarán los datos de acceso a la intranet. Es interesante también que haya un histórico de socios que cuente tanto con los socios actuales como con los miembros que ya no pertenecen a la sociedad. Además, la aplicación también tendrá que tener un sistema de mensajería en el que los socios puedan enviar mensajes de correo, ya sea a uno o a un grupo de ellos. Se creará un foro para que además de los mensajes privados que los usuarios se envíen también se puedan escribir noticias u otro tipo de cosas. Los libros o artículos que la sociedad publica están físicamente alojados en la biblioteca de la Universidad de La Rioja, la aplicación tendrá otra base de datos con la información sobre estos libros. 2.1.2. Identificación del entorno tecnológico El objetivo es definir más concretamente el entorno tecnológico que se requiere para dar respuesta a las necesidades del proyecto, especificando sus posibles condicionantes y restricciones. Hardware En principio, el ordenador con el que se va a trabajar será mi ordenador personal. En él se van a realizar las pruebas y prácticas que vayan surgiendo. Este ordenador actuará como servidor y alojará la base de datos. También es posible que se usen de forma circunstancial otros ordenadores como los de la universidad. Si al final el cliente cree conveniente la incorporación del sistema a otro servidor para alojar y disponer de la aplicación en la vida real más allá del proyecto fin de carrera se estudiarán las necesidades que requiere y sus posibilidades. Software El ordenador sobre el que correrá la aplicación tiene como sistema operativo Windows, la base de datos MySQL y la propia aplicación que desarrollemos. Se espera que la aplicación funcione correctamente en los navegadores habituales del mercado como Internet Explorer, Mozilla Firefox, Google Chrome, etc. 2.1.3. Identificación de los usuarios participantes y finales Se identifican a continuación los usuarios participantes tanto en la obtención de requisitos como en la validación de las distintas fases del producto y la aceptación del sistema. Página 24 de 95 Memoria PFC SEHCYT Daniel Delgado Daniel Delgado: Director del proyecto o Encargado del desarrollo del proyecto y gestión del mismo. Tomador de las decisiones finales y participación total a lo largo de todo el proyecto. Ana Romero: Tutora del proyecto o Encargada de la supervisión del proyecto. Orientadora en la toma de decisiones y su participación es esporádica. Cuando sea necesario. Luis Español: Cliente del proyecto o Es quien ha encargado la realización del proyecto. Representante de SEHCYT. Determina los requisitos que ha de cumplir el sistema. Su participación también es esporádica. Miembros del tribunal: Grupo de profesores que evalúan el proyecto. o Evalúan el proyecto y sólo participan una vez, al final. 2.2. Obtención de requisitos A continuación se muestra un listado de los requisitos que debe cumplir nuestro sistema. Usuario: El sistema contará con cuatro tipos diferentes de usuario, el secretario como administrador, el tesorero, los socios y los no socios. o No socio: Usuario que no requiere de identificación. - Visualiza toda la información pública y abierta del sistema. - Tiene acceso a las revistas antiguas de SEHCYT (más de 2 años). - Tiene acceso a las noticias publicadas. - Puede leer la información de los libros publicados. - Pide ser miembro de la sociedad al administrador. o Socio: Cada uno de ellos se identifica bajo un usuario y una contraseña. - Tiene acceso a las revistas publicadas en los dos últimos años. - Puede leer y escribir en el foro de la comunidad. - Puede acceder a su correo privado y enviar mensajes a otros socios. - Puede modificar sus datos personales. - Puede consultar las plantillas para la difusión de eventos. - Tiene todas las posibilidades de los no socios excepto obviamente pedir ser socio. o Tesorero: Es único y se identifica bajo un usuario y una contraseña. - Tiene el privilegio de ver los datos bancarios de los demás socios. - Tiene todas las posibilidades de los socios y los no socios. o Administrador: Es único y se identifica bajo un usuario y una contraseña. - Incluye y borra (bloquea) nuevos socios. - Envía el usuario y la contraseña a los nuevos socios. - Incluye, borra y modifica las revistas y las actas en el sistema. Página 25 de 95 Memoria PFC SEHCYT - 2.3. Daniel Delgado Incluye, borra y modifica la información sobre los libros publicados por SEHCYT. Incluye, borra y modifica noticias y otra información ya sea pública o en la intranet. Tiene todas las posibilidades del tesorero, del socio y del no socio. Especificación de casos de uso A continuación se muestran únicamente los actores del sistema. Estos siguen un esquema muy claro de herencia. Descripción de los actores 2.3.1. Usuario no socio Ver contenido: el usuario pulsa en los enlaces que son abiertos para consulta. Ver revistas antiguas: el usuario tiene a su disposición una lista con las revistas con más de dos años de antigüedad. Si pulsa sobre alguna de ellas puede verlas en el formato subido, normalmente pdf. Leer noticia: el usuario tiene a su disposición una lista con las dos últimas noticias publicadas. Puede pulsar el botón correspondiente para ver las dos siguientes noticias publicadas ordenadas de acuerdo a su fecha de publicación. Pedir ser socio: el usuario rellena un formulario que es enviado al administrador para aprobación. Leer información sobre los libros publicados: el usuario puede ver la información sobre los libros publicados por SEHCYT. Los libros se muestran en listas de cinco y pulsando sobre ellos se puede ver toda la información relativa a ese libro. Página 26 de 95 Memoria PFC SEHCYT Daniel Delgado Caso de uso No Socio 2.3.2. Usuario socio El usuario socio ya ha sido dado de alta en el sistema por el administrador. Acceder al sistema: el usuario escribe su usuario y su contraseña para identificarse. Escribir/leer en foro: el usuario una vez registrado lee y/o deja un mensaje en el foro. Los mensajes vienen organizados en grupos de cuatro mensajes. Modificar datos: el usuario modifica sus datos personales. Leer revista: el usuario tiene a su disposición una lista con las últimas revistas publicadas. Si pulsa sobre alguna de ellas puede verlas en el formato subido, normalmente formato pdf. Leer acta: el usuario tiene a su disposición una lista con las últimas actas publicadas. Si pulsa sobre alguna de ellas puede verlas en formato pdf. También puede pulsar en el botón correspondiente para ver las siguientes diez actas ordenadas de acuerdo a su fecha de publicación. Enviar correo-e: el usuario escribe un mensaje y lo envía a otro. Leer correo-e: el usuario lee los correos que ha recibido. Consultar plantillas: el usuario pulsa para ver la plantilla de difusión de eventos. Notemos que un usuario no socio únicamente puede leer las revistas con más de dos años de antigüedad. A su vez, un usuario socio puede leer todas las revistas publicadas ya sean antiguas o recién publicadas. Página 27 de 95 Memoria PFC SEHCYT Daniel Delgado Caso de uso Socio 2.3.3. Tesorero El tesorero ya ha sido dado de alta en el sistema por el administrador. Acceder al sistema: el tesorero escribe su usuario y su contraseña para identificarse. Consultar datos bancarios: el tesorero pulsa para consultar los datos bancarios de los socios. Podrá hacer búsquedas por nombre, por dni o por número de socio. Obtendrá una lista de los datos bancarios de los socios buscados. Caso de uso Tesorero Página 28 de 95 Memoria PFC SEHCYT Daniel Delgado 2.3.4. Administrador El administrador del sistema será el secretario de la sociedad. Ver contenido: el secretario pulsa en los enlaces que son abiertos para consulta. Acceder al sistema: el secretario escribe su usuario y su contraseña para identificarse. Publicar acta: el secretario publica las actas en la intranet para consulta de socios. Modificar/borrar acta: el secretario modifica o borra un acta que ha sido publicada previamente. Subir revista: el secretario cuelga una nueva revista para su lectura. Modificar/borrar revista: el secretario modifica o borra una revista que ha sido publicada previamente. Subir noticia: el secretario cuelga una noticia para su lectura, estas están disponibles para lectura de cualquier usuario. Modificar/borrar noticia: el secretario modifica o borra una noticia que ha sido publicada previamente para cualquier usuario. Dar de alta socios: el secretario crea un usuario nuevo y envía el usuario y la contraseña al nuevo socio creado. Modificar datos socios: el secretario modifica los datos personales de los socios. Borrar socio: el secretario elimina un socio de la base de datos del sistema. Subir información sobre los libros: el secretario cuelga la información sobre los libros publicados por SEHCYT para su consulta, esta información está disponible para lectura de cualquier usuario. Modificar/borrar información sobre los libros: el secretario modifica o borra la información que ha sido publicada previamente sobre un libro publicado. Borrar mensajes del foro: el secretario borra mensajes escritos en el foro. Página 29 de 95 Memoria PFC SEHCYT Daniel Delgado Caso de uso Secretario 2.4. Definición de interfaces 2.4.1. Especificación de principios generales de la interfaz El objetivo de esta tarea es especificar los estándares, directrices y elementos generales a tener en cuenta en la definición de la interfaz de usuario. Página 30 de 95 Memoria PFC SEHCYT Daniel Delgado El objetivo es crear una interfaz de usuario acorde a las necesidades de la sociedad, flexible, coherente, eficiente y sobre todo, sencilla de usar. El diseño de las páginas se hará teniendo en cuenta las preferencias del cliente. Aún así, la idea es seguir dentro de lo que se pueda una línea visual más o menos parecida a la que ya existe en la actual web de SEHCYT. De esta forma, el cambio no será tan brusco y además parecerá más amigable. En la parte superior se mostrará una cabecera que contendrá una imagen, logo o similar de tal forma que siempre quede claro qué página web se está visualizando. A su vez, en la parte de abajo habrá un pie en el que se incluirán los aspectos formales de la sociedad y que también estará siempre visible. El otro elemento que permanente de la aplicación será el menú, que se situará a la izquierda y en la que se podrán ver ciertas opciones de información y que darán origen a las páginas estáticas (en la parte central). Además, en este menú tendremos acceso a la página de acceso a la intranet y también al foro de la comunidad. En la parte central se generará el contenido de cada página y ocupará casi la totalidad de la vista. Menú Cabecera Contenido central Pie Interfaz general El aspecto de todos los elementos de la aplicación será similar en cuanto al tipo de texto y los colores, homogeneizando así el diseño. El tamaño del texto de los títulos será superior al del contenido. Se tendrá en cuenta que el usuario no tiene por qué saber nada sobre programación web por lo que se tratará de que el lenguaje sea lo más orientado hacia el usuario estándar posible para que no haya problemas a la hora de la navegación. Página 31 de 95 Memoria PFC SEHCYT Daniel Delgado 2.4.2. Identificación de ventanas de diálogo A continuación se va a hacer una aproximación de lo que serán las ventanas, desde un punto de vista estático, en las que la aplicación tiene una “conversación” con el usuario. Estos diálogos son parte de la aplicación y aparecerán en el portal dentro de él como un contenido con los tres elementos fijos (cabecera, menú y pie) siempre visibles. Diálogo de login: El usuario ya tiene un usuario y una contraseña. Diálogo login El comportamiento de esta ventana se puede seguir a través del diagrama de actividad. Diagrama de actividad login Diálogo para pedir ser socio: El usuario (que no es socio) pide a través de un formulario ser socio. Página 32 de 95 Memoria PFC SEHCYT Daniel Delgado Diálogo datos para ser socio El comportamiento de esta ventana se puede seguir a través del diagrama de actividad. Diagrama de actividad pedir ser socio Diálogo para escribir un mensaje en el foro: El usuario escribe un mensaje en el foro de la comunidad bajo un nuevo tema o bajo uno ya existente. Página 33 de 95 Memoria PFC SEHCYT Daniel Delgado Diálogo escribir en el foro El comportamiento de esta ventana se puede seguir a través del diagrama de actividad. En este caso se supone que el usuario está ya registrado. De no ser así, previamente tendría que registrarse siguiendo los diálogos anteriores. Diagrama de actividad escribir en el foro Página 34 de 95 Memoria PFC SEHCYT Daniel Delgado 2.4.3. Especificación del comportamiento de la interfaz Como ya se ha comentado, al abrir la página web veremos cuatro módulos diferentes, tres de ellos fijos y uno de ellos que se modifica de acuerdo a las opciones que vayamos pulsando. Los tres módulos fijos son: Cabecera Menú Pie Y el módulo central, el más grande de ellos que será el que nos aportará el contenido. Tanto si pulsamos cualquiera de las opciones de los elementos fijos como si pulsamos una opción disponible dentro del contenido central lo que cambiará será el módulo central. Cabe destacar que puede haber ciertos contenidos que se muestren en ventanas o pestañas nuevas como por ejemplo los contenidos en formato pdf porque es mucho más legible y claro. 2.5. Especificación del plan de pruebas En esta actividad se comienza a definir el plan de pruebas, el cual sirve como guía para la realización de las pruebas, y permite verificar que la aplicación desarrollada cumple las necesidades requeridas por el cliente con las debidas garantías de calidad. Las pruebas serán ejecutadas en el proceso Pruebas pero ahora definiremos los aspectos más importantes a tener en cuenta cuando éstas se produzcan. Necesitaremos un entorno diferente para realizar las pruebas ya que podría ser que bajo el puesto que hemos estado creando la aplicación funcione perfectamente pero no en otro. Así tendremos que instalar todo el software necesario y comprobar las especificaciones de hardware. De esta forma, las pruebas se pueden considerar más exactas. Evidentemente el portal debe tener un comportamiento totalmente funcional pero para que se cumplan los criterios de aprobación más específicos debemos prestar especial atención a ciertas partes críticas del sistema: Login Funcionamiento del foro Funcionamiento del correo-e Restricción de contenidos Además, el rendimiento de la aplicación debe ser óptimo, los tiempos de respuesta no deben de ser muy altos y el espacio en disco usado tampoco debe ser muy grande. Debemos completar un acta para cada una de las pruebas que tomemos. Página 35 de 95 Memoria PFC SEHCYT Prueba nº: Daniel Delgado Fecha: ____ /____ / 201__ Se prueba: Probador: Satisfactorio: Sí No Comentarios: Página 36 de 95 Memoria PFC SEHCYT Daniel Delgado 3. Diseño Este proceso es la definición de la arquitectura del sistema, el diseño de la base de datos y el diseño de elementos visuales tales como las interfaces. 3.1. Definición de la arquitectura del sistema En esta actividad se definirá la arquitectura general del sistema de información, especificando las distintas particiones físicas del mismo, la descomposición lógica en subsistemas de diseño y la ubicación de cada subsistema en cada partición, así como la especificación detallada de la infraestructura tecnológica necesaria para dar soporte al sistema. 3.1.1. Definición de los niveles de arquitectura En esta tarea se describen los niveles de la arquitectura software, mediante la definición de las principales particiones físicas del sistema, representadas como nodos y comunicaciones entre estos. El sistema de información estará formado por dos capas: Capa de persistencia (datos): Será la responsable del acceso a las fuentes de datos del sistema. Independizará a la aplicación de las características, almacenamiento y estructura de los datos. Su labor principal será la de implementar las operaciones de creación, lectura, actualización y eliminación de los datos del sistema. Capa de presentación: Se encargará de mostrar la información devuelta por la capa de persistencia, así como de recibir las peticiones del usuario y procesarlas, tras el proceso, los datos se muestran en esta capa de presentación de nuevo. Estas dos capas se localizarán en dos máquinas distintas dando lugar a una topología de dos niveles: un ordenador como cliente, o navegador web, y otro ordenador como servidor. La topología denominada cliente/servidor. Los datos estarán en el servidor y la capa de presentación se mueve al cliente. Servidor Cliente Datos Present. Página 37 de 95 Memoria PFC SEHCYT Daniel Delgado Se ha decidido trabajar solo con dos capas y no con las tres habituales. El motivo de omitir la capa de lógica es que la aplicación no va tener algoritmos grandes o complicados por lo cual, los algoritmos que se creen se integrarán dentro de la capa de presentación. Las ventajas de este sistema son: Los clientes son independientes entre sí. Los datos se almacenan en los servidores, así que existe una mayor capacidad para el control de la seguridad. Se puede aumentar la capacidad de clientes y servidores por separado. Se pueden tener varias capas de presentación dependiendo del tipo de usuario (administrador, socio, no socio). 3.1.2. Identificación de requisitos de diseño y construcción En esta tarea se especifican los requisitos que están relacionados y pueden condicionar el diseño y la construcción de la aplicación. Tendremos que tener en cuenta y deberemos añadir a los requisitos algún otro, por ejemplo: El servidor debe permitir que varios usuarios se conecten al mismo tiempo. La base de datos y el sistema de gestión de bases de datos deben encontrarse en el mismo puesto que el contenedor web y sus componentes. 3.1.3. Especificación del entorno tecnológico En esta tarea se definen con más detalle los distintos elementos de la infraestructura técnica que dan soporte al sistema, durante el desarrollo de la aplicación tanto en la parte del cliente como en la del servidor se utiliza el ordenador personal del proyectando, un HP 6710b, Intel Core 2 Duo T7250, con 1GB de memoria RAM y 120GB de memoria ROM bajo Windows XP. Al finalizar el proyecto, el cliente y el servidor cambiarán: Cliente o Hardware: Son todos los puestos desde los cuales se podrá acceder al servidor. o Software: El sistema operativo que usan los clientes no tiene porque ser el mismo que el del servidor. El navegador de los clientes podrá ser cualquiera de los habituales, Internet Explorer, Mozilla Firefox, Google Chrome. Servidor o Hardware: Deberá ser un servidor lo suficientemente grande como para almacenar todos los datos de la base de datos y que a ser posible pueda trabajar lo más rápidamente posible. Página 38 de 95 Memoria PFC SEHCYT o o Daniel Delgado Software: En el sistema habrá un sistema gestor de bases de datos (SGBD) para poder acceder a los datos de la BD. Usaremos PHP y Apache como tecnología a usar en el servidor web, así como MySQL como servidor de la base de datos. Comunicaciones: El sistema se comunicará por uno de los protocolos estándar, TCP/IP. 3.1.4. Especificación de los requisitos para la utilización Definiremos a continuación los procedimientos de seguridad y de control de acceso para garantizar la protección del sistema y minimizar el riesgo de errores. Acceso al sistema: Nuestro portal web será pensado y diseñado como si finalmente se fuese a implantar en un servidor externo y de acceso a cualquier tipo de usuario. Por lo tanto, el acceso al sistema será a través de la web. Acceso a la intranet: El acceso a los servicios restringidos de la intranet estará protegido mediante un usuario y una contraseña para garantizar que nadie pueda entrar libremente sin identificación. Confidencialidad de los datos: Los usuarios tendrán asegurado que sus datos personales privados no son mostrados al resto de usuarios. El administrador sí que podrá acceder a estos datos, excepto los del login. Mantenimiento de la integridad de los datos: Se proporcionará la capacidad de realizar operaciones concurrentes, por ello, las operaciones de actualización, de inserción y de borrado de datos se realizarán como transacciones. Copias de seguridad: Cada cierto tiempo se realizarán copias de seguridad en CD-ROM o en discos duros externos extraíbles. Bloqueo de usuarios: El administrador tendrá la capacidad de bloquear y borrar usuarios que por algún motivo no deban de tener acceso al sistema. 3.2. Diseño de la base de datos En esta actividad se define la estructura de la base de datos que utilizará el sistema para conseguir una mayor eficiencia en el tratamiento de los datos. Para la realización de esta actividad nos basamos en los requisitos obtenidos en la fase de Análisis. Página 39 de 95 Memoria PFC SEHCYT Daniel Delgado 3.2.1. Diseño conceptual de la base de datos El objetivo de esta tarea es producir un esquema conceptual de la base de datos que sea independiente del sistema de gestión de bases de datos que utilicemos. Usamos el modelo de entidad relación. Diagrama Entidad Relación El diagrama muestra las entidades con sus atributos. Además se pueden ver cuatro relaciones, las cuatro son relaciones 1..N. Para la creación del foro de discusión vamos a tener en cuenta dos entidades principales además del usuario que nos permitirán su creación y gestión. Un usuario podrá escribir uno o varios temas pero un tema solo será escrito por un único usuario. De ahí la relación “escribe” entre usuario y tema. Cada tema tiene un asunto y un mensaje y de cada tema dependerán los comentarios a ese tema. Los comentarios van asociados a un tema que ha sido previamente escrito. Así, puede haber varios comentarios asociados a un mismo tema. A su vez, es obvio Página 40 de 95 Memoria PFC SEHCYT Daniel Delgado que los comentarios son escritos por usuarios, que pueden ser diferentes al usuario que escribió el tema principal. Además, tenemos la relación paga que nos dará una idea de las cuotas que ha pagado cada usuario y cuando. Cada usuario podrá pagar varias cuotas pero cada una de ellas es pagada por un único usuario. 3.2.2. Diseño lógico de la base de datos En esta tarea se transforma lo diseñado en la tarea anterior al modelo de datos. Se generan las especificaciones para la creación de la base de datos mediante el gestor elegido. Tablas Base de Datos Página 41 de 95 Memoria PFC SEHCYT Daniel Delgado En nuestro caso la base de datos será MySQL. Las tablas corresponden directamente a las entidades porque las relaciones que existen son todas 1..N. Las tablas que intervienen en nuestra base de datos son las mostradas en el gráfico anterior. A continuación expresamos las tablas en formato SQL. -- Base de datos: `sehcyt` USE `sehcyt` ; -- ------------------------------------------------------ Table `sehcyt`.`Usuario` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `sehcyt`.`Usuario` ( `numero` INT NOT NULL AUTO_INCREMENT , `dni` VARCHAR(45) NOT NULL , `nombre` VARCHAR(45) NOT NULL , `nombreusuario` VARCHAR(45) NOT NULL , `password` VARCHAR(45) NOT NULL , `apellido1` VARCHAR(45) NOT NULL , `apellido2` VARCHAR(45) NULL , `mail` VARCHAR(45) NOT NULL , `telefono` INT NULL , `direccion` VARCHAR(45) NULL , `localidad` VARCHAR(45) NULL , `cuenta bancaria` VARCHAR(45) NULL , `activo` TINYINT(1) NULL , `admin` TINYINT(1) NULL , `tesorero` TINYINT(1) NULL , `fechaalta` DATE NULL , PRIMARY KEY (`numero`) , UNIQUE INDEX `nombreusuario_UNIQUE` (`nombreusuario` ASC) , UNIQUE INDEX `dni_UNIQUE` (`dni` ASC) ); -- ------------------------------------------------------ Table `sehcyt`.`Tema` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `sehcyt`.`Tema` ( `idTema` INT NOT NULL AUTO_INCREMENT , `usuario` VARCHAR(45) NULL , `asunto` VARCHAR(45) NULL , `mensaje` MEDIUMTEXT NULL , `fecha` DATE NULL , PRIMARY KEY (`idTema`), Página 42 de 95 Memoria PFC SEHCYT Daniel Delgado INDEX `escribe` (`usuario` ASC) , CONSTRAINT `escribe` FOREIGN KEY (`usuario` ) REFERENCES `sehcyt`.`Usuario` (`nombreusuario` ) ); -- ------------------------------------------------------ Table `sehcyt`.`Noticia` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `sehcyt`.`Noticia` ( `idNoticia` INT NOT NULL AUTO_INCREMENT , `titulo` VARCHAR(45) NULL , `texto` LONGTEXT NULL , `fechapubli` DATE NULL , PRIMARY KEY (`idNoticia`) ); -- ------------------------------------------------------ Table `sehcyt`.`Acta` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `sehcyt`.`Acta` ( `idActa` INT NOT NULL AUTO_INCREMENT , `fechapubli` DATE NULL , `ruta` VARCHAR(45) NULL , PRIMARY KEY (`idActa`) ); -- ------------------------------------------------------ Table `sehcyt`.`Revista` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `sehcyt`.`Revista` ( `idRevista` INT NOT NULL AUTO_INCREMENT , `fechapubli` DATE NULL , `ruta` VARCHAR(45) NULL , PRIMARY KEY (`idRevista`) ); -- ------------------------------------------------------ Table `sehcyt`.`Libro` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `sehcyt`.`Libro` ( `idLibro` INT NOT NULL AUTO_INCREMENT , `nombre` VARCHAR(45) NOT NULL , `autor` VARCHAR(45) NOT NULL , `fechapubli` VARCHAR(45) NULL , `descripcion` LONGTEXT NULL , Página 43 de 95 Memoria PFC SEHCYT Daniel Delgado PRIMARY KEY (`idLibro`) ); -- ------------------------------------------------------ Table `sehcyt`.`Comentario` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `sehcyt`.`Comentario` ( `idComentario` INT NOT NULL AUTO_INCREMENT , `tema` INT NULL , `usuario` VARCHAR(45) NULL , `fecha` DATE NULL , `mensaje` MEDIUMTEXT NULL , PRIMARY KEY (`idComentario`), INDEX `tiene` (`tema` ASC) , INDEX `escribe_` (`usuario` ASC) , CONSTRAINT `tiene` FOREIGN KEY (`tema` ) REFERENCES `sehcyt`.`Tema` (`idTema` ), CONSTRAINT `escribe_` FOREIGN KEY (`usuario` ) REFERENCES `sehcyt`.`Usuario` (`nombreusuario` ) ); -- ------------------------------------------------------ Table `sehcyt`.`Cuota` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `sehcyt`.`Cuota` ( `idCuota` INT NOT NULL AUTO_INCREMENT , `fecha` DATE NULL , `cantidad` INT NULL , `usuario` VARCHAR(45) NULL , PRIMARY KEY (`idCuota`) , INDEX `paga` (`usuario` ASC) , CONSTRAINT `paga` FOREIGN KEY (`usuario` ) REFERENCES `sehcyt`.`Usuario` (`nombreusuario` ) ); 3.2.3. Normalización del modelo lógico de datos El objetivo de esta tarea es comprobar si los modelos anteriores cumplen con la tercera forma normal. Tras analizar este hecho se comprueba que todas las tablas cumplen con esta forma normal con lo cual el diseño no sufre ninguna modificación. Página 44 de 95 Memoria PFC SEHCYT Daniel Delgado 3.2.4. Diseño físico de la base de datos A la vista del número de tablas y sus campos se prevé que nuestra base de datos no sea especialmente grande. Es por esto que no se crearán índices diferentes de los de las claves primarias o foráneas ni otras estructuras especiales de almacenamiento. 3.2.5. Modificaciones al diseño de la base de datos Tras analizar el diseño y ver que podrían mejorarse ciertos aspectos a continuación se describen en esta tarea los cambios que se han ido realizando en la base de datos. Nuevo campo en la tabla tema llamado fechultcom en el que se almacena la fecha del último comentario dependiente de ese tema concreto. ALTER TABLE `tema` ADD `fechultcom` DATE NOT NULL 3.3. Diseño de interfaces El diseño del portal web seguirá los siguientes estilos. El fondo será de color gris que contrasta con otro azul mucho más oscuro para los menús. Este contraste es evidente y su lectura es muy clara. Además, al elegir un color muy suave para el fondo nos aseguramos que el resto del contenido que será de color negro se lea con claridad. La cabecera será una imagen con aproximadamente los mismos colores y en el que se pueden ver las siglas de la sociedad. A continuación mostramos una interfaz de la página principal en la que su diseño es ya prácticamente definitivo. El diseño final variará muy poco de este. Interfaz Página Principal Página 45 de 95 Memoria PFC SEHCYT Daniel Delgado Página 46 de 95 Memoria PFC SEHCYT Daniel Delgado 4. Implementación Este proceso tiene como objetivo principal la creación del entorno de trabajo y la generación del código que dará resultado a nuestra aplicación. 4.1. Instalación del entorno 4.1.1. Implantación de la base de datos Tras el diseño de la base de datos la implantación de esta se ha hecho bajo MySQL. Se han cargado algunos datos en las tablas creadas para poder realizar pruebas y nos hemos apoyado cuando lo hemos necesitado en herramientas tales como MySQL Workbench 5.2 CE y el propio phpMyAdmin por comodidad y sencillez. Para la realización del código se ha trabajado en el puesto personal del proyectando por lo que la base de datos con estos datos iniciales quedaba almacenada ahí. Inicialmente la base de datos ha sido creada bajo el diseño inicial. Para los cambios posteriores simplemente se han añadido los campos necesarios insertando el código SQL en phpMyAdmin. 4.1.2. Preparación del entorno para la generación de código A la hora de crear el código fuente de la aplicación nos hemos ayudado de Adobe Dreamweaver CS3. Para la creación de las imágenes y/o logos hemos usado Adobe Photoshop CS4. Para poder trabajar en el puesto del proyectando hemos necesitado instalar en ese puesto un servidor independiente. En este caso, para nuestra tarea hemos usado un servidor bajo licencia GNU, XAMPP en la versión 2.5, que consiste en la base de datos MySQL, el servidor web Apache, Mercury para el sistema de correo electrónico y el lenguaje PHP entre otras cosas. Para el sistema de correo electrónico se ha configurado en Mercury lo necesario para que envíe los correos a y mediante la dirección de correo sehcyt@gmail.com que ha sido creada para nuestra tarea. En nuestro caso, el archivo PHP.ini no hemos tenido que modificarlo en ningún caso ya que los valores por defecto nos han servido para nuestros objetivos. Página 47 de 95 Memoria PFC SEHCYT 4.2. Daniel Delgado Generación de código 4.2.1. Maquetación En la primera fase de la implementación se lleva a cabo la maquetación de la interfaz. Para ello se ha utilizado CSS con etiquetas <div>. A cada uno de estas etiquetas le denominamos capa. En nuestra aplicación hemos creado un archivo ‘estilos.css’ con el cual hemos definido la siguiente estructura de capas. contenedor cabecera lateral navbar conten pie El contenedor exterior tiene una anchura de 744 pixeles y una altura ‘automática’ que depende de las demás capas. La capa lateral tiene una anchura del 20% del ancho del contenedor exterior. Por su parte, la capa conten ocupa un 76%. Así tenemos espacio entre ellas para un mejor diseño. Dentro de esta capa conten también tenemos una capa de altura y anchura automática que se sitúa en la parte de arriba y que nos servirá como menú para las secciones de los socios y/o del administrador. Finalmente, en la parte de abajo tenemos la capa llamada pie que ocupa el ancho total del contenedor. Cada una de estas capas tienen sus propias características y propiedades de diseño. Todas ellas especificadas en el archivo estilos.css. Página 48 de 95 Memoria PFC SEHCYT Daniel Delgado 4.2.2. Estilo El fondo de nuestra aplicación tendrá un color gris (#cccccc) que contrasta con el negro de las letras del contenido y con el color azul (#134878) del menú. Hemos buscado colores que contrasten entre sí para que la lectura sea cómoda. En el menú de la capa lateral, que es de color azul oscuro, las letras (que son los hipervínculos a las secciones del portal) son del color del fondo lo que nos permite leerlas sin problemas. En la capa denominada navbar podemos encontrar la barra de navegación para los socios. En ella se distinguen varios botones que siguen el mismo estilo de colores y que nos permiten consultar las secciones privadas para los socios, para el tesorero o para el tesoreroadministrador. Todas las fuentes tanto por tamaño como por tipografía nos permiten una gran legibilidad. Para hacernos una idea del estilo de la aplicación mostramos algunas de las interfaces más representativas. Estas interfaces ya definitivas apenas han variado del diseño propuesto en “3.3 Diseño de interfaces”. Interfaz Noticias Página 49 de 95 Memoria PFC SEHCYT Daniel Delgado Interfaz Biblioteca Interfaz Dialogo Login Página 50 de 95 Memoria PFC SEHCYT Daniel Delgado Interfaz Zona Privada Interfaz Listado de Socios 'Administrador' Página 51 de 95 Memoria PFC SEHCYT Daniel Delgado Interfaz Temas Foro 'Administrador' Interfaz Comentarios Foro 'Administrador' Página 52 de 95 Memoria PFC SEHCYT Daniel Delgado Interfaz Nuevo Tema Foro 4.2.3. Navegabilidad La cabecera del portal es un hipervínculo a las áreas iniciales. Los hipervínculos del menú lateral nos llevan a diferentes áreas de información. Una vez que un usuario se ha logueado, el menú lateral permanece prácticamente igual salvo que el enlace para entrar se cambia y aparece el link para visitar el foro de la sociedad. Además aparece una barra de navegación con más enlaces. En esa barra de navegación se puede ver un enlace ‘Salir’ que cierra la sesión actual que se ha abierto al hacer el login, borra las variables de sesión creadas y nos devuelve a la página inicial mediante la función header. 4.2.4. Páginas estáticas Las páginas estáticas de la aplicación están escritas en formato HTML y son aquellas que nos muestran información por lo general pública. Toda esta información ha sido extraída de la página actual de la sociedad alojada en los servidores de la universidad de La Rioja, http://www.unirioja.es/dptos/dmc/Sehcyt/ . Página 53 de 95 Memoria PFC SEHCYT Daniel Delgado Además, las secciones que hay en esta página ya existente también se han respetado. En nuestro nuevo portal tenemos las mismas secciones además de las nuevas a las que obviamente se accede mediante nuevos links. 4.2.5. Acceso a la zona de socios Para poder entrar a la zona restringida es necesario loguearse, es por esto que necesitamos tener la seguridad de que ningún usuario no reconocido entre la zona privada. Para ello, en las páginas privadas incluiremos al inicio un archivo ‘seguridad.php’ (o ‘seguridadadmin.php’, o ‘seguridadteso.php’ si corresponde) en el cual si la variable de sesión validado (“adminis” en el caso del administrador, o “estesorero” en el caso del tesorero) no es “si” se redirige a la página del login. Esto nos ayuda en la seguridad porque si un usuario malintencionado escribiese el nombre de la url directamente en el navegador no le dejaría entrar. El archivo seguridad.php es: <? session_start(); if( $_SESSION["validado"]!="si"){ header("Location: ../index.php?page=entrar&errorusuario=si"); exit(); } ?> Los archivos ‘seguridadadmin.php’ y ‘seguridadteso.php’ siguen el mismo estilo salvo que cambiamos las variables de sesión. Estas variables de sesión se crean en la función ‘validar.php’ al reconocer al usuario logueado, esta función comprueba que tipo de socio es y crea la variable cuando el usuario escribe su nombre de usuario y su contraseña. Además nos redirige a la zona correspondiente de acuerdo al nivel de usuario que sea. 4.2.6. Foro El foro de la sociedad está separado en dos partes, por un lado los temas y por otro los comentarios a ese tema. Cualquier socio de la sociedad puede escribir un nuevo tema. Todos estos son listados en la página foro.php y para cada uno de los temas aparece el número de respuestas que tiene. En esta página los temas están ordenados de acuerdo a la fecha en la que se ha introducido el último comentario. De esta forma, si un tema ha sido creado hace mucho tiempo aparecerá en primer lugar si alguien lo ha comentado recientemente. Para esto ha sido necesario actualizar la tabla tema cada vez que se actualizaba la tabla comentario. Página 54 de 95 Memoria PFC SEHCYT Daniel Delgado Al insertar un tema o un comentario se toma la fecha actual mediante la función propia de php date("Y-m-d"); y lo mostramos usando también la función substr(); para extraer por separado el día, el mes y el año y poder mostrarlo más claramente. Al hacer click sobre las respuestas podemos ver el texto completo junto con los comentarios. Estos comentarios también son ordenados por la fecha en la que se escribieron. 4.2.7. Correo electrónico Como ya se ha explicado anteriormente para el sistema de correo electrónico se ha configurado en Mercury lo necesario para que envíe los correos a y mediante la dirección de correo ‘sehcyt@gmail.com’ que ha sido creada para nuestra tarea. Si el sistema se instalase en otro servidor habría que configurar el sistema de correo de acuerdo a la configuración de ese servidor. Si un usuario quiere ser socio puede pedir serlo enviando un correo electrónico directamente desde la aplicación. En ella no tendrá que escribir ninguna dirección porque mediante la función mail(); lo hacemos sin problemas. Por otra parte, si el usuario se ha logueado y es socio de SEHCYT la aplicación permite enviar correos electrónicos con su nombre de usuario a cualquier dirección de correo. La dirección desde la que se envían estos correos es la propia de la aplicación ‘sehcyt@gmail.com’ y siempre el nombre de usuario que envía el correo aparecerá en el cuerpo del mensaje. Esta función también la realizamos sin problemas, simplemente tendremos que pasar como primer parámetro de la función mail(); la dirección escrita e insertar al inicio del cuerpo del mensaje creado el nombre de usuario que lo ha escrito. A su vez, cuando se quieren enviar correos a varios destinatarios elegimos mediante una lista desplegable a quién queremos enviarlo. Esto nos lleva a una página en la que escribir el mensaje y a la cual mediante el método “get” le hacemos saber cuál de los cuatro tipos de mail múltiple se quiere enviar. A través de consultas a la base de datos obtenemos las direcciones de correo y luego tenemos que concatenar todas esas direcciones de forma seguida separándolas mediante comas. Esto lo realizamos recorriendo con un “while” todos los resultados obtenidos. Página 55 de 95 Memoria PFC SEHCYT Daniel Delgado $aa=""; while ($registro = mysql_fetch_array($resultado)) { $b = $registro['mail']; $aa=$aa.$b.", "; $mail=$aa; } Completamos los campos necesarios en la función mail(); con una cabecera especial porque los mails se envían como copia oculta BCC. La primera variable de la función es una cadena vacía y el header queda de la siguiente manera: $headers = "Bcc: ".$email."\r\n"; teniendo en la variable $email todas las direcciones de correo separadas por comas. En el cuerpo del mensaje además de lo que el usuario escribe incluimos quién es el usuario que envía el mensaje de correo electrónico. Cabe destacar que los mensajes de correo no serán almacenados por el sistema ni tampoco existirá un servidor de almacenamiento de estos correos, con lo cual, la función de lectura de correo se hará siempre desde el correo propio y privado del socio, externo a la sociedad. El cumplimiento de este requisito se separa bastante del alcance real de este PFC. 4.2.8. Revistas/actas y biblioteca En el área de revistas o actas se ha seguido el mismo procedimiento porque ambas secciones alojarán el mismo tipo de archivos. Cada una de las actas (o revistas) vendrá identificada por la fecha ya que para el usuario es más cómodo. Aún así cada una de las actas tiene internamente un número en la base de datos. Obtenemos las revistas que son de hace más de dos años simplemente restando 730 días a la fecha actual, de esta manera obtenemos una fecha por la cual comparar al hacer la consulta. Al insertar una revista o acta se crea en la base de datos un nuevo registro con la ruta que se ha seleccionado. Además para evitar duplicidad de nombres se colocan 3 caracteres aleatorios delante del nombre del archivo, de esta manera la ruta de los archivos queda por ejemplo así: “privada/filesactas/actas/6de_acta1.pdf” o “privada/filesrevistas/revistas/0cd_revista1.pdf”. Cuando queremos borrar un acta del sistema tenemos que borrar tanto el registro de la base de datos como el archivo en sí. Primeramente se debe borrar el archivo y después el registro. Dentro del registro tenemos la ruta, y así, con la función unlink($ruta); el archivo es borrado. Una vez eliminado ya podemos borrar el registro de la base de datos que lo haremos simplemente mediante SQL. Las revistas siguen los mismos métodos que las actas. Página 56 de 95 Memoria PFC SEHCYT Daniel Delgado Para el caso de la biblioteca tenemos que hacer una diferenciación ya que sólo el administrador puede insertar, eliminar o modificar libros, es por esto que tendremos que ver si la variable ‘adminis’ (variable de sesión) tiene el valor “si” para mostrar esas opciones. 4.2.9. Sistema de publicación de noticias Para ver las noticias simplemente tomamos mediante una sentencia SQL a la base de datos y obtenemos todas las noticias. El listado de noticias será público para todo usuario de la web, pero será únicamente el administrador el que tenga la potestad de incluir o borrar noticias en el sistema. Mostramos los campos e igual que para el caso del foro mostramos la fecha en formato “día de mes de año” extrayendo del campo ‘fecha’ los datos con la función substr();. En el archivo ‘estilos.css’ se incluye el formato del título de la noticia (#titulonoticia) y de la fecha (#fecha). 4.2.10. Paginación En ciertas secciones de la aplicación los listados de datos que aparecen pueden ser muy largos y en muchos casos podría dar lugar tanto a páginas muy extensas y complicadas de leer como a grandes consultas a la base de datos que podrían ralentizar la aplicación. Por estas razones hemos optado por paginar los resultados cuando mostramos los libros de la aplicación, en el apartado de noticias y en el foro tanto para listar los temas como para mostrar los comentarios. El proceso de paginación es el siguiente (tomamos como ejemplo el caso del listado de noticias): 1. Calculamos el número de noticias total. 2. Comprobamos si estamos entrando en la página a través de una página anterior y que ya ha sido paginada o si es totalmente externa y empezamos de cero comprobando si la variable $pagina existe o no. Si no existe inicializamos $pagina. 3. Calculamos el número de páginas ($numPags) que habrá dividiendo el número de noticias entre el número de estas que queremos que aparezcan en cada página ($registros). 4. Obtenemos únicamente los registros que queremos haciendo la consulta en MySQL con la clausula “LIMIT” indicándole el primer registro a mostrar y la cantidad de ellos que queremos ver. $conexion = get_db_conn(); include('../consultas.php'); Página 57 de 95 Memoria PFC SEHCYT Daniel Delgado $resultado=lasnoticias($conexion); $totalresultados = mysql_num_rows($resultado); $registros=2; //////////////////////////////////// if(!isset($pagina)) { $pagina=1; } //calculo del limite inferior $limitInf=($pagina-1)*$registros; //calculo del numero de paginas $numPags=ceil($totalresultados/$registros); $resultado1=lasnoticias2($conexion,$limitInf,$registros); 5. Para hacer los botones de navegación simplemente tenemos que tener en cuenta la variable $pagina y hacer un listado con el número de páginas ($numPags) que tenemos calculado. if(($pagina - 1) > 0) { echo "<a href=privada.php?page=noticias&pagina=".($pagina-1).">< Anterior</a> "; } for ($indice=1; $indice<=$numPags; $indice++){ if ($pagina == $indice) { echo "<b>".$pagina."</b> "; } else { echo "<a href=privada.php?page=noticias&pagina=".$indice.">".$indice."</a> "; } } if(($pagina + 1)<=$numPags) { echo " <a href='privada.php?page=noticias&pagina=".($pagina+1)."'>Siguiente ></a>"; } 6. Los botones quedarán de la siguiente manera (pudiendo aparecer más números de página en función de las noticias que haya): 4.2.11. Estructura de archivos y carpetas Página 58 de 95 Memoria PFC SEHCYT Daniel Delgado Tal y como se había diseñado la arquitectura de la aplicación existen dos capas, la capa de datos y la de presentación. De este modo, hemos decidido crear dos archivos con las funciones necesarias y que hacen las consultas, inserciones o modificaciones a la base de datos, estos son, ‘consultas.php’ y ‘consultasforo.php’. Estos dos archivos conforman la capa datos y de este modo todos los demás archivos y carpetas estarán destinados a la capa de presentación. Se han decidido colocar las funciones del foro en otro archivo aparte simplemente por comodidad y limpieza. La estructura de las carpetas del sistema es la siguiente: sehcyt sociosp foro funciones privada pagesp funciones foro pages filesrevistas revistas jscripts images auxi filesactas actas plantilla En el nivel principal (sehcyt) tenemos los archivos ‘index.php’, ‘socios.php’, ‘estilos.css’ y los mencionados ‘consultas.php’ y ‘consultasforo.php’. El ‘index.php’ hace referencia a las páginas que se encuentran en la carpeta pages. El ‘socios.php’ que es la página a la cual los socios (que no son administradores) acceden hace referencia a sociosp y en la cual se encuentran todos los archivos necesarios así como las carpetas con funciones específicas, el foro o la plantilla para la web de los congresos. Si un administrador es el que se registra automáticamente es redirigido a ‘privada.php’ que se encuentra en la carpeta privada. A partir de ahí, el administrador tiene acceso a todos los archivos en pagesp con las funciones específicas, además de los archivos del foro para el caso de que sea administrador así como los archivos para la gestión de revistas y actas que se encuentran en filesrevistas y filesactas. Dentro de estas dos carpetas tenemos respectivamente una carpeta llamada revistas y otra llamada actas que son las encargadas de almacenar físicamente los archivos. En la carpeta images se almacenan todos los archivos de imágenes que se usan en todo el sitio web. Página 59 de 95 Memoria PFC SEHCYT Daniel Delgado La carpeta jscripts contiene los archivos necesarios para poder usar “TinyMCE”, un editor WYSIWYG para poder escribir con formato fácilmente. Por último encontramos la carpeta auxi en la que encontramos varios archivos necesarios para el funcionamiento dinámico de la aplicación; contamos con el archivo ‘conexiondb.php’ para la conexión al servidor (en nuestro caso y primeramente al localhost) y a la base de datos (sehcyt). <? $GLOBALS['DB_IP'] = 'localhost'; $GLOBALS['DB_USER'] = 'root'; $GLOBALS['DB_PASS'] = ''; $GLOBALS['DB_NAME'] = 'sehcyt'; function get_db_conn() { $conn = mysql_connect($GLOBALS['DB_IP'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASS']); mysql_select_db($GLOBALS['DB_NAME'], $conn); if (!$conn) { echo "No pudo conectarse a la BD: " . mysql_error(); exit; } return $conn; } ?> También tenemos el archivo ‘salir.php’ que nos permite cerrar la sesión abierta al loguearse. Además, ‘validar.php’ es el encargado de aceptar o no la conexión a un usuario que escribe su nombre de usuario y su contraseña. Este archivo creará las variables de sesión necesarias que determinan si un usuario es simplemente socio, tesorero o administrador. En esta carpeta auxi también podemos encontrar los archivos de seguridad ya mencionados anteriormente que sirven para que un usuario malintencionado no puede entrar en la aplicación sino se ha logueado y ha sido validado. 4.2.12. JavaScript En este apartado se explican las funciones JavaScript que se usan en la aplicación. 4.2.12.1. Función borrar A la hora de borrar un registro de la base de datos no tenemos mayor problema que usar el comando DELETE de SQL, esto no nos causa mayor problema. Ahora bien, el borrado es Página 60 de 95 Memoria PFC SEHCYT Daniel Delgado irreversible y es importante que no se borre automáticamente ya que podría haber un error al hacer click sobre un registro. Es por esto que nos interesa que haya una ventana (en nuestro caso un pop-up) para confirmar el borrado. Esto lo logramos con una función en JavaScript. Tomamos como ejemplo el borrado de un socio que se encuentra en ‘listado.php’ para el caso del administrador que es quien puede hacerlo. <script language="JavaScript"> function Borra(idsocio) { var agree=confirm("¿Realmente desea eliminar el socio "+idsocio +"?"); if (agree) { document.location="pagesp/funciones/borra.php?id="+idsocio; } else return false ; } </script> Este script nos mostraría una ventana como la siguiente: En el caso en el que se acepte, el script se dirige a ‘borra.php’ y este archivo aplica el comando DELETE mencionado. Seguimos el mismo esquema para el caso de borrado de libros, actas, revistas o mensajes del foro. 4.2.12.2. TinyMCE TinyMCE, desarrollado por Moxiecode Systems, es un editor visual gráfico que permite convertir las áreas de texto en editores WYSIWYG rellenando una serie de opciones. Página 61 de 95 Memoria PFC SEHCYT Daniel Delgado En nuestra aplicación hemos decidido que algunas de las áreas de texto lleven el editor, estas son las de los mensajes del foro, o las de la inclusión de noticias y tendrán opciones de formato de texto como: negrita, cursiva, subrayado y tachado, alineación de texto: izquierda, centrado, derecha o justificado, posibilidad de crear listas ordenadas o desordenadas, de insertar hipervínculos, o incluso deshacer o rehacer los cambios entre otras opciones. Por ejemplo, al insertar un nuevo tema, el área de texto será de la siguiente manera: Para ello tenemos que incluir la carpeta jscripts (descargada de la página http://tinymce.moxiecode.com/) y hacer referencia a ella. Incluimos el siguiente código: <script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script> <script type="text/javascript"> tinyMCE.init({ mode : "textareas", theme: "advanced", style_formats : [ {title : 'Bold text', inline : 'b'}, {title : 'Red text', inline : 'span', styles : {color : '#ff0000'}}, {title : 'Red header', block : 'h1', styles : {color : '#ff0000'}} ] }); </script> Con este código configuramos las opciones que queremos que aparezcan en el área de texto. Página 62 de 95 Memoria PFC SEHCYT Daniel Delgado 5. Pruebas Este proceso tiene por objetivo hacer las pruebas necesarias para comprobar el correcto funcionamiento del sistema y la creación de los manuales de usuario que sean necesarios. 5.1. Ejecución de pruebas Según la sección ‘Análisis’ seguiremos una tabla para cada prueba realizada y su resolución. Prueba nº: 1 Fecha: 27 / Abr / 2011 . Se prueba: Funcionamiento de la parte estática. Información inicial. Probador: Daniel Delgado (proyectando) Satisfactorio: Sí Comentarios: Todas las secciones se ven correctamente. Prueba ejecutada correctamente. Prueba nº: 2 Fecha: 27 / Abr / 2011 . Se prueba: Login de un usuario registrado. Probador: Daniel Delgado (proyectando) Satisfactorio: Sí Comentarios: Los usuarios acceden insertando su nombre de usuario y su contraseña. Prueba ejecutada correctamente. Prueba nº: 3 Fecha: 27 / Abr / 2011 . Se prueba: Acceso a zonas restringidas Probador: Daniel Delgado (proyectando) Satisfactorio: Sí Comentarios: Con acceso si el usuario ha sido validado. Diferenciación entre socio, tesorero y administrador. Prueba ejecutada correctamente. Página 63 de 95 Memoria PFC SEHCYT Prueba nº: 5 Daniel Delgado Fecha: 27 / Abr / 2011 . Se prueba: Insertar nuevo tema en el foro y orden de aparición. Probador: Daniel Delgado (proyectando) Satisfactorio: Sí Comentarios: Se inserta un nuevo tema y aparece en primera posición. Prueba ejecutada correctamente. Prueba nº: 6 Fecha: 27 / Abr / 2011 . Se prueba: Insertar nuevo comentario en un tema del foro y orden de aparición. Probador: Daniel Delgado (proyectando) Satisfactorio: Sí Comentarios: Se inserta un nuevo comentario asociado a un tema. Los temas se ordenan de acuerdo al último comentario escrito. Prueba ejecutada correctamente. Prueba nº: 7 Fecha: 27 / Abr / 2011 . Se prueba: Enviar correo electrónico pidiendo ser socio. Probador: Daniel Delgado (proyectando) Satisfactorio: Sí Comentarios: La cuenta recibe el mail enviado por la aplicación. Prueba ejecutada correctamente. Página 64 de 95 Memoria PFC SEHCYT Prueba nº: 8 Daniel Delgado Fecha: 27 / Abr / 2011 . Se prueba: Enviar correo electrónico a una dirección mail desde SEHCYT Probador: Daniel Delgado (proyectando) Satisfactorio: Sí Comentarios: El mail llega con el nombre de usuario de quien lo envía. Prueba ejecutada correctamente. Prueba nº: 9 Fecha: 28 / Abr / 2011 . Se prueba: Enviar correo electrónico múltiple. Probador: Daniel Delgado (proyectando) Satisfactorio: Sí Comentarios: El mail llega tras un pequeño retraso de algunos segundos pero sin problemas a todas las direcciones especificadas. Prueba ejecutada correctamente. Prueba nº: 10 Fecha: 28 / Abr / 2011 . Se prueba: Inserción o eliminación de archivos del sistema. (revistas/actas) Probador: Daniel Delgado (proyectando) Satisfactorio: Sí Comentarios: Tanto para las revistas como las actas la inserción se hace sin problemas. El administrador elimina los archivos del sistema. Prueba ejecutada correctamente. Página 65 de 95 Memoria PFC SEHCYT Daniel Delgado Página 66 de 95 Memoria PFC SEHCYT Daniel Delgado 6. Instalación y configuración de un servidor virtual Este proceso no había sido previsto inicialmente en la planificación pero finalmente y para completar el proyecto se ha decidido almacenar la web en un servidor abierto al público y que el portal no funcionase únicamente de manera local. Para ello, y dado que es un proyecto final de carrera se ha optado por tomar herramientas que fuesen gratuitas. Además, usaremos una de las tecnologías que está más en auge a día de hoy, el “Cloud Computing” o simplemente “Cloud”. Las ventajas del cloud computing son varias, por un lado y prácticamente lo más importante es el ahorro de dinero que supone, no tendremos que comprar hardware, además, es totalmente escalable, por otro lado, las empresas que nos ofrecen este tipo de servicio, en nuestro caso Amazon se compromete a una alta disponibilidad del servicio así como de copias de seguridad de nuestros sistemas. La empresa Amazon proporciona un servicio que ofrece capacidad informática con tamaño modificable en la nube. Para nuestro proyecto, usaremos la capa de uso gratuito de Amazon Web Services que nos ofrece 1 año gratis de una instancia Linux en una de sus máquinas virtuales. De esta manera, nuestro servidor será un servidor virtual. 6.1. Instalación del servidor virtual Una vez que nos hemos dado de alta en el servicio Amazon Web Service y contratamos nuestra máquina, tenemos que instalar tanto el sistema operativo como todo lo necesario para que nuestra máquina sea un servidor web totalmente funcional. Amazon nos proporciona una DNS pública que es la que utilizaremos tanto para conectarnos a la máquina, por ejemplo, a través de un programa como Putty a través del puerto 22, como para la visualización del portal web a través de un navegador. En nuestro caso, será la siguiente: ec2-46-137-17-160.eu-west-1.compute.amazonaws.com A continuación mostramos como queda el sistema visitando la página desde uno de los navegadores más comunes. Página 67 de 95 Memoria PFC SEHCYT Daniel Delgado Web en servidor virtual 6.1.1. Sistema operativo Como ya hemos comentado, hemos optado por herramientas de software libre y hemos instalado un sistema operativo Linux, concretamente con la distribución Ubuntu 10.04.2. Inicio SO Ubuntu Página 68 de 95 Memoria PFC SEHCYT Daniel Delgado 6.1.2. Instalación / Configuración Apache Para instalar Apache simplemente teníamos que ejecutar el comando: sudo aptitude install apache2 Una vez que tenemos Apache ya instalado tendremos que configurarlo de acuerdo a nuestras necesidades. Debemos tener en cuenta ciertas directivas que tenemos en el archivo default en /etc/apache2/sites-available como ServerAdmin sehcyt@gmail.com que será lo que aparecerá en los mensajes de error generados por el servidor. También debemos tener la directiva DocumentRoot /var/www, esta ruta nos servirá para alojar nuestros archivos fuente en ese directorio. Además, queremos que la página inicial que se muestre cuando escribimos la dns pública sea ‘index.php’ y para ello hemos colocado la directiva DirectoryIndex index.php en <Directory /var/www/>. Otra de las cosas que hemos modificado es la información que se muestra en las páginas de error. Dentro del archivo ‘security’ que podemos encontrar en /etc/apache2/conf.d/ tenemos que cambiar la directiva ServerTokens a Prod que es la más restrictiva. Con ello conseguimos que solo aparezca el nombre del servidor web (Apache) y no su versión y otros datos que podrían dar información a usuarios malintencionados. 6.1.3. Instalación / Configuración PHP Tal y como se ha hecho en el caso anterior, la instalación de PHP se realiza mediante el comando aptitude install php5. Necesitamos también los archivos necesarios para que MySQL soporte PHP5 y apache2 con lo que instalamos los módulos libapache2-mod-auth-mysql y php5-mysql. 6.1.4. Instalación / Configuración MySQL Como anteriormente, para instalar MySQL simplemente tenemos que ejecutar el comando (instalamos 3 paquetes): apt-get install mysql-server mysql-common mysql-client Una vez que tenemos el SGBD instalado podemos modificar el archivo de configuración ‘my.cnf’ que está en /etc/mysql/. En este archivo se configuran aspectos generales como la contraseña, el puerto a utilizar pero no modificaremos nada porque la configuración por defecto nos sirve. Además, hemos instalado phpMyAdmin, lo que nos ayudará a la hora de cargar la base de datos en nuestro servidor. Página 69 de 95 Memoria PFC SEHCYT Daniel Delgado Un aspecto muy importante a tener en cuenta es que tenemos que modificar el archivo fuente que nos permite conectar nuestra web con la base de datos. La conexión a la base de datos la realizamos a través del archivo ‘conexiondb.php’. Mientras que en el archivo local teníamos la siguiente definición de variables: $GLOBALS['DB_IP'] = $GLOBALS['DB_USER'] $GLOBALS['DB_PASS'] $GLOBALS['DB_NAME'] 'localhost'; = 'root'; = '****'; = 'sehcyt'; Ahora, tenemos que poner $GLOBALS['DB_IP'] = '10.48.237.196'; que es la dirección ip privada que nos ha proporcionado el servicio de Amazon como ip privada. 6.1.5. Instalación / Configuración Exim4 Tal y como se hacía en la máquina local, tenemos que configurar el servidor para que podamos enviar correos. Por ello se ha instalado un servidor smtp, concretamente Exim4. Hemos elegido este servidor porque es bastante conocido y fiable, además, nos permite con cierta naturalidad configurarlo para enviar correos desde nuestra cuenta creada en gmail, sehcyt@gmail.com, sin que estos sean considerados como spam. La instalación básica se realiza con el comando apt-get install exim4. Hemos modificado el fichero ‘passwd.client’, en /etc/exim4/ y hemos incluido las siguientes líneas que nos permitirán el envío a través de gmail. gmail-smtp.l.google.com:sehcyt@gmail.com:contraseña *.google.com:sehcyt@gmail.com: contraseña smtp.gmail.com:sehcyt@gmail.com: contraseña Además de esto, en la ruta /etc/exim4/conf.d/transport/ debemos modificar el archivo 30_exim4-config_remote_smtp_smarthost para que se utilice el puerto 587 para el correo saliente. Por último, al ejecutar el configurador, dpkg-reconfigure exim4-config, tenemos que poner la opción de que el mail será enviado por un smarthost, en nuestro caso gmail, y que la dirección para los mensajes salientes será: smtp.gmail.com::587 Página 70 de 95 Memoria PFC SEHCYT Daniel Delgado Configuración Exim4 (1) Configuración Exim4 (2) Página 71 de 95 Memoria PFC SEHCYT Daniel Delgado Página 72 de 95 Memoria PFC SEHCYT Daniel Delgado 7. Gestión del plan de proyecto La gestión del plan tiene como objetivo principal la planificación, el seguimiento y el control de las actividades realizadas. Se realiza una comparativa entre lo que se había estimado en un principio y lo que finalmente se ha realizado. 7.1. Duración real de los procesos, actividades y tareas D.- Dirección D1.- Gestión del plan D1.1.- Seguimiento del plan de objetivos 2 h. D1.2.- Seguimiento del plan de comunicaciones 2 h. D1.3.- Seguimiento del plan de riesgos 2h. D2.- Reuniones D2.1.- Preparación de temas a tratar 1h. D2.2.- Exposición de temas 5h. D2.3.- Redacción de actas 1h. D3.- Creación del DOP D3.1.- Recopilación de información para la realización… 5h. D3.2.- Análisis de la información obtenida 12h. D3.3.- Redacción de la memoria 8h. D4.- Creación de la memoria D4.1.- Documentación y recopilación… 10h. D4.2.- Redacción de la memoria 40h. D5.- Preparación de la defensa D5.1.- Resumen con los puntos importantes 4h. D5.2.- Preparación de material para la presentación 4h. D5.3.- Ensayo de la defensa 4h. 6h. 7h. 25h. 50h. 12h. Total Dirección.- 100h. A.-Análisis A1.- Definición del sistema A1.1.- Determinación de los objetivos del proyecto 3h. A1.2.- Identificación del entorno tecnológico 1h. A1.3.- Identificación de los usuarios participantes y finales 1h. 5h. Página 73 de 95 Memoria PFC SEHCYT Daniel Delgado A2.- Obtención de requisitos 12h. A3.- Especificación de casos de uso 5h. A4.- Definición de interfaces A4.1.- Especificación de principios generales de la interfaz 3h. A4.2.- Identificación de ventanas de diálogo 5h. A4.3.- Especificación del comportamiento de la interfaz 10h. A5.- Especificación del plan de pruebas 4h. Total Análisis.- 44h. Di.- Diseño Di1.- Definición de la arquitectura del sistema Di1.1.- Definición de los niveles de arquitectura 10h. Di1.2.- Identificación de requisitos de diseño y construcción 1h. Di1.3.- Especificación del entorno tecnológico 1h. Di1.4.- Especificación de los requisitos para la utilización 1h. Di2.- Diseño de la base de datos Di2.1.- Diseño conceptual de la base de datos 15h. Di2.2.- Diseño lógico de la base de datos 10h. Di2.3.- Normalización del modelo lógico de datos 1h. Di2.4.- Diseño físico de la base de datos 4h. 30h. Total Diseño.- 73h. I.- Implementación I1.- Instalación del entorno I1.1.- Implantación de la base de datos 10h. I1.2.- Preparación del entorno para la generación de código 5h. P.-Pruebas P1.-Ejecución de pruebas P1.1.- Pruebas de integración en el sistema 0h. P1.2.- Pruebas del sistema 2h. P2.- Creación de manuales de usuario 13h. 30h. Di3.- Diseño de interfaces I2.- Generación de código 18h. 15h. aprox. 190 - 200h. Total Implementación.- 245h. 2h. 10h. Total Pruebas.- 12h. Página 74 de 95 Memoria PFC SEHCYT Daniel Delgado In.- Integración In1.- Establecimiento del plan de implantación 1h. In1.1.- Instalación y configuración de un servidor virtual 22h. In2.- Carga de datos 0h. In3.- Presentación del sistema In3.1.- Convocatoria de la presentación del sistema 1h. In3.2.- Aprobación del sistema 1h. 2h. Total Integración.- 25h. Así, el total de horas reales para la realización del proyecto es de 499 horas. 7.2. Comparativa de horas La duración estimada del proyecto fue de 431 horas y la duración real ha sido de aproximadamente 499 horas. A pesar de que la estimación nos llevaba a acabar el proyecto a finales de agosto de 2011, el proyecto ha podido ser acabado dos meses antes. Esto ha sido debido a que el calendario de trabajo pensado previamente no se ha seguido en ningún momento. Prácticamente desde el principio del proyecto se ha trabajado muchas más horas de las esperadas, tanto los días de entre semana como en el fin de semana. Lo que al final nos ha llevado a finalizar el trabajo antes de lo previsto. Además, durante la época estival y gracias a la realización de cursos de formación se ha decidido crear un servidor virtual en una plataforma bajo entorno Linux, con las herramientas y el software necesario para no tener que alojar nuestro sistema de forma local. Es por esto, que la planificación del proyecto que habíamos previsto ha sido modificada un poco ya que hemos incluido el apartado ‘In1.1 Instalación y configuración de un servidor virtual’. En el gráfico se muestra una comparativa entre las horas estimadas y las horas reales de trabajo. Página 75 de 95 Memoria PFC SEHCYT Daniel Delgado 250 200 150 100 Estimadas 50 Reales 0 Horas de trabajo estimadas / Horas reales A continuación, se presenta un diagrama de sectores con el porcentaje de las horas dedicadas a cada proceso con respecto a la dedicación total. Pruebas Integración 3% 6% Dirección 24% Implementación 44% Horas estimadas Diseño 14% Análisis 9% Porcentaje horas estimadas Y, a continuación, el diagrama con las horas reales que se han dedicado. Página 76 de 95 Memoria PFC SEHCYT Daniel Delgado Pruebas 2% Integración 5% Horas reales Dirección 20% Análisis 9% Implementación 49% Diseño 15% Porcentaje horas reales De esta forma, podemos concluir que del total de las horas que se han invertido, el porcentaje dedicado al análisis y al diseño es prácticamente igual a lo estimado. Así, la dedicación que se estimó para las pruebas y para la dirección ha sido menor, lo que ha hecho aumentar el porcentaje que se ha destinado a los aspectos más técnicos como son la implementación y la integración. 7.3. Otras consideraciones En este apartado se explican ciertos aspectos a tener en cuenta tras la realización del proyecto. Uno de los aspectos fundamentales a tener en cuenta es que finalmente se ha instalado el sistema en un servidor virtual como ya se explica en su sección correspondiente. Esta opción nos ayuda a completar el sistema y que funcione de manera más real. La opción de integrarlo en otro tipo de servidores físicos se ha desechado por el gasto económico además de por otras razones que se explican en el apartado ‘Instalación y configuración de un servidor virtual’. Para el proyecto que nos ocupa no se ha realizado la carga de datos de la sociedad. Todo son simulaciones que se ajustan de una manera bastante fiel a la realidad de los datos que serían migrados desde los servidores actuales de la sociedad. Además, aunque el sistema es muy sencillo de usar, necesitaríamos una pequeña formación para que los miembros de SEHCYT utilizaran el portal. A pesar de esto, todos los requisitos pedidos por el cliente se cumplen dentro del proyecto. Página 77 de 95 Memoria PFC SEHCYT Daniel Delgado Página 78 de 95 Memoria PFC SEHCYT Daniel Delgado Bibliografía Programación PHP, MySQL y Apache; Julie C. Meloni. Anaya Multimedia MySQL 5.1; Juan Diego Gutiérrez Gallardo. Anaya Multimedia PHP 6; Francisco Charte Ojeda. Anaya Multimedia CSS y DHTML; Xavier Colomés Fornós. Anaya Multimedia Fundamentos. Programación web con HTML, XHTML y CSS; Jon Duckett. Anaya Multimedia Desarrollo web con PHP 6 y MySQL 5.1; Juan Diego Gutiérrez Gallardo. Anaya Multimedia Recursos web: http://tinymce.moxiecode.com/ http://weblatam.com/wp/enviar-emails-con-mercury32-y-xampp/ http://www.desarrolloweb.com/manuales/6/ http://linvx.org/Exim4Gmail Página 79 de 95 Memoria PFC SEHCYT Daniel Delgado Página 80 de 95 Memoria PFC SEHCYT Daniel Delgado Actas Nº 1 Fecha: 14 de febrero de 2011 Acta de Reunión Portal web SEHCYT Lugar: Despacho de Ana Romero Hora inicio: 17:00 h Hora finalización: 17:30 h Asistentes: Orden del día: Ana Romero Daniel Delgado Posibilidad de creación del PFC Documentos relacionados: Temas tratados: Creación del PFC sobre aplicación web para SEHCYT Ana Romero será directora del proyecto Luis Español será el cliente Tareas pendientes: Reunión con Luis Español para búsqueda de requisitos y aprobación Página 81 de 95 Memoria PFC SEHCYT Daniel Delgado Nº 2 Fecha: 18 de febrero de 2011 Acta de Reunión Portal web SEHCYT Lugar: Despacho del cliente Hora inicio: 17:00 h. Hora finalización: 17:30 h. Asistentes: Orden del día: Luis Español Daniel Delgado Búsqueda de requisitos Documentos relacionados: Temas tratados: Aprobación del cliente sobre el pfc Requisitos que deberá tener el sistema Tareas pendientes: Creación de un contrato sobre lo que debe hacer nuestra aplicación Página 82 de 95 Memoria PFC SEHCYT Daniel Delgado Nº 3 Fecha: 10 de marzo de 2011 Acta de Reunión Portal web SEHCYT Lugar: Despacho del cliente Hora inicio: 18:00 h Hora finalización: 18:30 h Asistentes: Orden del día: Luis Español Daniel Delgado Dudas sobre el login Documentos relacionados: Temas tratados: Cómo debe funcionar el login. El usuario (no socio) pide ser miembro de la sociedad y tras la junta directiva se decide si es miembro, cuando se decida, es el secretario como administrador el que le da de alta y le manda los datos (usuario, contraseña) al nuevo socio Tareas pendientes: Modificar requisitos, dop, o análisis, todo aquello que sea necesario tras los temas tratados Página 83 de 95 Memoria PFC SEHCYT Daniel Delgado Nº 4 Fecha: 15 de marzo de 2011 Acta de Reunión Portal web SEHCYT Lugar: Despacho de Ana Romero Hora inicio: 12:00h. Hora finalización: 12:30h. Asistentes: Ana Romero Daniel Delgado Orden del día: Corrección de la parte de Análisis. Documentos relacionados: Análisis.docx Temas tratados: Corrección del Análisis Requisitos del sistema y sus especificaciones. Hay varios requisitos que deben de quedar mejor explicados y otros que no están bien. Tareas pendientes: Preguntar a Luis las dudas que tengo para completar los requisitos y los casos de uso. Dibujar los casos de uso con herencia entre los actores. Corrección de errores de ortografía, acentos, etc. Página 84 de 95 Memoria PFC SEHCYT Daniel Delgado Nº 5 Fecha: 16 de marzo de 2011 Acta de Reunión Portal web SEHCYT Lugar: Despacho de Luis Español Hora inicio: 18:00h Hora finalización: 18:30h Asistentes: Orden del día: Luis Español Daniel Delgado Aclaración de requisitos Documentos relacionados: Temas tratados: Tenía varias dudas con ciertos requisitos. El foro debe ser sólo para los socios. Los socios no pueden ver los datos personales de los otros socios. Tareas pendientes: Modificar la parte del análisis de acuerdo a lo que se ha comentado. Página 85 de 95 Memoria PFC SEHCYT Daniel Delgado Nº 6 Fecha: 31 de marzo de 2011 Acta de Reunión Portal web SEHCYT Lugar: Despacho de Ana Romero Hora inicio: 12:00h Hora finalización: 13:00h Asistentes: Ana Romero Daniel Delgado Orden del día: Revisión del diseño de la aplicación Documentos relacionados: Diseno.docx Temas tratados: Revisión del diseño de la aplicación Problema para realizar las tres capas típicas en la arquitectura porque no habrá algoritmos complicados. Se opta por hacer sólo dos. Cambios en el diseño de la base de datos para completar las tablas, las relaciones, etc. Se propone crear dos tablas, Tema y Comentario para realizar el foro y una más, Cuota para llevar el control sobre estas. Tareas pendientes: Modificar el diseño de acuerdo a lo comentado. Página 86 de 95 Memoria PFC SEHCYT Daniel Delgado Nº 7 Fecha: 14 de abril de 2010 Acta de Reunión Portal web SEHCYT Lugar: Despacho de Ana Romero Hora inicio: 18:00h Hora finalización: 19:00h Asistentes: Orden del día: Ana Romero Daniel Delgado Revisión de la implementación hecha hasta ahora Documentos relacionados: Temas tratados: Revisión de la web y de toda la implementación hecha hasta ahora. Cambios en diseño. Tareas pendientes: Corrección de errores. Hablar con Luis para la creación del sistema de correo. Hay varias dudas. No se pueden enviar correos desde los correos privados de cada socio. Página 87 de 95 Memoria PFC SEHCYT Daniel Delgado Nº 8 Fecha: 25 de abril de 2010 Acta de Reunión Portal web SEHCYT Lugar: Despacho de Ana Romero Hora inicio: 12:30h Hora finalización: 13:00h. Asistentes: Ana Romero Daniel Delgado Orden del día: Revisión de documentos de la memoria Documentos relacionados: Implementacion.docx Temas tratados: Revisión del documento Implementacion.docx Revisión del diseño para comprobar si está correcto con respecto a lo que finalmente se ha hecho. Tareas pendientes: Corrección de errores. Página 88 de 95 Memoria PFC SEHCYT Daniel Delgado Nº 9 Fecha: 14 de junio de 2011 Acta de Reunión Portal web SEHCYT Lugar: Despacho de Ana Romero Hora inicio: 12:30h Hora finalización: 12:45h. Asistentes: Orden del día: Ana Romero Daniel Delgado Integración/Implantación del sistema Documentos relacionados: Temas tratados: Integración del sistema en un servidor virtual. Pasos a seguir para incluirlo en la memoria. Tareas pendientes: Creación de un nuevo punto en la memoria para explicar la integración del sistema en el servidor virtual de Amazon. Página 89 de 95 Memoria PFC SEHCYT Daniel Delgado Página 90 de 95 Memoria PFC SEHCYT Daniel Delgado Manual de usuario El manual de usuario de nuestra aplicación no será un amplio manual en el que se especifiquen paso a paso todas las opciones ya que el funcionamiento es claro y bastante obvio. A modo de ejemplo se verán 4 opciones básicas que nos ayudan a conocer el funcionamiento general. Acceso al sistema Para acceder al sistema como usuario registrado simplemente hay que hacer click sobre el botón ‘Entrar’ que se encuentra en el menú lateral. Esto nos llevará a una página en la que deberemos escribir nuestro nombre de usuario y la contraseña. Si el sistema valida al usuario aparecerá una barra de navegación para los servicios restringidos a socios y el botón ‘Entrar’ se habrá convertido en un enlace al foro. Barra de navegación tras la validación de un socio. Página 91 de 95 Memoria PFC SEHCYT Daniel Delgado Insertar/Modificar datos de un socio Para insertar un nuevo socio o modificar los datos de alguno de estos en el sistema es necesario que el usuario sea administrador. Si el usuario no es administrador podrá únicamente modificar sus propios datos. Estas opciones se pueden realizar haciendo click dentro del listado de socios y seleccionando la opción deseada. Para modificar los datos habrá que completar un formulario como el siguiente: Tras completar los cambios, los datos serán guardados haciendo click en el botón ‘Insertar’ que se encuentra al final del formulario. Página 92 de 95 Memoria PFC SEHCYT Daniel Delgado Envío de correo electrónico Para enviar un correo electrónico desde la aplicación habrá que hacer click sobre el botón de la barra de navegación superior ‘Enviar mail’. En esta página podremos elegir enviar un mail: ---------------------------------Enviando desde SEHCYT ---------------------------------De: josesehcyt ---------------------------------Este es un mensaje enviado desde la aplicación para mostrarlo en el manual de usuario. Mensaje que se recibirá en la dirección de correo especificada ---------------------------------- Para enviar un mail múltiple a un grupo de usuarios tendremos que hacer click en el grupo y pulsar ‘Ir’. A continuación, podremos escribir el mensaje y enviarlo. En el caso del mail múltiple todos los correos serán enviados como copia oculta y el formato será el mismo que el anterior. Nota: El asunto del mail será: “Envio desde SEHCYT”. Página 93 de 95 Memoria PFC SEHCYT Daniel Delgado Escribir/Responder a un tema del foro El foro es una herramienta que nos permite escribir mensajes visibles a los miembros de la comunidad y que estos sean respondidos por otros miembros. Al pulsar sobre ‘Foro’ (botón solo visible si estás logueado) vemos un listado de cuatro temas escritos. La fecha de publicación de un tema o de un comentario a ese tema será el criterio de ordenación para su aparición. Es decir, cuando escribimos un nuevo tema, este aparecerá en primer lugar, además, si escribimos un comentario a ese tema también ese tema aparecerá en primer lugar a pesar de que la fecha de creación del tema sea anterior. Para escribir un nuevo tema, tras pulsar sobre ‘Insertar nuevo tema’ y aparecerá una nueva página en la que escribir el asunto y el mensaje. Para contestar a un tema escribiendo un comentario simplemente hay que pulsar en ‘Responder a este tema’ que se encuentra dentro de la página de visualización de los mensajes de los temas y de los comentarios. Página 94 de 95 Memoria PFC SEHCYT Daniel Delgado Página 95 de 95