El modelado específico de dominio ( DSM , por sus siglas en inglés) es una metodología de ingeniería de software para diseñar y desarrollar sistemas, como el software informático . Implica el uso sistemático de un lenguaje específico de dominio para representar las diversas facetas de un sistema.
Los lenguajes de modelado específicos de un dominio tienden a admitir abstracciones de nivel superior que los lenguajes de modelado de propósito general , por lo que requieren menos esfuerzo y menos detalles de bajo nivel para especificar un sistema determinado.
Descripción general
El modelado específico de dominio a menudo también incluye la generación de código : automatizar la creación de código fuente ejecutable directamente a partir de los modelos de lenguaje específicos de dominio. Al no requerir la creación y el mantenimiento manual del código fuente, el lenguaje específico de dominio puede mejorar significativamente la productividad del desarrollador. [ 1 ] La fiabilidad de la generación automática, en comparación con la codificación manual, también reducirá el número de defectos en los programas resultantes, mejorando así la calidad.
El lenguaje específico de dominio difiere de los intentos anteriores de generación de código en las herramientas CASE de la década de 1980 o las herramientas UML de la década de 1990. En ambos casos, los generadores de código y los lenguajes de modelado fueron desarrollados por los proveedores de herramientas. Si bien es posible que un proveedor de herramientas cree un lenguaje específico de dominio y sus generadores, lo más común es que este lenguaje se desarrolle dentro de una misma organización. Uno o varios desarrolladores expertos crean el lenguaje de modelado y los generadores, y el resto de los desarrolladores los utilizan.
El hecho de que el lenguaje de modelado y el generador hayan sido desarrollados por la propia organización que los utilizará permite una perfecta adaptación a su dominio específico y una respuesta eficaz a los cambios en dicho dominio.
Los lenguajes específicos de dominio suelen abarcar diversos niveles de abstracción para un dominio concreto. Por ejemplo, un lenguaje de modelado específico para teléfonos móviles podría permitir a los usuarios especificar abstracciones de alto nivel para la interfaz de usuario , así como abstracciones de bajo nivel para almacenar datos como números de teléfono o configuraciones. Del mismo modo, un lenguaje de modelado específico para servicios financieros podría permitir a los usuarios especificar abstracciones de alto nivel para los clientes, así como abstracciones de bajo nivel para implementar algoritmos de negociación de acciones y bonos.
Temas
Definición de lenguajes específicos de dominio
Para definir un lenguaje, se necesita un lenguaje en el que escribir la definición. El lenguaje de un modelo suele denominarse metamodelo ; por lo tanto, el lenguaje para definir un lenguaje de modelado es un meta-metamodelo. Los meta-metamodelos se pueden dividir en dos grupos: aquellos que se derivan de lenguajes existentes o son adaptaciones de los mismos, y aquellos que se han desarrollado específicamente como meta-metamodelos.
Entre los metamodelos derivados se incluyen diagramas entidad-relación , lenguajes formales , la forma extendida de Backus-Naur (EBNF), lenguajes de ontología , esquemas XML y Meta-Object Facility (MOF). La principal ventaja de estos lenguajes reside en la familiaridad y la estandarización del lenguaje original.
La filosofía del modelado específico de dominio favorece la creación de un nuevo lenguaje para una tarea específica, por lo que no sorprende que existan nuevos lenguajes diseñados como meta-metamodelos. La familia más utilizada de estos lenguajes es la de OPRR, [ 2 ] [ 3 ] GOPRR, [ 4 ] y GOPPRR, que se centran en brindar soporte a las funcionalidades de los lenguajes de modelado con el mínimo esfuerzo.
Soporte de herramientas para lenguajes específicos de dominio
Muchos lenguajes de modelado de propósito general ya cuentan con herramientas CASE disponibles . Los lenguajes específicos de dominio suelen tener un mercado demasiado pequeño como para justificar el desarrollo de una herramienta CASE a medida desde cero. En cambio, la mayoría de las herramientas de soporte para lenguajes específicos de dominio se basan en marcos de trabajo o entornos de lenguaje específicos de dominio ya existentes.
Un entorno de lenguaje específico de dominio puede considerarse una herramienta de metamodelado, es decir, una herramienta de modelado utilizada para definir otra herramienta de modelado o herramienta CASE. La herramienta resultante puede funcionar dentro del entorno de lenguaje específico de dominio o, con menos frecuencia, desarrollarse como un programa independiente. En el caso más común, el entorno de lenguaje específico de dominio ofrece una capa adicional de abstracción en comparación con una herramienta CASE tradicional.
El uso de un entorno de lenguaje específico de dominio puede reducir significativamente el costo de obtener soporte para herramientas de dicho lenguaje, ya que un entorno bien diseñado automatiza la creación de partes del programa que serían costosas de desarrollar desde cero, como editores, navegadores y componentes específicos del dominio. El experto en el dominio solo necesita especificar las construcciones y reglas específicas del dominio, y el entorno de lenguaje específico de dominio proporciona una herramienta de modelado adaptada al dominio objetivo.
La mayor parte del lenguaje específico de dominio existente se utiliza en entornos de lenguaje específico de dominio, ya sean comerciales como MetaEdit+ o Actifsource , de código abierto como GEMS o académicos como GME . La creciente popularidad del lenguaje específico de dominio ha llevado a la incorporación de marcos de trabajo para este lenguaje en los IDE existentes, por ejemplo, Eclipse Modeling Project (EMP) con EMF y GMF , o en las herramientas DSL de Microsoft para fábricas de software .
Lenguaje específico de dominio y UML
El Lenguaje Unificado de Modelado (UML) es un lenguaje de modelado de propósito general para sistemas intensivos en software, diseñado principalmente para la programación orientada a objetos . Por consiguiente, a diferencia de los lenguajes específicos de dominio, UML se utiliza para una amplia variedad de propósitos en diversos ámbitos. Las primitivas que ofrece UML son las de la programación orientada a objetos, mientras que los lenguajes específicos de dominio ofrecen primitivas cuya semántica resulta familiar para todos los profesionales de ese dominio. Por ejemplo, en el ámbito de la ingeniería automotriz , existen modelos de software para representar las propiedades de un sistema de frenos antibloqueo o un volante , entre otros.
UML incluye un mecanismo de perfiles que permite restringirlo y personalizarlo para dominios y plataformas específicos. Los perfiles UML utilizan estereotipos , atributos de estereotipo (conocidos como valores etiquetados antes de UML 2.0) y restricciones para limitar y extender el alcance de UML a un dominio particular. Quizás el ejemplo más conocido de personalización de UML para un dominio específico sea SysML , un lenguaje específico de dominio para la ingeniería de sistemas .
UML es una opción popular para diversos enfoques de desarrollo dirigido por modelos, en los que artefactos técnicos como código fuente, documentación, pruebas y otros se generan algorítmicamente a partir de un modelo de dominio. Por ejemplo, los perfiles de aplicación del estándar de documentos legales Alberto Álvarez O. pueden desarrollarse representando conceptos y ontologías legales en objetos de clase UML. [ 5 ]
Véase también
- Ingeniería de software asistida por ordenador
- Diseño orientado al dominio
- Lenguaje específico del dominio
- Lenguaje de modelado específico del marco
- Modelado de propósito general
- Multimodelado específico del dominio
- Ingeniería basada en modelos
- Arquitectura basada en modelos
- Fábricas de software
- Modelado específico de cada disciplina
Referencias
- ↑ Kelly, S. y Tolvanen, J.-P., (2008) Modelado específico de dominio: Facilitando la generación completa de código, John Wiley & Sons, Nueva Jersey. ISBN 978-0-470-03666-2
- ↑ RJ Welke. El repositorio CASE: más que otra aplicación de base de datos. En WW Cotterman y JA Senn, editores, Actas del Simposio INTEC de 1988 sobre Análisis y Diseño de Sistemas: una estrategia de investigación, Atlanta, Georgia, 1988. Universidad Estatal de Georgia.
- ↑ Smolander, K., (1992) OPRR - Un modelo para modelar métodos de desarrollo de sistemas. En: Herramientas CASE de próxima generación (eds. K. Lyytinen, V.-P. Tahvanainen) IOS Press, Ámsterdam, Países Bajos, pp. 224-239.
- ↑ Kelly, S., Lyytinen, K., y Rossi, M., «MetaEdit+: Un entorno CASE multiusuario y multiherramienta totalmente configurable», Actas de CAiSE'96, 8.ª Conferencia Internacional sobre Ingeniería Avanzada de Sistemas de Información, Lecture Notes in Computer Science 1080, Springer-Verlag, págs. 1-21, 1996. (en la tesis doctoral como 3metools.pdf)
- ↑ Flatt, Amelie; Langner, Arne; Leps, Olof (2022). Desarrollo dirigido por modelos de perfiles de aplicaciones: un marco conceptual para la generación basada en modelos de subesquemas XML (1.ª ed.). Heidelberg: Sprinter Nature. ISBN 978-3-031-14131-7.
Enlaces externos
- Modelado específico de dominio para el desarrollo de software generativo. Archivado el 31/01/2010 en Wayback Machine . Artículo web de Martijn Iseger, 2010.
- Modelado específico de dominio en marcos de IoC. Artículo web de Ke Jin , 2007.
- Modelado específico de dominio para la generación completa de código a partir de métodos y herramientas. Artículo web de Juha-Pekka Tolvanen, 2005.
- Creación de un lenguaje de modelado específico de dominio para un marco de trabajo existente. Artículo web de Juha-Pekka Tolvanen, 2006.
- Temas de lenguajes de programación
- Lenguajes de programación de simulación