Está en la página 1de 20

LENGUAJES ESPECÍFICOS DE

DOMINIO - DSL
El usar lenguajes generalistas ha tenido bastante aceptación y
éxito hasta el día de hoy, de hecho poseen una ventaja
indudable: con dichos lenguajes se puede resolver cualquier
tipo de problema.

Sin embargo esta ventaja no es gratis, al contrario, hay que


pagar un precio, que es que no todos los problemas son
igualmente sencillos de resolver.

De hecho, dependiendo del lenguaje generalista que se use, un


mismo problema es más sencillo o más difícil de resolver. 
Ejemplo No. 1
Trabajar con listas o hacer algoritmos recursivos es muy simple
en LISP, sin embargo en BASIC o COBOL no es tan sencillo.

Suponga que en cambio, con COBOL es sencillo definir


algoritmos de negocio.

Ejemplo No. 2
Generar una página web dinámica es sencillo en PHP pero más
complejo en JAVA.

y JSP?  JSP no es lenguaje JAVA, es un DSL.


Que es mejor?

Tener un cuchillo multiuso para cualquier cosa?

Tener un set de cuchillo de postre, de carne, de


pescado y un bisturí y elegir los cuchillos que mejor se
adapten a la situación?.
DSL
Lenguaje de programación dedicado a un problema de dominio
en particular, o una técnica de representación o resolución de
problemas específica.

a.Lenguajes de programación de propósito general: C o Java.


b.Lenguajes de modelado de propósito general: UML.

Los DSL tienen metas de diseño importantes que contrastan con


aquellas de los lenguajes de propósito general:

1.Tienen menos alcance.


2.Son muchos más expresivos dentro de su dominio.
DSL - Características
a.Por lo general (no necesariamente) simples: No tiene porque
ser Turing Complete

b.No está pensado para describir la totalidad del sistema, sino


para ser complementado con otros lenguajes

c.Ofrece un mayor nivel de abstracción, que los lenguajes de


propósito general

d.Esconde complejidades innecesarias


Ventajas de los DSL
a.Los DSL permiten expresar soluciones usando los términos y el nivel de
abstracción apropiado para el dominio del problema. En consecuencia, los
mismos expertos de dominio pueden comprender, validar, modificar y a
menudo desarrollar programas en DSL.

b.Es código auto-documentado.

c.Los DSL mejoran la calidad, productividad, confianza, mantenibilidad,


portabilidad y reusabilidad de las aplicaciones.

d.Los DSL permiten validaciones a nivel del dominio. Mientras las


construcciones del lenguaje estén correctas, cualquier sentencia escrita
puede considerarse correcta.
Desventajas de los DSL
a.El costo de aprender un nuevo lenguaje vs. su aplicación limitada.

b.El costo de diseñar, implementar y mantener un DSL y las herramientas


para trabajar con él.

c.Encontrar, establecer y mantener el alcance adecuado.

d.Dificultad para balancear las ventajas y desventajas entre las


construcciones de los DSL y de los lenguajes de propósito general.

e.Potencial pérdida de eficiencia y rendimiento en comparación con el


software escrito "a mano".
DSL
Los lenguajes de propósito general se utilizan para hacer
variados tipos de aplicaciones.

Los lenguajes de domino específico son creados para


trabajar en tareas especificas y ambientes bien
delimitados
Que ejemplos de
DSL he usado?
DSL - Ejemplos
a.SQL para gestionar consultas.
b.XML para transportar datos, y/o persistencia.
c.HTML para definir interfaces de usuario. (Este DSL se ha ido
“extendiendo” para ir convirtiéndolo cada vez más en un
lenguaje generalista).
d.CSS para definir interfaces de usuario a nivel de presentación
pura.
e.JSP. Para definir interfaces de usuario web.
f.WSDL, para especificar interfaces de datos de servicios web.
g.XML de configuración de spring, para definir grafos de objetos.
h.XML de hibernate para hacer mapeo entidad/relación.
i.jMock para definir Mock Objects.
La principal idea compartida por todos los paradigmas
englobados dentro del Desarrollo de Software Dirigido por
Modelos (DSDM) es la conveniencia de que los programadores
empleen lenguajes de más alto nivel de abstracción que los
lenguajes de programación, esto es, lenguajes que manejen
conceptos más cercanos al dominio de la aplicación - DSL.
Para elaborar un DSL debe realizar un análisis de dominio
formal. La salida de esta etapa es un modelo de dominio que
consiste de:

a.Una definición de dominio que describe el alcance del dominio

b.Terminología del dominio (vocabulario, ontología)

c.Descripciones de los conceptos del dominio

d.Modelos característicos que describen las constantes y


variables de los conceptos del dominio y sus interdependencias
FASES EN EL DESARROLLO DE DSL EXTERNO
1.Diseño de un metamodelo
2.Desarrollo dl formato de representación
3.Generación de transformaciones
4.Construcción de un IDE

Metamodelado: análisis, diseño y construcción de los metamodelos


necesarios para cubrir un determinado tipo de problema, así como las
reglas y las restricciones aplicables.

Metamodelo: conjunto de conceptos del dominio a modelar (metaclases) y


las relaciones entre ellas (meta asociaciones)

Objetivo: definir los conceptos y relaciones del dominio del problema que se
quiere abordar mediante un diagrama de clases, . Estos se definen de
forma abstracta, independientemente del formato de representación
deseado. Los metamodelos definirán las sintaxis abstractas del leguaje
Web Semántica, Ontologías y la relación con los metamodelos
Las ontologías proveen todas las características de vocabulario y taxonomía que se
necesitan para especificar un dominio del conocimiento.

El metamodelo es un mecanismo para definir la sintaxis abstracta de un lenguaje de


modelamiento, que determina la validez de los modelos en esos lenguajes.
JESS (Java ExpertSystem Shell)

Es un lenguaje de programación basado en CLIPS. Fue creado por Ernest Friedman-Hill de


Sandia National Laboratories en Livermore, CA. Se puede usar de dos modos: 

1.Por un lado se puede usar como un Sistema Experto (Sistema Basado en Conocimiento).


Un Sistema Experto es un programa que emula al razonamiento humano, de manera que
ejecuta ciertas reglas (definidas por el programador) sobre el conocimiento que se tiene.
Este uso se aplica a los agentes inteligentes, por lo que es donde profundizaremos más. 
2.Por otro lado, JESS se ha escrito en JAVA y se puede integrar perfectamente en él
accediendo directamente en sus clases y librerías para conseguir un desarrollo más rápido
de las aplicaciones.

JESS también puede tener otros usos como incluirse en navegadores o en applets (con la
clase jess.ConsoleApplet), pero no es aconsejable porque suele ocupar bastante, es mejor
dejarlo en el servidor. 
JESS vs. Prolog 

JESS y Prolog son lenguajes declarativos, es decir, basados en las


matemáticas y en la lógica, en oposición a otros tipos de lenguajes más
comprensibles para el razonamiento humano.

Por ser del mismo tipo, el hecho de conocer uno de estos lenguajes
puede ayudar mucho a la hora de empezar a estudiar el otro. 
OWL Protégé

Ruby
http://nereida.deioc.ull.es/~lpp/perlexamples/node751.html

Aplicación de una ontología para la estructuración semántica de la física


estática utilizada en ingeniería civil

http://biblioteca.uniminuto.edu/ojs/index.php/Inventum/article/viewFile/479/4
52
MakeUrExam

Domain Specific Language - MakeUrExam es un DSL (lenguaje de


dominio específico) utilizado para la creación y realización de
exámenes.

Fuente:

https://github.com/alu0100697063/PL_ProyectoFinal_MakeUrExa
m/wiki
Referencias:
1.Un Lenguaje Específico de Dominio para la Generación Automática de Código en Sistemas de Monitoreo
Inalámbrico de Silos Bolsa. Fuente: http://caeti.uai.edu.ar/archivos/305_PAPER_LACCEI_2011.PDF
2.Aplicando herramientas MDE en la definición de un lenguaje especifico de dominio para la gestión de
modelos . Fuente: http://41jaiio.sadio.org.ar/sites/default/files/336_ASSE_2012.pdf
3.Aplicación del Modelado Específico de Dominio a las Redes de Sensores Inalámbricos . Fuente:
http://repositorio.bib.upct.es/dspace/bitstream/10317/117/1/pfc2535.pdf
4.Lenguaje especifico de dominio para obtener indicadores del desarrollo de competencias a través de un LMS.
Fuente: http://rodin.uca.es/xmlui/bitstream/handle/10498/15529/memoria.pdf?sequence=1
5.Interpretación dinámica de múltiples lenguajes de dominio específico . Fuente:
http://www.iiis.org/CDs2012/CD2012ADII/ATIC_2012/PapersPdf/AT342PL.pdf
6.Definición de Lenguajes de Modelos MDA vs DSL. Fuente: https://www.uclm.es/dep/tsi/pdf/Informe_T.pdf

También podría gustarte