Restaurante Casares: planificación de reservas
Abstract
Grado en Ingeniería Informática de Servicios y Aplicaciones
Full text
UNIVERSIDAD DE VALLADOLID ESCUELA DE INGENIERÍA INFORMÁTICA DE SEGOVIA Grado en Ingeniería Informática de Servicios y Aplicaciones Restaurante Casares: planificación de reservas Autor: Alberto Herrero Toledano Tutor: Fernando Díaz Gómez
1 RESUMEN Este trabajo de fin de grado tiene como objetivo principal una aplicación web para el restaurante Casares, con el objetivo de mejorar la gestión y asignación de reservas en los diferentes espacios del establecimiento. El problema actual de este restaurante radica en la necesidad de mover y cuadrar las mesas para proporcionar el servicio a las reservas, lo cual requiere la intervención y tiempo de un trabajador para organizarlas en el plano, algo que en muchas ocasiones no resulta trivial. La aplicación pretende ser una herramienta intuitiva y de fácil uso, considerando usuarios de diferentes edades. Además de gestionar las reservas y los espacios, proporciona al usuario toda la información relevante sobre el turno de comida correspondiente. Para lograr esto, la herramienta digital permite almacenar reservas y generar una lista de posiciones disponibles. En caso de no haber posiciones libres, realizará una búsqueda de mesas compatibles para combinarlas y poder atender la reserva, ofreciendo una lista de todas las combinaciones de mesas posibles. Palabras clave: Aplicación web, gestión de reservas, asignación de espacios, intuitiva, búsqueda de mesas compatibles, combinación de mesas. ABSTRACT The main objective of this final degree project is to develop a web application for the Casares restaurant, with the aim of improving the management and allocation of reservations in the different spaces of the establishment. The current problem of this restaurant lies in the need to move and square the tables to provide service to the reservations, which requires the intervention and time of a worker to organise them on the floor plan, something that on many occasions is not trivial. The application is intended to be an intuitive and user-friendly tool, considering users of different ages. In addition to managing bookings and spaces, it provides the user with all relevant information about the corresponding meal shift. To achieve this, the digital tool allows storing reservations and generates a list of available positions. In case there are no free positions, it will perform a search for compatible tables in order to combine them and be able to attend the reservation, offering a list of all possible table combinations. Key words: Web application, reservation management, space allocation, intuitive, search for compatible tables, table combination.
2 ÍNDICE CAPITULO 1. INTRODUCCIÓN. ........................................................................................ 9 MOTIVACIÓN ........................................................................................................................... 9 OBJETIVOS ............................................................................................................................. 10 ALCANCE ............................................................................................................................... 12 ENTORNO TECNOLÓGICO ....................................................................................................... 13 CAPITULO 2. ESTADO DEL ARTE .................................................................................. 15 CAPITULO 3. PANIFICACIÓN Y PRESUPUESTOS ..................................................... 17 MODELO DE DESARROLLO ..................................................................................................... 17 PLANIFICACIÓN INICIAL DE PROYECTO .................................................................................. 18 COSTES INICIALES DEL PROYECTO ......................................................................................... 20 Costes de personal............................................................................................................. 20 Costes hardware ................................................................................................................ 20 Costes software.................................................................................................................. 21 Otros costes ....................................................................................................................... 21 ESTIMACIONES INICIALES ...................................................................................................... 22 Estimación por puntos de función (Método Albretch) ...................................................... 22 Estimación por COCOMO ................................................................................................ 26 Estimación por casos de uso ............................................................................................. 28 Comparativa de las estimaciones ...................................................................................... 31 PRESUPUESTOS ...................................................................................................................... 32 Presupuesto inicial ............................................................................................................ 32 COste real.......................................................................................................................... 34 CAPITULO 4. ANÁLISIS DEL SISTEMA ........................................................................ 36 ACTORES DEL SISTEMA .......................................................................................................... 36 REQUISITOS DE USUARIO ....................................................................................................... 37 MODELO DE CASOS DE USO .................................................................................................... 38 REGLAS DE NEGOCIO ............................................................................................................. 49 REQUISITOS FUNCIONALES..................................................................................................... 49 REQUISITOS NO FUNCIONALES ............................................................................................... 50 REQUISITOS DE INFORMACIÓN ............................................................................................... 51 Modelo Entidad-Relacion.................................................................................................. 51 Diccionario de datos ......................................................................................................... 53 CAPITULO 5. DISEÑO DEL SISTEMA ............................................................................ 57 ARQUITECTURA DEL SISTEMA ................................................................................................ 57 Arquitectura lógica............................................................................................................ 57 Arquitectura física ............................................................................................................. 58 MODELO DE DISEÑO ............................................................................................................... 59 Diagrama Modelo-Vista-Controlador .............................................................................. 59 Diagrama de secuencia ..................................................................................................... 60
3 Modelo lógico de datos ..................................................................................................... 63 Diagrama de clases ........................................................................................................... 64 DISEÑO DE LA INTERFAZ DE USUARIO .................................................................................... 65 Interfaz de acceso .............................................................................................................. 66 Página principal ................................................................................................................ 67 CAPITULO 6. IMPLEMENTACIÓN ................................................................................. 72 ESTRUCTURA INTERNA DEL PROYECTO .................................................................................. 72 DETALLES DE IMPLEMENTACIÓN ........................................................................................... 74 Etapas de creación de la estructura principal y visualización de los datos ..................... 74 Gestión de comedores de los turnos .................................................................................. 82 Gestión de reservas ........................................................................................................... 84 Gestión de sesiones ........................................................................................................... 93 Creación de estilos ............................................................................................................ 94 CAPITULO 7. PRUEBAS ..................................................................................................... 95 PRUEBAS DE CAJA BLANCA .................................................................................................... 95 PRUEBAS DE CAJA NEGRA ...................................................................................................... 97 CAPITULO 8. MANUAL DE USUARIO.......................................................................... 102 INICIO DE SESIÓN ................................................................................................................. 102 PÁGINA PRINCIPAL ............................................................................................................... 103 Visualización de información .......................................................................................... 103 Gestión de reservas ......................................................................................................... 106 CAPITULO 9. CONCLUSIÓN Y FUTURAS AMPLIACIONES .................................. 110 Conclusión ....................................................................................................................... 110 Futuras ampliaciones ...................................................................................................... 111 REFERENCIAS ................................................................................................................... 112
4 ÍNDICE DE TABLAS TABLA 1 - OBJETIVOS DEL PROYECTO ....................................................................................... 10 TABLA 2 - CRITERIOS DE ACEPTACIÓN PARA OBJ-01 ................................................................ 10 TABLA 3 - COMPARATIVA DE SISTEMAS DE GESTIÓN DE RESERVAS ........................................... 16 TABLA 4 - ETAPAS DE PLANIFICACIÓN DEL PROYECTO .............................................................. 19 TABLA 5 - COSTES COMPONENTES HARDWARE ......................................................................... 20 TABLA 6 - COSTES COMPONENTES SOFTWARE .......................................................................... 21 TABLA 7 - OTROS COSTES ......................................................................................................... 21 TABLA 8 - ENTRADAS DE DATOS ............................................................................................... 23 TABLA 9 - SALIDA DE DATOS .................................................................................................... 23 TABLA 10 - CONSULTAS ............................................................................................................ 23 TABLA 11 - FICHEROS LÓGICOS INTERNOS ................................................................................ 24 TABLA 12 - CÁLCULO DE PFNA ............................................................................................... 24 TABLA 13 - FACTOR DE AJUSTE ................................................................................................. 25 TABLA 14 - CALIFICACIÓN VALORES DE ESFUERZO ................................................................... 27 TABLA 15 - PONDERACIONES PARA EL CÁLCULO DE UUAW BASADO EN TRANSACCIONES ...... 28 TABLA 16 - CÁLCULO DE UUCW ............................................................................................. 28 TABLA 17 - FACTORES DE COMPLEJIDAD TÉCNICA (TCF) ......................................................... 29 TABLA 18 - FACTORES AMBIENTALES (EF) ............................................................................... 30 TABLA 19 - MODELO DE ESFUERZO TOTAL ................................................................................ 31 TABLA 20 - COMPARATIVA ESTIMACIONES INICIAL .................................................................. 31 TABLA 21 - COMPARATIVA ESTIMACIONES INICIAL .................................................................. 31 TABLA 22 - COSTE INICIAL PERSONAL ....................................................................................... 32 TABLA 23 - COSTE INICIAL HARDWARE .................................................................................... 33 TABLA 24 - COSTE INICIAL SOFTWARE ..................................................................................... 33 TABLA 25 - COSTE INICIAL OTROS ASPECTOS ............................................................................ 33 TABLA 26 - RESULTADO COSTE INICIAL .................................................................................... 34 TABLA 27 - COSTE FINAL PERSONAL ......................................................................................... 34 TABLA 28 - COSTE INICIAL HARDWARE .................................................................................... 35 TABLA 29 - COSTE FINAL SOFTWARE ........................................................................................ 35 TABLA 30 - COSTE INICIAL OTROS ASPECTOS ............................................................................ 35 TABLA 31 - RESULTADO COSTE FINAL....................................................................................... 35 TABLA 32 - ACTORES DEL SISTEMA........................................................................................... 36 TABLA 33 - REQUISITOS DE USUARIO ........................................................................................ 37 TABLA 34 - CU-01 INICIO DE SESIÓN ........................................................................................ 39 TABLA 35 - CU-02 CERRAR SESIÓN .......................................................................................... 39 TABLA 36 - CU-03 CAMBIAR DE FECHA .................................................................................... 40 TABLA 37 - CU-04 CONSULTAR RESUMEN TURNO .................................................................... 40 TABLA 38 - CU-05 CONSULTAR RESUMEN DE COMEDORES ...................................................... 41 TABLA 39 - CU-06 ABRIR COMEDOR ........................................................................................ 41 TABLA 40 - CU-07 CERRAR COMEDOR ..................................................................................... 42 TABLA 41 - CU-08 CONSULTAR RESUMEN DE RESERVAS .......................................................... 42 TABLA 42 - CU-09 NAVEGAR ENTRE TURNOS ........................................................................... 43
5 TABLA 43 - CU-10 NAVEGAR ENTRE COMEDORES .................................................................... 43 TABLA 44 - CU-11 VISUALIZAR LA DISTRIBUCIÓN ESPACIAL DEL COMEDOR ............................ 44 TABLA 45 - CU-12 VISUALIZAR LISTA DE RESERVAS ................................................................ 44 TABLA 46 - CU-13 CONSULTAR DETALLE DE RESERVA ............................................................ 45 TABLA 47 - CU-14 MODIFICAR DATOS DE RESERVA ................................................................. 45 TABLA 48 - CU-15 CAMBIAR LA POSICIÓN DE LA RESERVA ...................................................... 46 TABLA 49 - CU-16 CANCELAR RESERVA .................................................................................. 46 TABLA 50 - CU-17 CREAR RESERVA ......................................................................................... 47 TABLA 51 - CU-18 RELLENAR DATOS ....................................................................................... 47 TABLA 52 - CU-19 SELECCIONAR MESA ................................................................................... 48 TABLA 53 - CU-20 SELECCIONAR COMBINACIÓN DE MESAS ..................................................... 48 TABLA 54 - REGLAS DE NEGOCIO .............................................................................................. 49 TABLA 55 - REQUISITOS FUNCIONALES ..................................................................................... 49 TABLA 56 - REQUISITOS NO FUNCIONALES ................................................................................ 50 TABLA 57 - REQUISITOS DE INFORMACIÓN ................................................................................ 51 TABLA 58 - E-01 SOLICITUD ..................................................................................................... 53 TABLA 59 - E-02 TURNO ........................................................................................................... 54 TABLA 60 - E-03 DISTRIBUCIÓN ............................................................................................... 54 TABLA 61 - E-04 COMEDOR ...................................................................................................... 54 TABLA 62 - E-05 POSICIÓN ....................................................................................................... 55 TABLA 63 - E-06 MESA ............................................................................................................. 55 TABLA 64 - E-07 USUARIO ........................................................................................................ 55 TABLA 65 - R-01 RESERVAR 1 .................................................................................................. 55 TABLA 66 - R-02 RESERVAR 2 .................................................................................................. 55 TABLA 67 - R-03 TENER 1 ......................................................................................................... 56 TABLA 68 - R-04 TENER 2 ......................................................................................................... 56 TABLA 69 - R-05 CONFIGURAR ................................................................................................. 56 TABLA 70 - R-06 ASIGNAR ....................................................................................................... 56 TABLA 71 - ARCHIVOS DE LA CARPETA MODEL ........................................................................ 72 TABLA 72 - ARCHIVOS DE LA CARPETA CONTROLLER ............................................................... 73 TABLA 73 - ARCHIVOS DE LA CARPETA JS ................................................................................ 73 TABLA 74 - ARCHIVOS DE LA CARPETA INCLUDES .................................................................... 74 TABLA 75 - PCN-01: INICIO DE SESIÓN ..................................................................................... 97 TABLA 76 - PCN-02: CIERRE DE SESIÓN ................................................................................... 97 TABLA 77 - PCN-03: CAMBIO DE FECHA .................................................................................. 98 TABLA 78 - PCN-04: ABRIR COMEDOR ..................................................................................... 98 TABLA 79 - PCN-05: CERRAR COMEDOR .................................................................................. 98 TABLA 80 - PCN-06: CAMBIAR DE TURNO ................................................................................ 98 TABLA 81 - PCN-07: CAMBIAR DE COMEDOR ........................................................................... 99 TABLA 82 - PCN-08: CAMBIAR VISTA DE LISTA DE RESERVAS .................................................. 99 TABLA 83 - PCN-09: FORMULARIO DE CREACIÓN DE RESERVAS .............................................. 99 TABLA 84 - PCN-10: SELECCIÓN DE POSICIÓN SIMPLE ........................................................... 100 TABLA 85 - PCN-11: SELECCIÓN DE POSICIÓN COMBINADA ................................................... 100 TABLA 86 - PCN-13: VISUALIZACIÓN DETALLE DE RESERVA ................................................. 100
6 TABLA 87 - PCN-14: MODIFICACIÓN DATOS DE RESERVA ...................................................... 100 TABLA 88 - PCN-15: CAMBIO DE POSICIÓN DE RESERVA ........................................................ 101 TABLA 89 - PCN-16 CANCELAR RESERVA .............................................................................. 101
7 ÍNDICE DE FIGURAS FIGURA 1 - ÁRBOL DE CARACTERÍSTICAS DE LA APLICACIÓN .................................................... 12 FIGURA 2 - LOGO DE VISUAL STUDIO CODE.............................................................................. 13 FIGURA 3 - LOGO DE XAMPP ................................................................................................... 13 FIGURA 4 - LOGO DE GIT HUB ................................................................................................... 14 FIGURA 5 – LOGO DE RESMIO ................................................................................................... 15 FIGURA 6 - LOGO DE RESTOO .................................................................................................... 15 FIGURA 7 - MODELO DE DESARROLLO ITERATIVO-INCREMENTAL ............................................. 17 FIGURA 8 - DIAGRAMA DE CASOS DE USO.................................................................................. 38 FIGURA 9 - MODELO ENTIDAD - RELACIÓN............................................................................... 52 FIGURA 10 - ARQUITECTURA LÓGICA ........................................................................................ 57 FIGURA 11 - ARQUITECTURA FÍSICA .......................................................................................... 58 FIGURA 12 - MODELO VISTA CONTROLAR ................................................................................ 59 FIGURA 14 - DIAGRAMA DE SECUENCIA 1 ................................................................................. 60 FIGURA 15 - DIAGRAMA DE SECUENCIA 2 ................................................................................. 61 FIGURA 16 - DIAGRAMA DE SECUENCIA 3 ................................................................................. 62 FIGURA 17 - DIAGRAMA DE CLASES .......................................................................................... 64 FIGURA 18 - INTERFAZ DE ACCESO ............................................................................................ 66 FIGURA 19 - INTERFAZ PÁGINA PRINCIPAL ................................................................................ 67 FIGURA 20 - INTERFAZ MENÚ HORIZONTAL ............................................................................... 68 FIGURA 21 - INTERFAZ FICHA TURNO ........................................................................................ 68 FIGURA 22 - INTERFAZ FICHA COMEDOR ................................................................................... 69 FIGURA 23 - INTERFAZ POP-UP FORMULARIO DE CREACIÓN RESERVA ....................................... 70 FIGURA 24 - INTERFAZ POP-UP SELECTOR MESA SIMPLE ............................................................ 70 FIGURA 25 - - INTERFAZ POP-UP SELECTOR COMBINACIÓN DE MESAS ....................................... 71 FIGURA 26 - INTERFAZ POP-UP DETALLE DE RESERVA ............................................................... 71 FIGURA 27 - INTERFAZ POP-UP FORMULARIO DE MODIFICACIÓN DE RESERVA ........................... 71 FIGURA 28 - CÓDIGO HTML DE LA ESTRUCTURA PRINCIPAL .................................................... 75 FIGURA 29 - TABLAS BASE DE DATOS MYSQL ......................................................................... 75 FIGURA 30 - CÓDIGO PHP DE OBTENCIÓN DE DATOS DE BD 1 .................................................. 76 FIGURA 31 - CÓDIGO PHP DE LLAMADA AL MÉTODO DE OBTENCIÓN DE DATOS ....................... 76 FIGURA 32 - CÓDIGO JS DE GENERACIÓN DINÁMICA DE HTML 1 ............................................. 77 FIGURA 33 - CÓDIGO JS DE GENERACIÓN DINÁMICA DE HTML 2 ............................................. 78 FIGURA 34 - VISUALIZACIÓN INICIAL DE LA PÁGINA PRINCIPAL ................................................ 78 FIGURA 35 - CÓDIGO JS DE OBTENCIÓN DE DATOS A TRAVÉS DE AJAX ..................................... 79 FIGURA 36 CÓDIGO DEL ARCHIVO CONTROLLER.PHP ................................................................ 80 FIGURA 37 - FUNCIÓN PARA OBTENER DATOS DEL HANDLER.PHP ............................................. 81 FIGURA 38 - FICHA INFORMACIÓN COMEDORES ........................................................................ 82 FIGURA 39 - EVENTO JS QUE LANZA LLAMADA PARA ABRIR O CERRAR COMEDORES ................ 83 FIGURA 40 - FUNCIONES JS QUE GENERAN CONTENIDO HTML DE LAS VENTANAS EMERGENTES ........................................................................................................................................... 84 FIGURA 41 - BOCETO INICIAL DE MATRIZ PARA DISTRIBUCIÓN ESPACIAL .................................. 85 FIGURA 42 - FUNCIONES PHP DE OBTENCIÓN DE POSICIONES DISPONIBLES .............................. 87
8 FIGURA 43 - FUNCIÓN JS QUE GENERA LA ESTRUCTURA HTML DEL SELECTOR DE POSICIONES 88 FIGURA 44 - FUNCIÓN JS QUE GENERA EL HTML DE LAS FICHAS DE SELECCIÓN DE POSICIÓN . 88 FIGURA 45 - FUNCIÓN PHP DE GESTIÓN DE PRIVADOS 1 ........................................................... 89 FIGURA 46 - FUNCIÓN PHP DE GESTIÓN DE PRIVADOS 2 ........................................................... 90 FIGURA 47 - FUNCIONES JS QUE LANZAN EL FORMULARIO DE RESERVA ................................... 91 FIGURA 48 - FUNCIONES PHP RELACIONADAS CON LAS RESERVAS CON POSICIONES COMBINADAS ...................................................................................................................... 92 FIGURA 49 - ARCHIVO INDEX.PHP ............................................................................................. 93 FIGURA 50 - ARCHIVO LOGINCONTROLLER.PHP ........................................................................ 94 FIGURA 51 - PRUEBAS DE CAJA BLANCA ................................................................................... 95 FIGURA 52 - EJEMPLO CONSOLE.LOG PARA PRUEBAS DE CAJA BLANCA ..................................... 96 FIGURA 53 - PRUEBAS DE CAJA NEGRA ...................................................................................... 97 FIGURA 54 – MANUAL: INICIO DE SESIÓN ................................................................................ 102 FIGURA 55 - MANUAL: PÁGINA PRINCIPAL .............................................................................. 103 FIGURA 56 - MANUAL: RESUMEN DE COMEDORES ................................................................... 104 FIGURA 57 - MANUAL: RESUMEN DE RESERVAS ...................................................................... 104 FIGURA 58 - MANUAL: FICHA DE COMEDOR ............................................................................ 105 FIGURA 59 - MANUAL: FORMULARIO DE CREACIÓN DE RESERVA ............................................ 106 FIGURA 60 - MANUAL: SELECTOR DE MESA SIMPLE ................................................................ 107 FIGURA 61 - MANUAL: SELECTOR DE MESA COMBINADA ........................................................ 108 FIGURA 62 - MANUAL: VISTA DE DETALLE DE RESERVA.......................................................... 108 FIGURA 63 - MANUAL: FORMULARIO DE MODIFICACIÓN DE RESERVA ..................................... 109
15 CAPITULO 2. ESTADO DEL ARTE Antes de desarrollar la aplicación web es necesario conocer y analizar las propuestas similares de herramientas ya existentes en el mercado actual, las cuales sirven para inspeccionar y marcar en cierto modo el dominio de nuestro proyecto, es decir, analizar los aspectos relevantes y características esenciales que no pueden faltar en nuestro proyecto, junto con aspectos nuevos, los cuales el resto de propuestas no son capaces de gestionar. Existen algunos programas de gestión de mesas para restaurantes tales como Resmio o Restoo. Estos incluyen múltiples funcionales en cuanto a la gestión de reservas y mesas pero no cuentan con la automatización en la combinación de mesas y por supuesto, tampoco cuentan con la capacidad de unir o dividir a demanda las salas privadas que hacen tan dinámico y versátil al restaurante Casares. Además incluyen características en las cuales el restaurante no está interesado, por lo cual estaría pagando por un software que no va a aprovechar. - Resmio Resmio es una aplicación innovadora y eficiente diseñada para facilitar la gestión de restaurantes y negocios de hostelería. Con su interfaz intuitiva y funciones versátiles, Resmio permite a los propietarios y gerentes organizar reservas, gestionar mesas y optimizar la capacidad del local. Además, ofrece herramientas para la creación y publicación de menús, así como la gestión de pedidos y pagos online. Resmio también brinda la posibilidad de enviar notificaciones y recordatorios a los clientes, mejorando la comunicación y reduciendo los olvidos o cancelaciones. (Resmio, 2022) - Restoo Restoo es una aplicación móvil diseñada para facilitar la experiencia de los usuarios al buscar, reservar y disfrutar de restaurantes. Con Restoo, los usuarios pueden explorar una amplia variedad de restaurantes cercanos, filtrar por tipo de cocina, ubicación y precios, leer reseñas y ver calificaciones de otros comensales. Además, la aplicación permite realizar reservas de forma rápida y sencilla, lo que evita esperas innecesarias. También ofrece la posibilidad de realizar pedidos para llevar o servicio a domicilio en algunos restaurantes. En resumen, Restoo brinda a los usuarios la comodidad de encontrar y disfrutar de una experiencia gastronómica placentera, ofreciendo opciones, reseñas y servicios convenientes, todo en una sola aplicación. (Restoo, 2022) Figura 5 – Logo de Resmio Figura 6 - Logo de Restoo
16 Analizando las características de los sistemas anteriores, se observa que la característica de la gestión de las salas privadas no se encuentra en ninguno de estos. Esto, junto a la combinación automática de mesas, hace que nuestra propuesta sea más atractiva que las mencionadas en esta sección. Característica Restoo Resmio Aplicación gestión de Casares Gestiona reservas ✔ ✔ ✔ Gestiona turnos ✔ ✔ ✔ Gestiona comedores ✔ ✔ ✔ Maximiza espacio ✔ ✔ ✔ Gestiona división de comedor en salas privadas ✘ ✘ ✔ Combina mesas automáticamente ✘ ✘ ✔ Integración de canales de reservas ✔ ✔ ✘ Tabla 3 - Comparativa de sistemas de gestión de reservas
17 CAPITULO 3. PANIFICACIÓN Y PRESUPUESTOS MODELO DE DESARROLLO Después de examinar todas las técnicas y enfoques actuales en el desarrollo de proyectos de software, se ha decidido utilizar el enfoque iterativo-incremental para este proyecto específico. Este enfoque combina las ventajas del modelo en cascada y el modelo basado en la creación de prototipos. Este enfoque evolutivo implica la construcción de la herramienta en bloques de trabajo planificados en varias iteraciones o etapas. Durante cada iteración, se mejora y amplía la funcionalidad y características del producto. Figura 7 - Modelo de desarrollo iterativo-incremental Cada una de esas fases o ciclos da lugar a un programa completamente funcional sobre el cual se basa la nueva fase, y es precisamente por este motivo que se necesita un desarrollo completo del requisito o característica que se ha propuesto para esa etapa, incluyendo una serie de verificaciones y una documentación detallada que permita a los programadores tener una base sólida para iniciar el desarrollo de nuevas necesidades y características que formarán parte de las futuras fases. Esto genera como resultado una serie de ventajas en el desarrollo, aunque también puede tener ciertos inconvenientes. A continuación se presentan, de manera simplificada, estas consecuencias: Ventajas: - Permite tener un programa completamente funcional al finalizar cada fase. - Reduce los riesgos en el desarrollo del software, debido a la realización de verificaciones para cada una de las fases. - Simplifica el desarrollo del proyecto, debido a la división en bloques de trabajo (etapas). - Proporciona un alto grado de flexibilidad al incorporar nuevas necesidades y funciones al desarrollo.
18 - Mejora el aprendizaje y la experiencia, ya que con cada fase, el equipo de trabajo aumenta su conocimiento del software. Inconvenientes: - Requiere un cliente comprometido durante todo el desarrollo del proyecto. - Las distintas fases que conforman cada ciclo son inflexibles, hasta que no se completa una de ellas, no comienza la siguiente. Para el desarrollo se han realizado 12 iteraciones de este ciclo: 1. Etapa de análisis global de los objetivos y requisitos del proyecto. 2. Creación de la estructura de la página principal. 3. Creación y población de la base de datos. 4. Visualización de los datos en la página principal. 5. Funcionalidad básica de la página principal. 6. Automatización de creación de datos por fecha. 7. Gestión de comedores de los turnos. 8. Creación de reservas y asignación de mesa (sin combinaciones) 9. Gestión de salas privadas para la creación de reservas. 10. Búsqueda de combinaciones de mesas y asignación a nuevas reservas. 11. Página de acceso y gestión de sesiones. 12. Añadir estilos definitivos a la aplicación. PLANIFICACIÓN INICIAL DE PROYECTO Para la planificación de este proyecto se han tenido en consideración una serie de aspectos que repercuten de forma directa con la duración y estimación temporal del mismo como son: - La planificación del proyecto comienza el 1 de febrero de 2022. - También se tendrán en cuenta vacaciones en el mes de agosto y en navidades del año 2022. - Por motivos laborales e considera que se podrá trabajar en el proyecto de 3 a 5 días laborables con un total de 10 a 15 horas semanales. - En las primeras fases del proyecto, se prevé que las labores de análisis y diseño tengan una duración más extensa. Esto se debe a la metodología empleada en el desarrollo del proyecto, que exige un análisis detallado de los requisitos, objetivos y características esenciales de la herramienta para crear los primeros productos que satisfagan las necesidades básicas del cliente. Además, en estas etapas iniciales, el equipo de trabajo se familiariza con el proyecto y las herramientas utilizadas. - En las fases intermedias y finales, las tareas de implementación, integración y pruebas adquieren mayor relevancia. Esto es debido al aumento en la complejidad del desarrollo de nuevas funcionalidades, lo que resulta en productos más completos cuya integración con otros componentes de la herramienta también se vuelve más complicada. Estos
19 productos, a su vez, necesitan pruebas más exhaustivas para asegurarse de que satisfacen todos los requerimientos propuestos por el cliente. Etapa Descripción Inicio Fin Nº días Etapa 1 Etapa de análisis 01/02/2022 21/03/2022 35 Etapa 2 Estructura de la página 22/03/2022 13/04/2022 15 Etapa 3 Base de datos 14/04/2022 19/05/2022 25 Etapa 4 Visualización de datos 20/05/2022 17/06/2022 20 Etapa 5 Funcionalidad básica de la página 18/06/2022 06/07/2022 20 Etapa 6 Creación datos automática por fecha 07/07/2022 04/09/2022 20 Etapa 7 Gestión de comedores 05/09/2022 02/10/2022 20 Etapa 8 Gestión de reservas y asignación mesas simples 03/10/2022 15/11/2022 30 Etapa 9 Gestión de salas privadas 16/11/2022 06/12/2022 25 Etapa 10 Búsqueda y asignación de combinaciones de mesas 07/12/2022 07/02/2023 30 Etapa 11 Página de acceso y gestión de sesiones 08/02/2023 22/02/2023 10 Etapa 12 Añadir estilos definitivos a la aplicación 23/02/2023 15/03/2023 15 Tabla 4 - Etapas de planificación del proyecto Teniendo esto en cuenta, el proyecto debería realizarse en 12 meses aproximadamente.
20 COSTES INICIALES DEL PROYECTO COSTES DE PERSONAL Estos gastos están relacionados con todos los recursos humanos que participan en las diferentes etapas de planificación inicial establecidas en el diagrama de Gantt previamente expuesto. Para este proyecto, solo hay un recurso humano que participa activamente en todas las fases del proyecto: el autor. Este autor desempeña diferentes roles según la fase y la tarea que esté realizando para proporcionar una estimación más precisa y realista de este tipo de gastos. Los roles asumidos en el proyecto son los siguientes: - Director de Proyecto: se encarga de gestionar tanto al equipo de trabajo y sus tareas desempeñadas como el control del cumplimiento de objetivos y características del proyecto. También es el encargado de realizar las tareas de revisión y redacción de la documentación. - Analista: se encarga de realizar las tareas de análisis y exploración de requisitos que debe cumplir el proyecto. También se encarga de gestionar la arquitectura del sistema. - Diseñador de UX/ IU: se encarga de analizar y diseñar todos los aspectos relacionados con la experiencia e interfaces de usuario. - Desarrollador: se encarga de llevar a cabo las labores de implementación del proyecto. - Tester: se encarga de comprobar que se cumplen todos los objetivos y requisitos establecidos para el producto (tanto el producto completo como los distintos productos que se van generando a lo largo de las fases del proyecto). COSTES HARDWARE Son de los gastos asociados al uso de medios materiales durante la ejecución del proyecto. En la tabla siguiente se muestra el precio de compra de cada elemento, así como su duración promedio. Componente Precio Vida útil media Ordenador portátil 1499,00 € 6 años Ratón y teclado 49,00 € 3 años Monitor 119 ,00 € 6 años Disco duro externo 45,00 € 5 años Tabla 5 - Costes componentes Hardware
21 COSTES SOFTWARE Se refieren a los gastos generados por todos los programas y herramientas informáticas empleados para llevar a cabo el proyecto. En el siguiente cuadro se muestra el desenlace de esta evaluación: Componente Precio Vida útil media Windows 10 home 120,00 € 4 años Office 365 0,00 € - Visual Studio Code 0,00 € - XAMPP 0,00 € - GitHub 0,00 € - Google chrome 0,00 € - Tabla 6 - Costes componentes Software OTROS COSTES Son costes que intervienen en el desarrollo del proyecto, pero no se pueden clasificar en ninguna de las anteriores tipologías recogidas. Cabe destacar que después de la fase de desarrollo, en el caso de que el cliente final quiera quedarse con el sistema, deberá añadirse un gasto mensual para el alquiler de un servidor. Para este caso tomaremos como ejemplo el coste del plan de servidor virtual de IONOS En la siguiente tabla aparece reflejado el resultado de este análisis: Otros gastos Precio/mes Servicios básicos 30,00 €/mes Conexión a internet 52,50 €/mes Alquiler servidor 1,00 €/mes Tabla 7 - Otros costes
22 ESTIMACIONES INICIALES En este momento se realizará la valoración inicial de los gastos y el tiempo del proyecto. Para esto se utilizan tres de los principales métodos de valoración utilizados en el desarrollo de software: valoración por casos de uso, método de Albretch con puntos de función y el método COCOMO. De estos tres procedimientos, la valoración por casos de uso es el más preciso, siempre y cuando se cuente con unos casos de uso bien definidos y analizados previamente. Además, se llevarán a cabo los procedimientos de Albretch y COCOMO de manera complementaria, aunque estos no son tan precisos como el primero. Por último, se explican y comparan los resultados obtenidos en todos los procedimientos junto con la planificación inicial propuesta para obtener una visión temporal y presupuestaria más adecuada para el proyecto. ESTIMACIÓN POR PUNTOS DE FUNCIÓN (MÉTODO ALBRETCH) Basándose en la perspectiva del usuario acerca del tamaño del sistema, se consideran los distintos ámbitos de información para definir el sistema, sin tener en cuenta las especificaciones técnicas y detalles de implementación o código. Puesto que esta estimación es más propia de los usuarios, se presta atención a los siguientes campos de información: - Entradas de usuario: información que el usuario introduce en el sistema. - Salidas de usuario: información que el sistema presenta al usuario una vez procesada la petición de este. - Consultas: peticiones o entradas que requieren de una respuesta por parte del sistema. - Ficheros lógicos internos: utilizados exclusivamente por el sistema de forma local. - Ficheros lógicos externos: externos, los cuales el sistema utiliza para el procesamiento de datos Una vez establecidos los campos de información, es necesario determinar la complejidad de cada una de las funcionalidades del sistema. Para ello, se utilizan las tablas siguientes:
23 Entradas de datos Descripción Complejidad Acceso a la aplicación Baja Creación de reservas Baja Modificación reservas Baja Gestionar comedores Baja Elegir posición mesa Baja Elegir combinación de mesas Baja Cambiar fecha de visualización de datos Baja Tabla 8 - Entradas de datos Salidas de datos Descripción Complejidad Información turno Baja Distribución espacial de mesas Media Lista de reservas Baja Detalle reserva Baja Mensajes de estado Baja Tabla 9 - Salida de datos Consultas Descripción Complejidad Acceso a la aplicación Baja Creación de reservas Baja Lista de mesas (simples) disponibles Media Creación de datos nuevos para fecha Baja Lista de mesas combinadas disponibles Alta Asignación reserva-mesa simple Baja Asignación reserva-mesa combinada Media Creación de reserva con sala privada Media Modificación comedores turno Baja Tabla 10 - Consultas
24 Ficheros lógicos internos de datos Descripción Complejidad Comedores Baja Distribuciones Media Mesas Baja Posiciones Baja Reservas Baja Turnos Baja Usuarios Baja Tabla 11 - Ficheros lógicos internos Después de establecer todas las complejidades requeridas por parte del sistema, es momento de calcular los puntos de función sin ajustar (PFNA) en base a la tabla que se muestra a continuación: Campos Complejidad Peso por complejidad Nº de funciones Total Entradas de Usuario Baja x 3 7 21 Media x 4 0 0 Alta x 6 0 0 Salidas de usuario Baja x 4 4 16 Media x 5 1 5 Alta x 7 0 0 Consultas de Usuario Baja x 3 5 15 Media x 4 3 12 Alta x 6 1 6 Ficheros lógicos internos Baja x 7 6 42 Media x 10 1 10 Alta x 15 0 0 Ficheros lógicos externos Baja x 5 0 0 Media x 7 0 0 Alta x 10 0 0 Puntos de Función Sin Ajustar (PFNA) 127 Tabla 12 - Cálculo de PFNA
31 Fase de desarrollo % del proyecto Horas-Persona Análisis 10 % 339,250 Diseño 20 % 678,500 Programación 40 % 1357,000 Pruebas 15 % 508,875 Sobrecarga 15 % 508,875 Total 3392,500 Tabla 19 - Modelo de esfuerzo total Al final, al estimar que solo se cuenta con 1 trabajador para englobar todo el desarrollo del proyecto, la duración total del mismo asciende a 20,2 meses. COMPARATIVA DE LAS ESTIMACIONES La información obtenida después de realizar las estimaciones oportunas es la siguiente: Hay que tener en consideración: Modelo de estimación Personas Tiempo Puntos de función 1 14 meses COCOMO 4 7,2 meses Casos de uso 1 20 meses Tabla 20 - Comparativa estimaciones inicial En que el proyecto solo será desarrollado por una única persona y que, por ese motivo, la traducción final de los datos obtenidos es la siguiente: Modelo de estimación Personas Tiempo Puntos de función 1 14 meses COCOMO 1 30 meses Casos de uso 1 20 meses Tabla 21 - Comparativa estimaciones inicial Observando los resultados y comparándolo con la primera planificación temporal realizada en el apartado “Planificación inicial del proyecto”, la estimación más precisa y la que más se ajusta se corresponde con la estimación de Puntos de Función (Método Albretch).
32 PRESUPUESTOS Una vez realizados todos los análisis y estimaciones iniciales del proyecto, es el momento de realizar el cálculo de los presupuestos previos y posteriores al desarrollo del proyecto. PRESUPUESTO INICIAL Una vez calculada la estimación más precisa para el proyecto, en este apartado se lleva a cabo el cálculo de los presupuestos en base a la planificación inicial y a la estimación por puntos de función (Método de Albretch). Costes de personal Se considerará el número de horas que ha dedicado cada miembro del equipo de trabajo por separado, aplicándole su correspondiente tasa por cada hora de trabajo. Rol Tiempo Salario Salario / Hora Coste en proyecto Jefe de proyecto 150 horas 4000 €/mes 23,80 €/h 3570 € Analista 200 horas 3400 €/mes 20,25 €/h 4050 € Diseñador UX/UI 200 horas 1500 €/mes 8,90 €/h 1780 € Desarrollador 350 horas 2100 €/mes 15,50 €/h 5425 € Tester 100 horas 1600 €/mes 9,50 €/h 950 € Total 1000 horas - - 15775 € Tabla 22 - Coste inicial personal Por otro lado, en la evaluación de estos gastos, debido a la falta de información sobre el porcentaje de trabajo efectuado por cada uno de los roles involucrados, se ha optado por emplear una tasa de horas de trabajo que corresponde al promedio salarial de todos los miembros del equipo identificados anteriormente. Salario Medio = 4000 + 3400 + 1500 + 2100 + 1600 = 2520 € / mes = 15€ hora Por lo tanto, el coste de personal para la estimación asciende a: 13,82 meses * 75 h/mes = 1036 horas aproximadamente Coste Personal = 1036 * 15 = 15540 €
33 Costes hardware y software Se ha considerado la depreciación basada en el lapso de vida útil aproximado de cada uno de los elementos, sumado al valor de su adquisición, para efectuar el cálculo. Mediante este procedimiento se determina el costo real del uso de estos componentes en el proyecto. Dado que la programación y la estimación son casi idénticas en duración, se ha redondeado el período de depreciación a 13 meses para ambos cálculos. Componente Precio Vida útil media Porcentaje de uso Coste real en proyecto (€) Ordenador portátil 1499 € 6 años 18 % 269,82 € Ratón y teclado 49€ 3 años 36 % 17,64 € Monitor 119 € 6 años 18 % 21,42 € Disco duro externo 45€ 5 años 21 % 9,45 € Total 318,33 € Tabla 23 - Coste inicial Hardware Componente Precio Vida útil media Porcentaje de uso Coste real en proyecto (€) Windows 10 home 120 € 4 años 27 % 32,4 € Office 365 0 € - - - Visual Studio Code 0 € - - - XAMPP 0 € - - - GitHub 0 € - - - Google chrome 0 € - - - Total 32,4 € Tabla 24 - Coste inicial Software Otros costes Para realizar el cálculo, la duración inicial de proyecto se ha estimado en 13 meses. Otros gastos Precio/mes Coste real en proyecto (€) Servicios básicos 30 €/mes 390 € Conexión a internet 52,50 €/mes 682,5 € Alquiler servidor 1 €/mes 13 € Total 1075,5 € Tabla 25 - Coste inicial otros aspectos
34 Resultado coste inicial Tipo de gasto Coste Personal 15775 € Hardware 318,33 € Software 32,4 € Otros 1075,5 € Total 17201,23 € Tabla 26 - Resultado coste inicial COSTE REAL Tras finalizar el proyecto, se realiza el cálculo del costo efectivo en base a los factores que han influido directamente en la planificación inicial durante su desarrollo. La fecha de finalización real del proyecto se ha retrasado hasta el 15 de junio de 2023, lo que representa un incremento de 48 días laborables respecto a la fecha prevista en la planificación original. Los principales motivos de este retraso han sido: - Falta en la experiencia en la planificación del proyecto - Compaginación con la vida laboral - Incremento de 1 semana por problemas con la gestión de las distribuciones - Incremento de horas de trabajo destinadas a la revisión de la documentación por parte del equipo de trabajo completo. Los 48 días generan unas 144 horas que han sido repartidas entre los diferentes roles según su impacto en el área correspondiente. Costes de personal Rol Tiempo Salario Salario / Hora Conste en proyecto Jefe de proyecto 150 + 5 horas 4000 €/mes 23,80 €/h 3689 € Analista 200 + 15 horas 3400 €/mes 20,25 €/h 4353,75 € Diseñador UX/UI 200 + 16 horas 1500 €/mes 8,90 €/h 1922,4 € Desarrollador 350 + 72 horas 2100 €/mes 15,50 €/h 6541 € Tester 100 + 36 horas 1600 €/mes 9,50 €/h 1292 € Total 1000 horas - - 17798,15 € Tabla 27 - Coste final personal
35 Costes hardware y software Componente Precio Vida útil media Porcentaje de uso Coste real en proyecto (€) Ordenador portátil 1499 € 6 años 20 % 299,8 € Ratón y teclado 49€ 3 años 42 % 20,58 € Monitor 119 € 6 años 20 % 23,8 € Disco duro externo 45€ 5 años 25 % 11,25 € Total 355,43 € Tabla 28 - Coste inicial Hardware Componente Precio Vida útil media Porcentaje de uso Coste real en proyecto (€) Windows 10 home 120 € 4 años 31 % 37,2 € Office 365 0 € - - - Visual Studio Code 0 € - - - XAMPP 0 € - - - GitHub 0 € - - - Google chrome 0 € - - - 37,2 € Tabla 29 - Coste final Software Otros costes Otros gastos Precio/mes Coste real en proyecto (€) Servicios básicos 30 €/mes 450 € Conexión a internet 52,50 €/mes 787,5 € Alquiler servidor 1 €/mes 15 € Total 1252,5 € Tabla 30 - Coste inicial otros aspectos Resultado coste final Tipo de gasto Coste Personal 17798,15€ Hardware 355,43 € Software 37,2 € Otros 1252,5 € Total 19443,28 € Tabla 31 - Resultado coste final
36 CAPITULO 4. ANÁLISIS DEL SISTEMA En esta sección se presenta, exhaustivamente, el estudio realizado durante este proyecto y que consiste, principalmente, en la explicación detallada de todos los aspectos que deben considerarse en cada etapa del desarrollo del producto, además de los esquemas necesarios para una mejor comprensión. Estos aspectos están estructurados en formatos (tablas) para estandarizar su análisis en todo momento, junto con el diagrama de escenarios y el modelo de entidad-relación, cuyas propiedades se detallan a lo largo de esta sección. ACTORES DEL SISTEMA Un actor es cualquier elemento que desempeñe un rol concreto o interacción en el sistema. Pueden ser desde personas físicas hasta sistemas software externos. En el caso de esta aplicación web privada, solo se considera un actor que será cualquier usuario del casares que acceda a la web. Id Nombre Descripción ACT-01 Usuario administrador Usuario registrado y que posteriormente ha iniciado sesión en la aplicación. Tabla 32 - Actores del sistema
37 REQUISITOS DE USUARIO Un requisito de usuario es toda aquella necesidad propia de un usuario que el sistema deberá satisfacer. Id Descripción RU-01 El usuario puede iniciar sesión en la aplicación. RU-02 El usuario puede visualizar un resumen de información de los comedores del turno. RU-03 El usuario puede visualizar un resumen de información de las reservas del turno. RU-04 El usuario puede abrir y cerrar comedores. RU-05 El usuario puede ver una distribución espacial de las mesas de los comedores RU-06 El usuario debe diferenciar en la distribución las mesas con reserva y las mesas libres. RU-07 El usuario puede ver una lista de reservas con el resumen de la información más importante. RU-08 El usuario puede ver todos los datos de una reserva. RU-09 El usuario puede modificar los datos de una reserva. RU-10 EL usuario puede crear reservas, seleccionando la mesa donde se colocaran. RU-11 En el caso de no disponer de una mesa lo suficientemente grande para la reserva, el usuario podrá crear una reserva colocándola en varias mesas que posteriormente se combinaran y se reflejará en la distribución de las reservas. RU-12 El usuario podrá crear reservas en las salas privadas, esto se reflejará en el resumen de comedores y en la distribución espacial. RU-13 El usuario podrá cancelar reservas liberando sus mesas para nuevas reservas. RU-14 En el caso de cancelar una reserva que ha combinado diferentes mesas, estas volverán a su estado original y se reflejara en la distribución espacial. RU-15 El usuario podrá cancelar reservas de salas privadas, volviendo estas a abrirse y reflejándose en la distribución espacial y en el resumen de comedores. RU-16 El usuario tendrá acceso a la libre navegación entre los diferentes comedores y turnos del día seleccionado, pudiendo cambiar de fecha. Tabla 33 - Requisitos de usuario
38 MODELO DE CASOS DE USO El caso de uso se emplea para mostrar las conexiones y los procedimientos de intercambio de datos entre el programa y los usuarios. Aquí es donde se reflejan gráficamente los requerimientos del usuario descritos con anterioridad, estructurados con la colaboración de los diagramas de casos de uso. Figura 8 - Diagrama de casos de uso
39 A continuación, se analizará cada uno de los casos de uso con el fin de comprender la funcionalidad completa del sistema y las relaciones existentes entre requisitos. Caso de uso CU-01 Inicio de sesión Actor principal Usuario Autor Alberto Herrero Importancia Alta Frecuencia Baja Descripción El usuario se acredita ante el sistema a través de su usuario y contraseña Precondiciones 1. El usuario debe encontrarse registrado en el sistema. 2. El usuario debe de contar con una conexión de Internet para conectarse al servidor. Secuencia Normal 1. EL usuario accede a la página web. (Al login o a la página principal, en este caso si no está autenticado le redirigirá al login) 2. El usuario rellena el formulario con su usuario y contraseña. 3. EL sistema comprueba que el usuario exista y su contraseña sea correcta. 4. El sistema redirige al usuario a la página principal aplicación Secuencia Alternativa Excepciones en la secuencia 3.1. Los datos de acceso son incorrectos y se redirige al usuario al paso 2. Postcondiciones Acceso del usuario a la página principal de la aplicación Tabla 34 - CU-01 Inicio de sesión Caso de uso CU-02 Cerrar sesión Actor principal Usuario Autor Alberto Herrero Importancia Media Frecuencia Baja Descripción El usuario cierra sesión y sale de la página principal. Precondiciones 1. El usuario debe encontrarse e la página principal de la aplicación. Secuencia Normal 1. EL usuario pulsa el botón de cerrar sesión. 2. El sistema cierra la sesión y redirige al usuario al login. Secuencia Alternativa Excepciones en la secuencia La sesión del usuario dentro de la aplicación ha sido cerrada Postcondiciones Acceso del usuario a la página principal de la aplicación Tabla 35 - CU-02 Cerrar sesión
40 Caso de uso CU-03 Cambiar de fecha Actor principal Usuario Autor Alberto Herrero Importancia Alta Frecuencia Media Descripción El usuario cambia la fecha para visualizar los turnos y reservas de dicho día. Precondiciones 1. El usuario debe encontrarse en la página principal de la aplicación. Secuencia Normal 1. El usuario pulsa en el input de fecha 2. El usuario cambia de fecha 3. El sistema le devuelve los datos correspondientes Secuencia Alternativa Excepciones en la secuencia 3.1. No existen datos. 3.2. Se crea la estructura básica de datos de la fecha 3.3. Se devuelven los datos creados. Postcondiciones El usuario ve los datos correspondientes a la nueva fecha Tabla 36 - CU-03 Cambiar de fecha Caso de uso CU-04 Consultar resumen turno Actor principal Usuario Autor Alberto Herrero Importancia Media Frecuencia Media Descripción El usuario puede ver un resumen del estado del turno Precondiciones 1. El usuario debe encontrarse e la página principal de la aplicación. Secuencia Normal 1. El usuario visualiza el resumen del turno. 2. Puede ver el resumen de comedores del turno (CU-05). 3. Pude ver el resumen de reservas del turno (CU-06). Secuencia Alternativa Excepciones en la secuencia Postcondiciones El usuario puede visualizar el resumen del turno Tabla 37 - CU-04 Consultar resumen turno
47 Caso de uso CU-17 Crear reserva Actor principal Usuario Autor Alberto Herrero Importancia Alta Frecuencia Alta Descripción Proceso de creación de una reserva Precondiciones 1. El usuario debe encontrarse en la página principal de la aplicación. Secuencia Normal 1. El usuario pulsa el botón de crear reserva. 2. Salta un Pop-up con un formulario para rellenar los datos de la reserva. (CU-18). 2.1. Se muestra un selector de mesas para la reserva (CU-19). 3. Se guarda la reserva en la base de datos. Secuencia Alternativa 2.2. EL nº de comensales es elevado y se necesita juntar mesas. Se muestra un selector de combinaciones mesas para la reserva (CU-20). 2.3. El tipo de reserva es privado y no se seleccionan mesas. Excepciones en la secuencia Postcondiciones La reserva ha sido creada Tabla 50 - CU-17 Crear reserva Caso de uso CU-18 Rellenar datos Actor principal Usuario Autor Alberto Herrero Importancia Alta Frecuencia Alta Descripción El usuario rellena los datos de la nueva reserva Precondiciones 1. El usuario debe encontrarse en la página principal de la aplicación. 2. El usuario debe haber comenzado el proceso de creación de reserva Secuencia Normal 1. El sistema muestra un formulario donde el usuario podrá rellenar los datos de la reserva. Entre estos, tenemos los siguientes campos obligatorios: - Nombre - Comensales - Teléfono de contacto - Hora - Fecha - Tipo (Normal/Salas privadas) - Nº de cuartos de cordero 2. EL usuario da a continuar para seguir con el proceso de creación. Secuencia Alternativa Excepciones en la secuencia Postcondiciones Los datos de la nueva reserva han sido rellenados. Tabla 51 - CU-18 Rellenar datos
48 Caso de uso CU-19 Seleccionar mesa Actor principal Usuario Autor Alberto Herrero Importancia Alta Frecuencia Alta Descripción El usuario elige en que mesa quiere colocar la reserva. Precondiciones 1. El usuario debe encontrarse en la página principal de la aplicación. 2. El usuario debe haber comenzado el proceso de creación de reserva y rellenado los datos de la reserva. Secuencia Normal 1. El sistema muestra una lista de las posiciones disponibles de cada comedor para la nueva reserva. 2. EL usuario selecciona una posición. 3. El usuario pulsa el botón de finalizar. Secuencia Alternativa Excepciones en la secuencia Postcondiciones La mesa para la reserva ha sido seleccionada. Tabla 52 - CU-19 Seleccionar mesa Caso de uso CU-20 Seleccionar combinación de mesas Actor principal Usuario Autor Alberto Herrero Importancia Alta Frecuencia Alta Descripción El usuario elige que mesas combinar para la nueva reserva. Precondiciones 1. El usuario debe encontrarse en la página principal de la aplicación. 2. El usuario debe haber comenzado el proceso de creación de reserva y rellenado los datos de la reserva. Secuencia Normal 1. El sistema muestra una lista de las mesas que se pueden combinar en cada comedor para la nueva reserva. 2. EL usuario selecciona una combinación de mesas. 3. El usuario pulsa el botón de finalizar. Secuencia Alternativa Excepciones en la secuencia Postcondiciones La combinación de mesas para la reserva ha sido seleccionada. Tabla 53 - CU-20 Seleccionar combinación de mesas
49 REGLAS DE NEGOCIO Las reglas de negocio tienen una relevancia significativa en el proyecto, puesto que establecen las diversas políticas, limitaciones, ordenamientos y aspectos cruciales de una empresa, lo cual establece una serie de directrices y particularidades específicas en el proceso de desarrollo del proyecto. Con posterioridad a su estudio y análisis, se aplicarán las siguientes reglas de negocio: ID Descripción RN-01 Las contraseñas se almacenan hasheadas en la base de datos (MD5). RN-02 Los usuarios accederán a su área privada en la aplicación a través de sus credenciales correo electrónico y contraseña. RN-03 Solo los usuarios registrados podrán visualizar y gestionar la información. Tabla 54 - Reglas de negocio REQUISITOS FUNCIONALES Este tipo de requisitos describen todas aquellas características o aspectos fundamentales para el correcto desempeño de la funcionalidad del sistema, es decir, representan toda la funcionalidad que es necesaria desarrollar. ID Descripción RF-01 El sistema presentará los campos necesarios para la introducción de información. RF-02 El sistema será capaz de obtener la respuesta de los valores introducidos en los campos de inicio de sesión RF-03 El sistema será capaz de recuperar la información de la base de datos y mostrar al usuario dicha información ordenada RF-04 El sistema será capaz de crear una nueva reserva en base de datos con la información incorporada por el usuario y, si es necesario, actualizará los datos de la distribución y las posiciones que lo requieren. RF-05 El sistema será capaz de devolver feedback al usuario en función del estado de inserción en base de datos. RF-06 El sistema será capaz de modificar los datos de una reserva en la base de datos con la información incorporada por el usuario y, si es necesario, actualizará los datos de la distribución y las posiciones que lo requieren. RF-07 El sistema será capaz de devolver feedback al usuario en función del estado de actualización en base de datos. Tabla 55 - Requisitos funcionales
50 REQUISITOS NO FUNCIONALES En este apartado se tienen en cuenta y analizan ciertos requerimientos, también denominados atributos de calidad, que completan aspectos concretos de la funcionalidad de la aplicación tales como comportamientos, restricciones o condicionantes para su correcto funcionamiento impuestos por el cliente. Estos se organizan según su tipología en diferentes categorías. ID Categoría Descripción RNF-01 Usabilidad El tiempo requerido de aprendizaje por parte de un usuario del funcionamiento del sistema (una vez revisado el manual de usuario) no será superior a las 2 horas RNF-02 Usabilidad La tasa de errores cometidos por el usuario final debe de ser inferior al 1% del total. RNF-03 Usabilidad La aplicación debe caracterizarse por contar con un diseño Responsive para su correcta visualización y ejecución en ordenadores y tablets. RNF-04 Usabilidad El sistema debe presentar al usuario final mensajes de éxito y error. RNF-05 Eficiencia El sistema debe soportar una tasa de sesiones activas concurrentes de 100. RNF-06 Eficiencia Toda respuesta a cualquier transacción realizada por el usuario final o por el sistema no debe exceder un tiempo de respuesta de 20 segundos. RNF-07 Eficiencia La probabilidad de fallo de la aplicación debe ser inferior al 1%. RNF-08 Seguridad Las transacciones realizadas con servidor son siempre cifradas y realizadas bajo el protocolo seguro HTTPS RNF-09 Seguridad Las contraseñas se hashean mediante el algoritmo MD5. RNF-10 Seguridad La autenticación o inicio de sesión en la aplicación por parte de los usuarios se realiza a través de las credenciales de login y contraseña. RNF-11 Disponibilidad El sistema debe tener una disponibilidad 24/7 (24 horas al día los 7 días de la semana). RNF-12 Disponibilidad La disponibilidad del sistema cada vez que el usuario final intente acceder al mismo será del 99%. RNF-13 Interfaces de comunicación El sistema se comunica con el servidor a través del protocolo HTTPS utilizando servicios REST RNF-14 Implementación El desarrollo de la aplicación se realizará utilizando el entorno de desarrollo Visual Studio Code y como lenguaje de programación PHP para el back-end y JavaScript para el front-end. RNF-15 Implementación El diseño de la interfaz de usuario será desarrollado con HTML y CSS ampliándolo con el framework de Bootstrap. Tabla 56 - Requisitos no funcionales
51 REQUISITOS DE INFORMACIÓN ID Descripción RI-01 El sistema se encargará de almacenar la información de todos los usuarios de la plataforma. RI-02 El sistema se encargará de almacenar la información de todas las reservas que se creen en el sistema RI-03 El sistema se encargará de almacenar la información de los turnos RI-04 El sistema se encargará de almacenar la información de las distribuciones RI-05 El sistema se encargará de almacenar la información de las posiciones y mesas. RI-06 El sistema se encargará de almacenar la información de los comedores Tabla 57 - Requisitos de información MODELO ENTIDAD-RELACION Después de indicar todos los requisitos de información del sistema se representan a través de un diagrama entidad-relación. Este diagrama recoge los requisitos y les muestra de forma organizada indicando las principales entidades y relaciones que los caracterizan.
52 Figura 9 - Modelo Entidad - Relación
53 DICCIONARIO DE DATOS Una vez definidos y representados, el último paso es analizar detalladamente estos requisitos en base al modelo entidad-relación. Cada entidad está definida por una serie de atributos que, en este apartado, son identificados, analizados y referenciados a la propia entidad de manera única. ENTIDADES Id E-01 Nombre Solicitud Descripción Representa todas las reservas que se crearan en el sistema Campo Tipo Null Descripción Único Key Id INT ✘ Identificador ✔ ✔ Estado [Reservada, Pendiente, Cancelada] ✘ Estado en el que se encuentra la reserva ✘ ✘ Nombre STRING ✘ Nombre de la persona que hizo la reserva ✘ ✘ Teléfono STRING ✘ Teléfono de contacto de los comensales ✘ ✘ Email STRING ✔ Correo de contacto ✘ ✘ Fecha DATE ✘ Fecha de la reserva ✘ ✘ Hora TIME ✘ Hora de la reserva ✘ ✘ Comensales INT ✘ Número de comensales ✘ ✘ Niños INT ✔ Número de niños ✘ ✘ Adultos INT ✔ Número de adultos ✘ ✘ Tipo Menú [Menú, Carta, Menú Cerrado] ✘ Tipo de menú que pedirán en la comida ✘ ✘ Cuartos cordero INT ✔ Número de cuartos de cordero que reservan ✘ ✘ Preferencia [Interior, Terraza] ✔ Si prefieren hacer la reserva en la terraza o dentro del establecimiento ✘ ✘ Carrito BOOLEAN ✔ Si traen carrito para un bebé ✘ ✘ Trona BOOLEAN ✔ Si necesitan trona ✘ ✘ Alergias STRING ✔ Alergias y comentarios ✘ ✘ Tipo [Normal, Privada] ✘ Si la reserva es privada o no ✘ ✘ Tabla 58 - E-01 Solicitud
54 Id E-02 Nombre Turno Descripción Representan los periodos de tiempo en los que dan las diferentes comidas Campo Tipo Null Descripción Único Key Id STRING ✘ Identificador del turno ✔ ✔ Fecha DATE ✘ Fecha del turno ✘ ✘ Hora inicio TIME ✘ Hora de comienzo ✘ ✘ Hora fin TIME ✘ Hora de fin ✘ ✘ Tipo [Comida, Cena] ✘ Si el turno es de comida o de cena ✘ ✘ Tabla 59 - E-02 Turno Id E-03 Nombre Distribución Descripción Representa el estado de cada comedor dentro de un turno Campo Tipo Null Descripción Único Key Id INT ✘ Identificador ✔ ✔ Matriz STRING ✘ JSON que representa la distribución espacial de las mesas en forma de matriz ✘ ✘ Estado [Abierta, Cerrada] ✘ Indica si el comedor está abierto o cerrado ✘ ✘ Privado 1 INT ✘ Indica si tiene privado 1, y en el caso de tenerlo si está abierto o cerrado. ✘ ✘ Privado 2 INT ✘ Indica si tiene privado 2, y en el caso de tenerlo si está abierto o cerrado. ✘ ✘ Privado principal INT ✘ Indica si tiene privado principal, y en el caso de tenerlo si está abierto o cerrado. ✘ ✘ Tabla 60 - E-03 Distribución Id E-04 Nombre Comedor Descripción Instancia de cada uno de los comedores Campo Tipo Null Descripción Único Key Id INT ✘ Identificador ✔ ✔ Aforo INT ✘ Número máximo de comensales que pueden entrar ✘ ✘ Nombre STRING ✘ Nombre del comedor ✘ ✘ Mesas de 2 INT ✘ Número de mesas de 2 comensales com las que cuenta el comedor ✘ ✘ Mesas de 4 INT ✘ Número de mesas de 4 comensales com las que cuenta el comedor ✘ ✘ Mesas de 6 INT ✘ Número de mesas de 6 comensales com las que cuenta el comedor ✘ ✘ Mesas de 8 INT ✘ Número de mesas de 8 comensales com las que cuenta el comedor ✘ ✘ Tabla 61 - E-04 Comedor
55 Id E-05 Nombre Posición Descripción Representa la posición en la que se encuentran las mesas dentro de una distribución Campo Tipo Null Descripción Único Key Id INT ✘ Identificador ✔ Tabla 62 - E-05 Posición Id E-06 Nombre Mesa Descripción Representa cada una de las mesas de una posición de la distribución Campo Tipo Null Descripción Único Key Id INT ✘ Identificador ✘ ✔ Comensales INT ✘ Numero de comensales ✘ ✘ Forma [Square, Circle] ✘ Indica el tipo de mesa es, si redonda o cuadrada ✘ ✘ Tabla 63 - E-06 Mesa Id E-07 Nombre Usuario Descripción Representa los datos del usuario parfa acceder a la aplicación Campo Tipo Null Descripción Único Key Id INT ✘ Identificador ✘ ✔ Contraseña MD5(STRING) ✘ Contraseña hasheada ✘ ✘ Tabla 64 - E-07 Usuario RELACIONES Id R-01 Nombre Reservar 1 Descripción Representa a que turno pertenece una reserva Entidad Nombre Entidad Participación Cardinalidad E-01 Solicitud 0 1 E-02 Turno 0 N Tabla 65 - R-01 Reservar 1 Id R-02 Nombre Reservar 2 Descripción Representa en que posición se colocará la reserva Entidad Nombre Entidad Participación Cardinalidad E-01 Solicitud 0 1 E-05 Posición 0 1 Tabla 66 - R-02 Reservar 2 Id R-03 Nombre Tener 1 Descripción Representa cada una de los estados de los comedores para un turno Entidad Nombre Entidad Participación Cardinalidad E-02 Turno 1 4 E-03 Distribución 1 1
56 Tabla 67 - R-03 Tener 1 Id R-04 Nombre Tener 2 Descripción Representa las posiciones en las que las mesas están colocadas en cada distribución Entidad Nombre Entidad Participación Cardinalidad E-03 Distribución 1 N E-05 Posición 1 1 Tabla 68 - R-04 Tener 2 Id R-05 Nombre Configurar Descripción Representa el estado de un comedor dentro de un turno Entidad Nombre Entidad Participación Cardinalidad E-03 Distribución 1 1 E-04 Comedor 1 N Tabla 69 - R-05 Configurar Id R-06 Nombre Asignar Descripción Representa las mesas asignadas a cada posición de una distribución Entidad Nombre Entidad Participación Cardinalidad E-05 Posición 1 N E-06 Mesa 1 1 Tabla 70 - R-06 Asignar
63 MODELO LÓGICO DE DATOS En este apartado mostramos el modelo lógico de datos que surge de la síntesis del modelo Entidad-Relación en el apartado de requisitos de información (Figura 9). Al no haber relaciones N:N, las entidades se transforman en tablas y las relaciones se representan a través de Foreign Keys. Este modelo será utilizado posteriormente creando una clase por cada una de las tablas para luego crear instancias de las mismas y poder gestionar fácilmente los datos de la base de datos. TURNO ( Id, fecha, Hora Inicio, Hora Fin, tipo ) COMEDOR ( Id, Nombre, Aforo, Mesas de 2, Mesas de 4, Mesas de 6, Mesas de 8 ) DISTRIBUCIÓN( Id, Matriz, Estado, Privado 1, Privado 2, Privado Principal, Turno, Comedor ) FK: Turno → TURNO(Id) FK: Comedor → COMEDOR(Id) POSICIÓN ( Id, Distro ) FK: Distro → DISTRO(Id) MESA ( Id, Comensales, Forma, Posición, Distro ) FK: (Posición, Distro) → POSICIÓN(Id, Distro) SOLICITUD ( Id, Estado, Fecha, Hora, Tipo, Nombre, Email, Teléfono, Comensales, Adultos, Niños, Tipo de menú, Cuartos de cordero, Preferencia, Carrito, Trona, Alergias, Turno, Posición, Distro ) FK: Turno → TURNO(Id) FK: (Posición, Distro) → POSICIÓN(Id, Distro) USUARIO ( Login, Contraseña )
64 DIAGRAMA DE CLASES Figura 16 - Diagrama de clases
65 DISEÑO DE LA INTERFAZ DE USUARIO Dado que la aplicación está destinada a funcionar como una Single Page Aplicattion (SPA), esta es una aplicación web que carga una única página HTML y luego actualiza dinámicamente el contenido en esa página sin tener que recargarla por completo. Esto se logra mediante el uso de JavaScript para manipular y actualizar la interfaz de usuario. Algunas ventajas de las aplicaciones SPA son: - Experiencia de usuario más rápida: al cargar solo una vez la página inicial y actualizar el contenido de forma dinámica, las aplicaciones SPA ofrecen una experiencia de usuario más rápida y fluida. No hay tiempos de carga entre diferentes páginas, lo que mejora la percepción del rendimiento. - Interactividad: las SPAs permiten una interacción fluida y en tiempo real con los usuarios. Los cambios de contenido se pueden realizar de forma instantánea sin tener que cargar una página nueva, lo que proporciona una sensación más rápida y fluida al interactuar con la aplicación. - Menor consumo de ancho de banda: al cargar solo los datos necesarios y actualizar el contenido de manera incremental, las SPAs reducen la cantidad de datos transferidos entre el cliente y el servidor. Esto puede resultar en un menor consumo de ancho de banda, especialmente en conexiones más lentas o dispositivos móviles. - Separación de responsabilidades: las SPAs siguen una arquitectura de cliente-servidor en la que gran parte del procesamiento y la lógica de presentación se realiza en el cliente. Esto permite una mejor separación de responsabilidades entre el cliente y el servidor, lo que facilita el mantenimiento y la escalabilidad de la aplicación. - Reutilización de código: al utilizar frameworks y bibliotecas JavaScript para el desarrollo de SPAs, es posible reutilizar componentes y módulos de código en diferentes partes de la aplicación. Esto puede acelerar el desarrollo, mejorar la consistencia y facilitar la colaboración en equipos de desarrollo. Por lo tanto, se divide la interfaz en 2 bloques, el de acceso a la página, y la página principal.
66 INTERFAZ DE ACCESO Se trata de un formulario de inicio estándar formado por el nombre de usuario y la contraseña y un botón para acceder. Figura 17 - Interfaz de acceso
67 PÁGINA PRINCIPAL Esta página servirá de centro de control para la aplicación, permitiendo al usuario acceder a toda la funcionalidad de la misma. Para la funcionalidad que no se puede abordar dentro de la página, se utilizarán ventanas emergentes, t6ambién denominadas pop-ups, dentro de la página principal. Figura 18 - Interfaz página principal Para poder explicar la funcionalidad de la página la dividiremos en diferentes apartados.
68 Menú horizontal En esta menú encontraremos: - Botón crear reservas: botón que desencadenará un pop-up en el que se lleva a cabo el proceso. - Selector de fecha: permite al usuario cambiar los datos que visualizará. - Botón de cierre de sesión Figura 19 - Interfaz menú horizontal Ficha de turno Este apartado reúne toda la información de cada turno. En él podemos encontrar: - Identificador del turno - Botones de cambio de turno - Resumen de comedores: permite cambiar el estado del comedor siempre que no tenga reservas. - Resumen de reservas - Ficha de comedor Figura 20 - Interfaz ficha turno
69 Ficha de comedor Este apartado reúne toda la información del comedor. En él podemos encontrar: - Sección de distribución espacial o Botones de cambio de comedor o Canva: representación gráfica de la distribución espacial de las mesas, diferenciando si están reservadas o no. - Sección de lista de reservas o Botón de cambio de vista: cambia entre las reservas asignadas al comedor y todas las reservas (Incluyendo las canceladas) o Lista de reservas: formada por fichas de reserva que incluyen la información más relevante de la reserva y al pulsarla desencadena un pop-up con la información de la reserva. Figura 21 - Interfaz ficha comedor
70 Pop-up formulario creación de reserva Figura 22 - Interfaz pop-up formulario de creación reserva Pop-up selector de mesa simple Figura 23 - Interfaz pop-up selector mesa simple
71 Pop-up selector de combinación de mesas Figura 24 - - Interfaz pop-up selector combinación de mesas Pop-up información de reserva Figura 25 - Interfaz pop-up detalle de reserva Pop-up formulario modificación reserva Figura 26 - Interfaz pop-up formulario de modificación de reserva
72 CAPITULO 6. IMPLEMENTACIÓN ESTRUCTURA INTERNA DEL PROYECTO En esta sección se examina la estructura interna del proyecto. Se define como estructura interna a la organización de los archivos en carpetas y paquetes, de modo que facilite al desarrollador un mejor rendimiento y fluidez al crear nuevas funcionalidades o llevar a cabo tareas de mantenimiento en la aplicación. La estructura del proyecto consta de: - Index.php Archivo inicial desde el que arrancará el proceso de login. - View/ Carpeta que almacena la vista de la página principal de la aplicación. En el caso de que la aplicación crezca y utilice diferentes vistas y funcionalidades, aquí se almacenarán las diferentes vistas de la aplicación web. En ella, actualmente, sólo se encuentra la vista home.php. - Model/ En esta carpeta se almacenan diferentes archivos PHP los cuales hacen referencia a cada una de las entidades de la base de datos. En cada uno de ellos se encuentra la clase que las representan con sus atributos y métodos. Nombre Descripción del archivo Comedor.php Clase referente a la entidad Comedor Distribucion.php Clase referente a la entidad Distribución Mesa.php Clase referente a la entidad Mesa Posicion.php Clase referente a la entidad Posición Solicitud.php Clase referente a la entidad Solicitud Turno.php Clase referente a la entidad Turno Usuario.php Clase referente a la entidad usuario Tabla 71 - Archivos de la carpeta Model
79 En la siguiente imagen se muestra una llamada Ajax para obtener los datos. Cabe destacar que, en este caso, el controller.php no devuelve una página HTML, sino que devolverá información en formato JSON, el cual será tratado en el controlador de JS. Figura 34 - Código JS de obtención de datos a través de Ajax
80 En la imagen que aparece a continuación se muestran los métodos para obtener los datos de los archivos PHP mencionados anteriormente. Figura 35 Código del archivo controller.php
81 Figura 36 - Función para obtener datos del handler.php
82 Cabe señalar que muchos de los métodos desarrollados en PHP devuelven un objeto JSON que generalmente tiene la estructura de: - exito: que indica si se ha realizado con éxito la función. - mensajeError: en caso de error, indica qué lo ha podido producir. Sirve para mostrar errores al usuario final y también resulta muy útil para depurar el código. El resto de la estructura es variable y suele contener los datos que requiera el método que llame a la función. GESTIÓN DE COMEDORES DE LOS TURNOS En esta etapa se implementa la funcionalidad que permite abrir y cerrar los comedores. Mediante el controlador JS hacemos que las casillas que permiten desencadenar la llamada Ajax estén activas en el caso de que el comedor esté cerrado, o que esté abierto y no haya mesas reservadas para dicho comedor. Figura 37 - Ficha información comedores
83 Posteriormente, al marcar o desmarcar una de estas casillas, se desencadena una llamada Ajax, la cual cambia el estado de dicha distribución en la base de datos. Figura 38 - Evento JS que lanza llamada para abrir o cerrar comedores
84 GESTIÓN DE RESERVAS En esta etapa se implementa por primera vez el pop-up. Este pop-up tiene diferentes elementos que se muestran y ocultan en función de la necesidad. Consta de 3 elementos. El primero es el formulario, que servirá para crear o modificar las reservas. El segundo es el selector de posiciones que nos mostrará una lista de las mesas o combinaciones de mesas en las que podrá colocar la reserva. Por último, el elemento que muestra toda la información sobre una reserva ya creada. También se crea un elemento emergente que mostrará los mensajes del estado de las funciones para mostrar mensajes de éxito o de error. Aquí podemos ver los métodos que los generan desde el controlador Front-End. Figura 39 - Funciones JS que generan contenido HTML de las ventanas emergentes La implementación de la funcionalidad que permite al usuario gestionar las reservas ha seguido el siguiente orden. Creación de reservas Para ello se desarrolla una llamada Ajax que envía los datos de la reserva. Esta llamada depende del tipo de reserva que sea. Si es una reserva “Normal” llamará a la función para buscar posiciones; si es una reserva privada, llamará a la función de creación de reserva.
85 Una vez se hace la llamada al Back-End. El controlador lanza la función correspondiente. La función de búsqueda de posiciones dependerá del número de comensales. Si existe una posición con el mismo o mayor número de comensales, devolverá un array de todas las posiciones posibles separadas por comedores. En caso contrario, realizará una búsqueda de todas las combinaciones posibles de las posiciones libres que hay en cada uno de los comedores, devolviendo un array con todas ellas. Cada una de estas combinaciones incluye todas las mesas que se juntarán y la matriz resultante para la distribución en el caso de que se junten. Antes de esto, hay que explicar cómo está representada la distribución en la matriz. Para ello, hemos utilizado números enteros donde los números mayores que 0 representar las posiciones, los valores 0 representan espacios libres y por último, los números negativos representan paredes y/o columnas (-1), mesas y mobiliario de uso de los trabajadores (-2), zonas de paso (-3) y espacio de las posiciones (-4). Cada una de las posiciones genera un espacio alrededor suyo ocupando un elemento más de manera horizontal y vertical, sin tener en cuenta los elementos diagonales. Esto se tendrá en cuenta a la hora de recolocar posiciones siguiendo las siguientes reglas: - Una posición puede no tener espacio por uno de los lados menores si se encuentra en contacto directo con una pared, columna o zona de paso. - El espacio que genera una nueva posición no podrá consumir el espacio de otra posición ya existente. Figura 40 - Boceto inicial de matriz para distribución espacial
86 Para realizar esta búsqueda de las diferentes combinaciones, la función sigue una serie de pasos: 1. Recorrer la matriz en busca de una posición libre. 2. Recorrer vertical y horizontalmente desde la posición libre en busca de otra posición libre. En el caso de encontrarse una pared, columna o mesa reservada, dejará de recorrer en dicho sentido. a. En el caso de encontrar otra posición libre que pueda alojar a los comensales de la reserva, continuará la ejecución. b. En caso contrario, seguirá buscando otra posición libre hasta cumplir lo anterior. 3. Teniendo ya las posiciones para combinar, se eliminan de la matriz junto con su espacio. 4. Se calcula el largo de la nueva posición que se creará al combinar las seleccionadas. 5. Se busca un espacio donde podría colocar, ya sea vertical u horizontalmente. a. Si se encuentra, continúa. b. En caso contrario, se rompe la ejecución de los bucles. 6. Se coloca la matriz y se guarda una imagen de la matriz resultante junto un array con las posiciones a combinar. 7. Se pasa a buscar otra combinación.
87 Este es el método que se encarga de buscar las posiciones simples. Debido a la extensión del método que busca las combinaciones, no se mostrará a través de una imagen y se podrá acceder al mismo dentro del código proporcionado. Figura 41 - Funciones PHP de obtención de posiciones disponibles En las siguientes imágenes se muestra el código del selector de posiciones con sus dos posibles vistas según el tipo de posiciones obtenidas. En la primera se muestra cómo se crea la estructura interna del pop-up, y en la segunda cada una de las fichas que representan las posibles opciones que el usuario puede elegir.
88 Figura 42 - Función JS que genera la estructura HTML del selector de posiciones Figura 43 - Función JS que genera el HTML de las fichas de selección de posición
95 CAPITULO 7. PRUEBAS PRUEBAS DE CAJA BLANCA Las pruebas de caja blanca, también conocidas como pruebas de caja clara o pruebas de estructura, son una técnica utilizada en el desarrollo de software para evaluar el funcionamiento interno de un sistema. Se enfocan en analizar y probar el código fuente, la lógica interna y la estructura del software. En las pruebas de caja blanca, los desarrolladores o testers tienen un conocimiento detallado de cómo está construido el sistema, incluyendo la arquitectura, las funciones, las rutas de ejecución y las estructuras de datos. Esto les permite diseñar casos de prueba basados en esta información interna. Estas pruebas se llevan a cabo en la etapa de desarrollo del código, puesto que se realizan sobre éste con los siguientes objetivos: 1. Prueba de cobertura de código: se evalúa cuántas líneas del código fuente han sido ejecutadas durante las pruebas. Esto ayuda a identificar áreas no probadas y mejorar la cobertura del código. 2. Prueba de bucles y condiciones: se diseñan casos de prueba que cubren todas las posibles ramas lógicas, como bucles, condiciones if/else y casos de borde, para asegurar que todas las condiciones sean evaluadas correctamente. 3. Prueba de flujo de datos: se examina cómo se manejan y transforman los datos dentro del software, identificando posibles errores o inconsistencias en la manipulación de datos. 4. Revisión del código: se analiza el código fuente en busca de posibles errores o vulnerabilidades, siguiendo buenas prácticas de codificación y estándares establecidos. En resumen, las pruebas de caja blanca son una técnica de prueba que se enfoca en la lógica interna y el código fuente de un sistema para garantizar su correcto funcionamiento. Ayudan a identificar errores en la implementación y a mejorar la calidad del software. Figura 50 - Pruebas de caja blanca
96 Estas pruebas se realizarán a través del uso de la consola del navegador donde, gracias a las funciones de console.log, podremos mostrar los datos que nos llegan al Front-End desde el Back-End. De esta manera, podemos comprobar el correcto funcionamiento del controlador JS. Para comprobar el funcionamiento del controlador PHP, también se hará uso de estas herramientas debido a que en las peticiones Ajax que realizamos, el controlador Back-End nos devuelve un JSON que incluye éxito de la función, mensaje de error si los hubiera, y los datos que se requieren. De esta forma, podemos depurar el código de manera sencilla. Figura 51 - Ejemplo console.log para pruebas de caja blanca
97 PRUEBAS DE CAJA NEGRA Las pruebas de caja negra son una técnica utilizada en el desarrollo de software para evaluar el comportamiento externo de un sistema sin conocer su implementación interna. Se centran en probar la funcionalidad del software desde la perspectiva del usuario o cliente. En las pruebas de caja negra, los testers o evaluadores no tienen conocimiento detallado de cómo está construido el sistema ni acceden directamente al código fuente. En cambio, se centran en la entrada y salida del sistema, así como en los requisitos funcionales y no funcionales del software. Figura 52 - Pruebas de caja negra Debido al elevado número de casuísticas, algunas de las pruebas recopiladas engloban varias pruebas por tipología de reservas. PCN-01: Inicio de sesión Objetivo de la prueba Comprobar que el usuario puede acceder a la página principal desde la página de acceso. Precondiciones Debe existir el usuario y contraseña. Datos de entrada Usuario y contraseña correctos. Respuesta esperada Redirección a la página principal. Tabla 75 - PCN-01: Inicio de sesión PCN-02: Cierre de sesión Objetivo de la prueba Comprobar que el usuario puede cerrar su sesión y no se puede acceder a la aplicación sin volver a iniciar sesión. Precondiciones Debe encontrarse en la página principal. Datos de entrada Pulsar el botón de cerrar sesión. Respuesta esperada Eliminación de la sesión y redirección a la página de acceso. Tabla 76 - PCN-02: Cierre de sesión
98 PCN-03: Cambio de fecha Objetivo de la prueba Comprobar que el usuario puede cambiar la fecha para que se muestren los datos de dicha fecha. Precondiciones Debe encontrarse en la página principal. Datos de entrada Seleccionar una nueva fecha en el selector de fechas. Respuesta esperada La información de la página cambia a un turno de esa fecha. Tabla 77 - PCN-03: Cambio de fecha PCN-04: Abrir comedor Objetivo de la prueba Comprobar si el usuario puede abrir un comedor. Precondiciones Debe encontrarse en la página principal y haber algún comedor abierto sin comensales. Datos de entrada El usuario debe marcar la casilla de un comedor que este desmarcada. Respuesta esperada La distribución de ese comedor para ese turno queda abierta y en ella pueden colocarse reservas. Tabla 78 - PCN-04: Abrir comedor PCN-05: Cerrar comedor Objetivo de la prueba Comprobar si el usuario puede cerrar un comedor. Precondiciones Debe encontrarse en la página principal y haber algún comedor cerrado. Datos de entrada Desmarcar algún comedor que este marcado. Solo podrá si no tiene reservas asignadas. Respuesta esperada Solo puede desmarcar comedores abiertos sin reservas. La distribución se queda cerrada. Tabla 79 - PCN-05: Cerrar comedor PCN-06: Cambiar de turno Objetivo de la prueba Comprobar que el usuario puede navegar entre los diferentes turnos. Precondiciones Debe encontrarse en la página principal. Datos de entrada El usuario pulsa sobe los botones de cambio de turno. Respuesta esperada La ficha de turno cambia al turno siguiente o al anterior. Tabla 80 - PCN-06: Cambiar de turno
99 PCN-07: Cambiar de comedor Objetivo de la prueba Comprobar que el usuario puede navegar entre los diferentes comedores. Precondiciones Debe encontrarse en la página principal. Datos de entrada El usuario pulsa sobe los botones de cambio de comedor. Respuesta esperada La ficha de comedor cambia al comedor siguiente o al anterior. Tabla 81 - PCN-07: Cambiar de comedor PCN-08: Cambiar vista de lista de reservas Objetivo de la prueba Comprobar que el usuario puede alternar en la lista de reservas entre la vista de reservas del turno y reservas del comedor. Precondiciones Debe encontrarse en la página principal y haber reservas en el turno correspondiente. Datos de entrada Debe pulsar el botón de cambio de vista. Respuesta esperada La vista de lista de reserva debe alternar entre las reservas del turno (que incluyen las canceladas) y las reservas del comedor. Tabla 82 - PCN-08: Cambiar vista de lista de reservas PCN-09: Formulario de creación de reservas Objetivo de la prueba Comprobar que el usuario puede rellenar el formulario y enviar sus datos al backend. Precondiciones Debe encontrarse en la página principal y haber pulsado el botón de crear reserva. Datos de entrada Rellenará, como mínimo, los campos obligatorios: - Nombre - Comensales - Teléfono - Fecha - Hora - Tipo Respuesta esperada Dependiendo del tipo de reserva y el número de comensales, el Back- End realizara una de las siguientes acciones: - Buscará y devolverá las posiciones simples para crear la reserva. - Buscará y devolverá las combinaciones de posiciones posibles para crear la reserva. - Gestionará las matrices cerrando el privado correspondiente y en caso de éxito creará la reserva. Tabla 83 - PCN-09: Formulario de creación de reservas
100 PCN-10: Selección de posición simple Objetivo de la prueba Comprobar que el usuario puede seleccionar una posición simple para crear la reserva. Precondiciones Debe haber rellenado y enviado el formulario de creación de reserva y debe haber una o más mesas que puedan abarcar el número de comensales de la reserva. Datos de entrada Selección de una posición . Respuesta esperada La reserva se crea con éxito. Tabla 84 - PCN-10: Selección de posición simple PCN-11: Selección de posición combinada Objetivo de la prueba Comprobar que el usuario puede seleccionar una combinación de posiciones para crear la reserva. Precondiciones Debe haber rellenado y enviado el formulario de creación de reserva y debe no haber una o más mesas que puedan abarcar el número de comensales de la reserva. Datos de entrada Selección de una combinación de posiciones. Respuesta esperada La reserva se crea con éxito y la distribución y posiciones se modifican con éxito. Tabla 85 - PCN-11: Selección de posición combinada PCN-13: Visualización detalle de reserva Objetivo de la prueba Comprobar que el usuario puede ver toda la información de una reserva. Precondiciones Debe encontrarse en la página principal y debe existir alguna reserva en la lista de reservas. Datos de entrada Debe pulsar la ficha de la reserva. Respuesta esperada Se despliega un pop-up con la información de la reserva. Tabla 86 - PCN-13: Visualización detalle de reserva PCN-14: Modificación datos de reserva Objetivo de la prueba Comprobar que el usuario puede modificar una reserva. Precondiciones Debe encontrarse en la página principal viendo el detalle de una reserva y haber pulsado el botón de modificar. Datos de entrada Rellenar cualquiera de los datos que permite modificar el formulario. Respuesta esperada La reserva debe modificarse con éxito. Tabla 87 - PCN-14: Modificación datos de reserva
101 PCN-15: Cambio de posición de reserva Objetivo de la prueba Comprobar que el usuario puede cambiar la posición de una reserva. Precondiciones Debe encontrarse en la página principal viendo el detalle de una reserva y haber pulsado el botón de cambiar posición. Datos de entrada Seleccionar una posición diferente. Respuesta esperada La reserva debe asignarse a esa nueva posición y distro. Tabla 88 - PCN-15: Cambio de posición de reserva PCN-16 Cancelar reserva Objetivo de la prueba Comprobar que el usuario puede cancelar una reserva. Precondiciones Debe encontrarse en la página principal viendo el detalle de una reserva. Datos de entrada Debe pulsar el botón de cancelar Respuesta esperada Dependiendo del tipo de reserva y si la posición es simple o combinada, el Back-End realizará una de las siguientes acciones: - Cancelar la reserva. - Dividir la posición en varias y cancelar la reserva. - Gestionar los privados y cancelar la reserva. Tabla 89 - PCN-16 Cancelar reserva
102 CAPITULO 8. MANUAL DE USUARIO En este apartado se va a realizar una explicación acompañada de capturas con el fin de que el usuario final tenga conocimiento de todo lo que puede realizar dentro de la aplicación y cómo debe hacerlo para que, pasadas 1 o 2 horas, éste sea capaz de poder gestionar la información dentro de la página principal de forma autónoma. INICIO DE SESIÓN Nada más acceder a la aplicación, se presentará un formulario de acceso, en el que se debe introducir el usuario y contraseña facilitado por el administrador. Figura 53 – Manual: inicio de sesión Una vez introducidos, pulsar acceder para entrar en la aplicación. En caso de ser incorrectos, la página nos redirigirá de vuelta al formulario de acceso.
103 PÁGINA PRINCIPAL Una vez que el usuario accede a la página principal, tendrá acceso a toda la funcionalidad de la aplicación. Esta página servirá al usuario de centro de control desde el que ver toda la información y poder gestionar reservas, turnos y distribuciones. VISUALIZACIÓN DE INFORMACIÓN Figura 54 - Manual: página principal La página principal está compuesta por 2 elementos: 1. Menú horizontal En éste se muestra el selector de fecha (1), que permite seleccionar la fecha de la que queremos ver la información de sus turnos. También se encuentran 2 botones, el primero que inicia el proceso de creación de reserva (2), y el segundo que permite al usuario cerrar la sesión (3). 2. Ficha de turno Todo la información se presenta a través de las fichas de turno. El usuario podrá navegar a través de los turnos utilizando los botones de cambio de turno (4). Esta ficha presenta una serie de subelementos para dividir la información del turno:
104 2.1.Resumen de comedores En éste se muestra el estado de los comedores a través de las casillas, el estado de las salas privadas a través de los iconos y el número de comensales. Figura 55 - Manual: resumen de comedores 2.2.Resumen de reservas En el que se muestra el número total de reservas y comensales, el número de cuartos de cordero y el número de menús reservados. Figura 56 - Manual: resumen de reservas
111 FUTURAS AMPLIACIONES Cómo se ha mencionado antes, existen desarrollos que no llegaron a implementarse debido al cambio de complejidad de algunas tareas y se quedaron fuera del alcance del proyecto; y también algunos que se han planteado, pero no entraron en ningún momento en el alcance del proyecto. Entre estos podemos destacar: - Creación de perfiles con diferentes funcionalidades disponibles. - Crear funcionalidad de recolocación automática de todas las reservas (respetando la preferencia de las mismas). - Permitir la exportación e importación de reservas a través de csv. - Conectar con los diferentes métodos que tiene el restaurante para crear solicitudes de reservas en estado pendiente y que posteriormente se acepten. - Que las mesas se coloquen automáticamente. Para esto habría que negociar con el restaurante, ya que la elección de mesas era un requisito. Pero se podría dejar la posibilidad de cambiar de mesa y colocar de manera automática las reservas. De esta manera la creación de reservas siempre sería de un único paso para el trabajador. - Crear otra página de acceso público que permita solicitar reservas y las cree en la base de datos en estado pendiente, además en estas páginas se podría adjuntar los diferentes menús y la carta. - Hacer que se pueda interactuar con el plano, moviendo las posiciones o pulsándolas para crear en dicha posición una nueva reserva.
112 REFERENCIAS Página oficial de Visual Studio Code: utilizada para descargar e instalar Visual Studio Code. - Visual Studio Code. Disponible en https://code.visualstudio.com/ (Visitado en Febrero del 2022). Página oficial de Apache: utilizada para descargar e instalar XAMPP. - Apache Friends. Disponible en https://www.apachefriends.org/es/index.html (Visitado en febrero del 2022). Página oficial de GitHub: utilizada para descargar e instalar GitHub. - GitHub. Disponible en https://github.com/ (Visitado en abril del 2022). Páginas de aplicaciones similares: utilizadas para coger ideas e información sobre la competencia existente. - Restoo. Disponible en https://resto.me (Visitado en febrero del 2022) - Resmio. Disponible en https://resmio.com (Visitado en febrero del 2022) Página de FlatIcon: utilizada para descargar iconos e imágenes. - FlatIcon. Disponible en https://www.flaticon.com (Visitado en junio del 2023). Página oficial de Bootstrap: utilizada para aprender y utilizar sobre como importar Bootstrap a la aplicación web para poder darle estilos de forma sencilla. - Bootstrap. Disponible en https://www.bootstrap.com (Visitado en junio del 2023). Foro de StackOverflow: utilizada para consultar dudas y buscar solución de errores en el código. - StackOverflow. Disponible en https://stackoverflow.com/ (Visitado en junio del 2023). Manual de PHP: utilizada para aprender y consultar dudas sobre el lenguaje de PHP. - PHP. Disponible en https://www.php.net/manual/es/index.php (Visitado en mayo del 2023). Escuela de W3School: utilizada para aprender y consultar dudas sobre los diferentes lenguajes utilizados. - W3School. Disponible en https://www.w3schools.com/ (Visitado en junio del 2023).