Arquitectura de Software - Proyecto de Graduación
Objetivo General
Documentar de manera integral la arquitectura del software, demostrando
dominio de principios de ingeniería de software y capacidad para diseñar soluciones
escalables, mantenibles y seguras que resuelvan eficazmente la problemática planteada en
el proyecto.
Definición de Arquitectura de Software
La arquitectura de software es la estructura global del sistema que organiza los
componentes, sus interacciones y las tecnologías a utilizar. En este proyecto se define una
arquitectura orientada a servicios web con HTML como capa de presentación, C# (.NET
Core) como lógica de negocio y API, y MySQL como gestor de base de datos relacional,
desplegados en un servidor Hostinger VPS.
Patrones Arquitectónicos
Se empleará el Patrón en Capas (N-tier):
- Capa de Presentación: HTML, CSS y JS en navegador del cliente.
- Capa de Negocio: C# (.NET Core) para reglas, validaciones y controladores API.
- Capa de Persistencia: conexión a la base de datos mediante Entity Framework Core con
MySQL.
- Capa de Datos: Base de datos MySQL alojada en el servidor.
Arquitectura de Componentes
Componentes principales:
- Cliente Web (HTML/JS)
- Servidor de Aplicaciones (C# API)
- Servicios de Negocio
- Capa de Persistencia (EF Core + MySQL)
- Base de Datos (MySQL)
- Módulo de Autenticación
- Módulo de Reportes
- Módulo de Alertas de Stock
Arquitectura de Despliegue
El sistema se desplegará así:
1. Usuario final accede vía navegador.
2. Frontend HTML/JS hospedado en Hostinger.
3. API en C# ([Link] Core) corriendo en VPS con NGINX como proxy.
4. Base de datos MySQL.
5. Servicio SMTP para notificaciones y facturas.
Especificación de Componentes de Despliegue
- Frontend: Archivos HTML, CSS, JS.
- Backend: Aplicación [Link] Core en C#.
- Base de Datos: MySQL 8.x.
- Servidor: Hostinger VPS.
- Usuarios del sistema: Administrador, Cajero, Bodeguero, Cliente, Proveedor.
Modelo Conceptual de Datos (ERD)
Modelo Lógico de Datos (Tablas MySQL)
Arquitectura de Seguridad
Autenticación e Identidad:
- Gestión de usuarios con [Link] Identity.
- Contraseñas cifradas.
- JWT para acceso seguro.
Autorización y Control de Acceso:
- Roles definidos: Administrador, Cajero, Bodeguero, Cliente, Proveedor.
Seguridad de Comunicaciones:
- HTTPS obligatorio con SSL.
- Conexiones cifradas API ↔ MySQL.
- Copias de seguridad encriptadas.