Enunciado El problema Requerimientos funcionales

Anuncio
Universidad de los Andes
Ingeniería de Sistemas y Computación
ISIS1206 - Estructuras de Datos
Ejercicio N16 – CupiFlights.com
Cupi2
Enunciado
Se quiere diseñar e implementar un sistema Web de gestión de vuelos y aeropuertos. El
administrador del sistema deberá cargar la información inicial de al menos 50 aeropuertos y sus
vuelos. Adicionalmente este podrá agregar más aeropuertos y/o vuelos para ofrecer un servicio más
completo o eliminar los que no considere valiosos para los usuarios. Un usuario, por el otro lado,
podrá hacer uso de la plataforma para ver estadísticas sobre vuelos, aeropuertos y aerolíneas.
Algunas de las consultas que el sistema debe permitir son consultar los vuelos en un rango de
calificaciones, las aerolíneas con mayor o menor número de vuelos tardíos, entre otras.
El problema
El objetivo de este ejercicio es analizar, diseñar e implementar el sistema de CupiFlights y su interfaz
web, utilizando estructuras de datos en memoria principal.
El trabajo sobre las estructuras de datos genéricas continúa y se debe utilizar esta librería para la
implementación del mundo del problema.
El sistema debe ser implementado como una aplicación WEB accesible desde cualquier navegador con
una interfaz amigable para el usuario.
Asegúrese de leer y entender completamente el enunciado antes de resolver el ejercicio.
Requerimientos funcionales
El programa debe soportar los siguientes requerimientos funcionales:
Requerimientos de Administrador (bajo autenticación con usuario y clave predefinidos)
Nota: Las funcionalidades R5 a R11 también deben estar disponibles para el Administrador
R1. Cargar la información de por lo menos 50 aeropuertos y los vuelos entre estos: Se debe
utilizar el API de FlightStats para cargar la información de al menos 50 aeropuertos (de las
principales ciudades del mundo y que tengan en lo posible la mayor cantidad de vuelos entre sí,
por ejemplo las capitales europeas, principales ciudades en EE.UU., etc.). Se espera tener
información en una ventana de tiempo definida por un periodo de 8-9 días desde una fecha inicial
hasta una fecha final (incluyendo el día actual). La ventana debe incluir días en el pasado, el día
actual y días en el futuro (con respecto al momento en que se carga la información al sistema
CupiFlights).
R2. Agregar un aeropuerto al sistema: Dado el código del aeropuerto este se debe poder añadir
al sistema. Se deben añadir todos los vuelos existentes entre este y los demás aeropuertos
(vuelos llegando al aeropuerto y saliendo del aeropuerto).
R3. Eliminar un aeropuerto del sistema: Dado el código del aeropuerto este se debe poder
eliminar del sistema. Todos los vuelos existentes entre este y los demás aeropuertos se deben
eliminar.
R4. Consultar/Actualizar la calificación de un aeropuerto: El administrador del sistema puede
consultar y actualizar la calificación de un aeropuerto.
Requerimientos de la Plataforma (No requieren autenticación de usuario)
R5. Consultar las fechas para los cuales el sistema CupiFlights tiene información disponible de
aeropuertos y vuelos.
R6. Consultar los aeropuertos para los cuales el sistema CupiFlights tiene información
disponible.
R7. Consultar los vuelos registrados en el sistema CupiFlights de un aeropuerto en una fecha
específica. La consulta incluye precisar el tipo de vuelos de consulta (vuelos saliendo o vuelos
llegando): Se requiere informar los vuelos según el tipo dado en la fecha dada.
R8. Ver el total de vuelos a tiempo, cancelados y tardíos por aeropuerto en un periodo de
tiempo: se deben mostrar los vuelos que llegan a tiempo, que son cancelados, y aquellos que
llegan tarde entre 15 y 30 minutos, 30 y 45 minutos o más de 45 minutos (información que
provee el API) en un periodo de tiempo dado por una fecha inicial y una fecha final.
R9. Buscar vuelos cuya calificación (referirse al documento del API) se encuentre dentro de un
rango: dado un rango de calificaciones se debe poder consultar la información de los vuelos cuya
calificación se encuentra dentro de los rangos especificados en un periodo de tiempo dado por
una fecha inicial y una fecha final.
R10. Consultar las aerolíneas con el mayor y menor número de vuelos tardíos en un periodo de
tiempo dado por una fecha inicial y una fecha final.
R11. Mostrar los aeropuertos según su índice de tardanza (referirse al documento del API) en
un mapa.
Restricciones de diseño
1. El diseño se debe hacer MINIMIZANDO el tiempo de ejecución de todas las operaciones y el
espacio que ocupan las estructuras de datos, garantizando que el programa pueda
evolucionar.
2. En particular, se deben justificar las decisiones de diseño tomadas, se debe explicar
claramente en un documento de diseño por qué se escogieron las estructuras de datos
utilizadas, teniendo en cuenta los requerimientos descritos anteriormente. Adicionalmente, es
importante que en este documento (y definido desde antes de la implementación) esté el
mapa del sitio, en este se debe indicar cuáles páginas existen, desde qué página es posible
navegar a cuáles y cuáles son las funcionalidades proporcionadas en cada una de ellas.
3. El sistema debe ser persistente. Recuerde que el objetivo del ejercicio es resolver los
requerimientos con las estructuras en memoria principal, por este motivo no se acepta el uso
de bases de datos. Debe utilizar XML para la persistencia de la información. En particular se
recomienda guardar la información que se obtiene del API en un archivo XML pues las
consultas a este son limitadas.
4. El sistema debe ser desarrollado como una aplicación WEB. Para ello, debe definir su modelo
del mundo como un Singleton, un conjunto de páginas estáticas y un conjunto de páginas
dinámicas siguiendo una arquitectura MVC.
5. La interfaz gráfica debe ser implementada utilizando Servlets y ser usable y amigable. Se debe
tener una navegación clara (siempre poder volver a la página de inicio) y utilizar
correctamente el diseño, la tipografía y los colores para presentar los diferentes contenidos.
6. El diseño debe estar desacoplado con interfaces.
7. Debe implementar las estructuras de datos genéricas en un paquete aparte. Las estructuras
de datos se deben probar con pruebas unitarias.
8. Debe utilizar índices 2_3 y/o Tries.
9. El sistema debe utilizar ant para su compilación, ejecución y despliegue.
10. No se puede utilizar Java Collections ni Cupi2 Collections.
11. Debe utilizar el API de FlightStats para la gestión de los aeropuertos, vuelos y aerolineas.
Puede consultar el documento adjunto como guía para su uso.
Entregables
Entrega 1. – Entrega 1 (Fecha: 23 Abril)
E1. Documento de Análisis y Diseño del problema (Incluye Complejidad Temporal).
E2. Documento de lanzamiento (Definición, priorización y planeación de tareas).
E3. Mapa de navegación de la aplicación (mostrando cómo se exponen al usuario los diferentes
requerimientos, cuáles páginas son dinámicas y estáticas).
E4. Estructuras de datos a utilizar implementadas en un proyecto aparte usando genericidad. Uso
de ant para la generación de la librería de Estructuras de Datos.
E5. Pruebas unitarias de las nuevas estructuras de datos.
E6. Implementación de Interfaz Web para los requerimientos R1, R5, R6 y R7. La página Web de
inicio corresponde a una página de servicios a usuarios y autenticación de administrador.
E7. Implementación completa de los requerimientos R1 y R2. Los requerimientos deben funcionar
accediéndolos desde un navegador Web y ejecutándose en una aplicación web. Uso de ant para
la compilación y despliegue de la aplicación Web.
Entrega 2. – Entrega Final (Fecha: 30 Abril)
E1. Documento de Análisis y Diseño del problema (Incluye Complejidad Temporal) – versión final
E2. Documento de lanzamiento (Definición, priorización y planeación de tareas) – versión
completa
E3. Mapa de navegación de la aplicación (mostrando cómo se exponen al usuario los diferentes
requerimientos, cuáles páginas son dinámicas y estáticas) – versión final.
E4. Implementación completa de la Interfaz Web. La página Web de inicio corresponde a una
página de servicios a usuarios y autenticación de administrador.
E5. Implementación completa de los requerimientos funcionales. Se califican únicamente
aquellos requerimientos que sean funcionales desde la interfaz gráfica. Los requerimientos deben
funcionar accediéndolos desde un navegador Web y ejecutándose en una aplicación web. Uso de
ant para la compilación y despliegue de la aplicación Web.
E6. Javadoc de la aplicación.
El mejor ejercicio de cada sección tendrá un bono especial sobre la nota del nivel.
Descargar