Documento Tecnico - Desarrollo Ii
Documento Tecnico - Desarrollo Ii
Documento Tecnico - Desarrollo Ii
PROYECTO
Tema:
Documento Técnico
DESARROLLO DE SOFTWARE 2
DOCENTE:
INTEGRANTES:
Lima – Perú
2024
0
INDICE
1. Introducción 2
1.1. Componentes técnicos 2
1.2. Glosario 4
2. Objetivos y restricciones de la arquitectura 5
2.1. Restricciones de la arquitectura 5
2.2. Alcance de Proyecto 6
2.3. Exclusiones del Proyecto 6
3. Dimensiones y Volumetría 7
3.1. Usuarios concurrentes 7
3.2. Tamaño de la base de datos 7
3.3. Tasa de transacciones 7
3.4. Ancho de banda 7
3.5. Resiliencia y recuperación ante desastres 8
4. Vistas de caso de uso 8
4.1. Actores de sistema 8
4.2. Opciones de sistema 8
4.3. Casos de uso 9
4.4. Diagrama general de casos de uso 10
5. Vista Lógica 11
5.1. Diagrama de secuencia 11
6. Vista de Procesos 12
6.1. Diagrama de procesos 12
7. Vista de Base de datos 15
7.1. Tablas 15
7.2. Modelo 15
7.3. Procesos Almacenados 17
8. Vista Desarrollo 18
9. Configuración 19
10. Integración Externa 22
1
DOCUMENTO TECNICO
1. INTRODUCCIÓN
Este documento técnico describe los componentes esenciales y las
configuraciones necesarias para el desarrollo y la implementación de una
aplicación para la gestión de ventas y productos. La aplicación está
desarrollada en el lenguaje de programación Java y utiliza Firebase como base
de datos y almacenamiento. El objetivo de este documento es proporcionar una
guía clara y detallada sobre los aspectos técnicos del sistema, asegurando que
todos los involucrados en el proyecto tengan una comprensión común de los
componentes y sus interacciones.
c) Frameworks y Bibliotecas:
Spring Boot: Un framework de Java que facilita la creación de
aplicaciones independientes y de producción que se pueden ejecutar
con mínima configuración.
Firebase SDK: Biblioteca que permite la integración de las diversas
funcionalidades de Firebase en la aplicación Java.
2
d) Entorno de Desarrollo Integrado (IDE):
IntelliJ IDEA: Un IDE popular para el desarrollo en Java, que ofrece
herramientas avanzadas para la codificación, depuración y prueba de
aplicaciones.
e) Herramientas de Desarrollo:
Git: Sistema de control de versiones utilizado para el seguimiento de
cambios en el código y la colaboración entre desarrolladores.
Maven: Herramienta de gestión de proyectos y comprensión, utilizada
principalmente para la gestión de dependencias en Java.
f) Seguridad:
Autenticación Firebase: Sistema de autenticación de usuarios que
soporta varios métodos de inicio de sesión, incluyendo correo
electrónico/contraseña, Google, Facebook, y otros proveedores de
identidad.
JSON Web Tokens (JWT): Un estándar abierto (RFC 7519) que define
una forma compacta y autónoma de transmitir información de manera
segura entre las partes como un objeto JSON. Se utiliza para la
autenticación y autorización segura.
g) Testing y QA:
JUnit: Marco de pruebas unitarias para Java.
Mockito: Marco de pruebas para la creación de mocks en pruebas
unitarias.
3
1.2 GLOSARIO
Para facilitar la comprensión del documento, se presentan las definiciones de
algunos términos y conceptos clave:
¿QUÉ COMPONENTES?
Los componentes técnicos detallados en este documento son los elementos
clave necesarios para desarrollar y operar la aplicación de gestión de ventas y
productos. Estos incluyen:
Lenguaje de Programación (Java)
Base de Datos (Firebase)
Frameworks y Bibliotecas (Spring Boot, Firebase SDK)
Entorno de Desarrollo Integrado (IDE) (IntelliJ IDEA, Android Studio)
Herramientas de Desarrollo (Git, Maven)
Medidas de Seguridad (Autenticación Firebase, JWT)
Herramientas de Testing y QA (JUnit, Mockito)
¿SOBRE QUÉ?
Este documento se centra en los componentes técnicos relacionados con el
desarrollo y la implementación de una aplicación de gestión de ventas y
productos de los MiniMarket. Describe cómo se utilizan estos componentes
para construir una solución robusta y eficiente, abarcando desde la selección
del lenguaje de programación hasta las herramientas de seguridad y testing.
¿CUÁLES?
Los componentes técnicos específicos cubiertos en este documento son:
Java: Lenguaje de programación principal.
Firebase: Base de datos en tiempo real y servicios de autenticación.
Spring Boot: Framework para la creación de aplicaciones Java.
4
Firebase SDK: Biblioteca para la integración de Firebase.
IntelliJ IDEA y Android Studio: Entornos de desarrollo.
Git: Sistema de control de versiones.
Maven: Herramienta de gestión de proyectos.
Autenticación Firebase y JSON Web Tokens (JWT): Sistemas de
autenticación y autorización de usuarios.
JUnit y Mockito: Herramientas de testing.
5
2.2 Alcance del Proyecto
El proyecto abarca los siguientes objetivos y funcionalidades:
1. Gestión de Productos: Crear, leer, actualizar y eliminar productos
desde la aplicación.
2. Gestión de Ventas: Registrar y consultar ventas realizadas.
3. Autenticación de Usuarios: Implementar autenticación de usuarios
utilizando Firebase Authentication.
4. Autorización: Implementar roles y permisos utilizando JWT para
controlar el acceso a diferentes partes de la aplicación.
5. Interfaz de Usuario: Desarrollar una interfaz de usuario intuitiva y
responsiva para la gestión de productos y ventas, utilizando Android
Studio.
6. Notificaciones: Enviar notificaciones push a los usuarios utilizando
Firebase Cloud Messaging (FCM).
6
3. Dimensiones y Volumetría
3.1 Usuarios Concurrentes
Descripción:
Cantidad máxima de usuarios que el sistema debe soportar simultáneamente.
Detalles:
● Número Inicial de Minimarkets: 2000.
● Cajeros por Minimarket: 2 cajeros concurrentes.
● Cajeros Concurrentes Totales Máximos: 4000.
Detalles:
● Número Promedio de Productos por Minimarket: 200.
● Stock Promedio por Producto: Hasta 10,000 unidades.
● Información Almacenada: Datos del producto (Nombre, Marca,
Modelo, Stock, Precio Compra, Precio Venta, Fecha de expiración)
Datos de los Usuario y Datos de las ventas.
● Tamaño Inicial Total: Aproximadamente 2 GB.
● Crecimiento Anual Estimado: 20% (400 MB adicionales por año).
7
Detalles:
● Comunicación con APIs (RENIEC y SUNAT): Uso de APIs para
obtener datos de clientes.
● Ancho de Banda Total: Aproximadamente 2 Gbps para 2000
minimarkets.
Detalles:
● Disponibilidad Requerida: 24/7.
● Tiempo Máximo de Inactividad (RTO): 1 hora.
● Punto de Recuperación Objetivo (RPO): 15 minutos.
Opciones:
● Gestión de usuarios y roles.
● Configuración de productos y categorías.
● Generación de reportes de ventas e inventario.
8
4.3 Casos de Uso o Epicas
Descripción:
Identificación de los principales casos de uso del sistema, agrupados en epics
o categorías para facilitar la gestión y desarrollo.
Casos de Uso:
● Iniciar Sesión
● Registrar Cuenta
● Restablecer Contraseña
● Agregar Stock
● Eliminar Stock
● Aplicar Descuentos
● Ir a Carrito de Compras
● Registrar Venta
● Emisión de Boleta/Factura
9
4.4 Diagrama General de Caso de Uso
https://lucid.app/lucidchart/f5969520-d63b-4e9d-8a6e-03b5d9517088/edit?
view_items=.Q4MeaXKLHhP&invitationId=inv_7ab71e6e-6d4b-4453-b389-
39bf65bd3aa8 (diagrama)
10
5. Vista Lógica
5.1 Diagrama de Secuencia
11
6. Vista Procesos
12
13
14
7. Vista de Base de Datos
7.1. Tablas
7.2. Modelo ()
Conceptual:
15
Lógico:
Físico:
16
7.3. Procedimiento de Almacenamientos
Procedure para ver los productos vencidos en el MiniMarket, la consulta nos mostrara
los productos ordenados de por la fecha más antigua.
Procedure para ver las ventas realizadas en el MiniMarket en un mes y año especifico.
17
8. VISTA DESARROLLO (MAPA DE ARQUITECTURA)
18
9. CONFIGURACIÓN
19
20
• Control de versiones
Para tener un control de las versiones y una mejor organización sobre las funcionalidades
desarrolladas, utilizaremos GitHub, lo cual permitirá a los desarrolladores enviar sus
actualizaciones desde su ambiente de trabajo y de manera remota.
21
10. Integración “todo lo que sea de integración externa”
22
23
API RENIEC
24
25