Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
A diferencia de un lenguaje de uso general como C# o UML, un lenguaje específico de dominio (DSL) está diseñado para expresar instrucciones en un espacio de problemas determinado o un dominio.
Los DSL conocidos incluyen expresiones regulares y SQL. Cada DSL es mucho mejor que un lenguaje de uso general para describir las operaciones en cadenas de texto o en una base de datos, pero mucho peor para describir ideas que están fuera de su propio ámbito. Hay industrias individuales que también tienen sus propios DSL. Por ejemplo, en el sector de las telecomunicaciones, los lenguajes de descripción de llamadas se usan ampliamente para especificar la secuencia de estados de una llamada telefónica, y en el sector de los viajes aéreos se usa un DSL estándar para describir las reservas de vuelos.
Su negocio y su proyecto también tratan con conjuntos especiales de conceptos que se pueden describir con un DSL. Por ejemplo, podría definir un DSL para una de estas aplicaciones:
Plan de rutas de navegación en un sitio web.
Diagramas de cableado para componentes electrónicos.
Redes de cintas transportadoras y equipos de manipulación de equipajes de un aeropuerto.
Al diseñar un DSL, se define una clase de dominio para cada uno de los conceptos importantes del dominio, como una página web, una lámpara o un mostrador de facturación del aeropuerto. Puede definir relaciones de dominio como hipervínculo, cable o cinta transportadora para vincular los conceptos.
Los usuarios del DSL crean modelos. Los modelos son instancias del DSL. Por ejemplo, describen un sitio web determinado, o el cableado de un dispositivo determinado, o el sistema de manipulación de equipaje de un aeropuerto determinado.
Los usuarios pueden ver un modelo como un diagrama o como un formulario de Windows. Los modelos también se pueden ver como XML, que es cómo se almacenan. Al definir un DSL, se define cómo aparecen las instancias de cada clase de dominio y relación en la pantalla del usuario. Un DSL típico aparece como una colección de iconos o rectángulos conectados por flechas.
En la ilustración siguiente se muestra un modelo pequeño en un DSL con forma de diagrama:
Uso de los DSL
Una aplicación típica de un DSL es generar código de programa u otros artefactos. Al definir el DSL, puede definir plantillas de texto que lean un modelo del DSL y generen archivos de texto.
Por ejemplo, podría escribir plantillas que tomen un plan del aeropuerto y generen parte del software para el manejo de equipajes, así como algunos de los documentos de usuario que describen el plan.
Cuando haya definido un DSL, puede distribuirlo a otros usuarios que pueden instalarlo en sus propios equipos. Los usuarios del DSL pueden crear y editar modelos en Visual Studio.
También puede definir comandos de menú y otras herramientas que ayuden a los usuarios a editar el DSL, restricciones de validación para garantizar que el DSL se usa correctamente y plantillas de elementos que ayuden a los usuarios a crear nuevas instancias. Puede encapsular uno o varios DSL con sus herramientas y otras extensiones de Visual Studio como un paquete integrado.
Normalmente, se crea un lenguaje específico de dominio cuando un equipo de desarrollo tiene que escribir un código similar para varios productos. Por ejemplo, una empresa especializada en sistemas de manipulación de equipajes podría definir un DSL de rastreo de equipajes desde el que pueden generar parte del código de cada instalación. Las ventajas del DSL son que sus clientes pueden entenderlo, que el código generado a partir de él es confiable y que el sistema puede actualizarse rápidamente si cambian los requisitos de los clientes.
Herramientas del lenguaje específico de dominio le permite crear un DSL que tiene su propio diseñador gráfico y su propia notación de diagrama y, a continuación, usar el lenguaje para generar el código fuente adecuado para cada proyecto.
Desarrollo específico del dominio
El desarrollo específico del dominio es el proceso de identificar las partes de las aplicaciones que se pueden modelar mediante un lenguaje específico de dominio y, a continuación, construir el lenguaje e implementarlo en los desarrolladores de aplicaciones. Los desarrolladores usan el lenguaje específico de dominio para construir modelos específicos para sus aplicaciones, usan los modelos para generar código fuente y, finalmente, usan el código fuente para desarrollar las aplicaciones.
Aspectos del desarrollo específico del dominio gráfico
Un lenguaje específico del dominio gráfico debe incluir las siguientes características:
Notation
Modelo de dominio
Generación de artefactos
Serialización
Integración con Visual Studio
Notation
Un lenguaje específico de dominio debe tener un conjunto razonablemente pequeño de elementos que se puedan definir y ampliar fácilmente para representar construcciones específicas del dominio. Una notación consta de formas, que representan los elementos y conectores que, a su vez, representan las relaciones entre los elementos, en una superficie de diagrama gráfico. En Herramientas del lenguaje específico de dominio, las formas se pueden extender y refinar para que representen los elementos del lenguaje específico de dominio.
Modelo de dominio
Un lenguaje específico de dominio debe combinar el conjunto de elementos y las relaciones entre ellos en una gramática coherente. También debe definir si las combinaciones de elementos y relaciones son válidas. Por ejemplo, los lenguajes de programación suelen evitar la herencia circular, en la que una clase se deriva de una segunda clase y la segunda clase se deriva de la primera. También se pueden usar las restricciones para expresar una lógica de negocios, por ejemplo, una persona no puede ser dependiente de sí misma. Herramientas del lenguaje específico de dominio usa restricciones para expresar los tipos de restricciones que requieren la mayoría de los lenguajes específicos de dominio.
Generación de artefactos
Uno de los principales propósitos de un lenguaje específico de dominio es generar un artefacto, por ejemplo, código fuente, un archivo XML u otros datos utilizables. Normalmente, un cambio en el modelo significa un cambio en el artefacto. Puede usar Herramientas del lenguaje específico de dominio para generar artefactos y volver a generarlos si cambia el modelo.
Serialización
Un lenguaje específico de dominio debe conservarse en algún formulario que se pueda editar, guardar, cerrar y volver a cargar. Herramientas del lenguaje específico de dominio usa un formato XML que le permite definir y personalizar cómo se serializa o conserva el lenguaje específico de dominio.
Integración con Visual Studio
Dado que Herramientas del lenguaje específico de dominio se hospeda en Visual Studio, extiende muchas ventanas y controles de Visual Studio. También permite personalizar el comportamiento de los comandos de menú, los elementos del cuadro de herramientas y otros elementos de la interfaz de usuario.
También puede crear un adaptador de ModelBus para el lenguaje específico de dominio. Este adaptador le permite hacer referencia a un modelo y a los elementos dentro del mismo, y le permite escribir código que puede acceder a una instancia de DSL y actualizarla. Mediante el eficaz mecanismo de ModelBus, puede escribir extensiones de Visual Studio que funcionen con varios modelos. También puede escribir aplicaciones independientes que funcionen con modelos. Para más información, consulte Integrar modelos utilizando Visual Studio ModelBus.
Ventajas del desarrollo específico de dominio
Un lenguaje específico de dominio puede proporcionar las siguientes ventajas:
Contiene construcciones que se ajustan exactamente al espacio del problema.
A diferencia de los lenguajes de uso general, un lenguaje específico de dominio consta de elementos y relaciones que representan directamente la lógica del espacio del problema. Por ejemplo, una aplicación de pólizas de seguro debe incluir elementos para pólizas y reclamaciones. Un lenguaje específico de dominio facilita el diseño de la aplicación y la búsqueda y corrección de errores de lógica.
Permite a los no desarrolladores y a las personas que no conocen el dominio comprender el diseño general.
Mediante el uso de un lenguaje gráfico específico de dominio, puede crear una representación visual del dominio para que los no desarrolladores puedan comprender fácilmente el diseño de la aplicación.
Facilita la creación de un prototipo de la aplicación final.
Los desarrolladores pueden usar el código que genera su modelo para crear una aplicación prototipo que pueden mostrar a los clientes.
Proceso de desarrollo específico de dominio
La mayoría de los equipos de desarrollo de software que usan lenguajes específicos de dominio siguen estos pasos para crear y usar sus modelos:
El equipo distingue las partes variables del dominio de las partes que nunca cambian.
Los desarrolladores escriben código para las partes fijas y dejan puntos de extensión para las partes variables.
El desarrollador de software principal o el arquitecto crea un lenguaje específico de dominio que incorpora los patrones de diseño de las partes fijas del dominio y los puntos de extensión de las partes variables.
El desarrollador de software principal o el arquitecto implementa el lenguaje específico de dominio para los desarrolladores de las distintas aplicaciones que produce el equipo.
Cada desarrollador crea un modelo que se aplica a la aplicación específica.