El low-code busca reducir la cantidad de código a escribir para desarrollar una aplicación. Gracias al uso de modelos, la mayor parte del código de la aplicación se genera automáticamente y solo hay que completar aquellas partes que por complejidad o especialización no se hayan podido generar. La idea es pues, maximizar la generación de código, utilizando si hace falta heurísticas de “convention over configuration”, para crear generadores que vayan más allá de la simple creación de esqueletos de clases vacíos y pueda, por ejemplo, generar también toda la interfaz de usuario.

Aunque el low-code es claramente una de les tendencias en el mundo del modelado de software, y todas las grandes empresas (Microsoft, Google, Amazon,…) están lanzados sus productos low-code, ¿es algo realmente nuevo o solo una versión, con mejor marketing, de lo que desde hace muchos años conocemos como la Ingeniería de Software dirigida por modelos?

Para contestar éstas y otras cuestiones acerca del movimiento low-code publiqué hace poco un artículo en el primer Low-code workshop. La versión corta es que el low-code no trae nada realmente nuevo a nivel técnico con lo que de momento seguiremos programando tanto (o tan poco) como hasta ahora, dependiendo de si ya éramos usuarios de algunas de las herramientas de desarrollo dirigido por modelos que, ahora, simplemente, han cambiado de nombre y se han rebautizado como low-code para vender más.

La versión un poco más larga a continuación (para la completa, en inglés, bajaros el artículo enlazado en el párrafo anterior).

Clarificando conceptos: Low-Code vs No-code vs Model-Driven vs Model-Based

La ingeniería de software dirigida por modelos (model-driven engineering en inglés), tiene muchas variantes. El término de low-code añade pues aún más confusión. Veamos mis definiciones:

  • Model-driven engineering (MDE): todo proceso de ingeniería software donde los modelos jueguen un papel fundamental en todas las actividades y tareas del proceso.
  • Model-driven development (MDD): MDE aplicado a la actividad concreta del desarrollo software.
  • MDA es la visión particular que tiene la OMG del MDD.
  • Model-based engineering/development: Versión suavizada de las anteriores, donde los modelos forman parte del proceso pero donde no son el actor principal, es decir, no lo “dirigen”. Caso por ejemplo de un proceso de desarrollo donde se definen modelos durante la fase de análisis pero estos modelos se utilizan para discutir y diseñar la solución, no para generar el código.

Basándonos en estas definiciones, para mí, el low-code es un sinónimo del concepto de model-driven development.  Si acaso, una versión más restrictiva ya que normalmente una herramienta low-code sirve para un dominio de negocio muy concreto (sobre todo aplicaciones móviles y web con acceso a bases de datos) y viene con un lenguaje de modelado predefinido. En el MDD, la definición del mejor lenguaje para el tipo de aplicación a crear puede ser parte del proceso.

A veces se habla también del no-code como variación del low-code. De hecho, muchas herramientas se anuncian como no-code/low-code. Pero para mí, el no-code y el low-code son dos mundos diferentes. La característica principal del no-code es poder crear aplicaciones sin programar. Que suena muy bien pero como los milagros no existen, la contrapartida es que lo “único” que puedes hacer con herramientas no-code es encadenar y configurar aplicaciones y plantillas predefinidas. Ojo, suficiente para muchos pero en todo caso el quitar la opción de programar nada reduce mucho la flexibilidad de la aplicación final.

El porqué de la popularidad del low-code

Como se puede ver en la Figura 1 (Google Trends), el interés en el low-code está en su punto más alto, aunque lejos del interés que suscitó (en su momento) la explosión del desarrollo de software dirigido por modelos, ver Figura 2.

Google Trends graphic showing the search interest for the low-code term

Relative popularity of low-ocde vs model-driven terms

Popularidad (relativa) de búsqueda de los términos model-driven (rojo) vs low-code (azul).

 

Pero si acabamos de decir que el low-code no trae, técnicamente hablando, nada nuevo, ¿porqué es tan popular?. Hay varias razones:

  • Creo que el mensaje del low-code es mucho más claro que el del model-driven. La palabra modelo es mucho más ambigua y cuesta, la verdad, explicar el concepto de model-driven en pocas frases. En cambio, todo el mundo entiende a la primera lo que low-code implica: menos código a escribir.
  • Además, lo de modelar asusta a muchos programadores. En cambio si les dices que van a seguir programando, pero menos, ya no les parce tan mal. Es lo mismo pero explicado diferente 🙂 .
  • El tipo de aplicaciones de las herramientas low-code es más restringido. Esto parece malo pero al mismo tiempo permite centrar mejor su mensaje. Siempre decimos que MDD sirve para todo pero eso suena tan bien que puede llegar a parecer poco creíble.
  • Los procesos de desarrollo low-code son normalmente muy cortos: creo un tipo de modelo y genero el código. No hay secuencias de modelos (cada vez más refinados) hasta llegar al código. Buscan más apretar el botón y listos.
  • Y, factor muy importante, las herramientas low-code son mejores. No sólo invierten en marketing sino también en el diseño y usabilidad de sus herramientas. Al contrario, las herramientas e infraestructuras de modelado clásicas (como EMF) son mucho más potentes pero hay que tener un doctorado para utilizarlas.

En resumen no he visto ninguna notación/funcionalidad/concepto en las herramientas low-code que no hubiera ya visto antes. Pero es también cierto que el mundo low-code lo presenta mejor y más claramente lo que les permite llegar a un mercado mucho más amplio.

Algunas herramientas low-code

Si queréis empezar a jugar con alguna de estas herramientas low-code, tenéis donde elegir (otra cosa es su precio, aunque casi siempre hay algún plan gratuito). A nivel internacional, algunas de las más conocidas son Mendix, OutSystems or WebRatio. Bubble es más reciente pero también muy popular y más asequible. Generative Objects es de las poquísimas open source.

A nivel español tenemos Integranova (¡todo un clásico!) y Velneo y si ampliamos a nivel Hispanoamericano, la uruguaya Genexus es un líder claro.

Diapositivas de la presentación del artículo sobre low-code