Logo Studenta
¡Este material tiene más páginas!

Vista previa del material en texto

Tr
eb
al
lF
in
al
d
e
G
ra
u Aplicación Web para Gestión de Vuelos y
Pasajeros en Privilege Style S.A.
GERMÁN MARTÍNEZ
Tutor
Carlos Juiz
Escuela politécnica superior
Universidad de las Islas Baleares
Grado en Ingeniería Informática
Palma, 4 de septiembre de 2016
En primer lugar, quiero agradecer a mi familia su apoyo incondicional durante estos
cortos pero intensos cuatro años, estoy seguro de que sin ellos no habría conseguido
estar donde estoy ahora.
En segundo lugar, quiero agradecer a mi tutor los consejos y el asesoramiento que me
ha proporcionado a lo largo de este proyecto. Su profesionalidad e interés han sido un
claro ejemplo para mí y lo seguirán siendo en el futuro.
Finalmente, me gustaría agradecer a la empresa Privilege Style S.A. el facilitarme y
permitirme realizar un proyecto de estas características, ayudándome y confiando en
mí en todo momento.
ÍNDICE GENERAL
Índice general III
Índice de figuras V
ACRÓNIMOS VII
RESUMEN IX
1 INTRODUCCIÓN 1
2 OBJETIVOS 3
2.1. Generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Particulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 TECNOLOGÍAS 5
3.1. Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2. Vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3. Controlador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.4. Herramienta de Construcción y Compilación de Proyectos . . . . . . . . 6
3.5. Control de Versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.6. Base de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.7. Servlet Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.8. Sistema Operativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.9. Entorno de desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.10. Otras Tecnologías y/o Frameworks . . . . . . . . . . . . . . . . . . . . . . 8
4 DESARROLLO 9
4.1. Definición del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2. Beneficios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.3. Diseño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.3.1. Base de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.3.2. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3.3. Módulos y Funcionalidades . . . . . . . . . . . . . . . . . . . . . 35
4.4. Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5 RESULTADOS Y DISCUSIÓN 47
6 CONCLUSIÓN Y LÍNEAS DE FUTURO 49
III
IV ÍNDICE GENERAL
6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2. Líneas de Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
A RESUMEN DEL PROCESO DE ENVÍO Y RECEPCIÓN DE INFORMACIÓN DE
UN VUELO 51
A.1. Solicitud de Nueva Operación de Vuelo . . . . . . . . . . . . . . . . . . . 51
A.2. Previo al Vuelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
A.3. Creación del Vuelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
A.4. Gestión y Envío de la PNL . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
A.5. Confirmación de Recepción de un Vuelo . . . . . . . . . . . . . . . . . . 52
A.6. Cambios de Última Hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
A.7. Cierre de un Vuelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Bibliografía 53
ÍNDICE DE FIGURAS
4.1. Métodología SCRUM simplificada . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2. Metodología SCRUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.3. Modelo Entidad-Relación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.4. Estructura del Proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.5. Paquete Privilege App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.6. Paquete Privilege Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.7. Paquete Privilege Data Constant . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.8. Paquete Privilege Data Service . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.9. Paquete Privilege Data Implementation . . . . . . . . . . . . . . . . . . . . . 16
4.10. Paquete Privilege Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.11. Paquete Privilege Data Repository . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.12. Paquete Privilege Web Imagen 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.13. Paquete Privilege Web Imagen 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.14. Paquete Privilege Web Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.15. Paquete Privilege Web Constant . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.16. Paquete Privilege Web Controller . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.17. Paquete Privilege Web Flight Controller . . . . . . . . . . . . . . . . . . . . . 22
4.18. Paquete Privilege Web Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.19. Paquete Privilege Web Helper . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.20. Paquete Privilege Web Interceptor . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.21. Paquete Privilege Web Json . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.22. Paquete Privilege Web Json Beans . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.23. Paquete Privilege Web Startup . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.24. Paquete Privilege Web Validator . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.25. Paquete Privilege Web View . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.26. Paquete Privilege Web Resources . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.27. Paquete Privilege Web App Resources . . . . . . . . . . . . . . . . . . . . . . 27
4.28. Paquete Privilege Web App WEB-INF . . . . . . . . . . . . . . . . . . . . . . . 29
4.29. Paquete PVG Utils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.30. Paquete PVG Utils Constant . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.31. Paquete PVG Utils Dyna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.32. Paquete PVG Utils Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.33. Paquete PVG Utils Pojo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.34. Paquete PVG Utils Util . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.35. Paquete PVG Utils Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.36. Paquete PVG Utils Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
V
VI Índice de figuras
4.37. Configuración del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.38. Página de Bienvenida de la Aplicación . . . . . . . . . . . . . . . . . . . . . . 35
4.39. Acceder a la creación del vuelo . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.40. Creación del vuelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.41. Datos del Vuelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.42. Vista en un Vuelo ya Creado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.43. Cargar Pasajeros desde una lista en CSV . . . . . . . . . . . . . . . . . . . . . 38
4.44. Crear Nuevo Pasajero desde la Aplicación . . . . . . . . . . . . . . . . . . . . 39
4.45. Modificar Vuelo y Pasajeros a su Estado de no Enviado . . . . . . . . . . . . 39
4.46. Editar un Vuelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.47. Crear Itinerario de Viaje . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.48. Realizar Conciliación de Pasajeros Manual . . . . . . . . . . . . . . . . . . . 40
4.49. Eliminación Múltiple de Pasajeros . . . . . . . . . . . . . . . . . . . . . . . . 41
4.50. Procesos de la Parte Superior de la Página . . . . . . . . . . . . . . . . . . . . 41
4.51. Formulario de Envío de PNLs . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.52. Vista de Información de Aviones . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.53. Formulario de Creación de Aviones . . . . . . . . . . . . . . . . . . . . . . . . 43
4.54. Lista de Pasajeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.55. Lista de Pasajeros de un Vuelo Concreto . . . . . . . . . . . . . . . . . . . . . 44
4.56. Formulario para la Creación y Edición de Pasajeros . . . . . . . . . . . . . . 44
4.57. Lista de Aerolíneas Registradas . . . . . . . . . . . . . . . . . . . . . . . . . . 45
ACRÓNIMOS
TFG Trabajo Final de Grado
PNL Passengers Name List
ADL Additional Name List
UN/EDIFACT United Nations rules for Electronic Data Interchange for Administration,
Commerce and Transport
PRL Passenger Reconcile List
CSV Comma-Separated Values
PDF Portable Document Format
DCS Departure Control System
SITA International Society of Aeronautical Telecommunications
IATA Asociación Internacional del Transporte Aéreo
PNR Passengers Name Register
API Información Anticipada sobre los Pasajero
JPA Java Persistence API
ORM Object-Relational mapping
JDBC Java Database Connectivity
JNDI Java Naming and Directory Interface
XHTML eXtensible HyperText Markup Language
UIB Universidad de las Islas Baleares
HTML HyperText Markup
MVC Modelo Vista Controlador
IDE Integrated Development Environment
EJB Enterprise JavaBeans
VII
VIII ACRÓNIMOS
CRM Customer Relationship Management
PFS Passenger Final Sales
XSLT EXtensible Stylesheet Language
XML eXtensible Markup Language
URL Uniform Resource Locator
PSCRM Passenger Services Conference Resolutions Manual
RESUMEN
El presente trabajo de fin de grado consiste en el desarrollo de una aplicación web
para la gestión de vuelos y pasajeros en la empresa Privilege Style S.A.
Al contrario que en compañías de vuelos regulares, los clientes no emiten un billete
individualmente, si no que un grupo de pasajeros alquilan o contratan un avión para
su uso exclusivo durante un número de saltos, o en durante un tiempo (días, semanas,
incluso meses). En la mayoría de los casos, un representante del grupo es el encargado
de gestionar el alquiler de los vuelos y de facilitar la información necesaria a la compañía
que opera el vuelo, aunque en otras ocasiones, es una empresa la que contrata los
servicios de un avión para hacer un número estipulado de vuelos.
Es evidente que un representante o empresa no puede estar rellenando formularios
de una página para más de 200 pasajeros por vuelo y por ello, es necesario facilitarle
esta gestión.
Partiendo de una gestión que se realiza con hojas de Excel y Outsourcing, se cons-
truirá una aplicación que haga todas las gestiones necesarias con la mínima implicación
de los agentes involucrados, tanto internos como externos. Al mismo tiempo, se preten-
de tener un registro de todos los pasajeros que han volado en la compañía y los vuelos
realizados, cumpliendo así con la normativa española que se expone a continuación:
Resolución de 14 de febrero de 2007, de la Subsecretaría del Ministerio de la Pre-
sidencia, por la que se dispone la publicación de la Resolución de las Secretarías
de Estado, de Seguridad, del Ministerio del Interior y de Inmigración y Emigra-
ción, del Ministerio de Trabajo y Asuntos Sociales, por la que se determinan las
rutas sobre las que se establecen obligaciones de información por parte de las
compañías, empresas de transportes o transportistas.
Directiva 2004/82/CE del Consejo de la Unión Europea de 29 de abril de 2004
sobre la obligación de los transportistas de comunicar los datos de las perso-
nas transportadas de forma telemática y anticipada a la llegada a destino, más
conocido como .API", en inglés.
Directiva (UE) 2016/681 del Parlamento Europeo y del Consejo de 27 de abril de
2016 relativa a la utilización de datos del registro de nombres de los pasajeros
(PNR) para la prevención, detección, investigación y enjuiciamiento de los delitos
de terrorismo y de la delincuencia grave.
Anexo 9 al Convenio de la Organización de Aviación Civil Internacional (OA-
CI), sobre facilitación de la aviación civil, normas, métodos recomendados y
procedimientos internacionales de formalidades de aduana e inmigración.
IX
X RESUMEN
Además de la normativa anterior, el programa permite la comunicación bidirec-
cional entre la compañía aérea y los sistema informáticos de control de pasajeros
de los aeropuertos, en término de enviar la información previa a la salida para la
facturación, equipaje, envío a las Autoridades aduaneras y migratorias, informa-
ción personal, selección de servicios como asientos, comidas o promociones... y
posteriormente permite la reconciliación de los pasajeros que efectivamente han
embarcado y su equipaje tanto para la compañía aérea como para que el aero-
puerto de destino conozca esa información. Todo ello siguiendo las taxonomías y
estructura de mensajes diseñadas por la Asociación Internacional del Transporte
Aéreo (IATA).
C
A
P
Í
T
U
L
O
1
INTRODUCCIÓN
La empresa Privilege Style S.A., aerolínea de vuelos chárter y miembro del Grupo
Empty Leg, necesita obtener una herramienta para la gestión de vuelos y pasajeros para
cumplir con la normativa española, y facilitar el envío y la recepción de información de
pasajeros y vuelos en formato Passengers Name List (PNL), Additional Name List (ADL),
United Nations rules for Electronic Data Interchange for Administration, Commerce and
Transport (UN/EDIFACT), Passenger Reconcile List (PRL), EXCEL, Comma-Separated
Values (CSV) y Portable Document Format (PDF), a los distintos organismos nacionales
e internacionales de seguridad y control en el ámbito de la aviación.
Actualmente, la gestión de vuelos y pasajeros se realizan mediante hojas de Excel
y subcontratando los servicios para pasar la información a los formatos necesarios
propios de la aviación. La gestión con Excel produce muchos problemas de espacio en
los servidores y es necesaria la implicación de varios trabajadores para poder sostener
estos procesos. Por otra parte, la subcontratación de los servicios necesarios, suponen
un gran coste por vuelo, que varía dependiendo del país de origen y de destino.
Todo esto, junto a la necesidad por cumplir la normativa española, ha hecho nece-
saria la búsqueda de una alternativa que automatice la mayoría de los procesos y que
facilite la gestión de la información.
Por ello, ha aparecido la necesidad de crear un sistema que permita facilitar todas
las gestiones, facilitando el trabajo a los agentes internos y externos para cada uno de
los vuelos. El sistema creado, se basa en una aplicación web que permite crear vuelos,
añadir pasajeros a un vuelo y enviar toda la información de un vuelo a los distintos
agentes involucrados. Además, se requiere la creación de procedimientos que lean
automáticamente la información que llega a un correo por parte de los servidores
aeroportuarios, y el envío automático de información a los departamentos que la
requieran.
Esta aplicación se realiza utilizando el lenguaje JAVA, con la ayuda de varios fra-
meworks que permiten el modelo en tres capas, el envío y la lectura de correos, la
exportación de documentos y la visualización multiplataforma en formato web.
De esta forma, se pretende ahorrar espacio, centralizar el acceso desde cualquier
1
1. INTRODUCCIÓN
parte con varios usuarios, ahorrar los costes de subcontratación por cada vuelo, ahorrar
tiempo a los clientes y cumplir con la normativa española.
2
C
A
P
Í
T
U
L
O
2
OBJETIVOS
2.1. Generales
El proyecto surge por la necesidad de cumplir con la normativa españolay al mismo
tiempo, ahorrar costes en recursos tanto humanos como monetarios.
El objetivo principal es crear una aplicación web que sea accesible por los distintos
departamentos que realizan la gestión de vuelos y pasajeros, facilitando las tareas que
se están realizando actualmente, y al mismo tiempo, mejorar el flujo de información
entre ellos.
La aplicación debe permitir la creación, gestión y búsqueda de vuelos, pasajeros
y aviones, el envío de información a los Departure Control System (DCS) de los aero-
puertos, hacer envíos utilizando la tecnología de direcciones International Society of
Aeronautical Telecommunications (SITA), avisar a los departamentos de información
relevante sobre los vuelos y realizar procesos automáticos de lectura y envío de correos.
2.2. Particulares
Existen varias aplicaciones similares en el mercado (Ryanair, Iberia, Air Europa?),
pero en todas ellas los usuarios o clientes son los que sacan su propio billete y éste
queda registrado en el vuelo seleccionado. Con esta aplicación, se pretenden crear
más de 200 pasajeros en un vuelo importando un simple CSV, ahorrando tiempo y
facilitando al representante del grupo realizar estas gestiones.
Otro de los objetivo, es mantener la información privada y poder gestionarla y/o
manipularla sin la necesidad de terceros, manteniendo los datos de los clientes más
seguros y proporcionando una base tecnológica para añadir nuevas funcionalidades
en un futuro.
Finalmente, el desarrollo e implantación de esta aplicación debe asegurar el cum-
plimiento de la Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de
Carácter Personal.
3
C
A
P
Í
T
U
L
O
3
TECNOLOGÍAS
A la hora de realizar la aplicación web, se deben tomar decisiones técnicas im-
portantes que repercutirán en el rendimiento, mantenimiento y la evolución de la
aplicación. En este caso, se ha decidido optar por desarrollar en lenguaje JAVA ya que
a día de hoy se considera que es uno de los lenguajes de programación más robustos
para entornos de desarrollo empresariales, con una de las comunidades más grandes
en internet.
Las aplicaciones de portales, intranets, etc? se suelen disputar entre .NET y JAVA, se
podría decir que son los dos pilares fundamentales en el ámbito de las aplicaciones
empresariales en estos momentos. De todas formas, en España, la que más soporte ha
recibido y en la que la mayoría de las empresas están trabajando es JAVA por su facilidad
para permitir hacer desarrollos con un coste bajo, ya que la mayoría de funcionalidades
ya están desarrolladas, hay mucho soporte por parte de la comunidad y además era
la tecnología con la que más soltura tenía gracias a los conceptos estudiados en la
Universidad de las Islas Baleares (UIB).
Otra de las razones por la que se ha tomado esta decisión, es el soporte tan grande
que recibe java de webs como Stack Overflow, una de las mejores páginas de referencia
para los programadores para aportar nuevas ideas y resolver problemas en el ámbito
de la programación. En [1] se puede ver como JAVA es claramente el más soportado.
Por otra parte, otro de los pilares fundamentales para el desarrollo de la aplicación
en JAVA es SPRING MVC, que proporciona una implementación en tres capas, separan-
do el modelo, de la vista y de los controladores utilizando inyección de dependencias
en un marco de trabajo bien estructurado, haciendo más sencillo el workflow de la
aplicación y facilitando la implementación de otras tecnologías.
Finalmente, Javascript, HTML5 y Bootstrap serán los lenguajes predominantes en
la vista (lo que ve el usuario) y Thymeleaf para las plantillas HTML, facilitando el diseño
de la interfaz y así permitir una mejor experiencia de usuario.
A continuación, se definen las tecnologías de cada una de las capas de la aplicación
definiendo el por qué se han elegido estas y no otras.
5
3. TECNOLOGÍAS
3.1. Modelo
Se ha elegido Java Persistence API (JPA) [2] (ya que Oracle ha creado este estándar
para unir todo lo relacionado con base de datos) como base o forma de hacer todo lo
relacionado con base de datos, ya que, lo que se pretende es tener una sola API para
toda la persistencia en JAVA, sea cual sea la implementación. Su función principal es
hacer que las peticiones que se manejan sobre la base de datos y la definición de las
tablas, sea independiente de la base de datos que se esté utilizando. Spring ha utilizado
este estándar junto al proveedor Hibernate [3] para controlar toda la gestión de base de
datos y aplicarla a su contexto.
Hibernate, al ser uno de los Object-Relational mapping (ORM) más consolidado
dentro de la comunidad, es la implementación más viable. Su función principal es la
de implementar el estándar JPA y manejar las conexiones con las bases de datos(Java
Database Connectivity (JDBC), Java Naming and Directory Interface (JNDI)).
3.2. Vista
Dentro de todas las posibilidades( JSP [4], Velocity [5], FreeMarker [6] ), etc se ha ele-
gido una que utiliza eXtensible HyperText Markup Language (XHTML), de esta manera
nos aseguramos que el código de la vista sea un HyperText Markup (HTML) válido y
también, forzando que la lógica se ejecute en la parte del servidor y no pueda ejecutarse
en la parte de la vista (Scriptlets). Es el framework llamado Thymeleaf [7] que también
tiene soporte por parte de Spring. Ya que en Privilege Style se utilizan navegadores
modernos, se ha podido utilizar HTML5 [8] y CSS3 [9], ya que Thymeleaf está muy
orientado a HTML5. También se ha utilizado Bootstrap [10] ya que es uno de los fra-
meworks más utilizado para realizar diseños responsivos utilizando las tecnologías de
HTML5, CSS3 y Javascript [11] utilizando Jquery [12].
3.3. Controlador
Se ha elegido Spring Modelo Vista Controlador (MVC) [13] por su versatilidad a la
hora de utilizar todo tipo de herramientas para gestionar las peticiones; ayudas para
crear API’s rest json, servir ficheros estáticos, servir páginas web utilizando plantillas e
inyección de dependencias.
3.4. Herramienta de Construcción y Compilación de
Proyectos
Maven [14] es la tecnología que se encarga del empaquetado y las dependencias del
proyecto. Nos facilita además, la estructura inicial en base a las tecnologías que se van a
utilizar. Toda la configuración se detalla en el archivo pom.xml donde declararemos un
listado de todas las dependencias y su versión. Estas dependencias pueden ser tanto
públicas [15], privadas, locales o compartidas en un repositorio privado. Adicionalmen-
te, en el pom.xml se pueden agregar pluggins que nos ejecutarán acciones después de
haber compilado, como generar un archivo .war para desplegar en el servidor, ejecutar
tests, generar código automáticamente o cualquier acción previa a la compilación.
6
3.5. Control de Versiones
3.5. Control de Versiones
Para el sistema de versionado se ha utilizado GIT [16] ya que es el sistema de
versionado más consolidado entre la comunidad, permite tener un repositorio local y
otro remoto a la vez y una gran facilidad para resolver conflictos entre versiones.
Para tener un servidor externo de GIT se ha utilizado la plataforma de GITHub [17]
ya que permite tener repositorios privados por un bajo coste, permite ver el control del
código de manera sencilla y muestra gráficas o el historial de lo que se ha cargado en el
servidor (pudiendo ver los archivos y las diferencias entre versiones previas). Además
tiene una API pública con la cual servicios de servidores como Heroku [18] pueden
beneficiarse de su integración. Finalmente, casi todos los Integrated Development
Environment (IDE) incluido eclipse ya tienen pluggins que integran GIT y hacen más
fácil su uso.
3.6. Base de Datos
PostgreSQL [19] es una de las bases de datos de código libre más soportadas que
se puede instalar en casi todos los sistemas operativos (UNIX, Windows) y es muy
riguroso con el estándar SQL. Esta tecnología que lleva bastante tiempo ha dado buenos
resultados, además, ofrece un cliente (Pgadmin III [20]) que ya tiene todas las utilidades
de un cliente gráfico.
Finalmente,hay muchas ayudas para crear scripts automatizados que creen copias
diarias/semanales/mensuales en otras bases de datos o simplemente para exportar los
datos y hacer copias de seguridad con postgreSQL, facilitando así el trabajo tedioso de
estos procedimientos.
3.7. Servlet Container
Tomcat [21] fue uno de los primeros servidores de código libre en implementar los
servlet container, además de ser ligero y facilitar la comunicación con Apache Server.
Agrega ayudas como los conectores JNDI a base de datos que permite que la aplicación
no tenga acceso a las credenciales de la conexión.
Hoy en día, es el servidor más comúnmente utilizado a no ser que se necesiten
características de JAVA EE [22] como por ejemplo Enterprise JavaBeans (EJB) [23], que
en tal caso se suele utilizar JBoss [24].
3.8. Sistema Operativo
Se ha utilizado Ubuntu Server [http://www.ubuntu.com/] ya que no consume tanto
como un Windows Server, permite gestionar las carpetas, permisos, etc? de una forma
más sencilla y rápida.
La creación de Scripts automatizados y el soporte para temas de servidores es muy
amplia en Internet.
La configuración es específica y permite configurar todo hasta el último detalle
entrando en la configuración avanzada del sistema.
7
3. TECNOLOGÍAS
3.9. Entorno de desarrollo
Se ha escogido Eclipse [25] como IDE ya que ofrece facilidades tanto para el desarro-
llo de JAVA (autocompletar, validación) y tiene soporte para Maven y para GIT. Además
da facilidades para instalar el Tomcat localmente.
Por otra parte, tiene un repositorio de pluggins que facilitan los desarrollos para
casi todos los Frameworks.
3.10. Otras Tecnologías y/o Frameworks
Además de las tecnologías nombradas anteriormente, se utilizan un conjunto de
frameworks, librerías y tecnologías que ayudan a gestionar temas de logs, envío de
correo, exportación de PDFs, y otros como Itext [26], mimemessage [27], Jackson [28],
log4j [29] y opencsv [30].
8
C
A
P
Í
T
U
L
O
4
DESARROLLO
Hoy en día, en el mundo del desarrollo del software, los proyectos se gestionan
por fases e hitos, creando una serie de actividades y secuenciándolas en el tiempo.
Esto permite tener un control de las tareas a realizar, los tiempos, recursos, etc? que
pretenden generar el producto o proyecto resultante de la forma más eficiente y eficaz
posible. Cada vez más, las empresas se están dando cuenta de que muchas veces este
tipo de procedimientos no funcionan, ya que el cliente siempre está pidiendo nuevas
funcionalidades y/o cambios, y necesitan buscarse nuevos métodos que permitan esa
interacción continua con el cliente para saber cuáles son sus necesidades y así, poder
dar una respuesta adecuada a sus expectativas.
Entre estas metodologías, se encuentra la metodología SCRUM [31]. En esta ocasión,
se ha decidido por realizar una versión reducida dados los recursos y las necesidades
propias del cliente.
Figura 4.1: Métodología SCRUM simplificada
El dueño del producto, en este caso PRIVILEGE STYLE, asigna al responsable de IT
9
4. DESARROLLO
el rol de SCRUM Master, observando las distintas fases del ciclo de producción.
El equipo de desarrollo obtiene las necesidades del proyecto haciendo las reunio-
nes necesarias con los distintos interesados o participantes, las divide en paquetes o
elementos, y se decide cuáles de estos paquetes se dividen en tareas estimando un
tiempo entre una semana y un mes, desarrollando así, un conjunto de paquetes que se
convertirán en un entregable.
Además, el equipo de desarrollo se reúne diariamente con el SCRUM Master para
notificarle que se hizo el día anterior, que se va a desarrollar hoy y que impedimentos
se han encontrado a la hora de realizar los distintos paquetes o tareas.
Finalmente, el incremento creado se sube a producción y los usuarios prueban
y usan las nuevas funcionalidades. Una vez probado y en pleno funcionamiento, se
realiza una última reunión con el equipo de desarrollo, el SCRUM Master que al mismo
tiempo realiza las funciones del dueño del producto y las distintas partes interesadas.
De esta forma, se recibe el mayor ?feedback? posible para saber si hay que realizar
algunas modificaciones, añadir paquetes a la pila de entregables o continuar con los
paquetes ya definidos.
Todo este proceso desencadena en una última reunión para saber que mejoras,
modificaciones o procesos, son necesarios realizar en el ciclo de vida de la metodología
SCRUM en las próximas iteraciones.
Figura 4.2: Metodología SCRUM
10
4.1. Definición del proyecto
4.1. Definición del proyecto
El proyecto a realizar, tiene que permitir el envío de pasajeros a los DCS de los
aeropuertos utilizando los formatos PNLs y ADLs, la recepción y lectura en tiempo real
de PRLs, la creación de vuelos y pasajeros, búsqueda de pasajeros, itinerarios de viaje,
gestión de aviones, gestión de aerolíneas, chequeo de pasajeros manual y automático,
reportes en PDF, EXtensible Stylesheet Language (XSLT), CSV,UN/EDIFACT y lectura
de CSV para creación automática de pasajeros y vuelos.
El estudio e implementación de los formatos PNL, ADL y PRL, se realiza con el
manual de la Asociación Internacional del Transporte Aéreo (IATA) ?Passenger Services
Conference Resolutions Manual? (IATA Passenger Services Conference Resolutions
Manual (PSCRM)). Que es el encargado de definir el estándar de comunicaciones de
datos entre servidores mediante direcciones SITA.
Las tecnologías a utilizar son las nombradas en la sección de tecnologías de este
documento ??.
4.2. Beneficios
El ahorro que se obtiene de eliminar la subcontratación para enviar los datos de los
pasajeros a los DCS de los aeropuertos, ahorra un coste significativo por vuelo. Además,
el trabajo que alivia a los recursos de la empresa es muy grande, antes se necesitaban
dos personas exclusivamente para realizar todas las gestiones que proporciona la
aplicación, actualmente, con pocas horas, una sola persona puede encargarse de este
trabajo.
Otro de los beneficios más claros en la realización de esta aplicación es el cumpli-
miento con la normativa española.
Finalmente, la aplicación permite un control de los pasajeros y de los vuelos que se
han sido operados por la compañía, pudiendo sacar en un futuro, todo tipo de reportes
y estadísticas.
4.3. Diseño
4.3.1. Base de Datos
Las tablas de las que dispone el proyecto son: aerolíneas, aeropuertos, países, tipos
de documentos, vuelos, tipos de vuelos, comidas, géneros, pasajeros, tipo de pasajero,
provincias, matrículas de aviones, asientos, requisitos especiales y usuarios.
A continuación se puede ver el modelo entidad-relación, y los atributos de cada
una de las tablas:
11
4. DESARROLLO
Figura 4.3: Modelo Entidad-Relación
Finalmente, se van a describir cada una de las tablas y explicar a grandes rasgos los
detalles y las relaciones de cada una de ellas.
Airlines: contiene las aerolíneas con las que se comunica la compañía. Cada
vuelo podrá tener una o más aerolíneas asociadas a él.
Airports: contiene todos los aeropuertos operables por la compañía, cada vuelo
tendrá un aeropuerto de salida y uno de llegada.
Flighs: contiene todos los vuelos que se ha realizado la compañía. Un vuelo
contiene N pasajeros.
Registrations: esta tabla contiene todos los aviones con los que opera la compa-
ñía. Un vuelo solo puede tener un avión asociado. Esta tabla también contiene
algunos datos interesantes sobre el avión, como su matrícula y el número total
de pasajeros que puede transportar.
FlightTypes: tipos de vuelo que puede haber. DOMESTIC (vuelo en España),
SCHENGEN (vuelo en uno de los aeropuertos que forman parte del tratado
SCHENGEN), INTERNATIONAL (vuelo dentro del continente Europeo fuera del
12
4.3. Diseño
tratado SCHENGEN) y SPECIAL (vuelo intercontinental o fuera del continente
Europeo).
Foods: lista de comidas que se ofrecen en los vuelos. Su función es ser asignada a
un usuario para saber su preferencia antes de volar y hacer una estimación de las
necesidades y peticiones que se harán en el vuelo.
Paxtypes: tabla con lostipos de pasajeros.
Genders: tipos de género (Masculino/Femenino).
Countries: lista de países. Cada país puede tener N aeropuertos.
Porvinces: lista de provincias, cada país puede tener N provincias.
Seats: Asientos por avión, cada avión tiene asociado N asientos con su clase
(primera clase, clase turista?) y cada pasajero tiene asociado un asiento.
Doctypes: tipos de documentos (pasaporte, DNI)
Spcs: contiene las necesidades específicas de los pasajeros como por ejemplo
una silla de ruedas.
Passengers: contiene todos los pasajeros que han volado para la compañía.
Users: usuarios que acceden a la aplicación.
4.3.2. Estructura
La estructura del proyecto está formada por cuatro paquetes. A continuación se
definirán cada uno de ellos.
Figura 4.4: Estructura del Proyecto
Privilege-App
El paquete privilege-app, es el proyecto padre, aquí se compilan el resto de proyectos
para conseguir el archivo .war que utilizará el servidor para arrancar la aplicación.
13
4. DESARROLLO
Figura 4.5: Paquete Privilege App
Privilege-Data
El paquete privilege-data, es el paquete con todas las funcionalidades orientadas al
modelo de la base de datos.
Figura 4.6: Paquete Privilege Data
Constant: este paquete contiene las variables de todos los atributos de las tablas
como constantes para ser utilizadas en otras clases.
14
4.3. Diseño
Figura 4.7: Paquete Privilege Data Constant
Service: contiene las interfaces de los servicios o métodos que se usarán para
obtener información de las diferentes tablas.
Figura 4.8: Paquete Privilege Data Service
Implementation: contiene la implementación de cada uno de los servicios o
métodos declarados en la interfaz.
15
4. DESARROLLO
Figura 4.9: Paquete Privilege Data Implementation
Model: contiene todas las clases propias a las tablas de la base de datos y las
relaciones entre cada uno de los campos. Aquí también se declaran primary keys,
las foreign keys, las relaciones manyToOne, manyToMany, secuencias de id, y en
definitiva, toda la configuración relacionada con cada una de las tablas.
16
4.3. Diseño
Figura 4.10: Paquete Privilege Data Model
Repository: finalmente, el package repository contiene las peticiones o llamadas
SQL a la base de datos de cada una de las tablas.
17
4. DESARROLLO
Figura 4.11: Paquete Privilege Data Repository
Privilege-Web
Por otro lado, el paquete privilege-web, contiene los controladores, la lógica de
negocio y la vista.
18
4.3. Diseño
Figura 4.12: Paquete Privilege Web Imagen 1
19
4. DESARROLLO
Figura 4.13: Paquete Privilege Web Imagen 2
Bean: contiene los beans o pojos que no concuerdan con ninguna tabla de la
aplicación.
Figura 4.14: Paquete Privilege Web Bean
Constant: contiene las constants que se van a utilizar para los mapeos, los nom-
bres de las páginas, etc? De esta forma, evitamos tener que modificar el texto en
toda la aplicación cuando hay que cambiar una Uniform Resource Locator (URL)
por ejemplo.
20
4.3. Diseño
Figura 4.15: Paquete Privilege Web Constant
Controller: contiene los controladores genéricos de la aplicación. En un futuro,
cuando haya otra aplicación relacionada con privipax, se creará un package con
el nombre del tema y finalizado con la palabra controller como se ha hecho con
vuelos.
Figura 4.16: Paquete Privilege Web Controller
Flight Controller: contiene los controladores específicos de la aplicación de vue-
los. Todas las peticiones para ver tablas, formularios, etc. pasarán por estos con-
troladores que serán los encargados de llamar a los Helper para realizar la lógica
de negocio y devolver una respuesta al usuario.
21
4. DESARROLLO
Figura 4.17: Paquete Privilege Web Flight Controller
Form: contiene las clases que se refieren a los datos que van a llegar de los
formularios.
Figura 4.18: Paquete Privilege Web Form
Helper: aquí se trata la lógica de negocio. Son los métodos que devuelven las
respuestas a las peticiones hechas a los controladores.
22
4.3. Diseño
Figura 4.19: Paquete Privilege Web Helper
Interceptor: estas clases se ejecutan antes de que las llamadas lleguen a los con-
troladores. Vendrían a ser filtros para cada una de las peticiones. Entre ellos están
el filtro de codificación, que convierte los datos que se reciben al formato que
corresponda, el filtro de página, que cambia los textos de la vista dependiendo
de la página a la que haga la petición y el filtro de seguridad que controla el tema
de autorización y autenticación.
Figura 4.20: Paquete Privilege Web Interceptor
Json: contiene los servicios que responden a las peticiones Ajax con un Json.
23
4. DESARROLLO
Figura 4.21: Paquete Privilege Web Json
Json Beans: POJOs o Beans que contienen los atributos que se enviarán en el
JSON.
Figura 4.22: Paquete Privilege Web Json Beans
Startup: esta clase se ejecuta cuando se inicia el servidor. Su papel es iniciar los
procesos o demonios que utilice la aplicación. Por ejemplo, es el encargado de
crear el proceso que envía un correo a las 20:00 con los datos de los vuelos del
día siguiente a las direcciones correspondientes.
Figura 4.23: Paquete Privilege Web Startup
24
4.3. Diseño
Validator: contiene los validadores de los atributos que llegan del formulario. Así
se evita que algún dato no contenga los valores apropiados para ser guardado.
También rellena un mapeado para devolver los errores de cada campo a la vista
marcándolos de color rojo o verde dependiendo de su validez.
Figura 4.24: Paquete Privilege Web Validator
View: contiene las variables que vamos a tener disponsibles en la vista XHTML.
Figura 4.25: Paquete Privilege Web View
Resources: contiene todos los textos de la aplicación. De esta forma, si se quisiese
implementar otro idioma, bastaría con copiar el archivo, traducir los textos y
modificar levemente la configuración.
25
4. DESARROLLO
Figura 4.26: Paquete Privilege Web Resources
Webapp Resources: Aquí se ubican las fuentes, las imágenes, el Javascript y los
estilos que se usarán en las páginas XHTML.
26
4.3. Diseño
Figura 4.27: Paquete Privilege Web App Resources
27
4. DESARROLLO
Webapp WEB-INF: finalmente, la carpeta WEB-INF, contiene los archivos de
configuración en xml de SPRING, Views, log4j y web.
28
4.3. Diseño
Figura 4.28: Paquete Privilege Web App WEB-INF
29
4. DESARROLLO
Dentro de apps, contiene las carpetas de pnl, error, header, home, include y login
que se definen a continuación:
Pnl: contiene los formularios y las vistas completas de HTML de cada una de
las interfaces de la aplicación. Incluye los formularios de avión, vuelo y pasajeros,
la página del envío del pnl, las tablas de aviones, asientos de un avión, aerolíneas,
vuelo y pasajeros y la página principal de vuelos.
Error: páginas de error 403, 404 y 500 personalizadas.
Header: cabecera que se mostrará en todas las páginas. Carga los datos
dinámicamente con los valores que llegan del controlador.
Home: página de bienvenida.
Include: includes que se harán en todas las páginas. Actualmente solo con-
tiene los mensajes de error. Su funcionalidad es que si ha habido un error en
la validación del formulario, cargue un HTML en un div específico para leer y
mostrar los errores que llegan del controlador.
Login: página de login.
Pvg-Utils
Finalmente, el paquete pvg-utils, es el encargado de tener todas las funcionali-
dades genéricas de la aplicación. Así se evita la duplicidad de código, se aumenta la
productividad y mejora la estructura del proyecto.
30
4.3. Diseño
Figura 4.29: Paquete PVG Utils
Constant: contiene las constantes de spring, de caracteres, strings y mime types,
genéricos en cualquier aplicación.
31
4. DESARROLLO
Figura 4.30: Paquete PVG Utils Constant
Dyna: clase para crear clases y objectos dinámicamente.
Figura 4.31: Paquete PVG Utils Dyna
Encoding: lista de utilidades para pasar de una codificación a otra.
Figura 4.32: Paquete PVG Utils Encoding
Pojo: utilidades para clases genéricas de ayuda.
Figura 4.33: Paquete PVG Utils Pojo
32
4.3. Diseño
Util: utilidades generalespara validaciones, cambios de formato, o cualquier tipo
de herramienta que permita utilizar objetos específicos como un fichero, y nos
de los métodos genéricos de este.
Figura 4.34: Paquete PVG Utils Util
Web: utilidades para las peticiones que van desde la vista al controlador y vice-
versa.
Figura 4.35: Paquete PVG Utils Web
33
4. DESARROLLO
Test: clases de Test para validar el funcionamiento de las utilidades.
Figura 4.36: Paquete PVG Utils Test
Servers
Contiene todos los archivos de configuración, las políticas y propiedades del servi-
dor Tomcat 7.
En el archivo de configuración context.xml, encontramos las conexiones JDBC a las
bases de datos.
Por otra parte, en el archivo server.xml, se encuentra toda la configuración de
puertos, direcciones, caché, protocolos y un apuntador al archivo de inicialización de
la aplicación. En nuestro caso apunta a un archivo .war.
El archivo de configuración tomcat-users.xml, define los usuarios y los roles para
conectarse al manager y al servidor.
Finalmente, el archivo web.xml define los valores por defecto de todas las aplicacio-
nes iniciadas por esta instancia del Tomcat.
34
4.3. Diseño
Figura 4.37: Configuración del servidor
4.3.3. Módulos y Funcionalidades
Página Principal
En la página de bienvenida o home, aparecen todos los vuelos de Privilege Style
dados de alta, con la siguiente información: Air carrier, número de vuelo, tipo de vuelo,
aeropuertos de salida y de llegada, fecha de salida, hora local de salida, matrícula y el
número total de pasajeros incluidos en la PNL. Estos datos se pueden ordenar por el
campo que interese y se pueden realizar búsquedas de vuelos filtrando por todos los
campos. Además, se puede elegir el número de vuelos para visualizar en pantalla (entre
10 y 100 entradas, o verlos todos).
Figura 4.38: Página de Bienvenida de la Aplicación
View: para entrar en el vuelo ya creado y obtener información más detallada
del mismo. Debajo aparece todo el listado de pasajeros. Es editable y permite
modificar cualquiera de los datos de vuelo y pasajeros.
Edit: permite modificar datos del vuelo.
Delete: permite cancelar un vuelo, eliminándolo así del listado.
Open Flight /Status: Un vuelo solo puede estar OPEN (enmarcado en color verde
cuando no se ha enviado PNL y azul si está enviada) o CLOSED(enmarcado de
color rojo). Si está cerrado se muestra el icono de un ojo que permite abrir de
35
4. DESARROLLO
nuevo el vuelo. Solo podrá realizar modificaciones el personal con los corres-
pondientes permisos, y una vez cerrado el vuelo cualquier modificación quedará
registrada con el usuario.
Gestión de Vuelos
Acceso a nuevo Vuelo: botón que permite dar de alta un vuelo nuevo. La informa-
ción del vuelo se debe introducir en mayúsculas y debe ser exactamente igual
a la información de la Hoja Excel de entrada de datos. Además, se puede des-
cargar la versión más actualizada de esta hoja en el enlace EXCEL PASSENGERS
TEMPLATE.
Figura 4.39: Acceder a la creación del vuelo
Creación y de edición de un Vuelo: pulsando el botón NEW FLIGHT se abre la
pantalla FLIGH FORM para dar de alta un vuelo nuevo con los siguientes campos
(los registros de deben ser exactamente iguales a los del archivo CSV importado):
Figura 4.40: Creación del vuelo
1. Air Carrier: actualmente se solita a todos los Agentes de Handling que abran
los vuelos en sus DCS como P6 (código IATA de 2 caracteres de Privilege
Style), aunque también se están utilizando PVG y 9-.
2. Flight number: sólo se introducirá el número de vuelo, sin código de com-
pañía.
3. Registration: despliega menú con las matrículas de la flota PVG y sus con-
figuraciones de asientos reales. También, permite acceder a AIR CARRIER
FORM e introducir aviones nuevos.
4. Departure airport: Código IATA de 3 letras del aeropuerto de origen.
5. Departure local time: Hora local de salida del vuelo en formato de 24 horas:
HH:MM.
36
4.3. Diseño
6. Departure date: fecha de salida según la hora local en el origen en formato
DD-MM-AAAA.
7. Arrival airport: Código IATA de 3 letras del aeropuerto de destino.
8. Arrival local time: Hora local de llegada del vuelo en formato de 24 horas en
formato DD-MM-AAAA.
9. Arrival date: fecha de llegada del vuelo según la hora local en el destino en
formato DD-MM-AAAA.
10. Select file: para importar listado de pasajeros desde archivo CSV.
11. Excel passengers template: permite descargar el archivo Excel actualizado
para cumplimentar con los datos de pasajeros enviados por el cliente.
12. Flight type: indica el tipo de vuelo según sea schengen, internacional, do-
méstico o especial. Si se deja vacío, el vuelo se crea por defecto según la
normativa actual correspondiente, teniendo en cuenta los aeropuertos de
origen y destino.
13. Register new flight: Registra todos los datos del vuelo creando una línea
nueva en el listado de vuelos de Privilege Style.
Datos de un Vuelo: para acceder a un vuelo creado, tenemos que dirigirnos a la
sección de view flight en la tabla de vuelos.
Figura 4.41: Datos del Vuelo
Cuando accedemos al vuelo, muestra todos los datos del vuelo, con la siguiente
información:
1. Tipo de vuelo: Schengen, internacional, doméstico o especial.
2. Configuración del avión.
3. Matrícula y Cía. Transportista.
4. Pasajeros totales por clases. Además desglose por clases de asientos y avisa
de si hay niños y/o bebés.
5. Pasajeros embarcados: total de pax embarcados tras reconciliación con
PRL/Passenger Final Sales (PFS).
6. Pasajeros procesables ?PROCESSABLE?: son aquellos que tienen introduci-
da toda la información necesaria para ser incluidos y enviados en la PNL.
37
4. DESARROLLO
7. Pasajeros no procesables ?UNPROCESSABLE?: en color azul, son aquellos a
los que les falta algún dato obligatorio en función del tipo de vuelo y serán
incluidos de una forma especial en la PNL.
8. Aeropuertos de salida y llegada.
9. Horas locales de salida y llegada.
10. Fechas de salida y llegada del vuelo (según horarios locales de origen y
destino).
11. PNL enviada (TRUE) o no (FALSE).
12. Direcciones SITA y/o de correo electrónico donde se ha enviado la PNL.
Figura 4.42: Vista en un Vuelo ya Creado
Procesos dentro de un vuelo: seguidamente a los datos del vuelo se disponen una
serie de botones que permiten realizar distintos procesos:
1. Load Passengers list with CSV file: carga el listado de pasajeros del archivo
CSV dentro del vuelo en el que se está trabajando.
Figura 4.43: Cargar Pasajeros desde una lista en CSV
2. Create New Passenger: permite añadir pasajeros de forma individual antes
del envío de la PNL. Si se crea un nuevo pasajero tras el envío inicial de
la PNL, se genera un mensaje ADL, que llegará directamente al DCS de la
base.
38
4.3. Diseño
Figura 4.44: Crear Nuevo Pasajero desde la Aplicación
3. Modify flight and passengers to unsent: es un botón de emergencia que
permite el reenvío de PNL en caso de error de envío/recepción, modifica el
estatus del vuelo y pasajeros a NO ENVIADOS.
Figura 4.45: Modificar Vuelo y Pasajeros a su Estado de no Enviado
4. Edit flight: edita el vuelo para modificar cualquiera de los datos.
Figura 4.46: Editar un Vuelo
5. Start itinerary report: genera un documento donde aparecen todos los deta-
lles del pasajero y su itinerario. Es un documento meramente informativo y
no equivale a un título de transporte o billete de viaje, aunque es la intención
que tiene para un futuro.
39
4. DESARROLLO
Figura 4.47: Crear Itinerario de Viaje
6. Start checking: una vez despegado el avión y tras la recepción de los listados
PFS y PRL, se puede realizar la reconciliación de pax de forma manual, se-
leccionando aquellos que han volado, y así cerrar el vuelo en la plataforma.
Figura 4.48: Realizar Conciliación de Pasajeros Manual
7. Start multiple delete: sirve para cancelar pasajeros, en bloque o individual-
mente.
40
4.3. Diseño
Figura 4.49: Eliminación Múltiple de Pasajeros
A continuación se detallan los procesos de la parte superior.
Figura 4.50: Procesos de la Parte Superiorde la Página
8. Send PNL: donde se introducirá la dirección sita para el envío de la lista de
pasajeros PROCESABLES. Por defecto, se recibirá una copia de todos los
envíos PNL y ADL en la dirección PMIPVP6. Para acceder solo tenemos que
darle al botón de Send PNL, cuando cargue la página, se mostrará el campo
donde se introducen las direcciones SITA y/o dirección de correo electró-
nico (si aplica) de destino. Se pueden añadir tantas como sean requeridas.
Estas quedarán guardadas y visibles debajo de los datos del vuelo.
Figura 4.51: Formulario de Envío de PNLs
En el listado de vuelos, la línea aparecerá en color azul una vez enviada la
PNL: Flight opened and PNL sent.
Todos los envíos de PNL/ADL generan un e-mail de envío automático al
departamentos de control de operaciones con el desglose de pasajeros por
género: M/F/CHD/INF, a tener en cuenta para el despacho de vuelo.
41
4. DESARROLLO
Tras el envío inicial de la PNL, los posibles cambios en cuanto a pasajeros,
documentación obligatoria, etc., siempre y cuando se haga dentro del tiem-
po establecido (antes del comienzo de la facturación), serán enviados de
forma automatizada desde la plataforma con un mensaje ADL, por defecto,
a la misma dirección de la PNL.
9. Generate PNL as TXT: genera la PNL en formato de texto.
10. Generate ICTS CSV report: archivo en formato específico para envío de
Información Anticipada sobre los Pasajero (API).
11. Generate PAX CSV report: archivo conteniendo todos los pasajeros en el
mismo formato del CSV original.
12. Generate eXtensible Markup Language (XML): mensaje en formato XML
para envío de API.
13. Passengers Report: genera un listado de pasajeros en formato PDF, que con-
tiene toda la información del vuelo y de pasajeros: nº de billete, Passengers
Name Register (PNR), nombre y apellidos, asiento, grupo, observaciones,
requerimientos especiales, si llevan bebé y si han sido reconciliados, total de
pax en la PNL, total reconciliados y además, no reconciliados y desglosados
por Male/Femail/CHD/INF.
14. Flight Departure: Una vez despegado el avión, el Agente de Handling, según
requerimiento de Privilege Style, deberá reportar los siguientes mensajes
con propósito de reconciliación de pasajeros:
• PRL: contiene toda la información del pasajero cargada en la PNL/PNR
que previamente fue enviada al DCS para el proceso de facturación.
• PFS: contiene recuento de pasajeros que han embarcado, con los cam-
bios producidos entre lo reservado y lo finalmente procesado.
Las modificaciones de pasajeros que se realicen una vez superada la fecha y
hora de salida del vuelo, no generarán mensaje ADL, de esta forma se puede
realizar chequeo manual de pasajeros para cerrar el vuelo sin correr el riesgo
de enviar mensajes una vez ha salido el vuelo. A la recepción de PRL/PFS, un
proceso de la aplicación realizará un chequeo automático que reconciliará a
los pasajeros que finalmente han volado, creará los que no estaban enviados
inicialmente y marcará como UNCHECKED los que no hayan embarcado.
Tras este proceso, se cerrará el vuelo de forma automática.
15. Conversión de EXCEL a CSV: para importar la lista de pasajeros recibida del
cliente se debe, previamente, convertir la Hoja Excel de entrada de datos
preparada a tal efecto, en archivo con formato CSV. Se usarán los comandos
Ctrl+T, y se guardará donde interese recuperarla posteriormente.
Gestión de Aviones
Ver información de aviones: se muestra una tabla de la flota actual de PRIVILEGE
STYLE con la siguiente información y los siguientes campos:
42
4.3. Diseño
Figura 4.52: Vista de Información de Aviones
1. Registration: matrícula del avión con formato XX-XXX o X-XXXX.
2. Code: código que indica la configuración física de asientos del avión por
clases.
3. Total passengers: capacidad total de pasajeros del avión.
4. Model: tipo de avión.
5. Airline: aerolínea a la que pertenece el avión.
6. Date of manufacture: fecha de fabricación.
7. Remark: permite añadir cualquier información adicional respecto al avión.
8. View seating plan: se despliega AIRCRAFT DATA con la información del
avión y toda la disposición de asientos y clases.
9. Edit aircraft: deriva a la pantalla AIR CARRIER FORM y permite desde aquí
modificar los datos.
10. Delete aircraft: elimina el avión.
Creación y Edición de un Avión: este botón permite dar de alta un nuevo avión
desde AIR CARRIER FORM, donde es obligatorio cumplimentar todos los campos.
Desde el enlace EXCEL SEATS TEMPLATE se descarga la plantilla donde se deben
incluir todos y cada uno de los asientos del avión seguidos de la clase, coincidien-
do con la configuración real y la capacidad del avión (total de pasajeros) para
posteriormente cargarlos en la plataforma.
Además, permite que la aplicación localice las líneas en caso de repetición de
asientos en la hoja Excel, y no permite importar el archivo CSV, dando un men-
saje de error. Tras el proceso de registro se creará una nueva línea en VIEW
AIRCRAFTS.
Figura 4.53: Formulario de Creación de Aviones
43
4. DESARROLLO
Gestión de Pasajeros
Ver Lista de Pasajeros:función que permite localizar a un pasajero de entre todos
los vuelos cargados en el sistema.
Figura 4.54: Lista de Pasajeros
Se puede ajustar la búsqueda poniendo cualquier campo que sirva para filtrar.
Si separamos las palabras con espacio permite buscar en varias columnas a la
vez. Además de poder ver un listado completo de todos los pasajeros y todos los
vuelos, también podemos ver los pasajeros de cada vuelo en la vista del vuelo.
Figura 4.55: Lista de Pasajeros de un Vuelo Concreto
Creación y Edición de un Pasajero: si se edita un pasajero, se deriva a una pantalla
que contiene toda su información, donde se puede modificar o añadir informa-
ción: asientos, requerimientos especiales, observaciones, etc. También puede
accederse desde la vista de un vuelo. Además, todas las modificaciones que se
hagan tras el envío de la PN! (PN!) serán destinadas a la base con un mensaje
ADL.
Figura 4.56: Formulario para la Creación y Edición de Pasajeros
44
4.3. Diseño
Gestión de Aerolíneas
Todas las aerolíneas con las que se realicen vuelos deben ser previamente dadas
de alta en la plataforma por el administrador del sistema, está dirección servirá para
realizar el envío automático de desglose de pasajeros (esta información se facilita a
efecto de despacho de vuelos).
Figura 4.57: Lista de Aerolíneas Registradas
Errores
Los datos de vuelo introducidos no son correctos: no se importa el listado de
pasajeros / NO se carga PNL.
Motivo:
1. No coinciden los datos del vuelo cargado en PRIVIPAX con los que contiene
el archivo CSV que queremos importar.
2. Alguna información no tiene el formato correcto en la hoja Excel.
Solución:
1. Editar y modificar el vuelo en PRIVIPAX o modificar la Hoja Excel y volver a
importar, dependiendo de donde se encuentre la información incorrecta.
El Total de Pasajeros Importados no Corresponden en Número con los Pasajeros
de la hoja Excel: si se importa el listado de pasajeros, no se cargan todos los
pasajeros o si permite envío de PNL.
Motivo:
1. No se han introducido datos correctamente en la hoja Excel.
Solución:
1. Corregir hoja Excel añadiendo tipo de pasajero. Cancelar la lista de pasajeros
incompleta importada, y volver a importar la lista corregida.
Error de Asientos Duplicados: no carga la PNL.
Motivo:
45
4. DESARROLLO
1. El cliente ha asignado asientos iguales a más de un pasajero.
Solución:
1. La aplicación detecta los nombres de los pasajeros y las filas correspondien-
tes en la hoja Excel. Se deben corregir en esta hoja para poder importar
listado, bien cambiando asientos o bien dejándolos en blanco.
Error de Documentos Duplicados: no carga la PNL.
Motivo:
1. Existen pasajeros con duplicidad en el número de pasaporte.
Solución:
1. Dejar el número en blanco y se cargará el pasajero aunque aparecerá como
no procesable si se trata de un vuelo internacional o especial.
Fallo en el Envío del PNL: En caso de que se produzca un fallo en elenvío de
la PNL por motivos ajenos a la aplicación, como fallos en el servidor DCS de
destino, u otros problemas relacionados con direcciones SITA, se procederá de la
siguiente manera:
1. Envío del archivo Excel con la información de los pasajeros directamente al
handling. Se procesará la información directamente en los mostradores de
facturación.
2. Envío desde sistema local del departamento de informática que crearán
vuelo nuevo, se cargará la lista de pasajeros con formato PNL y se procederá
al envío con la ayuda de los técnicos.
4.4. Testing
Cada vez que se añade una nueva funcionalidad, se prueba en local con vuelos de
prueba y con cuentas de correo personales. Si todo está bien, el SCRUM Master da el
visto bueno y se sube a producción.
Seguidamente, el testeo de la aplicación pasa a realizarse por los operarios que van
a utilizar el sistema, ellos son los encargados de probar las nuevas funcionalidades y
en el caso de necesitarlo, contactar con los handling de los aeropuertos para hacer
pruebas en entornos reales.
46
C
A
P
Í
T
U
L
O
5
RESULTADOS Y DISCUSIÓN
Actualmente la aplicación está siendo usada por los departamentos de Operaciones
Tierra y Operaciones Vuelo de la empresa y ya se han registrado más de 1.000 vuelos y
más de 200.000 pasajeros.
Los distintos organismos que realizan las auditorias en la empresa, tanto en el ám-
bito de seguridad, como en el operacional y también el legislativo, están muy contentos
con la rapidez y la efectividad que aporta la aplicación para recoger la información
relativa a los pasajeros y los vuelos, ya que siempre se cierran los vuelos con los datos
reales. Además, proporciona toda clase de reportes que muestran el procedimiento y la
información obtenida y/o enviada en cada una de las fases del vuelo.
Vistos los datos obtenidos, la empresa ha decidido por seguir apostando en la rea-
lización de aplicaciones propias personalizadas, siendo esta la primera de las cinco
que actualmente están funcionando en producción (gestión de tripulaciones, ges-
tión de riesgos asociados a la seguridad, directorio de Handling, Intranet y Customer
Relationship Management (CRM)).
El objetivo principal de la empresa es obtener una serie de aplicaciones, actual-
mente semi-conectadas, para poder ofrecer una plataforma común a todos los depar-
tamentos, y que así, la información sea manipulada por todos los trabajadores de la
empresa dependiendo de los permisos que hayan sido configurados, evitando duplicar
la información y obteniendo la información de forma centralizada.
47
C
A
P
Í
T
U
L
O
6
CONCLUSIÓN Y LÍNEAS DE FUTURO
En este último apartado se describen las conclusiones posteriores a la realización
del Trabajo Final de Grado (TFG), a fin de revisar los objetivos que fueron planteados en
los distintos apartados durante su realización y para comprobar el grado de satisfacción
de cada uno de ellos.
Tras este análisis se introducen algunas líneas futuras donde se podrían seguir
avanzando en la creación de funcionalidades del proyecto, en este caso, de la apli-
cación. El presente TFG ha tenido como resultado la creación de una aplicación de
vuelos amigable y sencilla que permite obtener información de los vuelos, los pasajeros
asociados a estos vuelos, los aviones disponibles, la configuración de asientos y las
aerolíneas que recibirán los datos para procesar los pasajeros de dichos vuelos.
6.1. Conclusiones
En este apartado se describen una serie de objetivos que se plantearon para la reali-
zación del Trabajo Fin de Grado y se exponen las conclusiones sobre su cumplimiento:
1. Se ha llevado a cabo una evaluación de soluciones existentes, donde se ha ana-
lizado el desarrollo de aplicaciones, la selección de tecnologías a utilizar y el
desarrollo de un análisis de requisitos para la aplicación.
2. Se ha conseguido la creación de una interfaz con capacidad de mostrar la infor-
mación necesaria de forma intuitiva y sin la necesidad de realizar muchos pasos
para llegar a los objetivos.
3. Se ha conseguido que la aplicación muestre los vuelos, pasajeros, aerolíneas y
aviones para tener un control de esta información y crear un espacio común para
la gestión de estos datos.
49
6. CONCLUSIÓN Y LÍNEAS DE FUTURO
4. Y por último, gracias a todos los objetivos planteados, se ha logrado el desa-
rrollo de una aplicación multiplataforma, robusta y eficiente, disponible desde
cualquier plataforma simplemente utilizando un navegador web.
Tras haber cumplido los objetivos principales planteados, se puede llegar a la con-
clusión de que se ha alcanzado satisfactoriamente los objetivos del TFG.
La realización de este TFG ha conllevado un amplio estudio sobre los formatos PNL,
ADL, PRL, PFS, sobre las tecnologías para crear procesos automatizados, creación de
PDF, CSV y EXCEL, la lectura de CSV y el envío y lectura de correos de forma automa-
tizada. Además de ampliar los conocimientos en herramientas como, JQuery, HTML,
CSS, Javascript, SPRING MVC, Hibernate y JPA 2.0.
Durante el desarrollo de la aplicación se han presentado diversas dificultades a las
que me he tenido que enfrentar, como el desconocimiento total de algunas tecnolo-
gías o dificultades en las consultas, transferencias de archivos y configuración de la
estructura.
Cabe decir que el presente TFG ha sido una labor enriquecedora, proporcionando
y reforzando conocimientos. Gracias a éste he adquirido experiencia de cómo enfren-
tarme a problemas reales a la hora de realizar una aplicación web.
6.2. Líneas de Futuro
Para finalizar, en este apartado se presentarán posibles líneas de futuro para esta
aplicación. Éstas pueden ser estudiadas y desarrolladas con gran probabilidad conti-
nuando con el trabajo ya realizado.
Esta aplicación es solo el comienzo de un conjunto de aplicaciones relacionadas
con la aviación. Se pretende crear un conjunto de aplicaciones que estén relacionadas
y que permitan la obtención de toda la información posible sobre un vuelo operado
por la compañía. Estas aplicaciones que se plantean para un futuro son:
1. Aplicación para el control de equipajes de pasajeros.
2. Automatización para generar las tarjetas de embarque.
3. Aplicación de catering enlazada a los vuelos.
4. Aplicación de incidencias, mejoras y modificaciones necesarias para aplicar en
los vuelos.
5. Aplicación para el mantenimiento de los aviones. Incluye todo tipo de piezas del
avión, cambios y repuestos.
6. Aplicación para la gestión de tripulaciones de un vuelo. Esto incluye la organiza-
ción de las tripulaciones añadiendo condiciones para saber si ese tripulante está
habilitado para volar en ese vuelo y si se pasa de las horas de trabajo estipuladas
por la normativa y/o la ley.
7. Aplicación para visualizar el estado de los aviones, su ubicación y planificación
diaria, semanal, mensual y anualmente.
8. Mejora de la interfaz y mejora del diseño responsive.
50
A
P
É
N
D
I
C
E
A
RESUMEN DEL PROCESO DE ENVÍO Y
RECEPCIÓN DE INFORMACIÓN DE UN
VUELO
A.1. Solicitud de Nueva Operación de Vuelo
En el momento en que se confirma una nueva operación, se solicita al Agente de
Handling la siguiente información:
Sistema DCS que utiliza.
Direcciones sita o e-mail donde requieren el envío de PNL’s. Se les informa
además de la dirección sita para envío y recepción de mensajes de Privilege Style
como recordatorio: PMIPVP6.
A.2. Previo al Vuelo
Se solicita vía e-mail que abran el vuelo en su DCS con el prefijo IATA de 2 caracteres
de la cía. P6, con la configuración física del avión programado. En algunas bases se abre
con PVG.
Posteriormente, se les informará del número total de pasajeros (adultos + INF)
incluidos en la PNL.
A.3. Creación del Vuelo
Se crea el nuevo vuelo en la plataforma.
51
A. RESUMEN DEL PROCESO DE ENVÍO Y RECEPCIÓN DE INFORMACIÓN DE
UN VUELO
A.4. Gestión y Envío de la PNL
1. Recepción de la Hoja Excel de entrada de datos en el formato a tal efecto.
2. Revisión de datos (información del vuelo y campos obligatorios) y corrección
(mayúsculas, caracteres especiales,etc.).
3. Conversión del archivo Excel a formato CSV con los comandos CTRL+T.
4. Desde FLIGHT DATA se pulsa Examinar para localizar el archivo CSV y se importa
la lista de pax pulsando Load Pax List with CSV file.
5. Verificar que la PNL se ha cargado correctamente en PRIVIPAX: pasajeros totales,
no procesados, información obligatoria, tipo de vuelo, requerimientos especiales,
INF, comidas, etc.
6. Enviar PNL.
A.5. Confirmación de Recepción de un Vuelo
Tras el envío de la PNL se solicitará al Agente de Handling vía e-mail, ACK de la
correcta recepción, confirmando el total de pasajeros.
Les indicaremos además los nombres de los pasajeros UNPROCESSABLE (desde
la exportación del PNL en la vista del vuelo), que se presentarán en el mostrador de
facturación y donde se deberán verificar sus datos.
Se les recordará que inmediatamente después de la salida del vuelo deben reportar
los listados PFS y PRL para reconciliación de pasajeros y archivo documental.
A.6. Cambios de Última Hora
Cualquier cambio de última hora dentro del tiempo límite establecido, será enviado
automáticamente desde la plataforma en un mensaje ADL, y por defecto a la misma
dirección sita donde se envió la PNL.
Se solicitará ACK al Agente de Handling de la recepción de estos cambios.
A.7. Cierre de un Vuelo
A la recepción de los listados PFS y PRL se realizará chequeo automático de recon-
ciliación de pasajeros y cierre del vuelo. En el passengers report aparecerá el total de
pasajeros que han subido al vuelo, según aparezcan o no en estos listados. Se puede
hacer reconciliación manual de pasajeros (según necesidades) con el botón de start
checking en la vista del vuelo. En este caso, se crearán los pasajeros nuevos y se mar-
carán todos los que han volado. Al finalizar con finish checking, quedarán listados los
pasajeros embarcados y se cerrará el vuelo.
52
BIBLIOGRAFÍA
[1] “Stack overflow tags,” 04/09/2016. [Online]. Available: http://stackoverflow.com/
tags 3
[2] “Jpa,” 04/09/2016. [Online]. Available: http://www.oracle.com/technetwork/java/
javaee/persistence-jsp-136066.html 3.1
[3] “Hibernate,” 04/09/2016. [Online]. Available: http://hibernate.org/orm/ 3.1
[4] “Jsp,” 04/09/2016. [Online]. Available: https://es.wikipedia.org/wiki/JavaServer_
Pages 3.2
[5] “Velocity,” 04/09/2016. [Online]. Available: http://velocity.apache.org/engine/1.7/
translations/user-guide_es.html 3.2
[6] “Freemarker,” 04/09/2016. [Online]. Available: http://freemarker.org/ 3.2
[7] “Thymeleaf,” 04/09/2016. [Online]. Available: http://www.thymeleaf.org/
documentation.html 3.2
[8] “Html5,” 04/09/2016. [Online]. Available: https://developer.mozilla.org/es/docs/
HTML/HTML5 3.2
[9] “Css3,” 04/09/2016. [Online]. Available: https://developer.mozilla.org/es/docs/
Web/CSS/CSS3 3.2
[10] “Bootstrap,” 04/09/2016. [Online]. Available: http://getbootstrap.com/ 3.2
[11] “Javascript,” 04/09/2016. [Online]. Available: https://developer.mozilla.org/es/
docs/Web/JavaScript 3.2
[12] “Jquery,” 04/09/2016. [Online]. Available: https://jquery.com/ 3.2
[13] “Spring mvc,” 04/09/2016. [Online]. Available: http://docs.spring.io/spring/docs/
current/spring-framework-reference/htmlsingle/ 3.3
[14] “Maven,” 04/09/2016. [Online]. Available: https://maven.apache.org/ 3.4
[15] “Maven repository,” 04/09/2016. [Online]. Available: https://mvnrepository.com/
3.4
[16] “Git,” 04/09/2016. [Online]. Available: https://git-scm.com/ 3.5
[17] “Github,” 04/09/2016. [Online]. Available: https://github.com/ 3.5
53
http://stackoverflow.com/tags
http://stackoverflow.com/tags
http://www.oracle.com/technetwork/java/javaee/persistence-jsp-136066.html
http://www.oracle.com/technetwork/java/javaee/persistence-jsp-136066.html
http://hibernate.org/orm/
https://es.wikipedia.org/wiki/JavaServer_Pages
https://es.wikipedia.org/wiki/JavaServer_Pages
http://velocity.apache.org/engine/1.7/translations/user-guide_es.html
http://velocity.apache.org/engine/1.7/translations/user-guide_es.html
http://freemarker.org/
http://www.thymeleaf.org/documentation.html
http://www.thymeleaf.org/documentation.html
https://developer.mozilla.org/es/docs/HTML/HTML5
https://developer.mozilla.org/es/docs/HTML/HTML5
https://developer.mozilla.org/es/docs/Web/CSS/CSS3
https://developer.mozilla.org/es/docs/Web/CSS/CSS3
http://getbootstrap.com/
https://developer.mozilla.org/es/docs/Web/JavaScript
https://developer.mozilla.org/es/docs/Web/JavaScript
https://jquery.com/
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/
https://maven.apache.org/
https://mvnrepository.com/
https://git-scm.com/
https://github.com/
BIBLIOGRAFÍA
[18] “Heroku,” 04/09/2016. [Online]. Available: https://www.heroku.com/ 3.5
[19] “Postgresql,” 04/09/2016. [Online]. Available: https://www.postgresql.org/ 3.6
[20] “Pgadmin,” 04/09/2016. [Online]. Available: https://www.pgadmin.org 3.6
[21] “Tomcat,” 04/09/2016. [Online]. Available: http://tomcat.apache.org/ 3.7
[22] “Java ee,” 04/09/2016. [Online]. Available: http://www.oracle.com/technetwork/
java/javaee/documentation/index.html 3.7
[23] “Ejb,” 04/09/2016. [Online]. Available: https://es.wikipedia.org/wiki/Enterprise_
JavaBeans 3.7
[24] “Jboss,” 04/09/2016. [Online]. Available: http://www.jboss.org/ 3.7
[25] “Eclipse,” 04/09/2016. [Online]. Available: https://eclipse.org/home/index.php
3.9
[26] “itext,” 04/09/2016. [Online]. Available: http://itextpdf.com/ 3.10
[27] “Mimemessage,” 04/09/2016. [Online]. Available: http://docs.oracle.com/javaee/
6/api/javax/mail/internet/MimeMessage.html 3.10
[28] “Jackson,” 04/09/2016. [Online]. Available: https://github.com/FasterXML/
jackson 3.10
[29] “Log4j,” 04/09/2016. [Online]. Available: http://logging.apache.org/log4j/2.x/ 3.10
[30] “Opencsv,” 04/09/2016. [Online]. Available: http://opencsv.sourceforge.net/ 3.10
[31] “Scrum,” 04/09/2016. [Online]. Available: https://proyectosagiles.org/
que-es-scrum/ 4
54
https://www.heroku.com/
https://www.postgresql.org/
https://www.pgadmin.org
http://tomcat.apache.org/
http://www.oracle.com/technetwork/java/javaee/documentation/index.html
http://www.oracle.com/technetwork/java/javaee/documentation/index.html
https://es.wikipedia.org/wiki/Enterprise_JavaBeans
https://es.wikipedia.org/wiki/Enterprise_JavaBeans
http://www.jboss.org/
https://eclipse.org/home/index.php
http://itextpdf.com/
http://docs.oracle.com/javaee/6/api/javax/mail/internet/MimeMessage.html
http://docs.oracle.com/javaee/6/api/javax/mail/internet/MimeMessage.html
https://github.com/FasterXML/jackson
https://github.com/FasterXML/jackson
http://logging.apache.org/log4j/2.x/
http://opencsv.sourceforge.net/
https://proyectosagiles.org/que-es-scrum/
https://proyectosagiles.org/que-es-scrum/
	Índice general
	Índice de figuras
	ACRÓNIMOS
	RESUMEN
	1 INTRODUCCIÓN
	2 OBJETIVOS
	2.1 Generales
	2.2 Particulares
	3 TECNOLOGÍAS
	3.1 Modelo
	3.2 Vista
	3.3 Controlador
	3.4 Herramienta de Construcción y Compilación de Proyectos
	3.5 Control de Versiones
	3.6 Base de Datos
	3.7 Servlet Container
	3.8 Sistema Operativo
	3.9 Entorno de desarrollo
	3.10 Otras Tecnologías y/o Frameworks
	4 DESARROLLO
	4.1 Definición del proyecto
	4.2 Beneficios
	4.3 Diseño
	4.3.1 Base de Datos
	4.3.2 Estructura
	4.3.3 Módulos y Funcionalidades
	4.4 Testing
	5 RESULTADOS Y DISCUSIÓN
	6 CONCLUSIÓN Y LÍNEAS DE FUTURO
	6.1 Conclusiones
	6.2 Líneas de Futuro
	A RESUMEN DEL PROCESO DE ENVÍO Y RECEPCIÓN DE INFORMACIÓN DE UN VUELO
	A.1 Solicitud de Nueva Operación de Vuelo
	A.2 Previo al Vuelo
	A.3 Creación del Vuelo
	A.4 Gestión y Envío de la PNL
	A.5 Confirmación de Recepción de un Vuelo
	A.6 Cambios de Última Hora
	A.7 Cierre de un Vuelo
	Bibliografía