BASEFrame Framework
Periodo 30 nov 2007 - 30 nov 2013
Roles: Arquitecto de Software, desarrollador y mentor
Desarrollado para BASE Gestió d’Ingressos (empresa pública de la Diputació de Tarragona)
Como parte de una iniciativa estratégica a medio plazo diseñada para transformar profundamente el ciclo de vida de desarrollo de software de BASE, desarrollé un framework que estandarizó el diseño, los patrones y los procesos involucrados en el ciclo de vida de desarrollo de software.
El objetivo principal fue separar la fase de definición de la fase de implementación: los diseñadores de software internos de BASE gestionan el trabajo de definición, mientras que empresas externas ejecutan la implementación.
El framework se divide en tres partes:
- Stack tecnológico (versiones, librerías, etc.)
- Procedimientos
- Arquitectura, diseño y patrones
Actores:
- Cliente funcional (responsables de otros departamentos, como contabilidad, multas, impuestos sobre activos, etc.)
- Product owner (responsable de cada proyecto)
- Analistas (nuestra propia plantilla)
- Desarrolladores (proveedores externos)
- Administrador del sistema (responsable de proporcionar infraestructura y tareas de despliegue)
Utilicé un enfoque de arquitectura hexagonal que denominamos “enfoque por capas” ya que en aquella época, el concepto de Arquitectura Hexagonal no era conocido.
Este enfoque establece la estructura de componentes para cada proyecto y también proporciona orientación sobre los diferentes puntos de vista a considerar en el proceso de diseño:
- Capa de dominio (modelos, servicios, restricciones, validadores, etc.)
- Capa de pruebas (definiciones de clases de pruebas unitarias)
- Capa de implementación (implementaciones de servicios)
- Capa de transporte (mecanismos de acceso de clientes, tales como EJBs o REST)
- Capa UI (interacción con el usuario)
- Capa de Empaquetado y Distribución (empaquetado y despliegue de la aplicación)
Flujo del Proceso:
Fase 1: Análisis y Definición (por el personal de BASE):
Capa de dominio:
- Casos de uso funcionales y actores
- Modelado de clases y procesos (como servicios de interfaz o procesos programados)
- Diagramas de secuencia, actividad y estado para detallar los procesos definidos previamente
Capa de pruebas:
- Definición de pruebas unitarias para servicios como clases JUnit con métodos de prueba vacíos (señalando “no implementado”)
Capa UI:
- Diagramas de secuencia para procesos con interacción de usuario
- Menús de la aplicación y bocetos de cada ventana requerida
Capa de implementación:
- Requisitos de infraestructura (bases de datos, brokers de mensajes, programación cron, etc.)
Capa de Empaquetado y Distribución:
- Requisitos de empaquetado de la aplicación
- Especificaciones de despliegue para cada paquete (p. ej., procedimientos de instalación para ejecuciones cron)
Al final de esta fase, se realiza una estimación de esfuerzo para el proceso de desarrollo y se preparan las especificaciones técnicas para la licitación pública de software.
Fase 2: Implementación (por la empresa externa adjudicataria)
Una vez resuelta la licitación pública, BASE otorga acceso a los repositorios de código y servidores de artefactos Maven. El desarrollo comienza con los desarrolladores externos trabajando en:
- Capa de implementación: Desarrollo de servicios y componentes
- Capa de pruebas: Implementación de pruebas unitarias definidas
- Capa UI: HTML, JavaScript y recursos de implementación UI
- Capa de Empaquetado y Distribución: Empaquetado según los estándares prescritos (p. ej., EAR, JAR, WAR, etc.)
Control de Calidad:
El framework establece hitos de control del proceso de desarrollo y listas de verificación para cada hito. Esto sirve como guía para el personal interno de BASE para monitorizar el progreso y recibir alertas tempranas sobre problemas potenciales.
Impacto:
Este framework fue un punto de inflexión para el sistema de producción de software de BASE. La organización se volvió más productiva, más estandarizada y entregó significativamente mayor calidad a los productos finales construidos utilizando el framework.
Plataforma Tecnológica:
- Java SE 6
- J2EE 1.4 (EJB 2.1)
- JBoss EAP 4.x
- Spring Framework 4.x