UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
Universidad del Perú, Decana de América
Facultad de Ingeniería de Sistemas e Informática
E. P. Ingeniería de Sistemas
Grupo 3: Proyecto Final
ASIGNATURA
Sistema Distribuidos
DOCENTE
Erwin Mac Dowall Reynoso
GRUPO: 2
INTEGRANTES
Palacios Villegas, Fabio Josue
Huerta Muñoz, Jhon Aurelio
Mantilla Aguirre, Shamyhr Angel
Romero Ovalle, Antony Samuel
Huaroc Ricse Paul
Lima, 2023
INDICE
1. INTRODUCCION.......................................................................................................................................... 3
1.1. ANTECEDENTES................................................................................................................................................3
1.2. OBJETIVO GENERAL .........................................................................................................................................3
1.3. OBJETIVOS ESPECIFICOS ..................................................................................................................................3
1.4. ALCANCE DEL PROYECTO .................................................................................................................................4
2. MARCO TEÓRICO ....................................................................................................................................... 4
3. DESCRIPCIÓN DEL PROBLEMA ..................................................................................................................... 5
4. ESPECIFICACIÓN FUNCIONAL ...................................................................................................................... 5
4.1. DESCRIPCIÓN DEL NEGOCIO ............................................................................................................................6
4.2. PROCESOS DEL NEGOCIO .................................................................................................................................6
4.3. MODELO DEL DOMINIO ...................................................................................................................................7
5. VISTA LOGICA .......................................................................................................................................... 12
6. VISTA FISICA ............................................................................................................................................ 13
7. VISTA DE IMPLEMENTACION .................................................................................................................... 14
8. DIAGRAMA DE SECUENCIAS...................................................................................................................... 15
9. DIAGRAMA DE PAQUETES ........................................................................................................................ 16
10. COMPILACIÓN DEL SISTEMA ................................................................................................................. 17
11. CONCLUSIÓN ....................................................................................................................................... 22
1. INTRODUCCION
1.1. ANTECEDENTES
La gestión eficiente de los procesos de negocio es fundamental en la competitividad y éxito de las
empresas. La necesidad de optimizar y sincronizar la ejecución de estos procesos ha llevado al
desarrollo de soluciones tecnológicas como los sistemas de middleware y los servicios web.
En el contexto empresarial, la empresa "FISI Útiles" se dedica a la venta de suministros de oficina y
escolares. Para mejorar su eficiencia operativa y brindar un mejor servicio a los clientes, se ha
identificado la necesidad de automatizar y sincronizar la gestión de órdenes de compra. Este proceso
implica múltiples pasos, desde la recepción de órdenes de compra hasta la entrega de los productos
a los clientes.
La sincronización de estos procesos es esencial para garantizar que las órdenes de compra se manejen
de manera efectiva, evitando retrasos, errores y asegurando una experiencia de cliente óptima. Para
lograr esto, se busca demostrar la aplicabilidad de la tecnología de middleware y servicios web para
orquestar estos procesos de negocio de manera sincronizada.
La orquestación de procesos de negocio a través de middleware y servicios web permitirá a "FISI
Tiendas Útiles" automatizar y optimizar la gestión de órdenes de compra, desde la recepción inicial
hasta la entrega final, mejorando la eficiencia operativa y la satisfacción del cliente. Además, la
implementación exitosa de esta solución tecnológica servirá como un caso de estudio relevante para
demostrar cómo las tecnologías de middleware y servicios web pueden ser utilizadas en el entorno
empresarial para la gestión de procesos de negocio.
1.2. OBJETIVO GENERAL
El objetivo general en este contexto es crear con éxito un modelo de un Sistema distribuido para la
Planificación de Recursos Empresariales (ERP, por sus siglas en inglés) en el negocio “FISI Tienda
útiles”.
1.3. OBJETIVOS ESPECIFICOS
• Identificar los requisitos específicos de “FISI Tienda útiles”
• Desarrollar un sistema distribuido de ERP que se adapte a las necesidades y operaciones particulares
de " FISI Tienda útiles " permitiendo la gestión y automatización de procesos empresariales.
• Evaluar el correcto funcionamiento del sistema ERP y la comunicación entre módulos
1.4. ALCANCE DEL PROYECTO
En el presente documento abordaremos los casos de uso más importantes para el Sistema de
Ventas de la empresa “FISI Tienda” en base al modelo de vistas 4+1 utilizando el estilo
arquitectónico de 3 capas, además de mencionar los procesos de negocio de la empresa,
modelo de datos e información adicional.
2. MARCO TEÓRICO
Automatización de negocios
La automatización de negocios se refiere a la aplicación de tecnología y sistemas automatizados para
llevar a cabo tareas y procesos comerciales de manera eficiente y con mínima intervención humana.
Esto implica la sustitución de tareas manuales repetitivas por procesos automatizados, lo que puede
incluir la gestión de datos, la comunicación, la toma de decisiones y la ejecución de tareas específicas
dentro de una organización.
Uno de los beneficios clave de la automatización de negocios es la mejora de la eficiencia y la
productividad. Algunos de los beneficios específicos incluyen:
• Reducción de Errores: La automatización reduce la probabilidad de errores humanos en tareas
repetitivas, lo que conduce a una mayor precisión en los procesos comerciales.
• Ahorro de Tiempo: Automatizar tareas permite la ejecución más rápida y constante, lo que ahorra
tiempo y recursos valiosos.
• Reducción de Costos: La automatización a menudo conlleva una disminución de los costos
operativos al eliminar la necesidad de mano de obra adicional y acelerar los procesos.
• Mayor Escalabilidad: Los sistemas automatizados pueden adaptarse y crecer con facilidad a medida
que una empresa se expande, lo que facilita la escalabilidad.
• Mejora en la Experiencia del Cliente: La automatización puede llevar a una atención al cliente más
rápida y eficiente, mejorando la satisfacción del cliente.
• Toma de Decisiones Informada: Los sistemas automatizados pueden proporcionar datos en tiempo
real, lo que permite a los gerentes tomar decisiones más informadas y estratégicas.
• Optimización de Procesos: La automatización permite la optimización de procesos, lo que conduce
a una mejor gestión y utilización de recursos.
Middleware
Es un software de conectividad es una colección de servicios que posibilita la comunicación entre
varios procesos en diferentes computadoras a través de una red. Estos servicios se encargan de
ocultar las diferencias técnicas entre las máquinas, simplifican la complejidad subyacente y ofrecen
a los desarrolladores de aplicaciones un enfoque de programación más accesible.
Algunas funciones comunes del middleware incluyen:
• Integración de datos: el middleware puede permitir el intercambio de datos y la integración entre
sistemas, bases de datos y aplicaciones dispares. Puede transformar datos de un formato a otro,
asegurando la compatibilidad.
• Comunicación: el middleware proporciona un medio para que diferentes componentes de software
se comuniquen entre sí, a menudo utilizando protocolos e interfaces estandarizados.
• Gestión de transacciones: en sistemas distribuidos, el middleware puede gestionar transacciones para
garantizar coherencia y confiabilidad. Esto es importante en escenarios como el del comercio
electrónico.
• Seguridad: el middleware puede implementar medidas de seguridad como autenticación y
autorización para proteger datos y recursos.
• Equilibrio de carga: en aplicaciones en red, el middleware puede distribuir las solicitudes entrantes
entre varios servidores para equilibrar la carga de trabajo y garantizar una alta disponibilidad.
• Colas de mensajes: el middleware puede admitir sistemas de colas de mensajes, que permiten la
comunicación asincrónica entre componentes. Esto es común en arquitecturas basadas en eventos.
• Servicios web: el middleware a menudo desempeña un papel en la exposición y el consumo de
servicios web, lo que facilita la interacción de las aplicaciones a través de Internet.
El middleware puede presentarse en varias formas, que incluyen:
• Middleware orientado a mensajes (MOM): se utiliza para la comunicación asincrónica a través de
colas de mensajes.
• Agentes de solicitud de objetos (ORB): facilitan las llamadas a procedimientos remotos (RPC) en
sistemas distribuidos.
• Middleware de base de datos: conecta aplicaciones a bases de datos, manejando la recuperación y el
almacenamiento de datos.
• Servidores de aplicaciones web: facilitan la implementación de aplicaciones web y brindan servicios
como equilibrio de carga y almacenamiento en caché.
• Enterprise Servicie Bus (ESB): una arquitectura de middleware utilizada para integrar diferentes
aplicaciones empresariales.
3. DESCRIPCIÓN DEL PROBLEMA
La automatización de un negocio a través de una aplicación móvil es un desafío empresarial
fundamental en la era digital. Este problema se presenta cuando una empresa busca aprovechar la
tecnología móvil para mejorar sus operaciones, optimizar procesos y satisfacer las expectativas
cambiantes de los clientes. La implementación de una aplicación móvil tiene como objetivo principal
simplificar tareas, acelerar el acceso a servicios y aumentar la eficiencia en diversos sectores, desde
restaurantes y tiendas minoristas hasta servicios de entrega y consultorías.
4. ESPECIFICACIÓN FUNCIONAL
4.1. DESCRIPCIÓN DEL NEGOCIO
La empresa “FISI Tiendas Útiles” brinda un servicio de ventas de productos para el uso escolares,
las personas interesadas en los productos ofertas pueden ver el precio, así como las cantidades de
productos que dispone la tienda.
Cuando se realiza una compra se emite una orden de compra que comprueba la venta con los
siguientes datos del cliente (DNI, nombres, teléfono, dirección) y los datos de los productos que se
compró (N° de orden, nombre, precio unitario, precio total y fecha). Cuando ya se ha realizado la
orden de compra, el vendedor verifica si la fecha de pago es “Inmediato”, si es el caso entonces el
vendedor entrega la orden de compra al encargado del inventario para que pueda verificar el stock
de los productos solicitados, en caso el empleado del almacén vea que uno de los productos esta
fuera de stock, le da un aviso al vendedor de los productos que no están en el inventario por lo que
le avisa al cliente que debe cambiar sus productos escogidos o cancelar la compra, si todos los
productos están en stock entonces procede a separarlos y aprueba la orden de compra y la devuelve,
el vendedor recepciona la orden de compra aprobado y avisa al comprador que se acerque a un cajero
para que pueda realizar el pago por los productos, una vez realizado el pago se entrega un
comprobante, después el cliente vuelve al vendedor y le entrega el comprobante para que el vendedor
le de los productos que le corresponden por su compra.
En el caso de que la fecha de pago sea “En otro momento”, se da la entrega de la orden de compra
al encargado del inventario para que verifique si disponen de los productos seleccionados por el
comprador, si los productos están en stock, el encargado del inventario reserva los productos por 24
horas y entregar la orden de compra aprobada al vendedor y este le dará una copia al cliente para
que pueda realizar el pago en otro momento y se le entregue los productos, en caso el cliente realice
el pago después de las 24 horas hay posibilidades que los productos estén fuera de stock por lo que
se debe hacer cambios en los productos seleccionados o cancelar la compra.
4.2. PROCESOS DEL NEGOCIO
4.3. MODELO DEL DOMINIO
Descripción:
• La orden de compra es realiza por el vendedor con la información del o los productos dada por el
cliente.
• El encargado del inventario es el que verifica los stocks según la orden de compra creada.
• La factura es el comprobante de pago que esta asignada a la orden de compra.
• El encargado de cobrar es el que recibe la factura y comprueba la realización del pago y la entrega
de los productos
4.4. ACTORES
Se describen los actores que interactúan en el sistema del proyecto.
• Cliente: Persona clave en el sistema que solicita la compra de productos ofrecidos por la Tienda FISI
Útiles.
• Vendedor: Persona que realiza la orden de compre según los datos ofrecidos por el cliente que quiere
los productos y guarda comunicación con el encargado del inventario acerca del stock de los
productos y genera la factura.
• Encargado del inventario: Persona dedicada a la administración del inventario, referente a la
contabilidad de los productos.
• Encargado de cobrar: Persona que recibe la factura para poder realizar el trámite del pago y la entrega
de los productos al cliente.
• Sistema de administración de inventario: Este sistema se encarga de la reserva de los productos por
medio de la orden de compra para ser entregados al cliente.
• Sistema de factura: En esta parte del sistema se aprueba la orden de compra y se pasa por el cajero
para ser cobrado.
• Sistema de cuentas por cobrar: Por último, en este sistema se da el pago de la factura y la entrega de
los productos al cliente.
4.5. DIAGRAMA DE CASOS DE USO DEL SISTEMA
Caso de Uso • Procesamiento de Ordenes.
Objetivo Generar orden de compra
Actores Cliente
Precondiciones Base de datos en linea
Flujo Pincipal
1. El CUS inicia cuando el cliente ingresa al sistema
2. El sistema solicita una lista de ítems en un formulario, que contiene
los siguientes datos: Código del ítem solicitado, nombre de ítem
solicitado, cantidad requerida.
3. El sistema envía la solicitud de orden de productos
4. El CUS finaliza
Caso de Uso • Administración de
inventario
Objetivo Verificar si la cantidad
solicitada por el cliente se
encuentra disponible en
inventario.
Actores
Precondiciones Debe haber productos
seleccionados
Flujo Pincipal
1. El CUS inicia cuando el sistema recibe la cantidad solicitada por el
cliente
2. El sistema consulta la base de datos y verifica si la cantidad solicitada
se encuentra disponible.
3. El sistema recibe el mensaje de aprobación a la cantidad solicitada
por el comprador.
4. El sistema reservará la cantidad solicitada durante el lapso de 5
minutos.
5. El sistema enviará la información del orden de compra, en caso el
comprador haya realizado la confirmación de la orden en el lapso
establecido.
6. El CUS finaliza.
Caso de Uso • Facturación
Objetivo Registrar la compra
Actores
Precondiciones Confirmación de la orden de
compra
Flujo Pincipal
1. El CUS inicia cuando el sistema obtiene el mensaje de confirmación
de la orden de compra.
2. El sistema valida el pago realizado por el comprador.
3. El sistema realiza el registro de la compra.
4. El sistema envía mensaje de confirmación de la compra realizada.
5. El sistema envía la información de la compra.
6. El CUS finaliza.
Caso de Uso • Cuentas por cobrar
Objetivo Visualizar la relación de
ventas realizadas.
Actores Encargado de cuentas por
cobrar
Precondiciones El encargado de cuentas por
cobrar se debe encontrar
loggeado
Flujo Pincipal
1. El CUS inicia cuando el encargado de cuentas por cobrar ingresa al
sistema.
2. El sistema muestra todas las ventas registradas y la opción de buscar
por cliente y fecha.
3. El encargado de cuentas por cobrar ingresar el cliente a buscar o la
fecha por la cual desea filtrar.
4. El sistema muestra los datos pertenecientes a dichos filtros.
5. El CUS finaliza.
5. VISTA LOGICA
6.1 ESTILO ARQUITECTONICO
El estilo arquitectónico a demostrar es el de 3 capas (capa de presentación, capa de lógica
de aplicación y capa de datos).
La capa de presentación es una interfaz web diseñada para representar la orden de compra y
las acciones que realiza.
La capa de lógica de aplicación esta implementada por el middleware apache Kafka que
mantiene la comunicación de los módulos a través de mensajes.
La capa de datos implementa los datos que se usaran en el sistema como los datos de los
productos y las personas incluidas en el sistema como el cliente, vendedor entre otros.
6. VISTA FISICA
En este punto veremos la vista física que del sistema a través del siguiente diagrama. Se aprecian los
componentes de software como los servidores dedicados a cada sistema los cuales son el proceso de
órdenes, inventario y reserva, facturación y cuentas por cobrar, así como sus respectivas conexiones
con el middleware Kafka y la base de datos donde se encuentra la información acerca de los
productos de la Tienda.
7. VISTA DE IMPLEMENTACION
Descripción
Implementaremos el sistema en términos de componentes. Nos enfocaremos en la
organización de los módulos de software. Se ha decidido separar en cuatro módulos: Procesamiento
de Órdenes (abarca cada una de las actividades del paquete Procesamiento de Órdenes),
Administración de Inventario (abarca cada una de las actividades del paquete de Administración de
Inventario y Reserva), Facturación (abarca cada una de las actividades del paquete Facturación) y
Cuentas por Cobrar (abarca cada una de las actividades del paquete Cuentas por Cobrar).
En esta vista también se explicará cual es la relación entre los componentes y la clase de
diseño de cada módulo.
8. DIAGRAMA DE SECUENCIAS
En el diagrama de secuencia se aprecia las interacciones que tienen los objetos y así explicar las
actividades que están realizando en el sistema en orden para tener así una explicación de cómo es el
funcionamiento del sistema mediante las acciones que realizan el cliente, sistema, middleware,
módulo de orden, módulo de inventario y la base de datos.
9. DIAGRAMA DE PAQUETES
El diagrama de paquetes trata de identificar las dependencias que hay de los paquetes en un sistema,
en el caso del sistema de Tienda FISI Útiles se ven los paquetes de procesamiento de órdenes,
administración de inventario, facturación y cuentas por cobrar.
10. COMPILACIÓN DEL SISTEMA
Inicialización del Zookeper
Inicialización del servidor de Kafka
Módulo proceso de órdenes
- El sistema al ser ejecutado muestra la interfaz del usuario donde se realizarán los pedidos, al
realizarse el pedido, el sistema envía los datos de la orden al tópico “orden”, y se suscribe al tópico
“confirmación” donde se mantiene en escucha para recibir la confirmación que será enviada desde
el módulo cuentas por cobrar de realizarse con éxito el proceso de compra o desde el modulo de
inventario de no realizarse la compra por falta de stock.
Módulo inventario y reserva
- Al ser ejecutado el sistema este se suscribe al tópico “orden” y se mantiene en escucha para consumir
los datos que publica en módulo de órdenes, al recibir el mensaje con los datos de la orden este
verifica si hay estock, de haber stock, el sistema publica en el tópico “facturacion” los datos de la
orden, de no haber publica en el tópico “confirmacion” donde devuelve un mensaje de falta de stock.
- En consola se muestra el estado “Esperando” cuando se mantiene en escucha, luego el estado de
“recibido” y el mensaje que recibió, luego el estado de “reservado” cuando reserva el producto,
posterior a eso el estado de “enviado” cuando envía a facturación la orden, para posteriormente
retornar al estado de “Esperando”.
Módulo Facturación
- Al ser ejecutado el sistema si suscribe al tópico “facturacion” donde se mantiene en espera, al
consumir los datos de la orden realiza la factura y publica esta en el tópico “cuentasPorCobrar” para
que sea posteriormente consumida por el módulo de Cuentas por cobrar.
- En consola se muestra el estado de “started” para confirmar que se conectó al servidor de kafka,
luego el estado de “recibido” y el mensaje que recibió, seguido se muestra el estado “save” para
confirmar que se almaceno en la base de datos, posterior a eso el estado de “enviado” cuando envía
a cuentas por cobrar la factura, para posteriormente mantenerse en espera de nuevos mensajes
Módulo de Cuentas por cobrar
- Al ejecutarse el sistema se suscribe al tópico “cuentasPorCobrar” este consume los datos de la factura
y agrega a su base de datos los datos obtenidos, luego publica en el tópico “confirmación” para
validar que se a realizado con éxito el pedido.
- En consola se muestra el estado de “started” para confirmar que se conectó al servidor de Kafka,
luego el estado de “recibido” y el mensaje que recibió, posterior a eso el estado de “enviado” cuando
envía a ordenes la confirmación de que el pedido se realizó con éxito, para posteriormente
mantenerse en espera de nuevos mensajes
11. CONCLUSIÓN
Optar por el desarrollo de una aplicación conectada a un middleware para una tienda representa una
decisión altamente beneficiosa, con impactos significativos en la eficiencia operativa y la experiencia
del usuario.
Al aplicar esta arquitectura al contexto de una tienda, surgen beneficios específicos que mejoran la
gestión del inventario, permitiendo la integración eficiente con sistemas de seguimiento en tiempo real,
reposición automática y optimización de la cadena de suministro. La separación de la lógica frontend y
backend, además de proporcionar una interfaz ágil y respuestas rápidas en la página, contribuye a una
experiencia de usuario optimizada.
La conexión segura con sistemas de pago es esencial para transacciones en línea, especialmente en un
minimarket, mientras que la capacidad de personalizar ofertas mediante el middleware fomenta la lealtad
del cliente.
En última instancia, esta estructura facilita actualizaciones y mantenimientos más sencillos, permitiendo
mejoras independientes en el frontend y backend sin comprometer la funcionalidad general de la
aplicación.