Noticias

8 razones que hacen del desarrollo basado en modelos -Model-driven Development- algo excepcional :: Por Gastón Milano, gerente de desarrollo #GeneXus

Este artículo está inspirado en conversaciones que he tenido, en el transcurso de conferencias, con algunos potenciales clientes que me han expresado su preocupación acerca de los peligros del desarrollo basado en modelos, lo cual me ha dejado pensando al respecto.

En mi opinión, existen numerosos artículos publicados acerca de los peligros del desarrollo basado en modelos, muchos de los cuales se basan en argumentos válidos, mientras que otros tienen un carácter más histórico y una naturaleza repetitiva, y donde no se toman en cuenta los recientes adelantos en este tema.

Es difícil encontrar artículos que refieran a “8 razones por las que escribir código de forma manual es sumamente peligroso”. Por cierto que existen más de ocho razones que enumerar, y hasta me sentí tentado de poner por escrito algunas de ellas. Por su parte el desarrollo basado en modelos implica muchos peligros, muchos de los cuales se originan en la no comprensión de su valor real. Por tanto, a la vez que admito que muchos riesgos expresados en distintos artículos existen en realidad, también quisiera enumerar algunas de las cosas buenas que trae consigo el desarrollo basado en modelos, conocido bajo el nombre de “Model-driven Development” (MDD).
 
  1. El MDD es portador de mucha flexibilidad
Por cierto, el MDD implica una gran flexibilidad para empresas y negocios, entendida la flexibilidad como capacidad de respuesta a los cambios y adaptabilidad, tanto en el aspecto técnico como en el comercial. Cuando a partir de un lenguaje seleccionado se escribe una solución a mano, allí tenemos un tipo de flexibilidad (que se relaciona con el poder dentro del lenguaje elegido …?) en el corto plazo, pero a su vez se está introduciendo una gran dosis de rigidez a largo plazo. Por ello, es menester tener en cuenta, antes de definir los pasos a seguir, el tiempo que se pretende que dure la inversión que es objeto de desarrollo.

Cuando la elección es Silverlight, Flash, Visual Basic, Fox, tanto en el pasado como en el presente es necesario crear aplicaciones HTML5 ó iOS. En tal caso: ¿qué grado de flexibilidad tenemos?, y ¿cuántos conceptos pueden ser reutilizados a partir del código existente? (siempre y cuando eso sea posible).

Cuando el código se crea a mano, todo lo que se obtiene es código, que se podrá reutilizar o tal vez, y más probablemente, no se reutilice. En el desarrollo basado en modelos, existe un modelo y la posibilidad de reutilizar conceptos. Quienes crean una aplicación Android a partir del modelo FoxPro Win son quienes, a la larga, disponen de una mayor flexibilidad.

Así que, a la pregunta de si el desarrollo basado en modelos es flexible o no, la respuesta es: depende. Para el caso de empresarios o compañías que planean su actividad para el largo plazo, la respuesta a esa pregunta es que sí, el desarrollo basado en modelos permite una excelente flexibilidad.
  1. Modelos modernos con grandes posibilidades de expansión
En la actualidad existen modelos con gran capacidad para extenderse en distintos niveles, y cuyo diseño está pensado para su interacción con el código escrito a mano en todos los niveles. Comúnmente sucede que gran parte de ese código, en el mediano plazo (si es realmente muy común), se incorpora al modelo en algún momento. No existen los modelos perfectos, aunque muchos de ellos resultan útiles y tienen gran capacidad para extenderse. Lo interesante es encontrar una manera en que cuente con la ventaja de productividad de los MDD, además de la posibilidad de extensión cuando no alcanza con el modelo.
  1. Los programadores pueden concentrarse más en el “qué” que en el “cómo”
Es formidable el permitir a los demás –quienes no tienen idea alguna acerca de Objective-C– crear aplicaciones de negocios para iPhone e iPad que cumplen los lineamientos de Apple y se basan en un modelo, que también puede usarse para generar aplicaciones en Android, BlackBerry o Windows 8 cuando se necesita. Y todo esto con un mínimo esfuerzo. Realmente fantástico.
  1.  Existen plataformas MDD que soportan control de versiones e integración continua
Contrariamente a lo que establecen las típicas quejas acerca del desarrollo basado en modelos, el mismo puede en realidad soportar el control de versiones, la colaboración y otros aspectos. Un ejemplo de ello es el hecho de que venimos trabajando desde hace muchos años para lograr la actual situación, y es verdaderamente interesante contar con la versión completa de un sistema de control integrado con herramientas de integración continua.
  1. Existen muy buenas herramientas alrededor del MDD
Casi todas las industrias recurren al software para aumentar su productividad y mejorar la eficacia y eficiencia de todos sus niveles operativos. Se trata de un enfoque obvio. Sin embargo, la industria del software es la única que se rehúsa a crear software mediante la aplicación de software para cumplir con iguales objetivos (aumentar la productividad y mejorar su eficacia y eficiencia).

Afortunadamente existen muchas empresas que están abocadas a un cambio de paradigma. La única manera de lograr tal cambio es mediante la creación de más herramientas deslumbrantes que creen software mediante la utilización de software.
  1. El equipo que trata las necesidades debe concentrarse solamente en aspectos comerciales
El equipo encargado de considerar las necesidades puede concentrar su trabajo en el aspecto comercial sin tener que involucrarse con la parte técnica. Es común que el satisfacer ciertas necesidades se vuelva imposible a causa de limitaciones del modelo. Pero esto también sucede en el caso de soluciones de código escrito a mano.

Cuando se pide que en un formulario exista la posibilidad de un scroll dentro de otro scroll en una solución Android, esto será muy difícil de lograr, pero la causa de tal imposibilidad no deriva del desarrollo basado en modelos.

Mi argumento aquí se basa en el hecho de que, como lo expresé anteriormente, una de las mayores ventajas de los modelos actuales es su interoperabilidad con el código escrito a mano. Y en el peor de los casos, se necesitará escribir algo a mano. Pero ello no invalida la mayoría de las veces, en que los equipos sólo deben concentrarse sobre el aspecto comercial de la ecuación en vez de preocuparse por cómo programar una solución en particular.
  1. Se debe vender la solución, no el paradigma de MDD
El desarrollo basado en modelos constituye una manera eficiente de crear soluciones, y no es necesario dar explicaciones al usuario final, ya que el mismo se encargará de cosechar los beneficios.

Se puede presentar la solución como algo extremadamente flexible en el largo plazo, donde se guarda cuantiosa información del negocio (representada a través de modelos) que será utilizada en el futuro.
  1. Ya no es necesario preocuparse por la evolución tecnológica
Cuando se maneja una empresa, es lógico pretender aplicar la mejor tecnología disponible en todo momento. Pero cuando ello implica tener que considerar los detalles de cada nueva tecnología, se estará quitando el foco del aspecto central del negocio.

El recurrir al desarrollo basado en modelos permite concentrarse únicamente en el modelo del negocio sin tener que preocuparse por los continuos cambios de tendencias de la tecnología subyacente.

Hasta aquí mi enfoque inicial sobre el tema, aunque la lista de razones es perfectible.

Johan den Haan describe aquí otras razones para justificar el uso de “Model Driven Development”.