Model-Driven Code Generation, como el propio término indica, es un conjunto de herramientas, frameworks, tecnologías…cuyo propósito es el de producir
código a partir de modelos.
Suena muy ambicioso, y efectivamente lo es.
Podemos encontrar propuestas Model-Driven Code Generation con otros nombres: Model-Driven Development, Model-Driven Architecture,
Model-Based Code Generation, … incluso bajo el paraguas de los – últimamente más de moda – términos “No-Code” y “Low-Code”.
Tecnicismos y jerga aparte, al final de lo que se trata es de utilizar modelos como el elemento primordial para construir software.
¿Suena loco? Bueno…si nos fijamos en dominios tales como Sistemas Embebidos y Sistemas de Tiempo Real, encontraremos que hay herramientas
que realmente cumplen lo que prometen. La generación de código a partir de modelos en cualquiera de estos dos dominios ha sido una realidad
tangible desde hace ya unos cuantos años.
Los problemas comienzan cuando tratamos de aplicar las mismas técnicas en otros dominios tales como los sistemas de información o las aplicaciones
de negocio. La generación de código a partir de modelos ha fracasado tradicionalmente en estas áreas.
Integranova Model Execution System, sin embargo, cumple la promesa de generar automáticamente el 100% del código de un sistema de información a
partir de modelos. Dicho código generado comprende, entre otros componentes, el acceso a la capa de persistencia o base de datos, la lógica de
negocio y la interfaz gráfica de usuario.
Podemos utilizar la herramienta Integranova Modeler para crear modelos conceptuales, independientes de plataforma, que representan los sistemas
de información que queremos desarrollar, abordando esta tarea desde tres puntos de vista:
- El punto de vista estructural, en el que describimos la estructura de los datos que nuestro sistema de información gestionará.
- El punto de vista de comportamiento, en el que describimos los servicios que proporcionará el sistema de información para consultar
y manipular los datos que gestiona, incluyendo todo tipo de reglas de negocio, sin importar la complejidad, y
- El punto de vista de interacción, en el cual describimos los escenarios de interacción que el sistema de información proporcionará
para presentar al usuario los datos que gestiona y para permitir al usuario la ejecución de procesos para la manipulación de dichos datos.
Cualquier definición presente en un modelo Integranova será independiente de plataforma, lo que significa que no debemos incluir o preocuparnos por
detalles de más bajo nivel tales como los lenguajes de programación, frameworks o arquitecturas. El mismo modelo, sin cambios de ningún tipo, puede ser
automáticamente transformado en código para diferentes lenguajes de programación (p.ej.: C# o Java), frameworks (p.ej.: .NET o SpringBoot) o arquitecturas
(p.ej.: cliente de escritorio, aplicación web o aplicación móvil).
Las tres principales perspectivas de modelado nos permiten cubrir las tres principales áreas de un sistema de información: la capa de persistencia
(usualmente una base de datos) – y los componentes que dan acceso a la misma – que gestiona el almacenamiento y acceso a los datos, la capa de lógica
de negocio que implementa toda la funcionalidad del sistema de información, y la capa de presentación que permite a los usuarios finales interactuar
con la funcionalidad y los datos del sistema de información.
Los patrones y primitivas de modelado que encontramos en Integranova Model Execution System nos permiten definir reglas de negocio complejas, asegurando
que podemos definir completamente la funcionalidad de los sistemas de información a desarrollar.
Esta completitud también implica que el código generado será totalmente funcional: al contrario de lo que la mayoría de las herramientas proporciona
(p.ej.: esqueletos de código que deben ser completados manualmente en fases posteriores al proceso de generación de código), los Integranova Transformation
Engines (Generadores de Código) producen código listo para compilar y ser desplegado que no necesita ser completado o modificado manualmente para poder ejecutarse.
La naturaleza automática de los Integranova Transformation Engines asegura resultados consistentes y repetibles, incrementando los niveles de calidad y productividad
de las tareas de desarrollo.
Integranova Model Execution System produce Código que no precisa de ninguna librería y componente propietario, dándonos libertad para mantener y evolucionar el código
generado de la manera que estimemos más oportuna, pudiendo utilizar técnicas y herramientas más tradicionales. Aunque una vez nos sentimos cómodos con ello y comenzamos
a percibir sus múltiples beneficios, lo más probable es que decidamos adoptar la filosofía de generación de código a partir de modelos.
Por cierto, si es usted un desarrollador, no se sienta amenazado por las capacidades de generación automática de código que brinda Integranova MES. Nuestra intención
nunca ha sido la de sustituir a los desarrolladores, sino darles herramientas para hacerlos más productivos, dejando que se concentren en *qué* es lo que quieren construir
en lugar de fijarse en *cómo* construirlo.
Contando con Integranova Model Execution System como una más de sus herramientas, los desarrolladores pueden acometer proyectos más grandes y complejos.
Nuestra experiencia nos ha mostrado en repetidas ocasiones que proyectos para los cuales necesitaríamos un equipo de entre 4 y 6 desarrolladores podían desarrollarse
con un equipo de 1 o 2 desarrolladores. También hemos visto, una y otra vez, que en cada iteración del proceso de desarrollo éramos nosotros los que usualmente
debíamos esperar a tener retroalimentación del cliente final sobre la funcionalidad entregada en la iteración, en lugar de que fuera el cliente el que estuviese
esperando a que entregásemos la siguiente versión planificada. En las situaciones más extremas, incluso entregábamos versiones más rápidamente de lo que el cliente
podía revisarlas.
Los resultados pueden variar de una organización a otra, pero, en cualquier caso, se observan aumentos de productividad significativos, lo cual se traduce de forma
natural en una reducción considerable del time-to-market y también, aunque no menos importante, una reducción de los errores de tipo humano a niveles marginales.
Si los proyectos pueden ser desarrollados por equipos más pequeños por una fracción del coste – tanto en términos de tiempo como de dinero – uno puede sentirse
inclinado a pensar que necesita menos desarrolladores para llevar a cabo el mismo trabajo…pero lo más probable es que se utilice el mismo equipo de desarrollo
para llevar a cabo un mayor número de proyectos, aumentando así los beneficios.
Si esto le parece interesante, manténgase atento a futuros posts sobre Integranova Model Execution System.
Si quiere saber más sobre Integranova MES o le gustaría ver una demo, contacte con nosotros.