MDE, DSL y GXX


En el post de Abstracta, plantean el tema los Domain Specific Language y su realación con GeneXus.

Una definición posible de GeneXus es la que dice:

Herramienta que involucra un conjunto de DSL (Lenguajes específicos de dominio),para el desarrollo de aplicaciones comerciales que hacen un intenso manejo de bases de datos.


En el mercado, estan apareciendo muchas herramientas para el manejo de modelos y tambien para ayudar a la definición y uso de DSL, lo cual valida y hace mas fácil de entender (y por lo tanto de vender) para el resto del mundo la forma en que desarrollamos aplicaciones con Genexus.

Parece ser que muchos se están dando cuenta que el modelaje y la generación de código aumenta la productividad y ayuda al desarrollo de aplicaciones.

Por suerte dentro de la comunidad Genexus se está empezando a hablar del tema y creo que la formalización y el estudio desde un punto de vista académico de nuestras herramientas de desarrollo puede ayudar mucho a su difusión y evolución.

Donde se pueden usar modelos?

Dentro de unos años en nuestros desarrollos con GeneXus podremos (o me gustaria) tener bien definidos varios modelos para diferentes etapas o funciones de la aplicación (siguiendo el Domain-specific multimodeling)
Se me ocurre que podremos tener modelos para :
  • Modelo de requerimientos (que relaciones requerimientos con objetos)
  • Modelo de datos
  • La logica de la aplicacion (mis programas)
  • El flujo de la aplicacion (WorkFlow)
  • Modelos de Prueba (que relacione Caso de Prueba, con objetos y requerimientos)
  • Modelo de Deployment (donde explico con que DBMS, servidor, cantidad de capas, etc)
  • Modelo de Seguridad (autorización, autenticación)
  • Modelo de auditoria (que quiero auditar, como y con que detalle)
  • Modelo de consultas/reporting/inteligencia comercial
  • Modelo de monitoreo/reporte de errores del funcionamiento de la aplicación.
  • Metadatos de la aplicacion
  • Reglas definidas por los usuarios
Hay otras funcionalidades como la Localización (poder ver la aplicación en varios lenguajes diferentes) o el diseño gráfico de las pantallas (presentación) que pueden también pueden ser vistos como modelos independientes.

Todos estos modelos, estarán muy relacionados entre si, pues el cambio en uno puede afectar lo que ve el otro. Por ejemplo, si hago un cambio en el modelo de datos, la aplicación puede necesitar cambios. También si cambio algo en la aplicación puede ser necesario cambiar el flujo de la misma y viceversa.

Que ventajas tendría tener estos modelos claramente definidos?.
En organizaciones grandes, estas funcionalidades son realizadas por personas diferentes. Dejando claras cada una de las responsabilidades permiten que los expertos en cada tema puedan concentrarse en lo específico de su dominio.

Al tener cada modelo herramientas independientes para su edición y generación, puede ayudar a avanzar mas rápidamente y ademas a tener módulos mas avanzados para aplicaciones mas sofisticadas.

Por ejemplo, no se necesita el mismo nivel y la misma complejidad para la auditoria de una aplicación de datos públicos, que lo que puede tener una aplicación bancaria. De esta forma, puede ser que la aplicación donde cualquiera puede modificar datos, no necesite tener auditoria y la otra tener un modelo muy sofisticado para ello.

Cada uno de estos modelos puede tener un DSL que puede ser gráfico, textual o cualquier mecanismo formal que permita a la experto en la materia definir el funcionamiento o el control de la aplicación.

La comunidad GeneXus y la comunidad académica (al menos la uruguaya) tiene una relación bastante distante. Creo que la definición de estos DSL es un área de oportunidad para ambos para estudiar y mejorar lo existente.

Me puse a pensar, cuales son los DSL que hoy ya manejamos (en forma conciente o no) con GeneXus y no me resultó fácil separarlos. Algunos de los que se me ocurren son :
  • Diseño de formularios
  • Modelo de datos
  • Procedural
  • Rules
  • Patterns (cada uno tiene su lenguaje propio?)
  • Data Providers (es diferente a las rules y a los procs)
  • Workflow
Se les ocurre alguno mas?.



Links relacionados:

Comentarios

  1. Hola Enrique, muy bueno el post, estaré hablando en el evento de temas relacionados a este post en mi charla de Evolución del Lenguaje Genexus.

    No daré definiciones de DSL, MDD, MDA, etc para poder bajar un poco a otros temas. Y poder reflexionar hacia donde evolucionar el lenguaje.

    ResponderBorrar
  2. Gaston:
    Me parece muy bueno que hablen de estos temas.

    Y tambien que venga gente de afuera de la comunidad, para contar como se desarrollan aplicaciones con otras herramientas.

    ResponderBorrar
  3. A mi también me parece super interesante.

    Desde ya me anoto para la charla :D

    ResponderBorrar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Aplicación monolítica o distribuida?

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.