Supletorio: Gestión de Pedidos de Comida#
Introducción#
En este taller, diseñaremos y comprenderemos tres tipos fundamentales de diagramas UML: diagrama de estado, diagrama de despliegue, y diagrama de colaboración, utilizando como caso de estudio un sistema digital de gestión para pedidos de comida. Este sistema permite a los usuarios realizar diversas acciones como seleccionar platillos, realizar pedidos, monitorear el estado de sus órdenes y gestionar sus cuentas. La aplicación opera en una arquitectura distribuida de tres capas, con un servidor central que conecta a una base de datos, accesible desde dispositivos de los usuarios y un sistema de cocina.
Objetivo#
Comprender la importancia y la estructura de los diagramas UML mencionados.
Diseñar una solución funcional que modele el flujo de estados, la arquitectura técnica y la colaboración entre los componentes del sistema.
Parte 1: Diagrama de Estado#
Descripción#
El diagrama de estado modelará los posibles estados por los que pasa un pedido dentro del sistema y las transiciones entre estos estados según los eventos.
Requisitos#
Identifica los elementos clave: El foco será el objeto pedido dentro del sistema.
Lista los estados posibles:
Estado inicial: Pendiente.
Estados intermedios: En preparación, Listo para entrega, En camino.
Estado final: Entregado o Cancelado.
Define eventos de transición:
Pedido confirmado: cambia de «Pendiente» a «En preparación».
Preparación finalizada: cambia de «En preparación» a «Listo para entrega».
Pedido recogido por repartidor: cambia de «Listo para entrega» a «En camino».
Pedido entregado: cambia de «En camino» a «Entregado».
Cancelación del pedido: cambia de «Pendiente» o «En preparación» a «Cancelado».
Condicionales:
Un pedido no puede ser cancelado si ya está «Listo para entrega» o en estados posteriores.
Solo los usuarios autenticados pueden realizar y monitorear pedidos.
Pedidos en estado «Cancelado» no pueden reactivarse.
Incluye estados inicial y final.
Esquematiza las transiciones mediante flechas con eventos claramente indicados.
Parte 2: Diagrama de Despliegue#
Descripción#
El diagrama de despliegue representará cómo el sistema de gestión de pedidos está distribuido en nodos físicos y cómo se conectan entre sí.
Requisitos#
Nodos físicos:
Un servidor central que aloja la aplicación web y APIs.
Una base de datos para almacenar información de los usuarios, pedidos y el menú.
Dispositivos del usuario final (laptops, smartphones).
Dispositivos en la cocina (tablets o pantallas para los cocineros).
Dispositivos para repartidores (smartphones).
Artefactos:
Servidor central:
Backend implementado en un framework como Django o Express.js.
APIs REST para comunicación cliente-servidor.
Base de datos:
Tablas para usuarios, pedidos, estados de pedidos y menú.
Dispositivos del usuario:
Frontend ejecutado en navegadores web o apps móviles.
Dispositivos de cocina:
Interfaz simplificada para recibir y actualizar el estado de los pedidos.
Conexiones:
Los dispositivos de usuarios y cocina interactúan con el servidor mediante HTTPS.
El servidor se conecta a la base de datos a través de una red interna segura.
Detalles adicionales:
Seguridad: Autenticación de usuarios y repartidores mediante JWT.
Rendimiento: Uso de caching para el menú y actualizaciones en tiempo real mediante WebSockets.
Escalabilidad: Uso de servidores en la nube para soportar alta concurrencia.
Representar gráficamente las conexiones entre nodos.
Parte 3: Diagrama de Colaboración#
Descripción#
El diagrama de colaboración modelará el proceso de realizar un pedido por parte de un usuario.
Requisitos#
Caso de uso: Modelar la interacción para que un usuario seleccione platillos y realice un pedido.
Actores y objetos:
Actores principales: Usuario y Cocinero.
Objetos: Frontend, backend, base de datos, dispositivo de cocina.
Secuencia de interacciones:
El usuario inicia sesión y selecciona platillos desde el frontend.
El frontend envía la solicitud del pedido al backend.
El backend verifica:
Si los platillos seleccionados están disponibles.
Si el usuario tiene métodos de pago registrados.
Si es válido:
El backend registra el pedido en la base de datos.
Envía la orden al dispositivo de cocina.
Devuelve una confirmación al frontend.
Si no es válido:
El backend envía un mensaje de error.
El frontend muestra al usuario el resultado.
Restricciones:
Los usuarios solo pueden realizar un pedido activo a la vez.
Los pedidos deben confirmarse en un tiempo límite de 15 minutos tras ser creados.
Representación gráfica:
Incluye líneas de comunicación entre los objetos.
Los mensajes deben estar numerados, con al menos 5 interacciones en total.
Entregables#
Un diagrama de estado claro y completo para el flujo de estados del pedido.
Un diagrama de despliegue que represente los nodos, artefactos y sus relaciones.
Un diagrama de colaboración que modele la interacción para la funcionalidad de realizar un pedido.