We're currently working on updating our website's content in order to provide you with a more thorough description of our technology and also update you on the significant improvements on our new Transformation Engines.
We invite you to come visit our new website in a few weeks. You'll discover INTEGRANOVA M.E.S. is the software development disruptor!

Model-Driven Code Generation with Integranova Model Execution System: desarrolladores más productivos, con menor time-to-market y mayor calidad

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.