¿Cómo construir los módulos clave de un framework de desarrollo acelerado y separar las responsabilidades?
24 Mar 2022
La reutilización de componentes puede ayudar a las compañías a acelerar sus desarrollos, como ya hemos visto en artículos anteriores. Sin embargo, para llevar a cabo esta reutilización necesitaremos disponer de un framework de desarrollo acelerado. Y por eso en este artículo queremos poner el foco sobre cómo estructurar la suite de herramientas que componen el framework de desarrollo acelerado. Este framework se pondrá a disposición del equipo de desarrollo que, con independencia de las tecnologías utilizadas, podrá organizarse en una serie de módulos cuyos elementos perseguirán mantener una alta cohesión. Esto permitirá proporcionar una alta legibilidad y reusabilidad, manteniendo la complejidad en un estadio razonable.
El objetivo principal de un framework de desarrollo acelerado: mínimos componentes, máximo alcance
El principal objetivo de un framework de desarrollo acelerado es construir el conjunto mínimo de componentes (o piezas de software) que dé respuesta al mayor número de necesidades de la organización. En este sentido, el framework tendrá que permitir la reutilización de cada una de estas piezas inmutables en el mayor número de aplicativos de la corporación. Para el cumplimiento de este objetivo será necesario disponer de una arquitectura de software que permita desacoplar cada uno de estos componentes de los aplicativos o productos en los que se utilizan. Además, habrá que limitar al máximo la vinculación funcional entre las distintas capas de responsabilidad del software, pero manteniendo la capacidad del conjunto de herramientas para adecuarse a las necesidades de cada proyecto.
Buenas prácticas y lecciones aprendidas para establecer la base de las técnicas aplicadas a un framework de desarrollo acelerado
Podemos contrastar otras propuestas de arquitectura o marcos de referencia para la construcción de aplicativos como Hexagonal Architecture (Alistair Cockburn), Onion Architecture (Jeffrey Palermo o The Clean Architecture (Robert Cecil Martin). Al hacerlo, comprobamos que todas estas iniciativas coinciden en cuanto a la necesidad de separar las responsabilidades del código desarrollado, distribuyéndolas en diferentes capas. Por un lado, reduciendo al máximo el acoplamiento entre los componentes del software. Por otro, aislando cada módulo para que su evolución no impacte sobre la implementación de otros módulos.
Entre dichas capas es muy común diferenciar las capas de Presentación, Dominio o Negocio y Acceso a Datos. También debe garantizarse que las dependencias que se generen entre dichas capas lo hagan formando grafos acíclicos y en el sentido desde las capas más externas hacia las más internas. En el siguiente gráfico se pueden ver algunas de las entidades (Devices, BD, UI, Controllers, Presenters…) y cómo estas se comunican unas con otras, pero únicamente en el sentido de las capas más externas hacia las capas más internas. De este modo se consigue que las entidades de cada capa (o corona) sean totalmente agnósticas a los consumidores de las esferas exteriores y solo guarden vinculación a través de interfaces con las capas más internas.
Análogamente, cuando se construye un framework de desarrollo acelerado es necesario proporcionar al equipo de desarrollo un punto de partida que establezca la solución técnica en cuanto a la resolución de las necesidades en dichas capas de software (Presentación, Dominio o Negocio y Acceso a Datos) sobre el mismo framework. También será fundamental la implementación base (out-of-the-box) de plantillas y procesos guiados que garanticen la correctitud de las prácticas establecidas: arquitectura, niveles de calidad en la codificación y correcta integración en los procesos de integración continua.
Clasificación de los principales módulos en un framework de procesos
Para desarrollar una solución acelerada, alineada con las premisas que hemos comentado, contaremos con 5 módulos principales que podemos clasificar en dos ámbitos:
- Tooling: herramientas para simplificar las tareas del desarrollador. En este ámbito encontraremos los módulos de SETUP y TEMPLATES.
- Software: implementaciones específicas que ayudan a mejorar las capacidades del framework. En este ámbito encontraremos los módulos CORE, UI, y COMMONS.
Es importante detenernos en la explicación de estos módulos para desarrollar un framework de procesos de la manera correcta. Por ello, dedicaremos un artículo específico a cada uno de estos ámbitos para conocer sus peculiaridades y el detalle de la implementación. No os perdáis los siguientes artículos.