SlideShare una empresa de Scribd logo
1 de 522
Descargar para leer sin conexión
UNIVERSIDAD DE OVIEDO
ESCUELA POLITÉCNICA DE INGENIERÍA DE GIJÓN
PROYECTO FIN DE CARRERA
"PLATAFORMA WEB PARA LA GESTIÓN INTEGRAL
DE CONFERENCIAS CIENTÍFICO-TÉCNICAS"
DIRECTOR: José Ranilla Pastor
Raquel Cortina Parajón
AUTOR: Héctor Arroyo Santiago
JULIO 2015
MEMORIA PRESENTADA POR
D. HÉCTOR ARROYO SANTIAGO
PARA OPTAR AL TÍTULO DE
INGENIERO TÉCNICO (en Informática de Sistemas)
Agradecimientos
Me gustaría agradecer el trabajo de mis directores de proyecto, Raquel y José, por su ayuda
durante el desarrollo y redacción del mismo, así como a la organización del CMMSE por la
oportunidad que ha supuesto y la confianza depositada en mí.
También quisiera agradecer el apoyo e interés mostrados por mi familia y amigos, cuyas
sugerencias y opiniones han inspirado parte de este proyecto.
Resumen
El presente proyecto tiene como finalidad el desarrollo de un sistema para la gestión de
conferencias científico-técnicas basado en una interfaz web. En particular, la implementación
realizada tiene como objeto la gestión de la 14th International Conference on Computational
and Mathematical Methods in Science and Engineering, que se celebró del 3 al 7 de julio de 2014
en Rota (Cádiz).
La aplicación desarrollada surge a partir de la necesidad de remplazar otra aplicación web
existente, y cubre todos los aspectos principales de la gestión de la conferencia, desde el registro
de los asistentes y el envío de los papers a presentar, hasta la generación de facturas,
justificantes de pago, asistencia y presentación de ponencias, además del envío de
notificaciones por correo electrónico tanto a los asistentes como a los gestores de la misma.
También cubre otros aspectos administrativos, como la generación de estadísticas y listados, la
verificación de pagos y envíos o la gestión de aspectos logísticos, como la disponibilidad de salas
durante el evento o la preparación de etiquetas identificativas de distintos tipos para los
asistentes y el personal.
Para el desarrollo de la interfaz se han utilizado tecnologías web actuales, como HTML5, jQuery
y AJAX, que mejoran la experiencia de los usuarios de la aplicación y minimizan los tiempos de
respuesta; mientras que para implementar la lógica de la aplicación en el lado del servidor se
han utilizado patrones de diseño de software modular ampliamente extendidos y componentes
de amplio uso, teniendo en cuenta y simplificando posibles ampliaciones futuras de la aplicación
resultante.
Además, la aplicación ha sido desarrollada a medida para ejecutarse sobre un servidor Linux,
teniendo en cuenta las particularidades del congreso a gestionar y del entorno hardware y
software disponible.
Palabras Clave
Conferencia
Simposio
Paper
Gestión de Pagos
MVC
ORM
PHP
MySQL
Abstract
This work aims to develop a web-based system for managing scientific-technical conferences.
Specifically, the implementation discussed here is targeted on the 14th International Conference
on Computational and Mathematical Methods in Science and Engineering, held on July 3-7 in
Rota (Cádiz).
The proposed system arises from the need to replace an existing web application, and covers all
major aspects involved on the conference management duties, including from registration of
attendees and papers submission to automatic generation of documentation, such as invoices,
proofs of payment, certificates of attendance and papers presentation, besides sending e-mail
notifications both to attendees and staff members. It also covers other administrative duties,
such as collecting and displaying of statistics and listings, payment handling and various logistics
including availability of rooms during the event or preparation of tags of different types for
attendees and staff members.
The application user interface is built on top of current web technologies, including HTML5 and
AJAX, allowing both a better user experience and lower response times; while the backend has
been engineered using widely used software design patterns and widespread third-party
libraries, thus making easy further improvements and simplifying the overall application
architecture.
In addition, the application has been explicitly developed to run on a Linux server and meet the
CMMSE organizers’ needs, taking into account the features of the CMMSE conference and the
hardware and software environment available on the web server used.
Keywords
Conference
Symposium
Paper
Payment Management
MVC
ORM
PHP
MySQL
Índice General
1 PRESENTACION............................................................................................................................17
2 MEMORIA DEL PROYECTO...........................................................................................................18
2.1 HOJA DE IDENTIFICACIÓN.................................................................................................................18
2.2 TECNOLOGÍAS, PROTOCOLOS Y CONCEPTOS CLAVE ................................................................................19
2.2.1 Introducción al protocolo HTTP ............................................................................................19
2.2.2 Introducción a HTML.............................................................................................................21
2.2.3 Introducción a AJAX ..............................................................................................................24
2.2.4 Introducción a CSS y CSS3.....................................................................................................24
2.2.5 El patrón de diseño MVC.......................................................................................................26
2.2.6 Introducción a PHP ...............................................................................................................28
2.2.7 Los sistemas de plantillas para web .....................................................................................29
2.3 OBJETO........................................................................................................................................31
2.4 ANTECEDENTES .............................................................................................................................31
2.5 NORMAS Y REFERENCIAS..................................................................................................................31
2.5.1 Disposiciones legales y normas aplicadas ............................................................................31
2.5.2 Métodos, herramientas, modelos, métricas y prototipos.....................................................33
2.5.3 Mecanismos de control de calidad aplicados durante la redacción del proyecto ................37
2.5.4 Otras referencias ..................................................................................................................39
2.6 ALCANCE......................................................................................................................................40
2.7 HIPÓTESIS Y RESTRICCIONES .............................................................................................................40
3 PLANIFICACIÓN Y PRESUPUESTO.................................................................................................41
3.1 PLANIFICACIÓN TEMPORAL...............................................................................................................41
3.2 RESUMEN DEL PRESUPUESTO............................................................................................................47
3.3 PRESUPUESTO ...............................................................................................................................48
3.3.1 Costes relativos a ingeniería.................................................................................................48
3.3.2 Costes relativos a bienes, equipos y servicios informáticos..................................................48
3.3.3 Costes relativos a consumibles .............................................................................................48
3.3.4 Costes relativos a aplicaciones informáticas ........................................................................49
4 ESPECIFICACIÓN DEL SISTEMA.....................................................................................................50
4.1 DESCRIPCIÓN DE LA SITUACIÓN ACTUAL ..............................................................................................50
4.2 REQUISITOS INICIALES .....................................................................................................................50
4.3 ESTUDIOS DE ALTERNATIVAS Y VIABILIDAD...........................................................................................51
4.3.1 Sistemas existentes de gestión de conferencias ...................................................................51
4.3.2 Gestores de bases de datos ..................................................................................................52
4.3.3 Servidores web......................................................................................................................54
4.3.4 Lenguajes de programación .................................................................................................57
4.3.5 Frameworks ..........................................................................................................................59
4.3.6 Sistemas de plantillas ...........................................................................................................60
4.4 DESCRIPCIÓN DE LA SOLUCIÓN PROPUESTA..........................................................................................61
4.5 ACTORES DEL SISTEMA ....................................................................................................................63
4.6 CATÁLOGO DE REQUISITOS NO FUNCIONALES.......................................................................................64
4.6.1 Requisitos tecnológicos.........................................................................................................64
4.6.2 Requisitos de seguridad........................................................................................................65
4.6.3 Requisitos de auditoría (instrumentación) ...........................................................................65
4.6.4 Requisitos de tiempo de respuesta.......................................................................................65
4.7 ANÁLISIS DE REQUISITOS FUNCIONALES...............................................................................................66
4.7.1 Aspectos generales ...............................................................................................................66
4.7.2 Seguridad..............................................................................................................................66
4.7.3 Pagos ....................................................................................................................................67
4.7.4 Simposios..............................................................................................................................68
4.7.5 Envío de papers.....................................................................................................................68
4.7.6 Salas......................................................................................................................................69
4.7.7 Envío de notificaciones por correo electrónico .....................................................................69
4.7.8 Generación de calendarios ...................................................................................................70
4.7.9 Información estadística ........................................................................................................70
4.7.10 Limitación de acceso ........................................................................................................71
4.7.11 Generación de documentación.........................................................................................71
4.7.12 Excursiones.......................................................................................................................72
4.8 ESPECIFICACIÓN DE CASOS DE USO Y ESCENARIOS..................................................................................73
4.8.1 Acciones de invitado.............................................................................................................73
4.8.2 Acciones comunes.................................................................................................................76
4.8.3 Acciones de ponente.............................................................................................................80
4.8.4 Acciones de editor.................................................................................................................86
4.8.5 Gestión de usuarios ..............................................................................................................87
4.8.6 Gestión de pagos (general)...................................................................................................97
4.8.7 Gestión de facturas.............................................................................................................100
4.8.8 Gestión de justificantes de pago.........................................................................................106
4.8.9 Gestión de simposios ..........................................................................................................108
4.8.10 Gestión de salas..............................................................................................................111
4.8.11 Gestión de excursiones...................................................................................................113
4.8.12 Gestión de papers...........................................................................................................114
4.8.13 Configuración de la aplicación .......................................................................................120
4.8.14 Información estadística..................................................................................................126
5 DISEÑO E IMPLEMENTACIÓN.....................................................................................................129
5.1 PARTICIONAMIENTO FÍSICO DE SUBSISTEMAS .....................................................................................129
5.2 IMPLEMENTACIÓN DE FUNCIONALIDADES DINÁMICAS DE LA INTERFAZ DE ADMINISTRACIÓN ........................131
5.2.1 cmmse.admin .....................................................................................................................132
5.2.2 cmmse.admin.json..............................................................................................................132
5.2.3 cmmse.admin.users............................................................................................................133
5.2.4 cmmse.admin.invoices........................................................................................................133
5.2.5 cmmse.admin.proofs ..........................................................................................................134
5.2.6 cmmse.admin.papers .........................................................................................................134
5.2.7 cmmse.admin.papers.edittitle............................................................................................134
5.2.8 cmmse.admin.papers.rooms ..............................................................................................135
5.2.9 cmmse.admin.rooms.edittitle.............................................................................................135
5.2.10 cmmse.admin.conferences.edittitle ...............................................................................135
5.2.11 cmmse.admin.conferences.editdate ..............................................................................136
5.3 SUBSISTEMAS DE DISEÑO ...............................................................................................................137
5.4 DISEÑO DE CLASES........................................................................................................................138
5.4.1 CMMSE..............................................................................................................................139
5.4.2 CMMSEAutoloaderData ..................................................................................................140
5.4.3 CMMSECore.....................................................................................................................141
5.4.4 CMMSEExceptions ...........................................................................................................162
5.4.5 CMMSETraits ...................................................................................................................164
5.4.6 CMMSEDoctrine...............................................................................................................172
5.4.7 CMMSEDecorators...........................................................................................................223
5.4.8 Proxies...............................................................................................................................236
5.4.9 CMMSEPDFViews.............................................................................................................237
5.4.10 CMMSEPDFViewsLabels15x25...................................................................................239
5.4.11 CMMSEPDFViewsLabels92x625.................................................................................242
5.4.12 CMMSEInterfaces........................................................................................................245
5.4.13 CMMSEInterfacesModels...........................................................................................247
5.4.14 CMMSEPermissions.....................................................................................................272
5.4.15 CMMSEModels ............................................................................................................273
5.4.16 CMMSEModelsFactories............................................................................................276
5.4.17 CMMSEControllers ......................................................................................................278
5.4.18 CMMSEControllersUser..............................................................................................284
5.4.19 CMMSEControllersAdmin ..........................................................................................292
5.4.20 CMMSEControllersAdminJSON.................................................................................307
5.4.21 CMMSEControllersAdminPDF...................................................................................312
5.4.22 CMMSEControllersFrontcontrollers ...........................................................................320
5.5 DISEÑO FÍSICO DE DATOS...............................................................................................................324
5.5.1 Archivos estáticos internos .................................................................................................324
5.5.2 Archivos estáticos públicos .................................................................................................324
5.5.3 Archivos de usuario.............................................................................................................324
5.5.4 Configuración estática de la aplicación ..............................................................................325
5.5.5 Modelo entidad-relación de la base de datos.....................................................................329
5.5.6 Modelo relacional de la base de datos ...............................................................................336
5.5.7 Normalización.....................................................................................................................341
5.6 DISEÑO DE LA INTERFAZ DE USUARIO................................................................................................347
5.6.1 Interfaz pública...................................................................................................................348
5.6.2 Interfaz administrativa .......................................................................................................349
6 MANUALES................................................................................................................................351
6.1 MANUAL DE INSTALACIÓN .............................................................................................................351
6.1.1 Prerrequisitos......................................................................................................................351
6.1.2 Instalación de la aplicación.................................................................................................352
6.1.3 Consideraciones de seguridad ............................................................................................356
6.1.4 Configuración inicial de la aplicación .................................................................................356
6.2 MANUAL DE USUARIO...................................................................................................................363
6.2.1 Registro, login y gestión de cuenta de usuario...................................................................363
6.2.2 Envío y gestión de papers ...................................................................................................370
6.2.3 Gestión de pagos y datos fiscales .......................................................................................376
6.2.4 Acceso a los calendarios iCal ..............................................................................................379
6.3 MANUAL DE ADMINISTRACIÓN .......................................................................................................381
6.3.1 Acceso a la interfaz de administración y configuración general.........................................381
6.3.2 Gestión de salas..................................................................................................................382
6.3.3 Gestión de simposios ..........................................................................................................384
6.3.4 Gestión de excursiones .......................................................................................................386
6.3.5 Gestión de usuarios ............................................................................................................388
6.3.6 Gestión de pagos: Facturas y justificantes..........................................................................406
6.3.7 Gestión de facturas.............................................................................................................409
6.3.8 Gestión de justificantes de pago.........................................................................................412
6.3.9 Gestión de papers...............................................................................................................416
6.3.10 Consulta de información estadística ..............................................................................424
6.3.11 Registro de editores........................................................................................................427
6.4 MANUAL DE EDITOR .....................................................................................................................428
6.4.1 Acceso a la lista de papers enviados...................................................................................428
6.4.2 Descarga de papers disponibles .........................................................................................429
6.4.3 Acceso a los calendarios iCal ..............................................................................................429
7 PRUEBAS ...................................................................................................................................430
7.1 PRUEBAS DE USO EN UN ENTORNO REAL ...........................................................................................430
7.2 PRUEBAS UNITARIAS .....................................................................................................................430
7.2.1 TestsCore...........................................................................................................................431
7.2.2 TestsEntities ......................................................................................................................441
7.2.3 TestsEntitiesDoctrine .......................................................................................................445
7.2.4 TestsDecorators ................................................................................................................454
7.2.5 TestsModels ......................................................................................................................458
7.2.6 TestsModelsFactories ......................................................................................................479
7.2.7 TestsControllersAdminPDF.............................................................................................480
8 CONCLUSIONES .........................................................................................................................491
9 BIBLIOGRAFÍA............................................................................................................................492
9.1 LIBROS Y ARTÍCULOS .....................................................................................................................492
9.2 REFERENCIAS EN INTERNET ............................................................................................................492
Conceptos de Ingeniería de Software ..............................................................................................492
Lenguajes y estándares web............................................................................................................492
Aspectos legales y herramientas de gestión de congresos..............................................................493
Herramientas de gestión de software..............................................................................................493
Protocolo HTTP y servidores web.....................................................................................................494
Librerías ...........................................................................................................................................494
Casos de prueba y automatización..................................................................................................495
Estadísticas ......................................................................................................................................495
Otros ................................................................................................................................................495
10 APÉNDICES ................................................................................................................................496
APENDICE I: ESTADÍSTICAS DE LA EDICIÓN DE 2014 ......................................................................................496
Estadísticas demográficas ...............................................................................................................496
Estadísticas de rendimiento.............................................................................................................505
APENDICE II: AMPLIACIONES PROPUESTAS...................................................................................................510
Uso del autocargador de clases de Symfony ...................................................................................510
Alternativas al sistema MVC usado .................................................................................................510
Mejoras funcionales generales y de planificación ...........................................................................512
Mejoras en la gestión de documentación........................................................................................512
Mejoras técnicas generales .............................................................................................................513
Mejoras en estadísticas, instrumentación y administración de la aplicación..................................514
Cambios considerados en el sistema de pagos................................................................................515
Mejoras de seguridad ......................................................................................................................516
Otros cambios a considerar .............................................................................................................516
APENDICE III: CONTENIDO DEL CD-ROM ...................................................................................................517
APENDICE IV: DEFINICIONES Y ABREVIATURAS..............................................................................................518
Índice de figuras
Figura 2.1: Diagrama cliente-servidor HTTP .........................................................................................20
Figura 2.2: Despliegue típico de una aplicación web utilizando un pool de procesos Apache...............22
Figura 2.3: Documento HTML básico....................................................................................................22
Figura 2.4: Ejemplo de declaración CSS................................................................................................25
Figura 2.5: Arquitectura MVC tradicional.............................................................................................27
Figura 2.6: Arquitectura MVC jerárquica..............................................................................................28
Figura 2.7: Esquema de funcionamiento de un sistema de plantillas web............................................30
Figura 3.1: Diagrama de Gantt de la planificación temporal del proyecto............................................45
Figura 4.1: Casos de Uso para las acciones de invitado ........................................................................76
Figura 4.2: Casos de uso para las acciones comunes ............................................................................79
Figura 4.3: Casos de uso para las acciones del perfil de ponente .........................................................81
Figura 4.4: Casos de uso para las acciones de papers de ponente ........................................................83
Figura 4.5: Casos de uso para las acciones de pago de ponente ...........................................................86
Figura 4.6: Casos de uso para las acciones de editor ............................................................................87
Figura 4.7: Casos de uso para las acciones de gestión de usuarios .......................................................89
Figura 4.8: Casos de uso para la descarga de certificados.....................................................................91
Figura 4.9: Casos de uso para la descarga de etiquetas........................................................................96
Figura 4.10: Casos de uso para la gestión general de pagos ...............................................................100
Figura 4.11: Casos de uso para la gestión de facturas individuales.....................................................102
Figura 4.12: Casos de uso para la descarga de facturas ......................................................................104
Figura 4.13: Casos de uso para la asignación automática de los números de factura .........................105
Figura 4.14: Casos de uso para la gestión de justificantes ..................................................................108
Figura 4.15: Casos de uso para la gestión de simposios......................................................................110
Figura 4.16: Casos de uso para la gestión de salas..............................................................................112
Figura 4.17: Casos de uso para la gestión de excursiones...................................................................114
Figura 4.18: Casos de uso para la gestión de papers...........................................................................117
Figura 4.19: Casos de uso de descarga de certificados y listado papers..............................................120
Figura 4.20: Casos de uso generales de configuración........................................................................122
Figura 4.21: Casos de uso para la configuración de los números de factura .......................................123
Figura 4.22: Casos de uso para la configuración de acceso.................................................................125
Figura 4.23: Casos de uso para la verificación del envío de correos....................................................126
Figura 4.24: Casos de uso para la obtención de información de autores ............................................128
Figura 4.25: Casos de uso para la obtención de información estadística ............................................128
Figura 5.1: Diagrama de despliegue lógico (detalle de procesos del servidor físico)...........................129
Figura 5.2: Diagrama simplificado de sistemas externos usados por la aplicación..............................130
Figura 5.3: Diagrama UML general de los espacios de nombres de la aplicación................................137
Figura 5.4: Diagrama UML de las clases utilizadas para implementar el autocargador.......................140
Figura 5.5: Diagrama UML de la clase ArrayCache..............................................................................142
Figura 5.6: Diagrama UML de las clases Configuration e EMail...........................................................145
Figura 5.7: Diagrama UMl de la clase HTTP404DieHandler.................................................................146
Figura 5.8: Diagrama UML de la clase cEzPDFStreamer......................................................................147
Figura 5.9: Diagrama UML de la clase MailValidator ..........................................................................148
Figura 5.10: Diagrama UML de la clase OverviewData .......................................................................150
Figura 5.11: Diagrama UML de la clase ScriptStats.............................................................................152
Figura 5.12: Diagrama UML de las clases AbstractModel, Log4PHPQueryLogger y MySQLiWrapper..155
Figura 5.13: Diagrama UML de las clases usadas para implementar las vistas....................................158
Figura 5.14: Diagrama UML de las clases base de los controladores ..................................................161
Figura 5.15: Diagrama UML de los tipos de excepciones de la aplicación...........................................163
Figura 5.16: Diagrama UML de los traits de acceso a propiedades de objeto.....................................166
Figura 5.17: Diagrama UML de los traits usados para generar y enviar los correos electrónicos ........168
Figura 5.18: Diagrama UML del trait para obtener la extensión a partir de un nombre de archivo ....169
Figura 5.19: Diagrama UML del trait de inicialización de objetos desde instancias compatibles ........170
Figura 5.20: Diagrama UML de los traits de obtención de carga media del sistema y descripción de
errores de envío de archivos .....................................................................................................171
Figura 5.21: Diagrama UML de la entidad Conference .......................................................................174
Figura 5.22: Diagrama UML de la entidad InstrumentationSample ....................................................182
Figura 5.23: Diagrama UML de la entidad MailerSettings ..................................................................186
Figura 5.24: Diagrama UML de la entidad Paper ................................................................................192
Figura 5.25: Diagrama UML de la entidad PaymentSettings...............................................................195
Figura 5.26: Diagrama UML de la entidad PersonTitle........................................................................197
Figura 5.27: Diagrama UML de la entidad Poster ...............................................................................200
Figura 5.28: Diagrama UML de la entidad Room ................................................................................202
Figura 5.29: Diagrama UML de la entidad Session..............................................................................204
Figura 5.30: Diagrama UML de la entidad Settings.............................................................................210
Figura 5.31: Diagrama UML de la entidad Trip ...................................................................................212
Figura 5.32: Diagrama UML de la entidad User ..................................................................................217
Figura 5.33: Diagrama UML de la entidad UserBillingInfo ..................................................................222
Figura 5.34: Diagrama UML de los decoradores Autor y PagoUsuario................................................224
Figura 5.35: Diagrama UML del decorador Conference ......................................................................226
Figura 5.36: Diagrama UML de los decoradores Paper, Poster y Room ..............................................231
Figura 5.37: Diagrama UML del decorador Settings ...........................................................................233
Figura 5.38: Diagrama UML del decorador UserBilling .......................................................................235
Figura 5.39: Diagrama UML de ejemplo para el proxy generado a partir de la entidad Room............236
Figura 5.40: Diagrama UML de las vistas usadas para generar las etiquetas ......................................238
Figura 5.41: Diagrama UML de las interfaces principales ...................................................................246
Figura 5.42: Diagrama UML general de las interfaces de los modelos ................................................247
Figura 5.43: Diagrama UML de la interfaz del modelo del listado de autores.....................................248
Figura 5.44: Diagrama UML de la interfaz del modelo de gestión de facturacion...............................251
Figura 5.45: Diagrama UML de la interfaz del modelo de gestión de simposios .................................253
Figura 5.46: Diagrama UML de la interfaz del modelo de instrumentación ........................................254
Figura 5.47: Diagrama UML de la interfaz del modelo del listado de facturas y justificantes .............255
Figura 5.48: Diagrama UML de la interfaz del modelo de inicio de sesión ..........................................257
Figura 5.49: Diagrama UML de la interfaz del modelo de gestión de papers ......................................260
Figura 5.50: Diagrama UML de la interfaz del modelo de gestión de pagos........................................262
Figura 5.51: Diagrama UML de la interfaz del modelo de gestión de salas .........................................264
Figura 5.52: Diagrama UML de la interfaz del modelo de gestión de sesiones ...................................265
Figura 5.53: Diagrama UML de la interfaz del modelo de configuración.............................................267
Figura 5.54: Diagrama UML de la interfaz del modelo de gestión de estadísticas ..............................268
Figura 5.55: Diagrama UML de la interfaz del modelo de gestión de excursiones ..............................269
Figura 5.56: Diagrama UML de la interfaz del modelo de gestión de usuarios....................................271
Figura 5.57: Diagrama UML de la clase que comprueba si la sesión posee permisos administrativos 272
Figura 5.58: Diagrama UML de la factoría de modelos.......................................................................277
Figura 5.59: Diagrama UML de los controladores de las acciones de invitado y editores ...................278
Figura 5.60: Diagrama UML de los controladores de gestión de papers de las páginas de usuario ....285
Figura 5.61: Diagrama UML de los controladores de gestión de perfil de las páginas de usuario .......291
Figura 5.62: Diagrama UML de los controladores principales de administración................................295
Figura 5.63: Diagrama UML de los controladores de las acciones AJAX..............................................308
Figura 5.64: Diagrama UML de los controladores PDF de la sección de administración......................313
Figura 5.65: Diagrama UML de los Frontcontrollers ...........................................................................323
Figura 5.66: Modelo entidad-relación general ...................................................................................329
Figura 5.67: Modelo entidad-relación de los usuarios y los títulos honoríficos ..................................330
Figura 5.68: Modelo entidad-relación de los datos de facturación de los usuarios.............................331
Figura 5.69: Modelo entidad-relación de papers, posters, simposios y salas......................................332
Figura 5.70: Modelo entidad-relación de las excursiones...................................................................332
Figura 5.71: Modelo entidad-relación de las muestras de instrumentación.......................................333
Figura 5.72: Modelo entidad-relación de los datos de configuración .................................................335
Figura 5.73: Modelo relacional de las tablas de usuarios, papers y conferencias ...............................337
Figura 5.74: Modelo relacional de las tablas de posters, salas y excursiones .....................................338
Figura 5.75: Modelo relacional de la tabla de facturación..................................................................338
Figura 5.76: Modelo relacional de las tablas de configuración ...........................................................339
Figura 5.77: Modelo relacional de las tablas de sesiones e instrumentación......................................340
Figura 5.78: Modelo entidad-relación normalizado de usuarios.........................................................342
Figura 5.79: Modelo entidad-relación normalizado de papers, posters, salas y simposios .................344
Figura 5.80: Modelo entidad-relación normalizado de los datos de facturación ................................345
Figura 5.81: Modelo entidad-relación normalizado de los parámetros de configuración ...................346
Figura 5.82: Distribución de las pantallas de la interfaz pública .........................................................348
Figura 5.83: Distribución general de las pantallas de la interfaz de administración............................349
Figura 5.84: Pantalla de administración con una fila seleccionada y una acción AJAX en curso..........350
Figura 5.85: Enlace de retorno a la parte superior de la página..........................................................350
Figura 6.1: Copia del instalador al servidor ........................................................................................352
Figura 6.2: Comprobaciones iniciales durante la instalación ..............................................................353
Figura 6.3: Copia de los archivos de la aplicación...............................................................................354
Figura 6.4: Finalización de la instalación ............................................................................................355
Figura 6.5: Página de inicio de la aplicación recién instalada.............................................................355
Figura 6.6: Procedimiento de cambio de la contraseña de administrador..........................................358
Figura 6.7: Configuración de acceso y números de factura en un entorno de producción ..................359
Figura 6.8: Configuración de la información de la edición actual de la conferencia............................360
Figura 6.9: Configuración del servidor SMTP a utilizar en un entorno de producción.........................361
Figura 6.10: Formulario para el envío de un correo de prueba...........................................................361
Figura 6.11: Salida de depuración mostrada tras el envío de un correo de prueba ............................362
Figura 6.12: Correo electrónico de prueba recibido en la dirección proporcionada............................362
Figura 6.13: Formulario de registro de nuevo usuario........................................................................363
Figura 6.14: Notificación enviada confirmando el registro .................................................................364
Figura 6.15: Formulario de inicio de sesión ........................................................................................365
Figura 6.16: Página principal de la interfaz de ponente......................................................................366
Figura 6.17: Formulario de edición de datos personales ....................................................................367
Figura 6.18: Formulario de cambio de contraseña .............................................................................367
Figura 6.19: Errores mostrados durante la edición del formulario de cambio de contraseña .............368
Figura 6.20: Error mostrado al no proporcionar correctamente la contraseña actual ........................368
Figura 6.21: Error mostrado cuando la nueva contraseña y su confirmación no coinciden.................368
Figura 6.22: Formulario para restablecer la contraseña de usuario....................................................369
Figura 6.23: Correo electrónico con la nueva contraseña enviado tras restablecer la misma.............369
Figura 6.24: Formulario para el envío de un nuevo paper ..................................................................370
Figura 6.25: Mensaje mostrado en la página de envío de papers cuando el plazo está cerrado .........371
Figura 6.26: Formulario cumplimentado para el envío de un nuevo paper ........................................371
Figura 6.27: Formulario de envío de un nuevo paper listando un paper enviado previamente ..........372
Figura 6.28: Página de detalle de un paper antes de entrar en proceso de revisión ...........................373
Figura 6.29: Página de detalle de un paper tras entrar en proceso de revisión ..................................373
Figura 6.30: Correo electrónico de confirmación enviado tras la aceptación de un paper..................374
Figura 6.31: Formulario de envío de nuevas versiones de papers ......................................................375
Figura 6.32: Formulario de envío de nuevas versiones de papers tras el envío de una revisión .........375
Figura 6.33: Página principal de la interfaz de gestión de pagos ........................................................376
Figura 6.34: Página de registro y modificación de datos fiscales y envío de justificante de pago.......377
Figura 6.35: Pantalla para el envío del justificante de pago antes de su envío ...................................378
Figura 6.36: Pantalla para el envío del justificante de pago tras su envio...........................................378
Figura 6.37: Pantalla para el envío del justificante de pago tras la confirmación del mismo ..............379
Figura 6.38: Calendario de inicio de los simposios .............................................................................380
Figura 6.39: Calendario de exposición de posters ..............................................................................380
Figura 6.40: Calendario de exposición de posters (formato de agenda) .............................................380
Figura 6.41: Formulario de inicio de sesión ........................................................................................381
Figura 6.42: Interfaz de gestión de salas ............................................................................................383
Figura 6.43: Formulario de creación de una nueva sala.....................................................................383
Figura 6.44: Formulario de modificación de nombre de sala..............................................................384
Figura 6.45: Interfaz de gestión de simposios ....................................................................................385
Figura 6.46: Formulario de creación de un nuevo simposio ...............................................................385
Figura 6.47: Edición del nombre de un simposio ................................................................................385
Figura 6.48: Edición de la fecha de inicio de un simposio ...................................................................386
Figura 6.49: Interfaz de gestión de excursiones .................................................................................387
Figura 6.50: Creación de una nueva excursión ...................................................................................387
Figura 6.51: Interfaz de gestión de usuarios.......................................................................................388
Figura 6.52: Listado de usuarios adaptado a un ancho de pantalla menor .........................................388
Figura 6.55: Listado de usuarios con usuarios seleccionados .............................................................389
Figura 6.56: Certificado de asistencia.................................................................................................390
Figura 6.57: Botones de descarga de etiquetas ..................................................................................391
Figura 6.58: Hoja de etiquetas de asistencia (horizontales; 15 x 7,5 cm)............................................392
Figura 6.59: Hoja de etiquetas de asistencia (horizontales; 9,2 x 6,25 cm) .........................................393
Figura 6.60: Hojas de etiquetas de asistencia (verticales) ..................................................................394
Figura 6.61: Hoja de etiquetas de asistencia a la cena de gala (horizontales; 15 x 7,5 cm) .................395
Figura 6.62: Hoja de etiquetas de asistencia a la cena de gala (horizontales; 9,2 x 6,25 cm) ..............396
Figura 6.63: Hoja de etiquetas de asistencia a excursiones (horizontales; 15 x 7,5 cm)......................397
Figura 6.64: Hoja de etiquetas de asistencia a excursiones (horizontales; 9,2 x 6,25 cm) ...................398
Figura 6.65: Hoja de etiquetas identificativas para los organizadores (horizontales; 15 x 7,5 cm)......399
Figura 6.66: Hoja de etiquetas identificativas para los organizadores (horizontales; 9,2 x 6,25 cm)...400
Figura 6.67: Hoja de etiquetas de restaurante (horizontales; 15 x 7,5 cm) .........................................401
Figura 6.68: Hoja de tickets de restaurante (horizontales; 9,2 x 6,25 cm)...........................................402
Figura 6.69: Hoja de etiquetas en blanco (horizontales; 15 x 7,5 cm) .................................................403
Figura 6.70: Hoja de etiquetas en blanco (horizontales; 9,2 x 6,25 cm) ..............................................404
Figura 6.71: Hoja de etiquetas en blanco (verticales).........................................................................405
Figura 6.72: Notificación de registro de nuevo usuario ......................................................................406
Figura 6.73: Menú de acceso a las páginas de gestión de facturas y justificantes de pago .................407
Figura 6.74: Formulario de modificación de cuota de inscripción.......................................................408
Figura 6.75: Notificación enviada al recibir un nuevo justificante de pago.........................................409
Figura 6.76: Interfaz de gestión de facturas .......................................................................................409
Figura 6.77: Listado de usuarios con factura solicitada con usuarios seleccionados ...........................410
Figura 6.78: Factura generada por la aplicación .................................................................................411
Figura 6.79: Detalle de la numeración de facturas y facturas listas para imprimir..............................412
Figura 6.80: Interfaz de gestión de justificantes de pago simple ........................................................413
Figura 6.81: Listado de usuarios con justificantes de pago simple con usuarios seleccionados .........414
Figura 6.82: Justificante de pago generado por la aplicación .............................................................415
Figura 6.83: Interfaz de gestión de los papers enviados .....................................................................416
Figura 6.86: Formulario de edición del ltítulo de paper......................................................................417
Figura 6.87: Notificación enviada a los administradores tras el envío de un nuevo paper..................418
Figura 6.88: Nuevo paper listado en la página de administración antes de entrar en revisión ...........418
Figura 6.89: Notificación enviada a los administradores tras aceptar un paper .................................419
Figura 6.90: Notificación enviada a los administradores tras recibir una nueva versión de un paper.420
Figura 6.91: Formulario de edición de sala y fechas de presentación de posters................................421
Figura 6.92: Listado de papers con papers seleccionados...................................................................422
Figura 6.93: Certificado de presentación de ponencia........................................................................423
Figura 6.94: Listado de autores ..........................................................................................................425
Figura 6.95: Enlace de descarga de la lista de autores en formato Excel ............................................425
Figura 6.97: Página de estadísticas agregadas....................................................................................426
Figura 6.98: Formulario de inicio de sesión........................................................................................428
Figura 6.99: Interfaz de editor............................................................................................................429
Figura 10.1: Número de usuarios registrados por semana.................................................................497
Figura 10.2: Número de usuarios totales en el sistema por semana...................................................497
Figura 10.3: Número de usuarios por país de procedencia.................................................................498
Figura 10.4: Número de nuevos papers enviados por semana ...........................................................499
Figura 10.5: Número de papers totales en el sistema por semana .....................................................499
Figura 10.6: Número de papers aceptados por simposio....................................................................500
Figura 10.7: Número de solicitudes por navegador (todas las páginas) ..............................................501
Figura 10.8: Número de solicitudes por navegador (páginas públicas)...............................................501
Figura 10.9: Valores muestrales (agregados) de número de solicitudes por navegador .....................502
Figura 10.10: Número de solicitudes por S.O. del cliente (todas las páginas) .....................................503
Figura 10.11: Número de solicitudes por S.O. del cliente (páginas públicas) ......................................503
Figura 10.12: Valores muestrales (agregados) de número de solicitudes por sistema operativo........504
Figura 10.13: Número de solicitudes HTTP por semana .....................................................................506
Figura 10.14: Número de sesiones HTTP por semana.........................................................................506
Figura 10.15: Uso medio de CPU y memoria por día ..........................................................................507
Figura 10.16: Parámetros estadísticos generales de uso de CPU, memoria y BBDD...........................508
Figura 10.17: Media de tiempo y memoria empleados para generar las páginas ...............................508
Figura 10.18: Grado absoluto de relación lineal existente entre el uso de CPU y de memoria ...........509
Figura 10.19: Grado relativo de relación lineal existente entre el uso de CPU y de memoria .............509
PresentacIon | Plataforma web para la gestión de conferencias científico-técnicas
Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 17
1 PRESENTACION
El presente proyecto tiene como objetivo el desarrollo y puesta en producción de una aplicación web
para la gestión de una conferencia científico-técnica sobre la aplicación de métodos matemáticos en
problemas de ciencia e ingeniería. La aplicación desarrollada tiene como finalidad la gestión completa
del registro de ponentes, envío de artículos, generación de facturas y recolección de estadísticas,
poniendo especial énfasis en los aspectos relativos al rendimiento, portabilidad y modularidad de sus
componentes.
Este proyecto surge con el objetivo de remplazar una aplicación web existente que la organización
venía utilizando en ediciones anteriores del congreso y teniendo como uno de sus objetivos que se
ejecute sobre un servidor Linux. Para ello se ha realizado un estudio de las funcionalidades cubiertas
por la aplicación original, además de considerar e implementar numerosas mejoras relativas a la
usabilidad, a los tiempos de respuesta de la aplicación y al uso de componentes software actuales,
utilizando librerías de código abierto (open source) como base para la implementación de las diferentes
funcionalidades cubiertas.
De esta forma, se dispone de una aplicación flexible y modular, construida sobre componentes
software ampliamente testados por diferentes comunidades de desarrolladores de aplicaciones tanto
open source como privativas, y que tiene en cuenta y posibilita la implementación de nuevas
funcionalidades con relativa facilidad.
Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto
18 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo
2 MEMORIA DEL PROYECTO
2.1 Hoja de identificación
 Plataforma web para la gestión integral de conferencias científico-técnicas.
 Cliente:
o International Conference on Computational and Mathematical Methods in Science and
Engineering.
 Suministrador:
o Héctor Arroyo Santiago.
 Mayo 2015
 Resumen: Desarrollo de una aplicación web para la gestión de la 14th International Conference
on Computational and Mathematical Methods in Science and Engineering.
 Duración estimada: Octubre 2013 – Mayo 2015.
 Coste estimado: 22.685 €
Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas
Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 19
2.2 Tecnologías, protocolos y conceptos clave
En este apartado se dispone de una introducción a algunas de las tecnologías y conceptos cuyo
conocimiento resulta de capital importancia para comprender el resto de este documento.
2.2.1 Introducción al protocolo HTTP
El Protocolo de Transferencia de Hipertexto (HyperText Transfer Protocol) [HTTP01] es el protocolo
más usado para navegar por Internet, y define los detalles y convenios necesarios para el intercambio
de datos entre un navegador web (cliente) y el sistema que proporciona los contenidos o páginas web
(servidor). HTTP es un protocolo basado en transacciones, y sigue un esquema petición-respuesta
entre el cliente y el servidor. Se sitúa en el nivel superior de la arquitectura TCP/IP (nivel de aplicación)
y hace uso de los mecanismos estándar de TCP para proporcionar fiabilidad en la comunicación.
Un aspecto importante de HTTP es su carácter de protocolo sin estado (stateless): En general, cada
solicitud del cliente es tratada de manera independiente del resto, creando y destruyendo una
conexión dedicada entre el cliente y el servidor para ello1
. El funcionamiento sin estado de HTTP es
adecuado para su uso habitual, en el que un usuario solicita una secuencia de páginas y datos asociados
a éstas en un corto intervalo de tiempo, y los contenidos solicitados se encuentran en uno o más
servidores independientes [STAL04].
Otra característica importante de HTTP es que, aunque su nombre hace referencia a la transferencia
de hipertexto, el protocolo no impone ningún tipo de restricción en cuanto al tipo de documentos que
puede gestionar: Los datos son enviados como secuencias de bytes, sin hacer distinción en el
contenido. Esto permite utilizar el mismo protocolo para enviar los contenidos vinculados a una página
web, simplificando la infraestructura necesaria [STAL04].
Tipos de solicitudes
A nivel de protocolo, HTTP define 8 tipos distintos de solicitudes, denominados métodos HTTP. Los
más comunes son GET (para solicitar un recurso a partir de su URI), HEAD (idéntico al anterior pero sin
incluir el cuerpo del documento) y POST (para guardar datos adicionales proporcionados por el cliente
como una nueva entidad subordinada del recurso web identificado por la URI proporcionada)
[SYMF01].
Tipos de respuesta
En respuesta a las solicitudes de los clientes, los servidores retornan un valor numérico de 3 dígitos
conocido como código de respuesta. Éstos se clasifican en 5 tipos denominados clases. Las clases de
respuesta HTTP son 1xx Informational (para respuestas provisionales, como las relativas a
comprobaciones previas para solicitudes posteriores), 2xx Success (que indican que una solicitud es
1
Aunque cliente y servidor pueden acordar reutilizar la misma conexión para varias solicitudes. En este caso se
mantiene la conexión TCP pero no el estado previo a nivel de protocolo de aplicación.
Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto
20 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo
soportada y aceptada por el servidor, y se ha procesado correctamente), 3xx Redirection (que indica
que se debe realizar una acción adicional, como una solicitud a una nueva URI, o que los datos en la
memoria caché del navegador están actualizados), 4xx Client Error (si hay errores en la solicitud del
cliente y la naturaleza temporal o definitiva de los mismos) y 5xx Server Error (que indican errores no
atribuibles al cliente al procesar una solicitud válida).
Internet
Cliente
Cliente
Cliente
Servidor
Figura 2.1: Diagrama cliente-servidor HTTP
Sesiones en HTTP
Aunque HTTP es un protocolo sin estado y no proporciona mecanismos para mantener información
asociada a un conjunto de solicitudes de diferentes recursos, en los sitios y aplicaciones web actuales
resulta imprescindible poder identificar y mantener información para cada cliente de manera
individual. Para ello, el servidor envía una cookie como parte de la respuesta a su primera solicitud que
es reenviada por el navegador en las siguientes, de forma que se consigue preservar la información
necesaria asociada al usuario durante el tiempo que éste utiliza la aplicación. Esta cookie contiene un
identificador de sesión (o token) utilizado por el servidor para identificar y localizar los datos del
cliente. La razón de que solo se envíe y reciba un token hacia y desde el cliente atiende a razones de
simplicidad (el cliente solo tiene que gestionar un identificador) y seguridad (la comprobación de la
autenticidad del token se realiza en el servidor, pudiendo implementar mecanismos de seguridad
adicionales como la comprobación de la IP de origen o la revocación de privilegios para tokens que no
hayan sido utilizados durante un periodo de tiempo determinado).
Generación de contenido de forma dinámica
Cuando la World Wide Web surgió a principios de los 90, la mayor parte de sus contenidos eran páginas
estáticas HTML. Sin embargo, a medida que su uso se fue popularizando, surgió la necesidad de
generar las páginas de manera dinámica (esto es, crear el contenido en el momento en el que el
usuario lo solicita). Esto permitió que surgieran webs que respondían a las necesidades de los usuarios,
permitiéndoles interactuar con ellas y obtener información que se actualizaba en tiempo real.
En la actualidad, prácticamente todas las webs más visitadas generan la mayor parte de sus páginas
en el momento en que son solicitadas por el usuario a partir de un programa [ALEX01]. Una búsqueda
Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas
Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 21
en Google retorna un listado de páginas generado a partir de los datos de un índice, los artículos de la
Wikipedia son generados a partir de la información almacenada en una base de datos, Facebook es
una aplicación escrita en PHP y C++ que lee sus datos de una base de datos distribuida [FACEB01].
Para la generación dinámica del contenido en el servidor de aplicación existen diversas alternativas.
Las más comunes son generar el contenido a partir de un programa o script CGI escrito en cualquier
lenguaje de programación, lo cual normalmente implica la creación de un nuevo proceso; o generar el
contenido a partir de un script ejecutado por el servidor dentro de su espacio de direcciones2
, como
si se tratase de una llamada a función más dentro del ciclo normal de despacho de solicitudes.
La aplicación desarrollada está implementada utilizando PHP, el cual soporta ambos modos de
operación. En nuestro caso, hemos optado por el segundo enfoque, ya que es el recomendado para la
combinación del servidor web y sistema operativo utilizados [PHP03].
Además, para mejorar los tiempos de carga y disminuir los recursos necesarios en el servidor de bases
de datos, es común utilizar servidores adiciones de memoria caché para guardar copias de los datos
de la aplicación (o páginas completas generadas previamente) en memoria RAM, evitando así los
accesos a disco y la sobrecarga adicional introducida por las comprobaciones de permisos de la base
de datos en las lecturas. Aun así, las escrituras siguen introduciendo importantes latencias, así como
la lógica asociada a mantener la consistencia de datos entre las memorias caché y la base de datos.
2.2.2 Introducción a HTML
El Lenguaje de Marcado de Hipertexto (Hypertext Markup Language) es el sistema surgido a principios
de los 90 para estructurar el contenido de los documentos a mostrar utilizando un navegador web.
Consta de una serie de reglas sintácticas, que definen códigos de marcado o etiquetas insertadas en
los archivos que constituyen las páginas web; y semánticas, que indican al navegador cómo mostrar al
usuario la información. Los elementos que forman los documentos HTML pueden clasificarse en
estructurales (como un párrafo) o en aquellos que definen un comportamiento deseado (como un
salto de línea) [ROB06].
Las reglas que definen la etiquetas HTML válidas y su sintaxis y semántica son mantenidas por el World
Wide Web Consortium (más conocido por la abreviatura W3C), una organización internacional fundada
en 1994 cuyo objetivo es el desarrollo y mantenimiento de los diferentes estándares sobre los que se
basa Internet.
Los elementos HTML pueden anidarse y, para que sean correctos, todos ellos deben estar entre las
etiquetas de apertura y cierre del elemento que lo contiene (denominado padre) [ROB06].
2
Este modo de operación es conocido como “Ejecución como módulo del servidor”.
Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto
22 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo
Internet
Apache
Cliente
Apache Workers
mod_php
core
MySQL Memcached
Figura 2.2: Despliegue típico de una aplicación web utilizando un pool de procesos Apache
El conjunto de reglas sintácticas y semánticas que
debe cumplir un documento HTML es bastante
complejo, y difiere entre versiones del estándar.
Para facilitar la tarea de comprobar si una página
cumple con los estándares, la W3C pone a
disposición de los desarrolladores una herramienta
online en [W3C02] que realiza una comprobación
sintáctica y semántica completa para determinar la
validez de los documentos.
En los últimos años se ha puesto un especial énfasis
en eliminar de HTML la información utilizada para
<!DOCTYPE html>
<html>
<head>
<title>Título de la página</title>
</head>
<body>
<p>Hola mundo!</p>
</body>
</html>
Figura 2.3: Documento HTML básico
Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas
Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 23
indicar cómo representar su contenido, recomendando el uso de CSS para este propósito y utilizando
HTML como capa estructural [ROB06]. De esta forma, los archivos HTML pasan a ser la fuente de los
contenidos y la estructura básica de las páginas web, mientras que CSS define de forma exhaustiva la
forma de presentarlos mediante un conjunto de reglas independientes y fácilmente intercambiables
en función, por ejemplo, del tipo de dispositivo usado (como un ordenador o un teléfono móvil) o de
sus características (como su resolución o el navegador utilizado).
Para crear una base sólida, escribir documentos HTML sin elementos de presentación y bien
estructurados se ha convertido en la base del diseño web fiel a los estándares, utilizando marcado
semántico de forma que sus elementos sean descriptivos y tengan significado [ROB06].
El nuevo estándar: HTML5
Con el paso del tiempo, HTML fue degenerando en una mezcla de
características introducidas por sus distintas especificaciones, por los
diferentes navegadores que incluían sus propias extensiones al estándar,
por los hábitos de los desarrolladores y por la necesidad de lidiar con los
errores sintácticos de los documentos existentes en la web. Además, el
lenguaje presentaba carencias, y era necesario mejorar la representación
semántica de los documentos. Por otra parte, el mercado actual incluye
nuevos dispositivos, como teléfonos móviles, tablets o televisores, y usos de
los lenguajes del lado del cliente que no se habían tenido en cuenta inicialmente, como la obtención
de datos del servidor de forma asíncrona para alterar el contenido y la presentación de los documentos
en tiempo real. Tradicionalmente estos problemas han sido solventados recurriendo a tecnologías no
estándar (como Flash) que introducen nuevos problemas, como un mayor uso de recursos o el hecho
de atar a usuarios y desarrolladores a productos propietarios.
Para solucionar estos problemas, la W3C publicó en 2012 una versión inicial de la quinta revisión de
HTML como una recomendación candidata3
, que constituye una renovación del lenguaje teniendo en
cuenta el escenario actual, y la inclusión de características demandadas por usuarios y desarrolladores.
Entre las características principales de HTML5 están [MOZ01]:
 Nuevos elementos semánticos, proporcionando soporte para definir el significado y la
importancia de las diferentes secciones de los documentos de manera nativa.
 Posibilidad de referenciar audio y video a través de tags estándar, gestionando los
contenidos en el propio navegador y su control a través de interfaces de usuario programadas
utilizando Javascript tradicional.
 Soporte para nuevos elementos de formulario, y la posibilidad de definir la lógica de
validación de éstos directamente como atributos HTML en lugar de necesitar el uso de
lenguajes de scripting para ello.
3
El 28 de Octubre de 2014 la W3C publicó la primera versión completa del estándar HTML5 en [W3C08].
Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto
24 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo
 Comunicación bidireccional entre el cliente y el servidor, permitiendo a este último la
notificación de eventos utilizando WebSockets en lugar de necesitar un mecanismo de polling
tradicional e el cliente.
 Posibilidad de implementar aplicaciones web multihilo, utilizando WebWorkers para la
ejecución de Javascript en segundo plano.
 Soporte nativo para el almacenamiento de información en el cliente, posibilitando la creación
de aplicaciones web que guardan información en el equipo del usuario.
Además, junto a HTML5 se dispone de la tercera versión de CSS, que introduce mejoras para definir
interfaces de usuario modernas, incluyendo bordes redondeados, animaciones, tipografías mejoradas
y acceso al hardware de aceleración gráfica en 3D a través de WebGL.
2.2.3 Introducción a AJAX
Por Javascript Asíncrono y XML (Asynchonous Javascript And XML) se conoce al conjunto de tecnologías
de desarrollo web que permiten la creación de aplicaciones asíncronas en las que el cliente puede
enviar y recibir datos a y desde servidor en segundo plano, sin requerir la recarga de la página actual.
Formalmente, AJAX no se refiere a una única tecnología, sino a un conjunto de ellas, incluyendo HTML
y CSS, DOM, XML y Javascript que, utilizadas de manera simultánea, permiten implementar
aplicaciones web que, hasta cierto punto, se asemejan a las aplicaciones de escritorio tradicionales
en lo referido a los tiempos de respuesta.
Entre las aplicaciones web más conocidas que implementan este modelo de funcionamiento se
incluyen Gmail, Google Maps, Goolge Docs, Twitter o Facebook, y se basan en los estándares HTML y
CSS (para crear una interfaz de usuario interoperable), DOM (para la manipulación dinámica de los
contenidos), XML y JSON (para representar y manipular los datos enviados y recibidos) y Javascript
(utilizado como el lenguaje que une todas las demás tecnologías).
En las aplicaciones web tradicionales, las acciones del usuario, como hacer clic en un botón o
seleccionar un valor de una lista, requerían realizar una solicitud HTTP, tras la cual toda la interfaz de
usuario (la página web) era redibujada. Utilizando AJAX, el usuario puede seguir interactuando con el
sitio mientras la respuesta a sus acciones es procesada en segundo plano por el servidor y el navegador
espera la respuesta a ellas siguiendo un modelo orientado a eventos. Esto permite la implementación
de funciones que antes solo eran posibles en aplicaciones de escritorio, como autocompletado, la
notificación de llegada de nuevos correos electrónicos en tiempo real, sistemas de mensajería
instantánea, interfaces de administración completas de uso sencillo para máquinas virtuales [VBOX01],
o sistemas de gestión de contenido web [AJXL14] o bases de datos [DBADM01].
2.2.4 Introducción a CSS y CSS3
Las hojas de estilo en cascada (Cascading Style Sheets) son utilizadas para definir la apariencia y
formato de los diferentes elementos de una página web (o cualquier otro tipo de documento XML) en
una pantalla de ordenador, móvil u otro dispositivo por medio de una sintaxis sencilla. Publicado
Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas
Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 25
inicialmente en 1996 por la W3C, CSS es considerado una de las tecnologías clave de la web actual y la
práctica totalidad de los sitios web lo utilizan para definir la presentación de sus contenidos.
CSS permite un control total sobre el estilo y formato de los documentos [W3C03], separando el
contenido de la presentación, por medio de reglas o declaraciones sobre estilo de uno o más
elementos. Sintácticamente, cada regla se divide en dos partes: un selector y una declaración de estilo
asociada a éste. A su vez, cada declaración está compuesta por una o más asignaciones de valores a
propiedades del selector.
h1 { color: red; font-weight: bold; }
Figura 2.4: Ejemplo de declaración CSS
Los selectores funcionan como enlace entre el documento y el estilo, especificando qué elementos van
a verse afectados por cada declaración. En el ejemplo anterior, se especifica que los elementos HTML
<h1> deben mostrarse en negrita y color rojo en todos los documentos vinculados a la hoja de estilos
que lo contiene.
Existen 3 formas de asociar estilos a los elementos de un documento: utilizando una hoja de estilos
CSS externa, insertando las reglas directamente en el encabezado de un documento, o insertando los
valores de las propiedades directamente sobre aquellos elementos a modificar. Estos métodos no son
mutuamente excluyentes.
Otro aspecto importante de CSS es la posibilidad de anidar las reglas, por medio de múltiples
declaraciones o utilizando múltiples reglas diferentes aplicables a un mismo elemento. De esta forma
es posible definir el estilo general de un documento, para luego concretarlo en otros archivos o
directamente sobre el marcado HTML, siguiendo un proceso análogo al de herencia y sobrecarga de
los lenguajes de programación.
En general, existen tres tipos de selectores básicos: aquellos que especifican el identificador único del
elemento HTML sobre el que se aplican (precedido de una almohadilla), aquellos que definen una clase
de elementos (precedidos de un punto) y aquellos, más generales, que se aplican a todas las etiquetas
HTML de un tipo dado. Además, pueden utilizarse selectores basados en pseudoclases, que permiten
definir el formato de los elementos basándose en información que no está representada en el árbol
sintáctico del documento (por ejemplo, definir el color de los enlaces que han sido visitados
previamente por el usuario o la apariencia de un botón cuando se pasa el ratón por sobre él).
Novedades de CSS3
En junio de 1999 la W3C publicó los primeros borradores de la tercera versión de
CSS. En general, CSS3 ha sido publicado como diferentes módulos, cada uno con
procesos de revisión y calendarios diferentes, y abarcan aspectos concretos como
el modelo de cajas CSS [W3C04] (box model, relativo al posicionamiento de los
elementos de una página), las imágenes de fondo [W3C05] (permitiendo utilizar
múltiples imágenes como fondo de cualquier elemento y controlar su posición), la
descarga de las fuentes de texto usadas por una página [W3C06] (eliminando así la
tradicional dependencia en las fuentes instaladas en el equipo del cliente) o las
Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto
26 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo
media-queries [W3C07] (que permiten definir declaraciones de estilo condicionales en función del
tamaño u orientación de la pantalla o del tipo de dispositivo).
2.2.5 El patrón de diseño MVC
El patrón Modelo-Vista-Controlador (Model-View-Controller) [GoF94] define el diseño de sistemas de
información como diferentes componentes débilmente acoplados, de forma que la representación
interna de los datos es independiente de la forma en que éstos son mostrados al usuario. Las
aplicaciones construidas siguiendo este patrón quedan, en general, divididas en los siguientes
componentes:
 Modelos: Objetos que encapsulan el acceso a los datos de la aplicación, de forma que el
mecanismo de acceso a los mismos y su representación interna es independiente del resto de
la aplicación.
 Vistas: Las vistas implementan la forma de interactuar del usuario con la aplicación, siendo las
encargadas de decidir cómo mostrar los datos a éste.
 Controladores: Los controladores se encargan de realizar solicitudes a los modelos, de elegir
las vistas a utilizar y de proporcionar a éstas los datos necesarios.
El principal inconveniente de MVC, cuando se utiliza de forma estricta, es el hecho de que, al utilizarse
un único controlador para atender cada solicitud, cada uno debe gestionar también otras partes que
son comunes a toda la aplicación, como la inicialización de sesiones, la comprobación de permisos o la
generación de las partes de la interfaz que son comunes a toda la aplicación o a secciones amplias de
la misma.
MCV en capas: Arquitectura jerárquica
Al desarrollar una aplicación web, a menudo se presentan complicaciones a la hora de definir la
interfaz con el cliente debido a la gran variedad de servidores, plataformas de desarrollo y protocolos
con los que debe lidiar el desarrollador. Entre los factores que hay que tener en cuenta están cómo
estructurar la interfaz y cómo interactuarán los usuarios con ella, cómo separar la lógica encargada de
enviar los datos al cliente en diferentes formatos y cómo gestionar los eventos y el flujo de la
aplicación. Además, hay que tener en cuenta que ciertas partes de la capa de presentación deben ser
consistentes ente páginas (o idénticas), y hay ciertos pasos que deben realizarse indistintamente para
todas las solicitudes (como la creación de conexiones a la base de datos, la gestión de sesiones o la
inicialización de subsistemas comunes a toda la aplicación).
Para simplificar el proceso de desarrollo, mejorar la modularidad de las aplicaciones y facilitar su
mantenimiento surge el Modelo-Vista-Controlador Jerárquico (Hierarchical Model-View-Controller,
[CAI00]). Se trata de una variación del patrón MVC estándar que aumenta la modularidad y facilita la
reusabilidad y el mantenimiento del código, permitiendo, a diferencia del MVC tradicional, que los
controladores pueden realizar sub-solicitudes a otros controladores.
Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas
Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 27
Base de Datos
Controlador
Modelo(s)
Figura 2.5: Arquitectura MVC tradicional
De esta forma cada controlador se encarga de generar parte de la respuesta a enviar al usuario,
delegando el resto en otros controladores y permitiendo la construcción de aplicaciones como un
conjunto de varias capas jerárquicas de modelos, vistas y controladores. Algunas de las ventajas de
HMVC son:
 Reduce las dependencias entre partes dispares del programa.
 Facilita la reutilización de componentes y módulos.
 Aumenta la extensibilidad a la vez que facilita el mantenimiento del código.
La clave para ello está en la posibilidad de realizar sub-solicitudes a otros controladores en lugar de
duplicar código. Por ejemplo, para mostrar una lista de artículos en HTML se envía una solicitud al
controlador de artículos con algunos parámetros, el cual interactúa con el modelo apropiado, y
selecciona una vista para mostrar el contenido. Sin embargo, en lugar de mostrar la lista recibida
directamente en una página independiente, el controlador que realiza la sub-solicitud utiliza la vista
recibida para incrustarla en otra (por ejemplo, una interfaz que lista todas las opciones de
administración).
Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto
28 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo
Base de Datos
Controlador
Modelo(s)
Controlador
Modelo(s)
...
Figura 2.6: Arquitectura MVC jerárquica
2.2.6 Introducción a PHP
PHP (acrónimo recursivo que significa “PHP: Hypertext Preprocesor” o Preprocesador de Hipertexto)
es un lenguaje de programación de propósito general ampliamente usado para el desarrollo de
aplicaciones web. Con una sintaxis que toma elementos de C, Java y Perl, se trata de un lenguaje
diseñado para permitir el desarrollo de páginas web dinámicas de forma rápida, a la vez que permite
construir aplicaciones más complejas utilizando interfaces a librerías de terceros y elementos de la
programación orientada a objetos [PHP04].
El código escrito en PHP puede estar mezclado con código HTML o de otro tipo, o pude usarse junto a
sistemas de plantillas (separando la lógica de negocio de la capa de presentación). Habitualmente los
programas escritos en PHP (también llamados scripts PHP) son procesados por un intérprete enlazado
a un servidor web como una extensión o utilizando una interfaz CGI, tras lo cual se envía el resultado
generado al cliente como respuesta a una solicitud.
Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas
Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 29
A diferencia de los lenguajes de programación tradicionales, PHP usa un sistema de asignación de tipos
de dato débil y dinámico, en el cual las variables no tienen que declararse previamente y pueden pasar
de representar un tipo escalar a otro, un objeto, o dejar de existir dentro de un mismo contexto de
ejecución (por ejemplo, dentro de una única función).
Internamente, PHP está estructurado a partir de un pequeño núcleo (core) que gestiona la
funcionalidad esencial del lenguaje (como el parser o la gestión de variables y tipos) sobre una máquina
virtual que proporciona funcionalidades de bajo nivel (como la gestión de memoria o la representación
interna de datos). Sobre él se apoyan un amplio número de extensiones4
que proporcionan varias
funcionalidades, como manipulación de imágenes, cálculo con números de precisión arbitraria, envío
de correo electrónico o interfaces para utilizar diferentes protocolos de red. Del mismo modo, parte
de las funcionalidades básicas del lenguaje, como los principales tipos de contenedores (pilas, heaps,
listas enlazadas…), iteradores, excepciones e interfaces están implementadas como la extensión
obligatoria (sic) SPL5
.
La implementación original de PHP, disponible en php.net, se considera el estándar de facto y está
construida sobre una máquina virtual denominada Zend Engine, que compila en el momento de la
solicitud el código PHP a una representación interna que luego es ejecutada por un intérprete. Debido
al tiempo necesario para ello, existen varios proyectos open source que implementan compiladores
PHP alternativos (como HipHop Virtual Machine [FACEB01] o Parrot).
El uso de PHP para el desarrollo web está ampliamente extendido, existiendo fuentes que estiman que
es utilizado aproximadamente por el 40% de los sitios web actuales6
[WIKI05].
2.2.7 Los sistemas de plantillas para web
Debido a que los documentos HTML son archivos de texto plano, las aplicaciones web pueden ser
desarrolladas de forma directa, escribiendo directamente el código que lo define a través de la salida
estándar 7
(la cual se envía al cliente directamente por el navegador). Esta forma de proceder, aunque
inicialmente más simple y fácil, rápidamente da lugar a aplicaciones difíciles de entender y mantener.
Además, normalmente provoca que cualquier cambio en la capa de presentación deba hacerse en
varios archivos, y da lugar a archivos de código fuente demasiado largos y potenciales inconsistencias.
Los sistemas de plantillas aplican el principio de separación en capas usado en la ingeniería de software
tradicional en las aplicaciones web. De esta forma, la capa de presentación es definida a partir de
archivos independientes que contienen código HTML (o de otro tipo, como CSS o Javascript) y
referencias o etiquetas especiales que son remplazadas por valores reales para generar la respuesta a
enviar al cliente. Esto proporciona una serie de ventajas importantes:
 Facilita la separación de responsabilidades, encapsulando en las plantillas los detalles relativos
a la presentación.
4
A día de hoy existen más de 200 extensiones documentadas en php.net.
5
Standard PHP Library (librería estándar de PHP)
6
Enero 2013
7
Esto es bastante común en la programación de scripts CGI utilizando lenguajes tradicionales
Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto
30 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo
 Proporciona una forma sencilla de modificar la presentación, al estar definida en un conjunto
de archivos conocido e independiente.
 Establece un principio de mínimo privilegio a nivel software, evitando que la capa de
presentación acceda a funciones de modificación de datos o de lógica de negocio.
 Permite definir la interfaz de usuario utilizando una sintaxis independiente y, a menudo, más
sencilla que la del resto de la aplicación.
Por otra parte, al utilizar plantillas se incluye una capa adicional en el proceso necesario para generar
las páginas web, con la correspondiente sobrecarga asociada y necesidad de gestión de archivos
adicionales. Para solucionar el primer problema, los sistemas de plantillas modernos permiten
precompilar plantillas (convirtiéndolas en clases PHP o código Java nativo, por ejemplo), o utilizar
sistemas de caché en memoria que evitan el coste asociado a leer las plantillas de disco en cada
solicitud.
Página Web
Plantilla
%header%
Welcome…
· …..
· …..
[_] [_]
Datos
Sistema
De
Plantillas
Figura 2.7: Esquema de funcionamiento de un sistema de plantillas web
Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas
Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 31
2.3 Objeto
La aplicación desarrollada surge para suplir las carencias de otra aplicación que el congreso venía
utilizando en ediciones anteriores. Se trata de un gestor integrado que permitirá el registro de los
asistentes al congreso, el envío por parte de éstos de los artículos a presentar y sus justificantes de
pago, y la gestión integral de todas las fases de la conferencia por parte de los organizadores de la
misma, incluyendo el ciclo de revisión de artículos, las distintas sesiones que tendrán lugar o la
generación de documentación y listados diversos.
2.4 Antecedentes
La aplicación desarrollada parte de otra utilizada en ediciones anteriores, a la cual viene a sustituir, y
debe cubrir la funcionalidad proporcionada por ella, además de solventar las carencias detectadas en
la misma tras su uso en ediciones anteriores. Para ello se deben realizar los cambios necesarios para
garantizar la modularidad de la aplicación resultante, asegurándonos de que la ampliación posterior
de la misma resulte más sencilla que al inicio del proyecto.
Durante el desarrollo deben de existir los mecanismos necesarios para garantizar el funcionamiento
de las características originales, a la vez que se garantiza que las nuevas lo siguen haciendo de la
manera esperada tras cada iteración. Para este propósito se utilizarán tests unitarios automáticos.
2.5 Normas y referencias
A continuación se incluye un estudio breve sobre normativas aplicables al proyecto, métodos y
herramientas, mecanismos de control de calidad y una introducción a los marcos de trabajo
(frameworks) y librerías utilizadas.
Como complemento a este apartado se incluye, al final del documento a modo de apéndice, una lista
completa de referencias bibliográficas.
2.5.1 Disposiciones legales y normas aplicadas
En este punto se incluyen los aspectos más importantes de las leyes y normativas que son aplicables
al presente proyecto.
Ley Orgánica de Protección de Datos
La aplicación desarrollada está alojada en un servidor en España y es propiedad de una empresa (la
organización del congreso) constituida legalmente en España. Por tanto, debido a que en el proceso
de registro se recogen datos personales de los asistentes, la aplicación está sujeta a la Ley Orgánica de
Protección de Datos (LOPD). Esta ley dicta que, por guardar datos personales, estamos obligados a:
 Informar a los usuarios de qué datos personales se recogen.
Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto
32 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo
 Informar del propósito con el que se recogen dichos datos.
 Proporcionar métodos para consultar, rectificar y dar de baja los datos. Para ello debe
proporcionarse una dirección postal.
 Implementar las medidas de seguridad oportunas para proteger los datos, incluyendo solicitar
una contraseña para acceder a ellos.
Para cumplir la ley, durante el proceso de registro se informa al usuario de que todos los datos
proporcionados durante el mismo están sujetos a la LOPD, que el propósito es la gestión del congreso
y se proporciona una dirección postal para efectuar el derecho de rectificación y cancelación. El cuarto
punto se cumple en cuanto que para acceder al sistema, tanto si es como ponente como si es como
administrador, se requiere un nombre de usuario y una contraseña, y el acceso remoto al servidor para
labores administrativas se realiza utilizando conexiones cifradas a través de SSH que también requieren
proporcionar usuario y contraseña. Todos los accesos al sistema quedan debidamente registrados en
la base de datos y/o en archivos de texto.
Legislación sobre cookies
En este apartado se incluye un estudio breve sobre la legislación aplicable a este proyecto sobre el uso
de cookies en sitios web basado en la Guía sobre el uso de cookies [AEPD14] publicada por la Agencia
Española de Protección de Datos (AEPD). Se ha optado por utilizar dicha guía por ser de relevancia la
interpretación hecha por esta institución de la Ley que regula este aspecto. Cabe destacar que, aun
así, la guía de la AEPD es solo una interpretación de la norma y no su texto completo, el cual prevalece
en cualquier caso sobre ella.
La legislación en materia de publicidad y comercio electrónico se rige por la Ley de Servicios de la
Sociedad de Información (LSSI), la cual incluye una normativa sobre el tratamiento de cookies en sitios
web vigente desde el 1 de abril de 2012. En términos generales, esta normativa obliga a los propietarios
de los sitios a informar de forma clara y obtener el consentimiento del usuario antes de utilizar ciertos
tipos de cookies.
Esta ley afecta a todos los profesionales o empresas que presten servicios en España, ya sea por
disponer de domicilio o establecimiento permanente en España, o porque sus servicios estén
orientados a este mercado. La ley distingue cuatro tipos de cookies:
 Cookies técnicas: Son aquellas que resultan imprescindibles para proporcionar el servicio de
la aplicación o página web como, por ejemplo, las que almacenan los datos de un pedido
online.
 Cookies de personalización: Utilizadas para cambiar las funciones o contenidos del sitio en
función de los datos del navegador, por ejemplo, para cambiar el idioma utilizado en función
de las preferencias del usuario.
 Cookies de análisis: Son aquellas utilizadas únicamente con propósitos estadísticos.
Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas
Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 33
 Cookies publicitarias: En este grupo se incluyen aquellas cookies cuyo objetivo es almacenar
información sobre las páginas visitadas o el comportamiento del usuario, utilizadas en servicios
como la red publicitaria de Google.
En nuestro caso, la aplicación envía una única cookie, utilizada para mantener el identificador de sesión
del usuario. Según la terminología de la AEPD, atendiendo a la entidad emisora es una cookie propia;
atendiendo a su plazo es una cookie de sesión; y atendiendo a su finalidad es una cookie técnica. Es
utilizada para prestar “un servicio solicitado expresamente por el usuario” y está clasificada como
cookie “de autentificación o identificación del usuario (sesión)”. Este tipo de cookies están
explícitamente excluidas del ámbito de aplicación del artículo 22.2 de la LSI, no siendo necesario ni
informar ni solicitar consentimiento para su uso.
Por otra parte, para que una cookie no esté sujeta al deber de consentimiento informado, es requisito
necesario que su caducidad esté relacionada con su finalidad. Las cookies de sesión de PHP son
borradas tras un intervalo de tiempo configurable en el propio servidor. Además, las cookies no tienen
otra finalidad que la “autentificación o identificación del usuario”, luego no son clasificables por la Ley
de Servicios de Internet dentro del ámbito de aplicación de otros preceptos.
También es importante mencionar que las sesiones identificadas por las cookies del sitio normalmente
estarán asociadas a cuentas de usuarios de los que se guardan datos personales en el servidor. Estos
datos, debido a su naturaleza, están cubiertos por la Ley Orgánica de Protección de Datos.
2.5.2 Métodos, herramientas, modelos, métricas y
prototipos
En este apartado se incluye una introducción, sin carácter exhaustivo ni exclusivo, a diferentes
programas y herramientas software y su uso en el desarrollo de este proyecto.
Mantis
Mantis Bug Tracker es una aplicación de código abierto, basada en una interfaz web, para el
seguimiento de incidencias y errores (bugs). Mantis ha sido utilizado durante todo el desarrollo de la
aplicación para gestionar la lista de características a implementar y los fallos encontrados, permitiendo
llevar un registro de los mismos, incluyendo su estado y prioridad.
Mantis permite agrupar las incidencias en hitos (milestones). En el caso de la aplicación desarrollada,
esta característica ha sido utilizada para agruparlos en iteraciones (sprints), de forma que se ha
realizado una implementación gradual, teniendo siempre una versión funcional disponible.
Otra característica que se ha tenido en cuenta a la hora de utilizar Mantis (y, en general, un sistema de
seguimiento de inicidencias) es que la información de gestión guardada en él puede utilizarse
posteriormente para documentar fielmente las fases del desarrollo del proyecto.
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas
Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas

Más contenido relacionado

Destacado

Cuestionarios en Moodle 1.9
Cuestionarios en Moodle 1.9Cuestionarios en Moodle 1.9
Cuestionarios en Moodle 1.9Víctor Barbero
 
Metodologia De La Investigacion Cientifica
Metodologia De La Investigacion CientificaMetodologia De La Investigacion Cientifica
Metodologia De La Investigacion Cientificagracielaaimo
 
Metodología de investigación científica
Metodología de investigación científicaMetodología de investigación científica
Metodología de investigación científicaLuis Cevallos Gavica
 
Capitulo 1 metodologia de la investigacion-el objeto de estudio
Capitulo 1  metodologia de la investigacion-el objeto de estudioCapitulo 1  metodologia de la investigacion-el objeto de estudio
Capitulo 1 metodologia de la investigacion-el objeto de estudioAngel Bautista
 
CAMPOS DEL CONOCIMIENTO
CAMPOS DEL CONOCIMIENTOCAMPOS DEL CONOCIMIENTO
CAMPOS DEL CONOCIMIENTOwilliam angulo
 

Destacado (6)

Cuestionarios en Moodle 1.9
Cuestionarios en Moodle 1.9Cuestionarios en Moodle 1.9
Cuestionarios en Moodle 1.9
 
Metodologia De La Investigacion Cientifica
Metodologia De La Investigacion CientificaMetodologia De La Investigacion Cientifica
Metodologia De La Investigacion Cientifica
 
Respuestas a preguntas
Respuestas a preguntasRespuestas a preguntas
Respuestas a preguntas
 
Metodología de investigación científica
Metodología de investigación científicaMetodología de investigación científica
Metodología de investigación científica
 
Capitulo 1 metodologia de la investigacion-el objeto de estudio
Capitulo 1  metodologia de la investigacion-el objeto de estudioCapitulo 1  metodologia de la investigacion-el objeto de estudio
Capitulo 1 metodologia de la investigacion-el objeto de estudio
 
CAMPOS DEL CONOCIMIENTO
CAMPOS DEL CONOCIMIENTOCAMPOS DEL CONOCIMIENTO
CAMPOS DEL CONOCIMIENTO
 

Similar a Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas

Presentación de Asignatura::Diseño de Sistemas en Internet
Presentación de Asignatura::Diseño de Sistemas en InternetPresentación de Asignatura::Diseño de Sistemas en Internet
Presentación de Asignatura::Diseño de Sistemas en InternetFacultad de Ciencias y Sistemas
 
Presentación de Asignatura::Diseño de Sistemas en Internet
Presentación de Asignatura::Diseño de Sistemas en InternetPresentación de Asignatura::Diseño de Sistemas en Internet
Presentación de Asignatura::Diseño de Sistemas en InternetFacultad de Ciencias y Sistemas
 
Propuesta de Plataforma IoT - UCA Cuenca 2018
Propuesta de Plataforma IoT - UCA Cuenca 2018Propuesta de Plataforma IoT - UCA Cuenca 2018
Propuesta de Plataforma IoT - UCA Cuenca 2018Andres Solorzano
 
Desarrollo de una aplicacion web
Desarrollo de una aplicacion webDesarrollo de una aplicacion web
Desarrollo de una aplicacion webRuthReyes71
 
Trade-Off sobre Tecnologías Web
Trade-Off sobre Tecnologías WebTrade-Off sobre Tecnologías Web
Trade-Off sobre Tecnologías WebMiguel Angel Macias
 
Front end developer
Front end developerFront end developer
Front end developerSkynet Erp
 
Informe de pasantías Víctor Reyes AIS UNERG
Informe de pasantías Víctor Reyes AIS UNERGInforme de pasantías Víctor Reyes AIS UNERG
Informe de pasantías Víctor Reyes AIS UNERGVictor Reyes
 
Automatización de servicios en un restaurant-bar por medio de aplicaciones pa...
Automatización de servicios en un restaurant-bar por medio de aplicaciones pa...Automatización de servicios en un restaurant-bar por medio de aplicaciones pa...
Automatización de servicios en un restaurant-bar por medio de aplicaciones pa...michaeljr89
 
Modulo1-Presentaciones-parte01.1.ppt
Modulo1-Presentaciones-parte01.1.pptModulo1-Presentaciones-parte01.1.ppt
Modulo1-Presentaciones-parte01.1.pptssuser73f459
 
Plan estrategico actualizado
Plan estrategico actualizadoPlan estrategico actualizado
Plan estrategico actualizadoJUAN ENRIQUE
 

Similar a Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas (20)

Dinamicas
DinamicasDinamicas
Dinamicas
 
Presentación de Asignatura::Diseño de Sistemas en Internet
Presentación de Asignatura::Diseño de Sistemas en InternetPresentación de Asignatura::Diseño de Sistemas en Internet
Presentación de Asignatura::Diseño de Sistemas en Internet
 
Temas Relacionados Web 2
Temas Relacionados Web 2Temas Relacionados Web 2
Temas Relacionados Web 2
 
Capitulo1
Capitulo1Capitulo1
Capitulo1
 
Capitulo1
Capitulo1Capitulo1
Capitulo1
 
Presentación de Asignatura::Diseño de Sistemas en Internet
Presentación de Asignatura::Diseño de Sistemas en InternetPresentación de Asignatura::Diseño de Sistemas en Internet
Presentación de Asignatura::Diseño de Sistemas en Internet
 
Pert cpm
Pert cpmPert cpm
Pert cpm
 
Propuesta de Plataforma IoT - UCA Cuenca 2018
Propuesta de Plataforma IoT - UCA Cuenca 2018Propuesta de Plataforma IoT - UCA Cuenca 2018
Propuesta de Plataforma IoT - UCA Cuenca 2018
 
Desarrollo de una aplicacion web
Desarrollo de una aplicacion webDesarrollo de una aplicacion web
Desarrollo de una aplicacion web
 
Olivares
OlivaresOlivares
Olivares
 
Trade-Off sobre Tecnologías Web
Trade-Off sobre Tecnologías WebTrade-Off sobre Tecnologías Web
Trade-Off sobre Tecnologías Web
 
Front end developer
Front end developerFront end developer
Front end developer
 
Examen Profesional 1
Examen Profesional 1Examen Profesional 1
Examen Profesional 1
 
Informe de pasantías Víctor Reyes AIS UNERG
Informe de pasantías Víctor Reyes AIS UNERGInforme de pasantías Víctor Reyes AIS UNERG
Informe de pasantías Víctor Reyes AIS UNERG
 
03.infraestructura (1)
03.infraestructura (1)03.infraestructura (1)
03.infraestructura (1)
 
Automatización de servicios en un restaurant-bar por medio de aplicaciones pa...
Automatización de servicios en un restaurant-bar por medio de aplicaciones pa...Automatización de servicios en un restaurant-bar por medio de aplicaciones pa...
Automatización de servicios en un restaurant-bar por medio de aplicaciones pa...
 
Modulo1-Presentaciones-parte01.1.ppt
Modulo1-Presentaciones-parte01.1.pptModulo1-Presentaciones-parte01.1.ppt
Modulo1-Presentaciones-parte01.1.ppt
 
Presentación ITILmobile
Presentación ITILmobilePresentación ITILmobile
Presentación ITILmobile
 
Adsi guía 12 - realizar el seguimiento técnico
Adsi   guía 12 - realizar el seguimiento técnicoAdsi   guía 12 - realizar el seguimiento técnico
Adsi guía 12 - realizar el seguimiento técnico
 
Plan estrategico actualizado
Plan estrategico actualizadoPlan estrategico actualizado
Plan estrategico actualizado
 

Último

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Último (15)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

Plataforma Web para la Gesión Integral de Conferencias Científico-Técnicas

  • 1. UNIVERSIDAD DE OVIEDO ESCUELA POLITÉCNICA DE INGENIERÍA DE GIJÓN PROYECTO FIN DE CARRERA "PLATAFORMA WEB PARA LA GESTIÓN INTEGRAL DE CONFERENCIAS CIENTÍFICO-TÉCNICAS" DIRECTOR: José Ranilla Pastor Raquel Cortina Parajón AUTOR: Héctor Arroyo Santiago JULIO 2015
  • 2. MEMORIA PRESENTADA POR D. HÉCTOR ARROYO SANTIAGO PARA OPTAR AL TÍTULO DE INGENIERO TÉCNICO (en Informática de Sistemas)
  • 3. Agradecimientos Me gustaría agradecer el trabajo de mis directores de proyecto, Raquel y José, por su ayuda durante el desarrollo y redacción del mismo, así como a la organización del CMMSE por la oportunidad que ha supuesto y la confianza depositada en mí. También quisiera agradecer el apoyo e interés mostrados por mi familia y amigos, cuyas sugerencias y opiniones han inspirado parte de este proyecto.
  • 4. Resumen El presente proyecto tiene como finalidad el desarrollo de un sistema para la gestión de conferencias científico-técnicas basado en una interfaz web. En particular, la implementación realizada tiene como objeto la gestión de la 14th International Conference on Computational and Mathematical Methods in Science and Engineering, que se celebró del 3 al 7 de julio de 2014 en Rota (Cádiz). La aplicación desarrollada surge a partir de la necesidad de remplazar otra aplicación web existente, y cubre todos los aspectos principales de la gestión de la conferencia, desde el registro de los asistentes y el envío de los papers a presentar, hasta la generación de facturas, justificantes de pago, asistencia y presentación de ponencias, además del envío de notificaciones por correo electrónico tanto a los asistentes como a los gestores de la misma. También cubre otros aspectos administrativos, como la generación de estadísticas y listados, la verificación de pagos y envíos o la gestión de aspectos logísticos, como la disponibilidad de salas durante el evento o la preparación de etiquetas identificativas de distintos tipos para los asistentes y el personal. Para el desarrollo de la interfaz se han utilizado tecnologías web actuales, como HTML5, jQuery y AJAX, que mejoran la experiencia de los usuarios de la aplicación y minimizan los tiempos de respuesta; mientras que para implementar la lógica de la aplicación en el lado del servidor se han utilizado patrones de diseño de software modular ampliamente extendidos y componentes de amplio uso, teniendo en cuenta y simplificando posibles ampliaciones futuras de la aplicación resultante. Además, la aplicación ha sido desarrollada a medida para ejecutarse sobre un servidor Linux, teniendo en cuenta las particularidades del congreso a gestionar y del entorno hardware y software disponible.
  • 6. Abstract This work aims to develop a web-based system for managing scientific-technical conferences. Specifically, the implementation discussed here is targeted on the 14th International Conference on Computational and Mathematical Methods in Science and Engineering, held on July 3-7 in Rota (Cádiz). The proposed system arises from the need to replace an existing web application, and covers all major aspects involved on the conference management duties, including from registration of attendees and papers submission to automatic generation of documentation, such as invoices, proofs of payment, certificates of attendance and papers presentation, besides sending e-mail notifications both to attendees and staff members. It also covers other administrative duties, such as collecting and displaying of statistics and listings, payment handling and various logistics including availability of rooms during the event or preparation of tags of different types for attendees and staff members. The application user interface is built on top of current web technologies, including HTML5 and AJAX, allowing both a better user experience and lower response times; while the backend has been engineered using widely used software design patterns and widespread third-party libraries, thus making easy further improvements and simplifying the overall application architecture. In addition, the application has been explicitly developed to run on a Linux server and meet the CMMSE organizers’ needs, taking into account the features of the CMMSE conference and the hardware and software environment available on the web server used.
  • 8. Índice General 1 PRESENTACION............................................................................................................................17 2 MEMORIA DEL PROYECTO...........................................................................................................18 2.1 HOJA DE IDENTIFICACIÓN.................................................................................................................18 2.2 TECNOLOGÍAS, PROTOCOLOS Y CONCEPTOS CLAVE ................................................................................19 2.2.1 Introducción al protocolo HTTP ............................................................................................19 2.2.2 Introducción a HTML.............................................................................................................21 2.2.3 Introducción a AJAX ..............................................................................................................24 2.2.4 Introducción a CSS y CSS3.....................................................................................................24 2.2.5 El patrón de diseño MVC.......................................................................................................26 2.2.6 Introducción a PHP ...............................................................................................................28 2.2.7 Los sistemas de plantillas para web .....................................................................................29 2.3 OBJETO........................................................................................................................................31 2.4 ANTECEDENTES .............................................................................................................................31 2.5 NORMAS Y REFERENCIAS..................................................................................................................31 2.5.1 Disposiciones legales y normas aplicadas ............................................................................31 2.5.2 Métodos, herramientas, modelos, métricas y prototipos.....................................................33 2.5.3 Mecanismos de control de calidad aplicados durante la redacción del proyecto ................37 2.5.4 Otras referencias ..................................................................................................................39 2.6 ALCANCE......................................................................................................................................40 2.7 HIPÓTESIS Y RESTRICCIONES .............................................................................................................40 3 PLANIFICACIÓN Y PRESUPUESTO.................................................................................................41 3.1 PLANIFICACIÓN TEMPORAL...............................................................................................................41 3.2 RESUMEN DEL PRESUPUESTO............................................................................................................47 3.3 PRESUPUESTO ...............................................................................................................................48 3.3.1 Costes relativos a ingeniería.................................................................................................48 3.3.2 Costes relativos a bienes, equipos y servicios informáticos..................................................48 3.3.3 Costes relativos a consumibles .............................................................................................48 3.3.4 Costes relativos a aplicaciones informáticas ........................................................................49 4 ESPECIFICACIÓN DEL SISTEMA.....................................................................................................50 4.1 DESCRIPCIÓN DE LA SITUACIÓN ACTUAL ..............................................................................................50 4.2 REQUISITOS INICIALES .....................................................................................................................50 4.3 ESTUDIOS DE ALTERNATIVAS Y VIABILIDAD...........................................................................................51 4.3.1 Sistemas existentes de gestión de conferencias ...................................................................51 4.3.2 Gestores de bases de datos ..................................................................................................52 4.3.3 Servidores web......................................................................................................................54 4.3.4 Lenguajes de programación .................................................................................................57 4.3.5 Frameworks ..........................................................................................................................59 4.3.6 Sistemas de plantillas ...........................................................................................................60 4.4 DESCRIPCIÓN DE LA SOLUCIÓN PROPUESTA..........................................................................................61 4.5 ACTORES DEL SISTEMA ....................................................................................................................63 4.6 CATÁLOGO DE REQUISITOS NO FUNCIONALES.......................................................................................64 4.6.1 Requisitos tecnológicos.........................................................................................................64 4.6.2 Requisitos de seguridad........................................................................................................65
  • 9. 4.6.3 Requisitos de auditoría (instrumentación) ...........................................................................65 4.6.4 Requisitos de tiempo de respuesta.......................................................................................65 4.7 ANÁLISIS DE REQUISITOS FUNCIONALES...............................................................................................66 4.7.1 Aspectos generales ...............................................................................................................66 4.7.2 Seguridad..............................................................................................................................66 4.7.3 Pagos ....................................................................................................................................67 4.7.4 Simposios..............................................................................................................................68 4.7.5 Envío de papers.....................................................................................................................68 4.7.6 Salas......................................................................................................................................69 4.7.7 Envío de notificaciones por correo electrónico .....................................................................69 4.7.8 Generación de calendarios ...................................................................................................70 4.7.9 Información estadística ........................................................................................................70 4.7.10 Limitación de acceso ........................................................................................................71 4.7.11 Generación de documentación.........................................................................................71 4.7.12 Excursiones.......................................................................................................................72 4.8 ESPECIFICACIÓN DE CASOS DE USO Y ESCENARIOS..................................................................................73 4.8.1 Acciones de invitado.............................................................................................................73 4.8.2 Acciones comunes.................................................................................................................76 4.8.3 Acciones de ponente.............................................................................................................80 4.8.4 Acciones de editor.................................................................................................................86 4.8.5 Gestión de usuarios ..............................................................................................................87 4.8.6 Gestión de pagos (general)...................................................................................................97 4.8.7 Gestión de facturas.............................................................................................................100 4.8.8 Gestión de justificantes de pago.........................................................................................106 4.8.9 Gestión de simposios ..........................................................................................................108 4.8.10 Gestión de salas..............................................................................................................111 4.8.11 Gestión de excursiones...................................................................................................113 4.8.12 Gestión de papers...........................................................................................................114 4.8.13 Configuración de la aplicación .......................................................................................120 4.8.14 Información estadística..................................................................................................126 5 DISEÑO E IMPLEMENTACIÓN.....................................................................................................129 5.1 PARTICIONAMIENTO FÍSICO DE SUBSISTEMAS .....................................................................................129 5.2 IMPLEMENTACIÓN DE FUNCIONALIDADES DINÁMICAS DE LA INTERFAZ DE ADMINISTRACIÓN ........................131 5.2.1 cmmse.admin .....................................................................................................................132 5.2.2 cmmse.admin.json..............................................................................................................132 5.2.3 cmmse.admin.users............................................................................................................133 5.2.4 cmmse.admin.invoices........................................................................................................133 5.2.5 cmmse.admin.proofs ..........................................................................................................134 5.2.6 cmmse.admin.papers .........................................................................................................134 5.2.7 cmmse.admin.papers.edittitle............................................................................................134 5.2.8 cmmse.admin.papers.rooms ..............................................................................................135 5.2.9 cmmse.admin.rooms.edittitle.............................................................................................135 5.2.10 cmmse.admin.conferences.edittitle ...............................................................................135 5.2.11 cmmse.admin.conferences.editdate ..............................................................................136 5.3 SUBSISTEMAS DE DISEÑO ...............................................................................................................137 5.4 DISEÑO DE CLASES........................................................................................................................138 5.4.1 CMMSE..............................................................................................................................139 5.4.2 CMMSEAutoloaderData ..................................................................................................140 5.4.3 CMMSECore.....................................................................................................................141
  • 10. 5.4.4 CMMSEExceptions ...........................................................................................................162 5.4.5 CMMSETraits ...................................................................................................................164 5.4.6 CMMSEDoctrine...............................................................................................................172 5.4.7 CMMSEDecorators...........................................................................................................223 5.4.8 Proxies...............................................................................................................................236 5.4.9 CMMSEPDFViews.............................................................................................................237 5.4.10 CMMSEPDFViewsLabels15x25...................................................................................239 5.4.11 CMMSEPDFViewsLabels92x625.................................................................................242 5.4.12 CMMSEInterfaces........................................................................................................245 5.4.13 CMMSEInterfacesModels...........................................................................................247 5.4.14 CMMSEPermissions.....................................................................................................272 5.4.15 CMMSEModels ............................................................................................................273 5.4.16 CMMSEModelsFactories............................................................................................276 5.4.17 CMMSEControllers ......................................................................................................278 5.4.18 CMMSEControllersUser..............................................................................................284 5.4.19 CMMSEControllersAdmin ..........................................................................................292 5.4.20 CMMSEControllersAdminJSON.................................................................................307 5.4.21 CMMSEControllersAdminPDF...................................................................................312 5.4.22 CMMSEControllersFrontcontrollers ...........................................................................320 5.5 DISEÑO FÍSICO DE DATOS...............................................................................................................324 5.5.1 Archivos estáticos internos .................................................................................................324 5.5.2 Archivos estáticos públicos .................................................................................................324 5.5.3 Archivos de usuario.............................................................................................................324 5.5.4 Configuración estática de la aplicación ..............................................................................325 5.5.5 Modelo entidad-relación de la base de datos.....................................................................329 5.5.6 Modelo relacional de la base de datos ...............................................................................336 5.5.7 Normalización.....................................................................................................................341 5.6 DISEÑO DE LA INTERFAZ DE USUARIO................................................................................................347 5.6.1 Interfaz pública...................................................................................................................348 5.6.2 Interfaz administrativa .......................................................................................................349 6 MANUALES................................................................................................................................351 6.1 MANUAL DE INSTALACIÓN .............................................................................................................351 6.1.1 Prerrequisitos......................................................................................................................351 6.1.2 Instalación de la aplicación.................................................................................................352 6.1.3 Consideraciones de seguridad ............................................................................................356 6.1.4 Configuración inicial de la aplicación .................................................................................356 6.2 MANUAL DE USUARIO...................................................................................................................363 6.2.1 Registro, login y gestión de cuenta de usuario...................................................................363 6.2.2 Envío y gestión de papers ...................................................................................................370 6.2.3 Gestión de pagos y datos fiscales .......................................................................................376 6.2.4 Acceso a los calendarios iCal ..............................................................................................379 6.3 MANUAL DE ADMINISTRACIÓN .......................................................................................................381 6.3.1 Acceso a la interfaz de administración y configuración general.........................................381 6.3.2 Gestión de salas..................................................................................................................382 6.3.3 Gestión de simposios ..........................................................................................................384 6.3.4 Gestión de excursiones .......................................................................................................386 6.3.5 Gestión de usuarios ............................................................................................................388 6.3.6 Gestión de pagos: Facturas y justificantes..........................................................................406 6.3.7 Gestión de facturas.............................................................................................................409
  • 11. 6.3.8 Gestión de justificantes de pago.........................................................................................412 6.3.9 Gestión de papers...............................................................................................................416 6.3.10 Consulta de información estadística ..............................................................................424 6.3.11 Registro de editores........................................................................................................427 6.4 MANUAL DE EDITOR .....................................................................................................................428 6.4.1 Acceso a la lista de papers enviados...................................................................................428 6.4.2 Descarga de papers disponibles .........................................................................................429 6.4.3 Acceso a los calendarios iCal ..............................................................................................429 7 PRUEBAS ...................................................................................................................................430 7.1 PRUEBAS DE USO EN UN ENTORNO REAL ...........................................................................................430 7.2 PRUEBAS UNITARIAS .....................................................................................................................430 7.2.1 TestsCore...........................................................................................................................431 7.2.2 TestsEntities ......................................................................................................................441 7.2.3 TestsEntitiesDoctrine .......................................................................................................445 7.2.4 TestsDecorators ................................................................................................................454 7.2.5 TestsModels ......................................................................................................................458 7.2.6 TestsModelsFactories ......................................................................................................479 7.2.7 TestsControllersAdminPDF.............................................................................................480 8 CONCLUSIONES .........................................................................................................................491 9 BIBLIOGRAFÍA............................................................................................................................492 9.1 LIBROS Y ARTÍCULOS .....................................................................................................................492 9.2 REFERENCIAS EN INTERNET ............................................................................................................492 Conceptos de Ingeniería de Software ..............................................................................................492 Lenguajes y estándares web............................................................................................................492 Aspectos legales y herramientas de gestión de congresos..............................................................493 Herramientas de gestión de software..............................................................................................493 Protocolo HTTP y servidores web.....................................................................................................494 Librerías ...........................................................................................................................................494 Casos de prueba y automatización..................................................................................................495 Estadísticas ......................................................................................................................................495 Otros ................................................................................................................................................495 10 APÉNDICES ................................................................................................................................496 APENDICE I: ESTADÍSTICAS DE LA EDICIÓN DE 2014 ......................................................................................496 Estadísticas demográficas ...............................................................................................................496 Estadísticas de rendimiento.............................................................................................................505 APENDICE II: AMPLIACIONES PROPUESTAS...................................................................................................510 Uso del autocargador de clases de Symfony ...................................................................................510 Alternativas al sistema MVC usado .................................................................................................510 Mejoras funcionales generales y de planificación ...........................................................................512 Mejoras en la gestión de documentación........................................................................................512 Mejoras técnicas generales .............................................................................................................513 Mejoras en estadísticas, instrumentación y administración de la aplicación..................................514 Cambios considerados en el sistema de pagos................................................................................515 Mejoras de seguridad ......................................................................................................................516 Otros cambios a considerar .............................................................................................................516 APENDICE III: CONTENIDO DEL CD-ROM ...................................................................................................517 APENDICE IV: DEFINICIONES Y ABREVIATURAS..............................................................................................518
  • 12. Índice de figuras Figura 2.1: Diagrama cliente-servidor HTTP .........................................................................................20 Figura 2.2: Despliegue típico de una aplicación web utilizando un pool de procesos Apache...............22 Figura 2.3: Documento HTML básico....................................................................................................22 Figura 2.4: Ejemplo de declaración CSS................................................................................................25 Figura 2.5: Arquitectura MVC tradicional.............................................................................................27 Figura 2.6: Arquitectura MVC jerárquica..............................................................................................28 Figura 2.7: Esquema de funcionamiento de un sistema de plantillas web............................................30 Figura 3.1: Diagrama de Gantt de la planificación temporal del proyecto............................................45 Figura 4.1: Casos de Uso para las acciones de invitado ........................................................................76 Figura 4.2: Casos de uso para las acciones comunes ............................................................................79 Figura 4.3: Casos de uso para las acciones del perfil de ponente .........................................................81 Figura 4.4: Casos de uso para las acciones de papers de ponente ........................................................83 Figura 4.5: Casos de uso para las acciones de pago de ponente ...........................................................86 Figura 4.6: Casos de uso para las acciones de editor ............................................................................87 Figura 4.7: Casos de uso para las acciones de gestión de usuarios .......................................................89 Figura 4.8: Casos de uso para la descarga de certificados.....................................................................91 Figura 4.9: Casos de uso para la descarga de etiquetas........................................................................96 Figura 4.10: Casos de uso para la gestión general de pagos ...............................................................100 Figura 4.11: Casos de uso para la gestión de facturas individuales.....................................................102 Figura 4.12: Casos de uso para la descarga de facturas ......................................................................104 Figura 4.13: Casos de uso para la asignación automática de los números de factura .........................105 Figura 4.14: Casos de uso para la gestión de justificantes ..................................................................108 Figura 4.15: Casos de uso para la gestión de simposios......................................................................110 Figura 4.16: Casos de uso para la gestión de salas..............................................................................112 Figura 4.17: Casos de uso para la gestión de excursiones...................................................................114 Figura 4.18: Casos de uso para la gestión de papers...........................................................................117 Figura 4.19: Casos de uso de descarga de certificados y listado papers..............................................120 Figura 4.20: Casos de uso generales de configuración........................................................................122 Figura 4.21: Casos de uso para la configuración de los números de factura .......................................123 Figura 4.22: Casos de uso para la configuración de acceso.................................................................125 Figura 4.23: Casos de uso para la verificación del envío de correos....................................................126 Figura 4.24: Casos de uso para la obtención de información de autores ............................................128 Figura 4.25: Casos de uso para la obtención de información estadística ............................................128 Figura 5.1: Diagrama de despliegue lógico (detalle de procesos del servidor físico)...........................129 Figura 5.2: Diagrama simplificado de sistemas externos usados por la aplicación..............................130 Figura 5.3: Diagrama UML general de los espacios de nombres de la aplicación................................137 Figura 5.4: Diagrama UML de las clases utilizadas para implementar el autocargador.......................140 Figura 5.5: Diagrama UML de la clase ArrayCache..............................................................................142 Figura 5.6: Diagrama UML de las clases Configuration e EMail...........................................................145 Figura 5.7: Diagrama UMl de la clase HTTP404DieHandler.................................................................146 Figura 5.8: Diagrama UML de la clase cEzPDFStreamer......................................................................147 Figura 5.9: Diagrama UML de la clase MailValidator ..........................................................................148 Figura 5.10: Diagrama UML de la clase OverviewData .......................................................................150 Figura 5.11: Diagrama UML de la clase ScriptStats.............................................................................152 Figura 5.12: Diagrama UML de las clases AbstractModel, Log4PHPQueryLogger y MySQLiWrapper..155
  • 13. Figura 5.13: Diagrama UML de las clases usadas para implementar las vistas....................................158 Figura 5.14: Diagrama UML de las clases base de los controladores ..................................................161 Figura 5.15: Diagrama UML de los tipos de excepciones de la aplicación...........................................163 Figura 5.16: Diagrama UML de los traits de acceso a propiedades de objeto.....................................166 Figura 5.17: Diagrama UML de los traits usados para generar y enviar los correos electrónicos ........168 Figura 5.18: Diagrama UML del trait para obtener la extensión a partir de un nombre de archivo ....169 Figura 5.19: Diagrama UML del trait de inicialización de objetos desde instancias compatibles ........170 Figura 5.20: Diagrama UML de los traits de obtención de carga media del sistema y descripción de errores de envío de archivos .....................................................................................................171 Figura 5.21: Diagrama UML de la entidad Conference .......................................................................174 Figura 5.22: Diagrama UML de la entidad InstrumentationSample ....................................................182 Figura 5.23: Diagrama UML de la entidad MailerSettings ..................................................................186 Figura 5.24: Diagrama UML de la entidad Paper ................................................................................192 Figura 5.25: Diagrama UML de la entidad PaymentSettings...............................................................195 Figura 5.26: Diagrama UML de la entidad PersonTitle........................................................................197 Figura 5.27: Diagrama UML de la entidad Poster ...............................................................................200 Figura 5.28: Diagrama UML de la entidad Room ................................................................................202 Figura 5.29: Diagrama UML de la entidad Session..............................................................................204 Figura 5.30: Diagrama UML de la entidad Settings.............................................................................210 Figura 5.31: Diagrama UML de la entidad Trip ...................................................................................212 Figura 5.32: Diagrama UML de la entidad User ..................................................................................217 Figura 5.33: Diagrama UML de la entidad UserBillingInfo ..................................................................222 Figura 5.34: Diagrama UML de los decoradores Autor y PagoUsuario................................................224 Figura 5.35: Diagrama UML del decorador Conference ......................................................................226 Figura 5.36: Diagrama UML de los decoradores Paper, Poster y Room ..............................................231 Figura 5.37: Diagrama UML del decorador Settings ...........................................................................233 Figura 5.38: Diagrama UML del decorador UserBilling .......................................................................235 Figura 5.39: Diagrama UML de ejemplo para el proxy generado a partir de la entidad Room............236 Figura 5.40: Diagrama UML de las vistas usadas para generar las etiquetas ......................................238 Figura 5.41: Diagrama UML de las interfaces principales ...................................................................246 Figura 5.42: Diagrama UML general de las interfaces de los modelos ................................................247 Figura 5.43: Diagrama UML de la interfaz del modelo del listado de autores.....................................248 Figura 5.44: Diagrama UML de la interfaz del modelo de gestión de facturacion...............................251 Figura 5.45: Diagrama UML de la interfaz del modelo de gestión de simposios .................................253 Figura 5.46: Diagrama UML de la interfaz del modelo de instrumentación ........................................254 Figura 5.47: Diagrama UML de la interfaz del modelo del listado de facturas y justificantes .............255 Figura 5.48: Diagrama UML de la interfaz del modelo de inicio de sesión ..........................................257 Figura 5.49: Diagrama UML de la interfaz del modelo de gestión de papers ......................................260 Figura 5.50: Diagrama UML de la interfaz del modelo de gestión de pagos........................................262 Figura 5.51: Diagrama UML de la interfaz del modelo de gestión de salas .........................................264 Figura 5.52: Diagrama UML de la interfaz del modelo de gestión de sesiones ...................................265 Figura 5.53: Diagrama UML de la interfaz del modelo de configuración.............................................267 Figura 5.54: Diagrama UML de la interfaz del modelo de gestión de estadísticas ..............................268 Figura 5.55: Diagrama UML de la interfaz del modelo de gestión de excursiones ..............................269 Figura 5.56: Diagrama UML de la interfaz del modelo de gestión de usuarios....................................271 Figura 5.57: Diagrama UML de la clase que comprueba si la sesión posee permisos administrativos 272 Figura 5.58: Diagrama UML de la factoría de modelos.......................................................................277 Figura 5.59: Diagrama UML de los controladores de las acciones de invitado y editores ...................278 Figura 5.60: Diagrama UML de los controladores de gestión de papers de las páginas de usuario ....285 Figura 5.61: Diagrama UML de los controladores de gestión de perfil de las páginas de usuario .......291
  • 14. Figura 5.62: Diagrama UML de los controladores principales de administración................................295 Figura 5.63: Diagrama UML de los controladores de las acciones AJAX..............................................308 Figura 5.64: Diagrama UML de los controladores PDF de la sección de administración......................313 Figura 5.65: Diagrama UML de los Frontcontrollers ...........................................................................323 Figura 5.66: Modelo entidad-relación general ...................................................................................329 Figura 5.67: Modelo entidad-relación de los usuarios y los títulos honoríficos ..................................330 Figura 5.68: Modelo entidad-relación de los datos de facturación de los usuarios.............................331 Figura 5.69: Modelo entidad-relación de papers, posters, simposios y salas......................................332 Figura 5.70: Modelo entidad-relación de las excursiones...................................................................332 Figura 5.71: Modelo entidad-relación de las muestras de instrumentación.......................................333 Figura 5.72: Modelo entidad-relación de los datos de configuración .................................................335 Figura 5.73: Modelo relacional de las tablas de usuarios, papers y conferencias ...............................337 Figura 5.74: Modelo relacional de las tablas de posters, salas y excursiones .....................................338 Figura 5.75: Modelo relacional de la tabla de facturación..................................................................338 Figura 5.76: Modelo relacional de las tablas de configuración ...........................................................339 Figura 5.77: Modelo relacional de las tablas de sesiones e instrumentación......................................340 Figura 5.78: Modelo entidad-relación normalizado de usuarios.........................................................342 Figura 5.79: Modelo entidad-relación normalizado de papers, posters, salas y simposios .................344 Figura 5.80: Modelo entidad-relación normalizado de los datos de facturación ................................345 Figura 5.81: Modelo entidad-relación normalizado de los parámetros de configuración ...................346 Figura 5.82: Distribución de las pantallas de la interfaz pública .........................................................348 Figura 5.83: Distribución general de las pantallas de la interfaz de administración............................349 Figura 5.84: Pantalla de administración con una fila seleccionada y una acción AJAX en curso..........350 Figura 5.85: Enlace de retorno a la parte superior de la página..........................................................350 Figura 6.1: Copia del instalador al servidor ........................................................................................352 Figura 6.2: Comprobaciones iniciales durante la instalación ..............................................................353 Figura 6.3: Copia de los archivos de la aplicación...............................................................................354 Figura 6.4: Finalización de la instalación ............................................................................................355 Figura 6.5: Página de inicio de la aplicación recién instalada.............................................................355 Figura 6.6: Procedimiento de cambio de la contraseña de administrador..........................................358 Figura 6.7: Configuración de acceso y números de factura en un entorno de producción ..................359 Figura 6.8: Configuración de la información de la edición actual de la conferencia............................360 Figura 6.9: Configuración del servidor SMTP a utilizar en un entorno de producción.........................361 Figura 6.10: Formulario para el envío de un correo de prueba...........................................................361 Figura 6.11: Salida de depuración mostrada tras el envío de un correo de prueba ............................362 Figura 6.12: Correo electrónico de prueba recibido en la dirección proporcionada............................362 Figura 6.13: Formulario de registro de nuevo usuario........................................................................363 Figura 6.14: Notificación enviada confirmando el registro .................................................................364 Figura 6.15: Formulario de inicio de sesión ........................................................................................365 Figura 6.16: Página principal de la interfaz de ponente......................................................................366 Figura 6.17: Formulario de edición de datos personales ....................................................................367 Figura 6.18: Formulario de cambio de contraseña .............................................................................367 Figura 6.19: Errores mostrados durante la edición del formulario de cambio de contraseña .............368 Figura 6.20: Error mostrado al no proporcionar correctamente la contraseña actual ........................368 Figura 6.21: Error mostrado cuando la nueva contraseña y su confirmación no coinciden.................368 Figura 6.22: Formulario para restablecer la contraseña de usuario....................................................369 Figura 6.23: Correo electrónico con la nueva contraseña enviado tras restablecer la misma.............369 Figura 6.24: Formulario para el envío de un nuevo paper ..................................................................370 Figura 6.25: Mensaje mostrado en la página de envío de papers cuando el plazo está cerrado .........371 Figura 6.26: Formulario cumplimentado para el envío de un nuevo paper ........................................371
  • 15. Figura 6.27: Formulario de envío de un nuevo paper listando un paper enviado previamente ..........372 Figura 6.28: Página de detalle de un paper antes de entrar en proceso de revisión ...........................373 Figura 6.29: Página de detalle de un paper tras entrar en proceso de revisión ..................................373 Figura 6.30: Correo electrónico de confirmación enviado tras la aceptación de un paper..................374 Figura 6.31: Formulario de envío de nuevas versiones de papers ......................................................375 Figura 6.32: Formulario de envío de nuevas versiones de papers tras el envío de una revisión .........375 Figura 6.33: Página principal de la interfaz de gestión de pagos ........................................................376 Figura 6.34: Página de registro y modificación de datos fiscales y envío de justificante de pago.......377 Figura 6.35: Pantalla para el envío del justificante de pago antes de su envío ...................................378 Figura 6.36: Pantalla para el envío del justificante de pago tras su envio...........................................378 Figura 6.37: Pantalla para el envío del justificante de pago tras la confirmación del mismo ..............379 Figura 6.38: Calendario de inicio de los simposios .............................................................................380 Figura 6.39: Calendario de exposición de posters ..............................................................................380 Figura 6.40: Calendario de exposición de posters (formato de agenda) .............................................380 Figura 6.41: Formulario de inicio de sesión ........................................................................................381 Figura 6.42: Interfaz de gestión de salas ............................................................................................383 Figura 6.43: Formulario de creación de una nueva sala.....................................................................383 Figura 6.44: Formulario de modificación de nombre de sala..............................................................384 Figura 6.45: Interfaz de gestión de simposios ....................................................................................385 Figura 6.46: Formulario de creación de un nuevo simposio ...............................................................385 Figura 6.47: Edición del nombre de un simposio ................................................................................385 Figura 6.48: Edición de la fecha de inicio de un simposio ...................................................................386 Figura 6.49: Interfaz de gestión de excursiones .................................................................................387 Figura 6.50: Creación de una nueva excursión ...................................................................................387 Figura 6.51: Interfaz de gestión de usuarios.......................................................................................388 Figura 6.52: Listado de usuarios adaptado a un ancho de pantalla menor .........................................388 Figura 6.55: Listado de usuarios con usuarios seleccionados .............................................................389 Figura 6.56: Certificado de asistencia.................................................................................................390 Figura 6.57: Botones de descarga de etiquetas ..................................................................................391 Figura 6.58: Hoja de etiquetas de asistencia (horizontales; 15 x 7,5 cm)............................................392 Figura 6.59: Hoja de etiquetas de asistencia (horizontales; 9,2 x 6,25 cm) .........................................393 Figura 6.60: Hojas de etiquetas de asistencia (verticales) ..................................................................394 Figura 6.61: Hoja de etiquetas de asistencia a la cena de gala (horizontales; 15 x 7,5 cm) .................395 Figura 6.62: Hoja de etiquetas de asistencia a la cena de gala (horizontales; 9,2 x 6,25 cm) ..............396 Figura 6.63: Hoja de etiquetas de asistencia a excursiones (horizontales; 15 x 7,5 cm)......................397 Figura 6.64: Hoja de etiquetas de asistencia a excursiones (horizontales; 9,2 x 6,25 cm) ...................398 Figura 6.65: Hoja de etiquetas identificativas para los organizadores (horizontales; 15 x 7,5 cm)......399 Figura 6.66: Hoja de etiquetas identificativas para los organizadores (horizontales; 9,2 x 6,25 cm)...400 Figura 6.67: Hoja de etiquetas de restaurante (horizontales; 15 x 7,5 cm) .........................................401 Figura 6.68: Hoja de tickets de restaurante (horizontales; 9,2 x 6,25 cm)...........................................402 Figura 6.69: Hoja de etiquetas en blanco (horizontales; 15 x 7,5 cm) .................................................403 Figura 6.70: Hoja de etiquetas en blanco (horizontales; 9,2 x 6,25 cm) ..............................................404 Figura 6.71: Hoja de etiquetas en blanco (verticales).........................................................................405 Figura 6.72: Notificación de registro de nuevo usuario ......................................................................406 Figura 6.73: Menú de acceso a las páginas de gestión de facturas y justificantes de pago .................407 Figura 6.74: Formulario de modificación de cuota de inscripción.......................................................408 Figura 6.75: Notificación enviada al recibir un nuevo justificante de pago.........................................409 Figura 6.76: Interfaz de gestión de facturas .......................................................................................409 Figura 6.77: Listado de usuarios con factura solicitada con usuarios seleccionados ...........................410 Figura 6.78: Factura generada por la aplicación .................................................................................411
  • 16. Figura 6.79: Detalle de la numeración de facturas y facturas listas para imprimir..............................412 Figura 6.80: Interfaz de gestión de justificantes de pago simple ........................................................413 Figura 6.81: Listado de usuarios con justificantes de pago simple con usuarios seleccionados .........414 Figura 6.82: Justificante de pago generado por la aplicación .............................................................415 Figura 6.83: Interfaz de gestión de los papers enviados .....................................................................416 Figura 6.86: Formulario de edición del ltítulo de paper......................................................................417 Figura 6.87: Notificación enviada a los administradores tras el envío de un nuevo paper..................418 Figura 6.88: Nuevo paper listado en la página de administración antes de entrar en revisión ...........418 Figura 6.89: Notificación enviada a los administradores tras aceptar un paper .................................419 Figura 6.90: Notificación enviada a los administradores tras recibir una nueva versión de un paper.420 Figura 6.91: Formulario de edición de sala y fechas de presentación de posters................................421 Figura 6.92: Listado de papers con papers seleccionados...................................................................422 Figura 6.93: Certificado de presentación de ponencia........................................................................423 Figura 6.94: Listado de autores ..........................................................................................................425 Figura 6.95: Enlace de descarga de la lista de autores en formato Excel ............................................425 Figura 6.97: Página de estadísticas agregadas....................................................................................426 Figura 6.98: Formulario de inicio de sesión........................................................................................428 Figura 6.99: Interfaz de editor............................................................................................................429 Figura 10.1: Número de usuarios registrados por semana.................................................................497 Figura 10.2: Número de usuarios totales en el sistema por semana...................................................497 Figura 10.3: Número de usuarios por país de procedencia.................................................................498 Figura 10.4: Número de nuevos papers enviados por semana ...........................................................499 Figura 10.5: Número de papers totales en el sistema por semana .....................................................499 Figura 10.6: Número de papers aceptados por simposio....................................................................500 Figura 10.7: Número de solicitudes por navegador (todas las páginas) ..............................................501 Figura 10.8: Número de solicitudes por navegador (páginas públicas)...............................................501 Figura 10.9: Valores muestrales (agregados) de número de solicitudes por navegador .....................502 Figura 10.10: Número de solicitudes por S.O. del cliente (todas las páginas) .....................................503 Figura 10.11: Número de solicitudes por S.O. del cliente (páginas públicas) ......................................503 Figura 10.12: Valores muestrales (agregados) de número de solicitudes por sistema operativo........504 Figura 10.13: Número de solicitudes HTTP por semana .....................................................................506 Figura 10.14: Número de sesiones HTTP por semana.........................................................................506 Figura 10.15: Uso medio de CPU y memoria por día ..........................................................................507 Figura 10.16: Parámetros estadísticos generales de uso de CPU, memoria y BBDD...........................508 Figura 10.17: Media de tiempo y memoria empleados para generar las páginas ...............................508 Figura 10.18: Grado absoluto de relación lineal existente entre el uso de CPU y de memoria ...........509 Figura 10.19: Grado relativo de relación lineal existente entre el uso de CPU y de memoria .............509
  • 17. PresentacIon | Plataforma web para la gestión de conferencias científico-técnicas Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 17 1 PRESENTACION El presente proyecto tiene como objetivo el desarrollo y puesta en producción de una aplicación web para la gestión de una conferencia científico-técnica sobre la aplicación de métodos matemáticos en problemas de ciencia e ingeniería. La aplicación desarrollada tiene como finalidad la gestión completa del registro de ponentes, envío de artículos, generación de facturas y recolección de estadísticas, poniendo especial énfasis en los aspectos relativos al rendimiento, portabilidad y modularidad de sus componentes. Este proyecto surge con el objetivo de remplazar una aplicación web existente que la organización venía utilizando en ediciones anteriores del congreso y teniendo como uno de sus objetivos que se ejecute sobre un servidor Linux. Para ello se ha realizado un estudio de las funcionalidades cubiertas por la aplicación original, además de considerar e implementar numerosas mejoras relativas a la usabilidad, a los tiempos de respuesta de la aplicación y al uso de componentes software actuales, utilizando librerías de código abierto (open source) como base para la implementación de las diferentes funcionalidades cubiertas. De esta forma, se dispone de una aplicación flexible y modular, construida sobre componentes software ampliamente testados por diferentes comunidades de desarrolladores de aplicaciones tanto open source como privativas, y que tiene en cuenta y posibilita la implementación de nuevas funcionalidades con relativa facilidad.
  • 18. Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto 18 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo 2 MEMORIA DEL PROYECTO 2.1 Hoja de identificación  Plataforma web para la gestión integral de conferencias científico-técnicas.  Cliente: o International Conference on Computational and Mathematical Methods in Science and Engineering.  Suministrador: o Héctor Arroyo Santiago.  Mayo 2015  Resumen: Desarrollo de una aplicación web para la gestión de la 14th International Conference on Computational and Mathematical Methods in Science and Engineering.  Duración estimada: Octubre 2013 – Mayo 2015.  Coste estimado: 22.685 €
  • 19. Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 19 2.2 Tecnologías, protocolos y conceptos clave En este apartado se dispone de una introducción a algunas de las tecnologías y conceptos cuyo conocimiento resulta de capital importancia para comprender el resto de este documento. 2.2.1 Introducción al protocolo HTTP El Protocolo de Transferencia de Hipertexto (HyperText Transfer Protocol) [HTTP01] es el protocolo más usado para navegar por Internet, y define los detalles y convenios necesarios para el intercambio de datos entre un navegador web (cliente) y el sistema que proporciona los contenidos o páginas web (servidor). HTTP es un protocolo basado en transacciones, y sigue un esquema petición-respuesta entre el cliente y el servidor. Se sitúa en el nivel superior de la arquitectura TCP/IP (nivel de aplicación) y hace uso de los mecanismos estándar de TCP para proporcionar fiabilidad en la comunicación. Un aspecto importante de HTTP es su carácter de protocolo sin estado (stateless): En general, cada solicitud del cliente es tratada de manera independiente del resto, creando y destruyendo una conexión dedicada entre el cliente y el servidor para ello1 . El funcionamiento sin estado de HTTP es adecuado para su uso habitual, en el que un usuario solicita una secuencia de páginas y datos asociados a éstas en un corto intervalo de tiempo, y los contenidos solicitados se encuentran en uno o más servidores independientes [STAL04]. Otra característica importante de HTTP es que, aunque su nombre hace referencia a la transferencia de hipertexto, el protocolo no impone ningún tipo de restricción en cuanto al tipo de documentos que puede gestionar: Los datos son enviados como secuencias de bytes, sin hacer distinción en el contenido. Esto permite utilizar el mismo protocolo para enviar los contenidos vinculados a una página web, simplificando la infraestructura necesaria [STAL04]. Tipos de solicitudes A nivel de protocolo, HTTP define 8 tipos distintos de solicitudes, denominados métodos HTTP. Los más comunes son GET (para solicitar un recurso a partir de su URI), HEAD (idéntico al anterior pero sin incluir el cuerpo del documento) y POST (para guardar datos adicionales proporcionados por el cliente como una nueva entidad subordinada del recurso web identificado por la URI proporcionada) [SYMF01]. Tipos de respuesta En respuesta a las solicitudes de los clientes, los servidores retornan un valor numérico de 3 dígitos conocido como código de respuesta. Éstos se clasifican en 5 tipos denominados clases. Las clases de respuesta HTTP son 1xx Informational (para respuestas provisionales, como las relativas a comprobaciones previas para solicitudes posteriores), 2xx Success (que indican que una solicitud es 1 Aunque cliente y servidor pueden acordar reutilizar la misma conexión para varias solicitudes. En este caso se mantiene la conexión TCP pero no el estado previo a nivel de protocolo de aplicación.
  • 20. Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto 20 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo soportada y aceptada por el servidor, y se ha procesado correctamente), 3xx Redirection (que indica que se debe realizar una acción adicional, como una solicitud a una nueva URI, o que los datos en la memoria caché del navegador están actualizados), 4xx Client Error (si hay errores en la solicitud del cliente y la naturaleza temporal o definitiva de los mismos) y 5xx Server Error (que indican errores no atribuibles al cliente al procesar una solicitud válida). Internet Cliente Cliente Cliente Servidor Figura 2.1: Diagrama cliente-servidor HTTP Sesiones en HTTP Aunque HTTP es un protocolo sin estado y no proporciona mecanismos para mantener información asociada a un conjunto de solicitudes de diferentes recursos, en los sitios y aplicaciones web actuales resulta imprescindible poder identificar y mantener información para cada cliente de manera individual. Para ello, el servidor envía una cookie como parte de la respuesta a su primera solicitud que es reenviada por el navegador en las siguientes, de forma que se consigue preservar la información necesaria asociada al usuario durante el tiempo que éste utiliza la aplicación. Esta cookie contiene un identificador de sesión (o token) utilizado por el servidor para identificar y localizar los datos del cliente. La razón de que solo se envíe y reciba un token hacia y desde el cliente atiende a razones de simplicidad (el cliente solo tiene que gestionar un identificador) y seguridad (la comprobación de la autenticidad del token se realiza en el servidor, pudiendo implementar mecanismos de seguridad adicionales como la comprobación de la IP de origen o la revocación de privilegios para tokens que no hayan sido utilizados durante un periodo de tiempo determinado). Generación de contenido de forma dinámica Cuando la World Wide Web surgió a principios de los 90, la mayor parte de sus contenidos eran páginas estáticas HTML. Sin embargo, a medida que su uso se fue popularizando, surgió la necesidad de generar las páginas de manera dinámica (esto es, crear el contenido en el momento en el que el usuario lo solicita). Esto permitió que surgieran webs que respondían a las necesidades de los usuarios, permitiéndoles interactuar con ellas y obtener información que se actualizaba en tiempo real. En la actualidad, prácticamente todas las webs más visitadas generan la mayor parte de sus páginas en el momento en que son solicitadas por el usuario a partir de un programa [ALEX01]. Una búsqueda
  • 21. Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 21 en Google retorna un listado de páginas generado a partir de los datos de un índice, los artículos de la Wikipedia son generados a partir de la información almacenada en una base de datos, Facebook es una aplicación escrita en PHP y C++ que lee sus datos de una base de datos distribuida [FACEB01]. Para la generación dinámica del contenido en el servidor de aplicación existen diversas alternativas. Las más comunes son generar el contenido a partir de un programa o script CGI escrito en cualquier lenguaje de programación, lo cual normalmente implica la creación de un nuevo proceso; o generar el contenido a partir de un script ejecutado por el servidor dentro de su espacio de direcciones2 , como si se tratase de una llamada a función más dentro del ciclo normal de despacho de solicitudes. La aplicación desarrollada está implementada utilizando PHP, el cual soporta ambos modos de operación. En nuestro caso, hemos optado por el segundo enfoque, ya que es el recomendado para la combinación del servidor web y sistema operativo utilizados [PHP03]. Además, para mejorar los tiempos de carga y disminuir los recursos necesarios en el servidor de bases de datos, es común utilizar servidores adiciones de memoria caché para guardar copias de los datos de la aplicación (o páginas completas generadas previamente) en memoria RAM, evitando así los accesos a disco y la sobrecarga adicional introducida por las comprobaciones de permisos de la base de datos en las lecturas. Aun así, las escrituras siguen introduciendo importantes latencias, así como la lógica asociada a mantener la consistencia de datos entre las memorias caché y la base de datos. 2.2.2 Introducción a HTML El Lenguaje de Marcado de Hipertexto (Hypertext Markup Language) es el sistema surgido a principios de los 90 para estructurar el contenido de los documentos a mostrar utilizando un navegador web. Consta de una serie de reglas sintácticas, que definen códigos de marcado o etiquetas insertadas en los archivos que constituyen las páginas web; y semánticas, que indican al navegador cómo mostrar al usuario la información. Los elementos que forman los documentos HTML pueden clasificarse en estructurales (como un párrafo) o en aquellos que definen un comportamiento deseado (como un salto de línea) [ROB06]. Las reglas que definen la etiquetas HTML válidas y su sintaxis y semántica son mantenidas por el World Wide Web Consortium (más conocido por la abreviatura W3C), una organización internacional fundada en 1994 cuyo objetivo es el desarrollo y mantenimiento de los diferentes estándares sobre los que se basa Internet. Los elementos HTML pueden anidarse y, para que sean correctos, todos ellos deben estar entre las etiquetas de apertura y cierre del elemento que lo contiene (denominado padre) [ROB06]. 2 Este modo de operación es conocido como “Ejecución como módulo del servidor”.
  • 22. Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto 22 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo Internet Apache Cliente Apache Workers mod_php core MySQL Memcached Figura 2.2: Despliegue típico de una aplicación web utilizando un pool de procesos Apache El conjunto de reglas sintácticas y semánticas que debe cumplir un documento HTML es bastante complejo, y difiere entre versiones del estándar. Para facilitar la tarea de comprobar si una página cumple con los estándares, la W3C pone a disposición de los desarrolladores una herramienta online en [W3C02] que realiza una comprobación sintáctica y semántica completa para determinar la validez de los documentos. En los últimos años se ha puesto un especial énfasis en eliminar de HTML la información utilizada para <!DOCTYPE html> <html> <head> <title>Título de la página</title> </head> <body> <p>Hola mundo!</p> </body> </html> Figura 2.3: Documento HTML básico
  • 23. Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 23 indicar cómo representar su contenido, recomendando el uso de CSS para este propósito y utilizando HTML como capa estructural [ROB06]. De esta forma, los archivos HTML pasan a ser la fuente de los contenidos y la estructura básica de las páginas web, mientras que CSS define de forma exhaustiva la forma de presentarlos mediante un conjunto de reglas independientes y fácilmente intercambiables en función, por ejemplo, del tipo de dispositivo usado (como un ordenador o un teléfono móvil) o de sus características (como su resolución o el navegador utilizado). Para crear una base sólida, escribir documentos HTML sin elementos de presentación y bien estructurados se ha convertido en la base del diseño web fiel a los estándares, utilizando marcado semántico de forma que sus elementos sean descriptivos y tengan significado [ROB06]. El nuevo estándar: HTML5 Con el paso del tiempo, HTML fue degenerando en una mezcla de características introducidas por sus distintas especificaciones, por los diferentes navegadores que incluían sus propias extensiones al estándar, por los hábitos de los desarrolladores y por la necesidad de lidiar con los errores sintácticos de los documentos existentes en la web. Además, el lenguaje presentaba carencias, y era necesario mejorar la representación semántica de los documentos. Por otra parte, el mercado actual incluye nuevos dispositivos, como teléfonos móviles, tablets o televisores, y usos de los lenguajes del lado del cliente que no se habían tenido en cuenta inicialmente, como la obtención de datos del servidor de forma asíncrona para alterar el contenido y la presentación de los documentos en tiempo real. Tradicionalmente estos problemas han sido solventados recurriendo a tecnologías no estándar (como Flash) que introducen nuevos problemas, como un mayor uso de recursos o el hecho de atar a usuarios y desarrolladores a productos propietarios. Para solucionar estos problemas, la W3C publicó en 2012 una versión inicial de la quinta revisión de HTML como una recomendación candidata3 , que constituye una renovación del lenguaje teniendo en cuenta el escenario actual, y la inclusión de características demandadas por usuarios y desarrolladores. Entre las características principales de HTML5 están [MOZ01]:  Nuevos elementos semánticos, proporcionando soporte para definir el significado y la importancia de las diferentes secciones de los documentos de manera nativa.  Posibilidad de referenciar audio y video a través de tags estándar, gestionando los contenidos en el propio navegador y su control a través de interfaces de usuario programadas utilizando Javascript tradicional.  Soporte para nuevos elementos de formulario, y la posibilidad de definir la lógica de validación de éstos directamente como atributos HTML en lugar de necesitar el uso de lenguajes de scripting para ello. 3 El 28 de Octubre de 2014 la W3C publicó la primera versión completa del estándar HTML5 en [W3C08].
  • 24. Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto 24 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo  Comunicación bidireccional entre el cliente y el servidor, permitiendo a este último la notificación de eventos utilizando WebSockets en lugar de necesitar un mecanismo de polling tradicional e el cliente.  Posibilidad de implementar aplicaciones web multihilo, utilizando WebWorkers para la ejecución de Javascript en segundo plano.  Soporte nativo para el almacenamiento de información en el cliente, posibilitando la creación de aplicaciones web que guardan información en el equipo del usuario. Además, junto a HTML5 se dispone de la tercera versión de CSS, que introduce mejoras para definir interfaces de usuario modernas, incluyendo bordes redondeados, animaciones, tipografías mejoradas y acceso al hardware de aceleración gráfica en 3D a través de WebGL. 2.2.3 Introducción a AJAX Por Javascript Asíncrono y XML (Asynchonous Javascript And XML) se conoce al conjunto de tecnologías de desarrollo web que permiten la creación de aplicaciones asíncronas en las que el cliente puede enviar y recibir datos a y desde servidor en segundo plano, sin requerir la recarga de la página actual. Formalmente, AJAX no se refiere a una única tecnología, sino a un conjunto de ellas, incluyendo HTML y CSS, DOM, XML y Javascript que, utilizadas de manera simultánea, permiten implementar aplicaciones web que, hasta cierto punto, se asemejan a las aplicaciones de escritorio tradicionales en lo referido a los tiempos de respuesta. Entre las aplicaciones web más conocidas que implementan este modelo de funcionamiento se incluyen Gmail, Google Maps, Goolge Docs, Twitter o Facebook, y se basan en los estándares HTML y CSS (para crear una interfaz de usuario interoperable), DOM (para la manipulación dinámica de los contenidos), XML y JSON (para representar y manipular los datos enviados y recibidos) y Javascript (utilizado como el lenguaje que une todas las demás tecnologías). En las aplicaciones web tradicionales, las acciones del usuario, como hacer clic en un botón o seleccionar un valor de una lista, requerían realizar una solicitud HTTP, tras la cual toda la interfaz de usuario (la página web) era redibujada. Utilizando AJAX, el usuario puede seguir interactuando con el sitio mientras la respuesta a sus acciones es procesada en segundo plano por el servidor y el navegador espera la respuesta a ellas siguiendo un modelo orientado a eventos. Esto permite la implementación de funciones que antes solo eran posibles en aplicaciones de escritorio, como autocompletado, la notificación de llegada de nuevos correos electrónicos en tiempo real, sistemas de mensajería instantánea, interfaces de administración completas de uso sencillo para máquinas virtuales [VBOX01], o sistemas de gestión de contenido web [AJXL14] o bases de datos [DBADM01]. 2.2.4 Introducción a CSS y CSS3 Las hojas de estilo en cascada (Cascading Style Sheets) son utilizadas para definir la apariencia y formato de los diferentes elementos de una página web (o cualquier otro tipo de documento XML) en una pantalla de ordenador, móvil u otro dispositivo por medio de una sintaxis sencilla. Publicado
  • 25. Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 25 inicialmente en 1996 por la W3C, CSS es considerado una de las tecnologías clave de la web actual y la práctica totalidad de los sitios web lo utilizan para definir la presentación de sus contenidos. CSS permite un control total sobre el estilo y formato de los documentos [W3C03], separando el contenido de la presentación, por medio de reglas o declaraciones sobre estilo de uno o más elementos. Sintácticamente, cada regla se divide en dos partes: un selector y una declaración de estilo asociada a éste. A su vez, cada declaración está compuesta por una o más asignaciones de valores a propiedades del selector. h1 { color: red; font-weight: bold; } Figura 2.4: Ejemplo de declaración CSS Los selectores funcionan como enlace entre el documento y el estilo, especificando qué elementos van a verse afectados por cada declaración. En el ejemplo anterior, se especifica que los elementos HTML <h1> deben mostrarse en negrita y color rojo en todos los documentos vinculados a la hoja de estilos que lo contiene. Existen 3 formas de asociar estilos a los elementos de un documento: utilizando una hoja de estilos CSS externa, insertando las reglas directamente en el encabezado de un documento, o insertando los valores de las propiedades directamente sobre aquellos elementos a modificar. Estos métodos no son mutuamente excluyentes. Otro aspecto importante de CSS es la posibilidad de anidar las reglas, por medio de múltiples declaraciones o utilizando múltiples reglas diferentes aplicables a un mismo elemento. De esta forma es posible definir el estilo general de un documento, para luego concretarlo en otros archivos o directamente sobre el marcado HTML, siguiendo un proceso análogo al de herencia y sobrecarga de los lenguajes de programación. En general, existen tres tipos de selectores básicos: aquellos que especifican el identificador único del elemento HTML sobre el que se aplican (precedido de una almohadilla), aquellos que definen una clase de elementos (precedidos de un punto) y aquellos, más generales, que se aplican a todas las etiquetas HTML de un tipo dado. Además, pueden utilizarse selectores basados en pseudoclases, que permiten definir el formato de los elementos basándose en información que no está representada en el árbol sintáctico del documento (por ejemplo, definir el color de los enlaces que han sido visitados previamente por el usuario o la apariencia de un botón cuando se pasa el ratón por sobre él). Novedades de CSS3 En junio de 1999 la W3C publicó los primeros borradores de la tercera versión de CSS. En general, CSS3 ha sido publicado como diferentes módulos, cada uno con procesos de revisión y calendarios diferentes, y abarcan aspectos concretos como el modelo de cajas CSS [W3C04] (box model, relativo al posicionamiento de los elementos de una página), las imágenes de fondo [W3C05] (permitiendo utilizar múltiples imágenes como fondo de cualquier elemento y controlar su posición), la descarga de las fuentes de texto usadas por una página [W3C06] (eliminando así la tradicional dependencia en las fuentes instaladas en el equipo del cliente) o las
  • 26. Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto 26 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo media-queries [W3C07] (que permiten definir declaraciones de estilo condicionales en función del tamaño u orientación de la pantalla o del tipo de dispositivo). 2.2.5 El patrón de diseño MVC El patrón Modelo-Vista-Controlador (Model-View-Controller) [GoF94] define el diseño de sistemas de información como diferentes componentes débilmente acoplados, de forma que la representación interna de los datos es independiente de la forma en que éstos son mostrados al usuario. Las aplicaciones construidas siguiendo este patrón quedan, en general, divididas en los siguientes componentes:  Modelos: Objetos que encapsulan el acceso a los datos de la aplicación, de forma que el mecanismo de acceso a los mismos y su representación interna es independiente del resto de la aplicación.  Vistas: Las vistas implementan la forma de interactuar del usuario con la aplicación, siendo las encargadas de decidir cómo mostrar los datos a éste.  Controladores: Los controladores se encargan de realizar solicitudes a los modelos, de elegir las vistas a utilizar y de proporcionar a éstas los datos necesarios. El principal inconveniente de MVC, cuando se utiliza de forma estricta, es el hecho de que, al utilizarse un único controlador para atender cada solicitud, cada uno debe gestionar también otras partes que son comunes a toda la aplicación, como la inicialización de sesiones, la comprobación de permisos o la generación de las partes de la interfaz que son comunes a toda la aplicación o a secciones amplias de la misma. MCV en capas: Arquitectura jerárquica Al desarrollar una aplicación web, a menudo se presentan complicaciones a la hora de definir la interfaz con el cliente debido a la gran variedad de servidores, plataformas de desarrollo y protocolos con los que debe lidiar el desarrollador. Entre los factores que hay que tener en cuenta están cómo estructurar la interfaz y cómo interactuarán los usuarios con ella, cómo separar la lógica encargada de enviar los datos al cliente en diferentes formatos y cómo gestionar los eventos y el flujo de la aplicación. Además, hay que tener en cuenta que ciertas partes de la capa de presentación deben ser consistentes ente páginas (o idénticas), y hay ciertos pasos que deben realizarse indistintamente para todas las solicitudes (como la creación de conexiones a la base de datos, la gestión de sesiones o la inicialización de subsistemas comunes a toda la aplicación). Para simplificar el proceso de desarrollo, mejorar la modularidad de las aplicaciones y facilitar su mantenimiento surge el Modelo-Vista-Controlador Jerárquico (Hierarchical Model-View-Controller, [CAI00]). Se trata de una variación del patrón MVC estándar que aumenta la modularidad y facilita la reusabilidad y el mantenimiento del código, permitiendo, a diferencia del MVC tradicional, que los controladores pueden realizar sub-solicitudes a otros controladores.
  • 27. Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 27 Base de Datos Controlador Modelo(s) Figura 2.5: Arquitectura MVC tradicional De esta forma cada controlador se encarga de generar parte de la respuesta a enviar al usuario, delegando el resto en otros controladores y permitiendo la construcción de aplicaciones como un conjunto de varias capas jerárquicas de modelos, vistas y controladores. Algunas de las ventajas de HMVC son:  Reduce las dependencias entre partes dispares del programa.  Facilita la reutilización de componentes y módulos.  Aumenta la extensibilidad a la vez que facilita el mantenimiento del código. La clave para ello está en la posibilidad de realizar sub-solicitudes a otros controladores en lugar de duplicar código. Por ejemplo, para mostrar una lista de artículos en HTML se envía una solicitud al controlador de artículos con algunos parámetros, el cual interactúa con el modelo apropiado, y selecciona una vista para mostrar el contenido. Sin embargo, en lugar de mostrar la lista recibida directamente en una página independiente, el controlador que realiza la sub-solicitud utiliza la vista recibida para incrustarla en otra (por ejemplo, una interfaz que lista todas las opciones de administración).
  • 28. Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto 28 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo Base de Datos Controlador Modelo(s) Controlador Modelo(s) ... Figura 2.6: Arquitectura MVC jerárquica 2.2.6 Introducción a PHP PHP (acrónimo recursivo que significa “PHP: Hypertext Preprocesor” o Preprocesador de Hipertexto) es un lenguaje de programación de propósito general ampliamente usado para el desarrollo de aplicaciones web. Con una sintaxis que toma elementos de C, Java y Perl, se trata de un lenguaje diseñado para permitir el desarrollo de páginas web dinámicas de forma rápida, a la vez que permite construir aplicaciones más complejas utilizando interfaces a librerías de terceros y elementos de la programación orientada a objetos [PHP04]. El código escrito en PHP puede estar mezclado con código HTML o de otro tipo, o pude usarse junto a sistemas de plantillas (separando la lógica de negocio de la capa de presentación). Habitualmente los programas escritos en PHP (también llamados scripts PHP) son procesados por un intérprete enlazado a un servidor web como una extensión o utilizando una interfaz CGI, tras lo cual se envía el resultado generado al cliente como respuesta a una solicitud.
  • 29. Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 29 A diferencia de los lenguajes de programación tradicionales, PHP usa un sistema de asignación de tipos de dato débil y dinámico, en el cual las variables no tienen que declararse previamente y pueden pasar de representar un tipo escalar a otro, un objeto, o dejar de existir dentro de un mismo contexto de ejecución (por ejemplo, dentro de una única función). Internamente, PHP está estructurado a partir de un pequeño núcleo (core) que gestiona la funcionalidad esencial del lenguaje (como el parser o la gestión de variables y tipos) sobre una máquina virtual que proporciona funcionalidades de bajo nivel (como la gestión de memoria o la representación interna de datos). Sobre él se apoyan un amplio número de extensiones4 que proporcionan varias funcionalidades, como manipulación de imágenes, cálculo con números de precisión arbitraria, envío de correo electrónico o interfaces para utilizar diferentes protocolos de red. Del mismo modo, parte de las funcionalidades básicas del lenguaje, como los principales tipos de contenedores (pilas, heaps, listas enlazadas…), iteradores, excepciones e interfaces están implementadas como la extensión obligatoria (sic) SPL5 . La implementación original de PHP, disponible en php.net, se considera el estándar de facto y está construida sobre una máquina virtual denominada Zend Engine, que compila en el momento de la solicitud el código PHP a una representación interna que luego es ejecutada por un intérprete. Debido al tiempo necesario para ello, existen varios proyectos open source que implementan compiladores PHP alternativos (como HipHop Virtual Machine [FACEB01] o Parrot). El uso de PHP para el desarrollo web está ampliamente extendido, existiendo fuentes que estiman que es utilizado aproximadamente por el 40% de los sitios web actuales6 [WIKI05]. 2.2.7 Los sistemas de plantillas para web Debido a que los documentos HTML son archivos de texto plano, las aplicaciones web pueden ser desarrolladas de forma directa, escribiendo directamente el código que lo define a través de la salida estándar 7 (la cual se envía al cliente directamente por el navegador). Esta forma de proceder, aunque inicialmente más simple y fácil, rápidamente da lugar a aplicaciones difíciles de entender y mantener. Además, normalmente provoca que cualquier cambio en la capa de presentación deba hacerse en varios archivos, y da lugar a archivos de código fuente demasiado largos y potenciales inconsistencias. Los sistemas de plantillas aplican el principio de separación en capas usado en la ingeniería de software tradicional en las aplicaciones web. De esta forma, la capa de presentación es definida a partir de archivos independientes que contienen código HTML (o de otro tipo, como CSS o Javascript) y referencias o etiquetas especiales que son remplazadas por valores reales para generar la respuesta a enviar al cliente. Esto proporciona una serie de ventajas importantes:  Facilita la separación de responsabilidades, encapsulando en las plantillas los detalles relativos a la presentación. 4 A día de hoy existen más de 200 extensiones documentadas en php.net. 5 Standard PHP Library (librería estándar de PHP) 6 Enero 2013 7 Esto es bastante común en la programación de scripts CGI utilizando lenguajes tradicionales
  • 30. Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto 30 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo  Proporciona una forma sencilla de modificar la presentación, al estar definida en un conjunto de archivos conocido e independiente.  Establece un principio de mínimo privilegio a nivel software, evitando que la capa de presentación acceda a funciones de modificación de datos o de lógica de negocio.  Permite definir la interfaz de usuario utilizando una sintaxis independiente y, a menudo, más sencilla que la del resto de la aplicación. Por otra parte, al utilizar plantillas se incluye una capa adicional en el proceso necesario para generar las páginas web, con la correspondiente sobrecarga asociada y necesidad de gestión de archivos adicionales. Para solucionar el primer problema, los sistemas de plantillas modernos permiten precompilar plantillas (convirtiéndolas en clases PHP o código Java nativo, por ejemplo), o utilizar sistemas de caché en memoria que evitan el coste asociado a leer las plantillas de disco en cada solicitud. Página Web Plantilla %header% Welcome… · ….. · ….. [_] [_] Datos Sistema De Plantillas Figura 2.7: Esquema de funcionamiento de un sistema de plantillas web
  • 31. Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 31 2.3 Objeto La aplicación desarrollada surge para suplir las carencias de otra aplicación que el congreso venía utilizando en ediciones anteriores. Se trata de un gestor integrado que permitirá el registro de los asistentes al congreso, el envío por parte de éstos de los artículos a presentar y sus justificantes de pago, y la gestión integral de todas las fases de la conferencia por parte de los organizadores de la misma, incluyendo el ciclo de revisión de artículos, las distintas sesiones que tendrán lugar o la generación de documentación y listados diversos. 2.4 Antecedentes La aplicación desarrollada parte de otra utilizada en ediciones anteriores, a la cual viene a sustituir, y debe cubrir la funcionalidad proporcionada por ella, además de solventar las carencias detectadas en la misma tras su uso en ediciones anteriores. Para ello se deben realizar los cambios necesarios para garantizar la modularidad de la aplicación resultante, asegurándonos de que la ampliación posterior de la misma resulte más sencilla que al inicio del proyecto. Durante el desarrollo deben de existir los mecanismos necesarios para garantizar el funcionamiento de las características originales, a la vez que se garantiza que las nuevas lo siguen haciendo de la manera esperada tras cada iteración. Para este propósito se utilizarán tests unitarios automáticos. 2.5 Normas y referencias A continuación se incluye un estudio breve sobre normativas aplicables al proyecto, métodos y herramientas, mecanismos de control de calidad y una introducción a los marcos de trabajo (frameworks) y librerías utilizadas. Como complemento a este apartado se incluye, al final del documento a modo de apéndice, una lista completa de referencias bibliográficas. 2.5.1 Disposiciones legales y normas aplicadas En este punto se incluyen los aspectos más importantes de las leyes y normativas que son aplicables al presente proyecto. Ley Orgánica de Protección de Datos La aplicación desarrollada está alojada en un servidor en España y es propiedad de una empresa (la organización del congreso) constituida legalmente en España. Por tanto, debido a que en el proceso de registro se recogen datos personales de los asistentes, la aplicación está sujeta a la Ley Orgánica de Protección de Datos (LOPD). Esta ley dicta que, por guardar datos personales, estamos obligados a:  Informar a los usuarios de qué datos personales se recogen.
  • 32. Plataforma web para la gestión de conferencias científico-técnicas | Memoria del proyecto 32 Héctor Arroyo Santiago | Escuela Politécnica de Ingeniería - Universidad de Oviedo  Informar del propósito con el que se recogen dichos datos.  Proporcionar métodos para consultar, rectificar y dar de baja los datos. Para ello debe proporcionarse una dirección postal.  Implementar las medidas de seguridad oportunas para proteger los datos, incluyendo solicitar una contraseña para acceder a ellos. Para cumplir la ley, durante el proceso de registro se informa al usuario de que todos los datos proporcionados durante el mismo están sujetos a la LOPD, que el propósito es la gestión del congreso y se proporciona una dirección postal para efectuar el derecho de rectificación y cancelación. El cuarto punto se cumple en cuanto que para acceder al sistema, tanto si es como ponente como si es como administrador, se requiere un nombre de usuario y una contraseña, y el acceso remoto al servidor para labores administrativas se realiza utilizando conexiones cifradas a través de SSH que también requieren proporcionar usuario y contraseña. Todos los accesos al sistema quedan debidamente registrados en la base de datos y/o en archivos de texto. Legislación sobre cookies En este apartado se incluye un estudio breve sobre la legislación aplicable a este proyecto sobre el uso de cookies en sitios web basado en la Guía sobre el uso de cookies [AEPD14] publicada por la Agencia Española de Protección de Datos (AEPD). Se ha optado por utilizar dicha guía por ser de relevancia la interpretación hecha por esta institución de la Ley que regula este aspecto. Cabe destacar que, aun así, la guía de la AEPD es solo una interpretación de la norma y no su texto completo, el cual prevalece en cualquier caso sobre ella. La legislación en materia de publicidad y comercio electrónico se rige por la Ley de Servicios de la Sociedad de Información (LSSI), la cual incluye una normativa sobre el tratamiento de cookies en sitios web vigente desde el 1 de abril de 2012. En términos generales, esta normativa obliga a los propietarios de los sitios a informar de forma clara y obtener el consentimiento del usuario antes de utilizar ciertos tipos de cookies. Esta ley afecta a todos los profesionales o empresas que presten servicios en España, ya sea por disponer de domicilio o establecimiento permanente en España, o porque sus servicios estén orientados a este mercado. La ley distingue cuatro tipos de cookies:  Cookies técnicas: Son aquellas que resultan imprescindibles para proporcionar el servicio de la aplicación o página web como, por ejemplo, las que almacenan los datos de un pedido online.  Cookies de personalización: Utilizadas para cambiar las funciones o contenidos del sitio en función de los datos del navegador, por ejemplo, para cambiar el idioma utilizado en función de las preferencias del usuario.  Cookies de análisis: Son aquellas utilizadas únicamente con propósitos estadísticos.
  • 33. Memoria del proyecto | Plataforma web para la gestión de conferencias científico-técnicas Escuela Politécnica de Ingeniería - Universidad de Oviedo | Héctor Arroyo Santiago 33  Cookies publicitarias: En este grupo se incluyen aquellas cookies cuyo objetivo es almacenar información sobre las páginas visitadas o el comportamiento del usuario, utilizadas en servicios como la red publicitaria de Google. En nuestro caso, la aplicación envía una única cookie, utilizada para mantener el identificador de sesión del usuario. Según la terminología de la AEPD, atendiendo a la entidad emisora es una cookie propia; atendiendo a su plazo es una cookie de sesión; y atendiendo a su finalidad es una cookie técnica. Es utilizada para prestar “un servicio solicitado expresamente por el usuario” y está clasificada como cookie “de autentificación o identificación del usuario (sesión)”. Este tipo de cookies están explícitamente excluidas del ámbito de aplicación del artículo 22.2 de la LSI, no siendo necesario ni informar ni solicitar consentimiento para su uso. Por otra parte, para que una cookie no esté sujeta al deber de consentimiento informado, es requisito necesario que su caducidad esté relacionada con su finalidad. Las cookies de sesión de PHP son borradas tras un intervalo de tiempo configurable en el propio servidor. Además, las cookies no tienen otra finalidad que la “autentificación o identificación del usuario”, luego no son clasificables por la Ley de Servicios de Internet dentro del ámbito de aplicación de otros preceptos. También es importante mencionar que las sesiones identificadas por las cookies del sitio normalmente estarán asociadas a cuentas de usuarios de los que se guardan datos personales en el servidor. Estos datos, debido a su naturaleza, están cubiertos por la Ley Orgánica de Protección de Datos. 2.5.2 Métodos, herramientas, modelos, métricas y prototipos En este apartado se incluye una introducción, sin carácter exhaustivo ni exclusivo, a diferentes programas y herramientas software y su uso en el desarrollo de este proyecto. Mantis Mantis Bug Tracker es una aplicación de código abierto, basada en una interfaz web, para el seguimiento de incidencias y errores (bugs). Mantis ha sido utilizado durante todo el desarrollo de la aplicación para gestionar la lista de características a implementar y los fallos encontrados, permitiendo llevar un registro de los mismos, incluyendo su estado y prioridad. Mantis permite agrupar las incidencias en hitos (milestones). En el caso de la aplicación desarrollada, esta característica ha sido utilizada para agruparlos en iteraciones (sprints), de forma que se ha realizado una implementación gradual, teniendo siempre una versión funcional disponible. Otra característica que se ha tenido en cuenta a la hora de utilizar Mantis (y, en general, un sistema de seguimiento de inicidencias) es que la información de gestión guardada en él puede utilizarse posteriormente para documentar fielmente las fases del desarrollo del proyecto.