Skip to main content
Version: Next

Plantilla Estrategia tecnica

Objetivo

Establecer lineamientos claros para el desarrollo, asegurando calidad y consistencia.


Repositorios

Utilizaremos 2 repositorios separados que manejarán:

  • App local: La aplicación que estará empaquetada en electron para cada uno de los equipos del cliente y donde se hará el procesamiento de los datos de los reportes, así como la creación de y modificación de los mismos.
  • Backend desplegado: Este será el alojado en la instancia del EC2, donde se manejará el guardado de los datos como el control de acceso basado en roles y las plantillas creadas.

De esta manera nuestro sistema puede ser modular y las responsabilidades se dividen eficientemente.

Estrategia de Ramas

alt text

Utilizaremos 3 ramas principales:

  • Main: Contiene el código que será desplegado en producción y sobre el que se maneja el versionamiento de la aplicación.
    • El código no debe tener problemas de integración o ejecución.
    • El código debe haber sido probado.
  • Staging: Rama pre-productiva usada para preparar el release de las versiones y realizar pruebas de aceptación.
  • Develop: Rama de desarrollo donde se mantiene la integración de todos los desarrollos del equipo.
  • Feature: Ramas temporales destinadas para el código de uno o varios developers que trabajan en una característica.

Gestión de Requerimientos

Objetivo

Alinear las decisiones técnicas con los objetivos de negocio.

Priorización basada en valor y riesgos

La priorización de requerimientos se puede encontrar aquí:

Priorización de requerimientos

La especificación de historias de usuario se llevarán a cabo teniendo en cuenta la definición de Done y Ready.


Gestión de Calidad y Pruebas

Objetivo

Garantizar un software confiable a través de buenas prácticas de aseguramiento de calidad.


Estrategia de Pruebas

La estrategia que se seguirá para las pruebas será la siguiente:


Documentación del código

Objetivo

Documentar claramente las funcionalidades y código del sistema para lectura en caso de confusiones.

  • Se agregaron espacios alrededor de operadores y comas.
  • Se agregan punto y coma al final de definiciones simples.
  • Para documentar el código utilizaremos el estándar de documentación JS docs.
  • El detalle del estándar de codificación se podrá ver en el siguiente documento: Estandar de codificación.

Patrones de diseño y diagrama de paquetes

Backend desacoplado

alt text

Este diagrama de paquetes representa la organización del backend alojado en la instancia del EC2. Se divide en varias secciones principales:

1. Módulos

Cada módulo contiene:

  • Data: Gestión de la base de datos, incluyendo modelos y repositorios.
    • Repositorios: Abstracción de acceso de datos para separar la implementación de la lógica de negocio.
    • Modelos: Definen las estructuras de datos de la aplicación (esquemas, clases).
  • Rutas: Definición de rutas.
  • Controladores: Implementación de la lógica de negocio.

2. Util

  • Middlewares: Funciones intermedias para procesar solicitudes.
  • Servicios: Lógica reutilizable independiente de los controladores.

4. Pruebas Unitarias

Cada módulo puede incluir pruebas unitarias para garantizar su correcto funcionamiento.

5. Archivos Principales

  • app.js: Punto de entrada del servidor.
  • node_modules: Dependencias del proyecto.

Aplicación local de electron

Este diagrama de paquetes representa la organización de la app local de electron. Se divide en varias secciones principales:

1. Backend

Esta carpeta sigue una arquitectura basada en CLEAN.

  • Data: Se encarga de la persistencia y recuperación de los datos. Cada módulo del proyecto tendrá su propia carpeta dentro de Data, que contendrá:

    • Modelos: Definen las estructuras de datos de la aplicación (esquemas, clases).
  • Domain: Contiene la lógica de negocio pura de la aplicación.

    • ModuloAPI: Que encapsula el consumo de las APIs
  • CasosUso: Que encapsulará la lógica y procesamiento de los diversos casos de uso. Dentro de la carpeta, cada módulo del proyecto tendrá su propia carpeta, que contendrá:

    • CasoUso.js: Que manejará la lógica de un caso de uso relacionado a su módulo.
  • Servicios: Que contendrán scripts y clases reutilizables a lo largo del proyecto

2. Framework

Esta carpeta se encarga de la interfaz de usuario y la interacción con el usuario.

  • Vistas: Son las interfaces que el usuario ve y con las que interactúa.
  • Utils: Funciones auxiliares para el comportamiento de las vistas.

3. Pruebas Unitarias

Cada módulo puede incluir pruebas unitarias para garantizar su correcto funcionamiento.

4. Electron

Se encarga de la integración de la aplicación con ElectronJS

  • main.js: Archivo principal de Electron. Crea la ventana, gestiona eventos del sistema. Inicia Electron y conecta frontend con backend local.

Historial de cambios

Tipo de versiónDescripciónFechaColaborador
1.0Primera versión de la estratégia técnica06/03/2025Daniel Contreras Chávez
2.0Se hizo el cambio del diagrama de paquetes de la aplicación local en electron25/03/2025Ian Julián Estrada Castro
2.1Se quitó ViewModels del diagrama de paquetes. Se actualizó diagrama de backend desacoplado. Se cambió a español27/03/2025Ian Julián Estrada Castro
2.2Se actualizó el diagrama de paquetes de electron y su explicación25/04/2025Daniel Contreras
2.3Se actualizó el diagrama de paquetes de electron y componentes13/05/2025Daniel Queijeiro
2.4Se actualizó la definición de repositorios23/05/2025Daniel Queijeiro