La ingeniería basada en modelos ( MDE ) es una metodología de desarrollo de software que se centra en la creación y explotación de modelos de dominio , que son modelos conceptuales de todos los temas relacionados con un problema específico. Por lo tanto, destaca y apunta a representaciones abstractas del conocimiento y las actividades que gobiernan un dominio de aplicación particular , en lugar de los conceptos informáticos (es decir, algorítmicos).
La ingeniería basada en modelos (MDE) es un subcampo de un enfoque de diseño de software conocido como ingeniería de ida y vuelta . El alcance de la MDE es mucho más amplio que el de la arquitectura basada en modelos . [1]
El enfoque MDE tiene como objetivo aumentar la productividad maximizando la compatibilidad entre sistemas (mediante la reutilización de modelos estandarizados), simplificando el proceso de diseño (mediante modelos de patrones de diseño recurrentes en el dominio de la aplicación) y promoviendo la comunicación entre individuos y equipos que trabajan en el sistema (mediante una estandarización de la terminología y las mejores prácticas utilizadas en el dominio de la aplicación). Por ejemplo, en el desarrollo impulsado por modelos, los artefactos técnicos como el código fuente, la documentación, las pruebas y más se generan algorítmicamente a partir de un modelo de dominio. [2]
Un paradigma de modelado para MDE se considera eficaz si sus modelos tienen sentido desde el punto de vista de un usuario que está familiarizado con el dominio y si pueden servir como base para implementar sistemas. Los modelos se desarrollan mediante una amplia comunicación entre gerentes de productos, diseñadores, desarrolladores y usuarios del dominio de la aplicación. A medida que los modelos se acercan a su finalización, permiten el desarrollo de software y sistemas.
Algunas de las iniciativas de MDE más conocidas son:
Las primeras herramientas para soportar MDE fueron las herramientas de ingeniería de software asistida por computadora ( CASE ) desarrolladas en la década de 1980. Empresas como Integrated Development Environments (IDE – StP), Higher Order Software (ahora Hamilton Technologies, Inc., HTI), Cadre Technologies, Bachman Information Systems y Logic Works (BP-Win y ER-Win) fueron pioneras en el campo.
El gobierno de los EE. UU. se involucró en las definiciones de modelado creando las especificaciones IDEF . Con varias variaciones de las definiciones de modelado (ver Booch , Rumbaugh , Jacobson , Gane y Sarson, Harel , Shlaer y Mellor , y otros) finalmente se unieron para crear el Lenguaje de Modelado Unificado (UML). Rational Rose , un producto para la implementación de UML, fue realizado por Rational Corporation (Booch) en respuesta a la automatización que produce mayores niveles de abstracción en el desarrollo de software. Esta abstracción promueve modelos más simples con un mayor enfoque en el espacio de problemas. Combinado con la semántica ejecutable, esto eleva el nivel total de automatización posible. El Object Management Group (OMG) ha desarrollado un conjunto de estándares llamado Arquitectura Dirigida por Modelos (MDA), construyendo una base para este enfoque avanzado centrado en la arquitectura.
Según Douglas C. Schmidt , las tecnologías de ingeniería basadas en modelos ofrecen un enfoque prometedor para abordar la incapacidad de los lenguajes de tercera generación para aliviar la complejidad de las plataformas y expresar conceptos de dominio de manera efectiva. [4]
Entre las herramientas de software destacadas para la ingeniería basada en modelos se incluyen: