La Ingeniería dirigida por modelos o MDE (Model Driven Engineering) es una metodología de desarrollo de software que se centra en la creación de modelos o abstracciones. Estos más cerca de algunos conceptos de dominio que de conceptos computacionales (o algorítmicos). Todas las formas de ingeniería se basan en modelos de sistemas reales. Los modelos se utilizan de muchas formas, una para predecir las cualidades del sistema; otra para comprender aspectos específicos del sistema, además determinar el motivo del impacto de los cambios y es muy útil para comunicar las características principales del sistema a las partes interesadas.
En términos de acceso al modelo, es decir, el sistema del modelo tiene suficientes detalles para permitir la generación de un sistema de aplicación completo a partir de los propios modelos. De hecho, «el modelo es el código», es decir, el foco está en el modelado y el código es generado mecánicamente por modelos. Al comparar el MDE con la orientación a objetos: en MDE «todo es un modelo», y en la orientación de objetos «todo es un objeto».
MDE surge como la respuesta de la ingeniería de software a la industrialización del desarrollo de software, este tiene enfoque abierto e inclusivo que abarca muchos otros espacios tecnológicos de manera uniforme. El espacio de trabajo tecnológico es un contexto con una serie de conceptos relacionados, la habilidad, herramientas, conocimientos necesarios y posibilidades. Ejemplos de espacios tecnológicos son los lenguajes de programación con sintaxis concreta y abstracta, ontologías de ingeniería basadas en XML, lenguajes del Sistema de gestión de bases de datos (DBMS) y Arquitectura basada en modelos (MDA).
Objetivos del MDE
El objetivo principal de la mayoría de los proveedores de herramientas es brindar beneficios a los usuarios, entre ellos se tienen:
- La necesidad de separar claramente la lógica comercial y la tecnología utilizada.
- La separación de preocupaciones, considerado uno de los principios fundamentales en la ingeniería de software. Este principio afirma que un problema dado implica diferentes tipos de preocupaciones que deben identificarse y segregarse para abordar la complejidad y lograr factores de calidad de ingeniería como durabilidad, adaptabilidad, sostenibilidad y reutilización.
- La necesidad de modelar y especificar la parte de la lógica empresarial a un nivel abstracto, la plataforma de implementación y proyectar el nivel abstracto en la plataforma.
- Generar nuevo software a partir del modelado.
- Dar apoyo y herramientas a los desarrolladores para mejorar su productividad.
- Completar el proceso de construcción del programa mediante el uso de los modelos a lo largo del ciclo de vida del programa.
- Generar cambios en las partes del modelo.
Beneficios de MDE
El MDE tiene como objetivo maximizar la productividad, la compatibilidad del sistema, simplificar el proceso de diseño y promover la comunicación entre las personas y los equipos que trabajan en el sistema. Otro objetivo del MDE es aumentar la rentabilidad de una empresa, derivada del esfuerzo de desarrollo de software.
Este beneficio se ofrece de dos formas fundamentales: mejorando la productividad a corto plazo del desarrollador (aumentando el valor de los primeros artefactos de software) y mejorando la productividad del desarrollador a largo plazo (evitando la rápida obsolescencia de los objetos de software primarios). Un segundo aspecto del MDE, y estratégicamente más importante, es la reducción de la sensibilidad al cambio de los primeros objetos de arte. Se indican cuatro formas fundamentales de cambio de particular importancia:
- Personal: el desarrollo de conocimientos vitales no solo debe almacenarse en la mente de los desarrolladores, esta información se perderá en el caso de frecuentes fluctuaciones de personal. Por lo tanto, esta información debe ser fácilmente accesible para cualquier persona que no sea el creador del artefacto de software.
- Requisitos: el cambio de requisitos es un problema conocido en la ingeniería de software. En el entorno empresarial actual, están surgiendo nuevas funciones más rápido que nunca. Todos estos cambios deberían tener un bajo impacto en los sistemas existentes en términos de mantenimiento y no distorsionar los sistemas en línea.
- Plataformas de desarrollo: están en un estado de constante evolución. Para disociar la vida de un artefacto de software de la herramienta de desarrollo utilizada para su creación inicial, debe disociar el objeto o modelo que representa el objeto de la herramienta de desarrollo.
- La implementación de plataformas: para aumentar la vida útil de los objetos de software, es necesario protegerlos de cambios en la distribución de la plataforma.
Metamodelado de sistemas
Un metamodelo es un modelo que especifica los conceptos de un lenguaje, las relaciones entre ellos y las reglas estructurales que limitan los posibles elementos de los modelos válidos, así como el cumplimiento de las reglas semánticas del dominio. Un metamodelo define la sintaxis abstracta y la semántica estática de un lenguaje de modelado. Esto significa que cada modelo está escrito en el lenguaje indicado por su metamodelo.
En otras palabras, se podría hacer referencia a un modelo como una instancia de su metamodelo. Para definir un metamodelo se necesita un lenguaje de metamodelado que se describe con un metametamodelo. OMG propone una arquitectura de cuatro niveles para definir sus estándares, donde cada capa se define como una instancia de la anterior.
Este modelo de arquitectura denominado MOF (Meta Object Facility) representa el nivel meta más general (M3) y tiene el objetivo de permitir la incorporación de nuevos lenguajes de modelado (metamodelos) para propósitos específicos (OMG-MOF, 2003).
- Capa M3 (Metametamodelo): corresponde a MOF, es una especificación que define un lenguaje abstracto para especificar, construir y administrar elementos comunes a cualquier metamodelo.
- Capa M2 (Metamodelos): especifica las entidades de un lenguaje de modelado. Los lenguajes que se han definido como instancias MOF son: UML, CWM y el propio MOF. Además, los metamodelos se definen para otros fines, como objetos de negocio, flujos de trabajo y modelos de componentes (OMG-MOF, 2003).
- Capa M1 (Modelos): se refiere a los modelos de usuario que generalmente se desarrollan al construir un sistema de información.
- Capa M0 (instancias): describe las instancias de entidad propuestas en un modelo de un sistema de información. Es en este nivel que los diagramas de objetos se pueden utilizar como instancias de clase para verificar que se satisfacen las restricciones definidas en el nivel de modelo (M1).
MDA
Las infraestructuras de tecnologías de la información amplían su alcance en todas sus dimensiones. Las nuevas plataformas y aplicaciones deben interactuar con los sistemas existentes. Los negocios virtuales abarcan múltiples negocios; Internet impone nuevos desafíos de integración a medida que se extiende a todos los rincones de cada organización. Continuamente se desarrollan nuevas plataformas de implementación, cada una de las cuales afirma ser «la próxima gran novedad».
Quienes diseñan sistemas informáticos, ya sea para bancos u organizaciones de cualquier actividad, se enfrentan a enormes opciones tecnológicas. Para proteger sus inversiones y maximizar la flexibilidad, la compra de hardware, que implemente estándares de interconexión abiertos, como Ethernet y USB, y software que utilice estándares abiertos como la interfaz CORBA, constituye un acto de sensatez en el mundo rápidamente cambiante de hoy y en el entorno de TI de múltiples proveedores.
El desarrollo de herramientas digitales
En la actualidad el desarrollo de software se ha convertido en una prioridad de nuestra sociedad. Es por ello que la demanda de profesionales se ha convertido en un inconveniente propio del día a día. Sin embargo, este resulta un campo exigente, ya que la responsabilidad de generar estas herramientas conlleva tiempos de trabajo extensos y esfuerzo intelectual en gran medida.
TECH Universidad Tecnológica oferta un amplio portafolio educativo enfocado en la especialización del profesional moderno. Cada uno de sus programas ha sido diseñado por expertos en el campo. Tal es el caso de su Facultad de Informática, donde se pueden hallar programas tales como el Máster en Ingeniería de Software y Sistemas de Información y el Máster en Tecnología Específica de Telecomunicación. Sin embargo, para aquellos profesionales que buscan especializarse en el ámbito del desarrollo de software, no cabe duda que su mejor opción será el Máster en Ingeniería de Software y Sistemas de Información.