viernes, 12 de octubre de 2007

DSL Lenguajes de Dominio Específico

En este momento me encuentro trabajando en mi tesis de maestría implementando un lenguaje de dominio específico para modelar el desarrollo de software sobre la tecnología IBM Lotus Domino.

Trataremos de llevar la ingeniería de software a una necesidad real, aportando un DSL y una herramienta visual que permita facilitar el desarrollo de aplicaciones colaborativas y la obtención del diseño de aplicaciones existentes mediante ingeniería inversa.

En esta etapa escribiré algunas notas de interés sobre el tema.

Un lenguaje de dominio específico (Domain-Specific Language: DSL) es un lenguaje que permite a través de notaciones apropiadas y abstracciones, expresar un dominio de problemas específico [1]. Muchos lenguajes son de un dominio específico más que de propósito general. [2] Existen otros nombres para un DSL [3] como:
  • Pequeños lenguajes
  • Macros
  • Lenguajes de aplicación
  • Lenguajes orientados a problemas
Adoptar un DSL implica riesgos y oportunidades [1]. Entre los beneficios tenemos:
  • Expresar en un nivel de abstracción el dominio del problema
  • Son concisos, autodocumentados y reutilizables para diferentes propósitos
  • Aumentan la productividad, lectura, mantenimiento y portabilidad
  • Describe un dominio de conocimiento, conservándolo y reutilizándolo
Las herramientas de computo que implementan un DSL capturan especificaciones en forma de modelos de dominio. Comúnmente pueden generar, configurar e integrar determinados componentes de aplicaciones. Estos ambientes traducen el diseño verificado mediante un modelado formal a una variedad de artefactos que pueden incluir código, esquemas de bases de datos y configuraciones. [4]

En el modelado de un dominio específico se pueden distinguir al menos cuatro direcciones: [5]
  • Conceptos del desarrollador o del experto del dominio. Cuando el lenguaje es modelado por un experto es más fácil de entender.
  • Salida generada. Definición de la estructura de código requerida.
  • Look and feel del sistema construido. El modelo debe entenderse claramente cuando es visto por el usuario final.
  • Espacio de variabilidad. Definiciones de lenguajes flexibles que puedan extenderse para ser empleadas en futuras variantes
Para elaborar un DSL debe realizar un análisis de dominio formal. La salida de esta etapa es un modelo de dominio [2] que consiste de:
  • Una definición de dominio que describe el alcance del dominio
  • Terminología del dominio (vocabulario, ontología)
  • Descripciones de los conceptos del dominio
  • Modelos característicos que describen las constantes y variables de los conceptos del dominio y sus interdependencias
Bibliografía
[1] A. v. Deursen, P. Klint, and J. Visser, "Domain-specific languages: an annotated bibliography " SIGPLAN Not., vol. 35, pp. 26-36, 2000.
[2] M. Mernik and A. M. Sloane, "When and how to develop domain-specific languages," ACM Computing Surveys (CSUR), vol. 37, pp. 316-344, 2005.
[3] Wikipedia, "Domain-specific programming language," 2007.
[4] A. Ledeczi, A. Bakay, M. Maroti, P. Volgyesi, G. Nordstrom, J. Sprinkle, and G. Karsai, "Composing domain-specific design environments," Computer, vol. 34, pp. 44-51, 2001.
[5] J. Luoma, S. Kelly, and J. P. Tolvanen, "Defining Domain-Specific Modeling Languages: Collected Experiences," Proceedings of the 4th OOPSLA Workshop on Domain-Specific Modeling (DSM04), 2004.

No hay comentarios.:

Publicar un comentario