• No se han encontrado resultados

Una introducción al desarrollo de software dirigido por modelos. An introduction to the development of model-driven software

N/A
N/A
Protected

Academic year: 2021

Share "Una introducción al desarrollo de software dirigido por modelos. An introduction to the development of model-driven software"

Copied!
11
0
0

Texto completo

(1)

Tipo de artículo: Artículo original Temática: Ingeniería de software

Recibido: 18/01/2012 | Aceptado: 20/02/2012 | Publicado: 15/03/2012

Una introducción al desarrollo de software dirigido por modelos

An introduction to the development of model-driven software

Isabel María Higuera Igarza1*, Darián Horacio Grass Boada1, Arianna Páez Valdés2

1

Departamento de Programación e Ingeniería de Software. Facultad 2. Universidad de las Ciencias Informáticas, Carretera a San Antonio de los Baños, km 2 ½, Torrens, Boyeros, La Habana, Cuba. CP. 19370

3

Facultad 2. Universidad de las Ciencias Informáticas, Carretera a San Antonio de los Baños, km 2 ½, Torrens, Boyeros, La Habana, Cuba. CP. 19370

{

imhiguera, dgrass}@uci.cu; apaez@estudiantes.uci.cu

Resumen

En un mercado dinámico como el actual, el cual promueve la competencia, las empresas están obligadas a llevar sus ideas y proyectos lo más rápido posible a la realidad. Por este motivo, el desarrollo de software ha venido evolucionando constantemente, reduciendo los tiempos de desarrollo, y mejorando la calidad de los productos. El Desarrollo de Software Dirigido por Modelos es sin lugar a dudas el esquema de desarrollo que más atención recibe a nivel mundial. El presente artículo muestra un acercamiento a sus orígenes, etapas, ventajas y desventajas, así como algunas de las características más importantes que posee.

Palabras clave: Desarrollo de software dirigido por mode los, generación de código, modelos.

Abstract

In a dynamic market like this, which promotes competition, companies are forced to take their ideas and projects as quickly as possible to reality. For this reason, the software development has been evolving constantly, reducing development time and improving product quality. Development of Model-Driven Software is without doubt the most development scheme received worldwide attention. The present article shows one approach to its origins, stages, advantages and disadvantages as well as some important features he owns.

(2)

Keywords:

Code generation,

development of model-driven software, models.

Introducción

En el mercado actual las empresas están obligadas a ser flexibles y dinámicas, lo cual implica que deben ser capaces de desarrollar sus ideas lo más rápido posible para poder ser competitivas y no desaparecer. Las empresas de software han tenido que buscar alternativas que optimicen sus procesos de desarrollo y aumenten la rentabilidad de cada producto desarrollado. Una alternativa se basa en la reutilización, en donde se hace uso de un mismo conjunto de artefactos de software durante la fase de desarrollo de cada producto.

Paralelamente a la evolución de la tecnología se han creado varias plataformas para el desarrollo de software que soportan cada vez más funcionalidades. Estas plataformas son generalmente heterogéneas, es decir, que a pesar de ofrecer interfaces similares, estas no se crean ni se utilizan de la misma manera. Esto implica que las aplicaciones se desarrollen sobre una plataforma en particular y solamente puedan ejecutarse sobre esta.

Desarrollo de Software Dirigido por Modelos (MDD, por sus siglas en inglés) es una aproximación para solucionar el problema asociado a la complejidad de cada plataforma tecnológica y la inhabilidad que experimentan los lenguajes de propósito general en aliviar esta complejidad. MDD propone el uso de modelos como elementos de primera clase (que pueden ser procesados por un computador o herramienta) para el desarrollo de software. De acuerdo a lo anterior, estos modelos se pueden utilizar para representar los conceptos del negocio y la solución del problema en sus diferentes niveles (arquitectura, tecnología, etc.) (Ceballos, 2009).

El princ ipal objetivo del presente trabajo es caracterizar el desarrollo de software dirigido por modelos MDD lo cual permitirá identificar problemas comunes, analizar las soluciones existentes y definir líneas de trabajo e investigaciones futuras.

El método científico utilizado para el desarrollo de esta investigación es el teórico, específicamente el método histórico debido a que se analiza la trayectoria completa del paradigma MDD, revela las principales etapas de su desenvolvimiento y las conexiones históricas fundamentales.

Desarrollo

1.

¿Qué es un modelo?

Un modelo es una representación abstracta de un sistema y la porción del mundo que interactúa con él. (Ceballos, 2009) Los modelos en la ingeniería de software generalmente se utilizan para documentar elementos del problema y

(3)

la solución, ofreciendo un grado de abstracción alto con respecto a lo esencial del problema, puesto que responden preguntas sobre el sistema de software y la porción del mundo que es de interés para los stakeholders1.

Según Escobar (2011), un modelo tiene un grado de abstracción cuidadosamente seleccionado para: Descartar detalles irrelevantes (reduce la complejidad).

Descartar detalles constantes en la familia (reduce la complejidad). Explicitar los aspectos importantes (variables) (no oculta lo relevante).

Un modelo oculta ciertos detalles para mostrar aquellos relevantes para cierto propósito y se expresa en algún lenguaje o notación (Molina , 2011).

1.1

¿Qué es un modelo del software?

Un modelo de software es una descripción de un aspecto de un sistema software, escrita en un lenguaje bien definido. (Molina, 2011) La figura 1 muestra un modelo de clases UML como ejemplo de un modelo de software.

Figura 1. Modelo de clases UML

Los modelos permiten especificar aspectos del sistema software tales como los requisitos, la estructura, el comportamiento o el despliegue. En el análisis y diseño de aplicaciones software se crean modelos (“planos del software”) antes de escribir el código. A finales de los noventa aparece UML (del inglés, Unified Modeling Language) como lenguaje estándar para realizar modelado de software, la Figura 2 muestra un ejemplo de modelos y diagramas UML.

1

Stakeholders: es aquella persona o entidad que está interesada en la realizac ión de un proyecto o tarea, auspiciando el mismo ya sea mediante su poder de decisión o de financiamiento, o a través de su propio esfuerzo .

(4)

Figura 2. Modelos / Diagra mas UM L

Los modelos son de gran utilidad porque ayudan a razonar sobre el cómo se implementa, facilita la comunicación entre el equipo al existir un lenguaje común, proporcionan documentación que trasciende al proyecto, hay estructuras que no son visibles en los programas y también facilitan la generación de código a partir de modelos (Molina, 2011).

1.2

El metamodelo

Para poder realizar modelos resulta necesario un metamodelo del lenguaje. El metamodelo de un lenguaje es una descripción de todos los conceptos que pueden usarse en el mismo. Por ejemplo, los conceptos de paquete, clase, atributo y operaciones aparecen en UML; los conceptos de métodos, constructores e interfaces en JAVA; los conceptos de tabla, columna, clave son parte de SQL. Cada elemento de un modelo es una instancia de una metaclase en el metamodelo. Una clase define a sus objetos y una metaclase define a los elementos del modelo.

El meta-modelado consiste básicamente en dotar a los creadores de modelos de abstracciones apropiadas para su dominio particular, esto implica definir conceptos más específicos (Jiménez, 2011).

1.3

Modelo Conceptual

Los modelos están compuestos por un conjunto de Primitivas Conceptuales, que son los “ladrillos” utilizados para su construcción. Formalmente, se pueden definir las Primitivas Conceptuales como un elemento del lenguaje de modelado que permite representar de forma abstracta algún aspecto del sistema. Las Primitivas Conceptuales están agrupadas por modelos (Juristo, 2007).

(5)

El conjunto de estos modelos forman el Modelo Conceptual. El Modelo Conceptual se utiliza para representar las actividades que elicitan y describen el conocimiento general que un sistema particular debe ofrecer (Juristo, 2007).

1.

Desarrollo de Software Dirigido por Modelos

El Desarrollo de Software Dirigido por Modelos es un paradigma de ingeniería del software que propone el uso de modelos para conducir las distintas fases del desarrollo.(Jiménez, 2011) Además promete elevar los niveles de abstracción y automatización. MDD propone el uso de modelos como elementos de primera clase (que pueden ser procesados por un computador o herramienta) para el desarrollo de software. De acuerdo a lo anterior, estos modelos se pueden utilizar para representar los conceptos del negocio y la solución del problema en sus diferentes niveles (arquitectura, tecnología, etc) (Ceballos, 2009). Cada uno de los modelos representan un aspecto distinto del sistema, por ejemplo, puede haber un modelo para representar la persistencia, otro para representar la funcionalidad y otro para representar la interfaz (Juristo, 2007).

MDD utiliza un tipo determinado de lenguaje de programación que son los lenguajes específicos de dominio (DSL por sus siglas en inglés), los cuales presentan notables diferencias respecto a los lenguajes de propósito general. Los DSLs ofrecen las siguientes ventajas frente a los lenguajes de propósito general: (Jiménez, 2011)

Proporcionan implementaciones prediseñadas que representan los conceptos fundamentales del dominio. Proporcionan notación natural y evita el desorden sintáctico.

Permiten analizadores estáticos que pueden detectar más errores. Permiten la opción de generar código optimizado.

Permiten mejorar herramientas del entorno de desarrollo.

Un entorno MDD parte de un Modelo Conceptual donde se presenta el sistema de forma abstracta. Al Modelo Conceptual se pueden aplicar reglas de transformación para generar el código que implemente lo especificado en el Modelo Conceptual (Figura 3). Estas transformaciones se pueden automatizar mediante un Compilador de Modelos. Es este caso, el proceso MDD se automatiza y aparece el concepto de Tecnología de Transformación de Modelos (TTM), el cualse define como la capacidad de tomar un modelo abstracto y transformarlo de forma automática en otro modelo o código (Juristo, 2007).

(6)

El Modelo Conceptual está compuesto por varios modelos y cada modelo representa una vista diferente del sistema. Los modelos tienen relaciones entre sí que permiten la transformación de un modelo a otro de un nivel menos abstracto. A estas relaciones se les conoce con el nombre de “mapeos2” y hacen posible que en cada nivel de abstracción se expresen diferentes aspectos del sistema, manteniendo sincronizados los modelos de cada nivel. El procedimiento que transforma los modelos al código de un lenguaje de programación se denomina Compilación de Modelos. La Figura 4 muestra un esquema con todos los conceptos de MDD (Juristo, 2007).

Figura 4. Vista esquemática de los componentes de un modelo concept ual.

2.1

Objetivos principales del enfoque MDD

Dentro de los objetivos principales del enfoque MDD según Rotela (2007) se encuentran: Mejorar la calidad del software.

Mejorar la mantenibilidad del software. Mejorar los niveles de reusabilidad. Manejo de la complejidad – abstracción. Productividad.

Interoperabilidad.

La iniciativa MDD cubre un amplio espectro de áreas de investigación: lenguajes para la descripción de modelos, definición de lenguajes de transformación entre modelos, construcción de herramientas de soporte a las distintas tareas involucradas, aplicación de los conceptos en métodos de desarrollo y en dominios específicos, etc. Para esto

(7)

MDD propone el uso de un conjunto de estándares como MOF (del inglés, Microsoft Operation Framework), UML (del inglés, Unified Modeling Lenguage) y QVT (del inglés, Query/View/Transformation). Actualmente, algunos de estos estándares están bien fundamentados y se están empezando a aplicar con éxito, otros sin embargo están todavía en proceso de definición.

2.2

Etapas de MDD

MDD distingue al menos las siguientes etapas: (Escobar, 2011).

La construcción de un modelo del dominio, denominado CIM, que expresa la lógica del negocio desde una perspectiva independiente de la computación.

La construcción de los Modelos Independientes de la Plataforma (PIM), que expresa la funcionalidad del sistema en forma independiente de las características de plataformas de implementación específicas.

La transformación de un Modelo Independiente de la Plataforma (PIM), en uno o más Modelos Específicos de la Plataforma (PSM).

La transformación de modelos específicos de la plataforma (PSM) a modelos de implementación, denominados ISM.

Figura 5. Etapas de MDD.

2.3

Diferentes Visiones o Paradigmas MDD

Model-Driven Architecture (MDA): es un estándar de OMG (del inglés, Object Management Group) que defiende el MDD y agrupa varios lenguajes que pueden usarse para seguir esta aproximación. Según esta afirmación, MDA posee el valor añadido de proporcionar lenguajes con los que definir métodos que sigan MDD. Sin embargo, MDA no es por sí mismo un método que define técnicas, etapas, artefactos, etc, solamente proporciona la infraestructura tecnológica y conceptual con la que construir estos métodos MDD (Fons, 2004). En sí MDA no puede ser utilizado directamente para desarrollar software, es necesario que se construyan métodos precisos que proporcionen a los equipos de desarrollo pautas y técnicas que éstos puedan seguir y utilizar.

Domain-Specific Development (Desarrollo basado en DSL) : Un lenguaje específico del dominio (DSL, por sus siglas en inglés) proporciona construcciones y notación apropiada para resolver problemas en un dominio

(8)

de aplicación particular. Entre las ventajas ofrecidas por los DSLs se encuentran que tienen una mayor expresividad y facilidad de uso, incremento de la productividad, reducción de los costes de mantenimiento, facilitan comprensión de los expertos del dominio, mayor número de desarrolladores (Molina, 2011).

Factorías de Software = Líneas de Producto Software + MDD (MDD Fundamentos): una Ingeniería de Línea de Producto de Software (SPLE) es una familia de sistemas que comparten un conjunto de características administrables, las cuales satisfacen las necesidades específicas de un mercado o segmento particular y que son desarrolladas a partir de un conjunto común de activos base. Un activo base es un artefacto de software que se usa en la producción de varios productos, este puede ser un componente de software, una arquitectura, un modelo, un proceso, un documento o cualquier otro elemento útil en la construcción de un sistema.

De acuerdo al enfoque MDD, el aumento en el nivel de abstracción permite representar el modelo del problema y utilizarlo como elemento de primera clase para obtener el modelo de la solución independiente de la plataforma a través de transformaciones sucesivas.

Si se incorpora el enfoque MDD dentro de una SPL se puede aprovechar su carácter generativo para facilitar la derivación de los productos a través de la representación del problema y no de la solución. Adicionalmente, este enfoque permite generar soluciones que no estén basadas en una tecnología específica. De esta manera, se abre la posibilidad de representar la misma solución del problema en diferentes plataformas.

De acuerdo al enfoque MDD en donde los modelos representan elementos de primera clase y la derivación del software se realiza de manera generativa, los elementos involucrados en esta generación representarán los activos base de una Línea de producto (Ceballos, 2009).

2.4

Ejes principales de MDD

Por un lado hace énfasis en la separación entre la especificación de la funcionalidad esencial del sistema y la implementación de dicha funcionalidad usando plataformas tecnológicas específicas. Para ello, el MD D identifica dos tipos principales de modelos: modelos con alto nivel de abstracción e independientes de cualquier tecnología de implementación, llamados PIM (del inglés, Platform Independent Model) y modelos que especifican el sistema en términos de construcciones de implementación disponibles en alguna tecnología específica, conocidos como PSM (del inglés, Platform Specific Model).

Por otro lado, los modelos son considerados los conductores primarios en todos los aspectos del desarrollo de software. Un PIM es transformado en uno o más PSMs, es decir que para cada plataforma tecnológica específica se genera un PSM específico. La transformación entre modelos constituye el motor del MDD y de esta manera los modelos pasan de ser entidades meramente contemplativas a ser entidades productivas. MDD reduce el salto semántico entre el dominio del problema y de la solución, se reducen los tiempos de desarrollo

(9)

y las herramientas de generación pueden aplicar framework, patrones y técnicas cuyo éxito se ha comprobado (Rotela, 2007).

2.5

Aportaciones de MDD

Todos los autores están de acuerdo en que el aspecto novedoso de MDD respecto a los métodos tradicionales de desarrollo de software que usan modelos es que los modelos dejan de ser utilizados únicamente para la documentación o como guía para la implementación, convirtiéndose en el artefacto principal del proceso de desarrollo. Una vez especificado el sistema, los modelos se transforman en el producto final.

La clave para que sea posible llevar a cabo la filosofía de desarrollo promulgada por MDD es la transformación de los modelos. Hasta ahora esta etapa era ignorada o tratada de forma escueta e informal por los métodos que utilizaban modelos.

2.6

Ventajas de MDD

Según Molina (2011), las principales ventajas que tiene MDD es que:

Proporciona una elevación del nivel de abstracción debido a que se estudian los niveles de conceptos cercanos al dominio del problema.

El código fuente final se genera a partir de especificaciones de alto nivel (automatización) proporcionado una mayor productividad, mayor calidad, favorece el mantenimiento, los usuarios no expertos puede escribir códigos con más facilidad.

2.7

Deficiencias

Según Molina (2011), en los aspectos técnicos se pueden observar las siguientes deficiencias: Pobre usabilidad de las herramientas.

Problemas de interoperabilidad entre herramientas. Problemas de escalabilidad de los modelos.

Falta base teórica, tecnología actual desarrollada ad-hoc.

En los aspectos culturales se pueden observar las siguientes deficiencias: Falta concienciación sobre su potencial.

Dificultad de introducir nuevos métodos en la empresa.

Mentalidad conservadora de muchos profesionales, inercia al cambio. En los aspectos económicos se pueden observar las siguientes deficiencias:

(10)

Dificultad de encontrar personas con experiencia.

2.

Principales autores

MDD comenzó en Gran Bretaña en 1994 como un consorcio de compañías del Reino Unido que querían construir sobre Rapid Application Development (RAD, por sus siglas en inglés) y desarrollo iterativo. Habiendo empezado con 17 fundadores ahora cuenta con más de mil miembros y ha crecido fuera de sus raíces británicas. Siendo desarrollado por un consorcio, tiene un sabor diferente a muchos de los otros métodos ágiles. Tiene una organización de tiempo completo que lo apoya con manuales, cursos de entrenamiento, programas de certificación y demás. También lleva una etiqueta de precio, lo que limita la investigación sobre su metodología (Escobar, 2011).

Surgió con éxito en la era de la generación cuarta herramienta, hasta el punto que hoy existe una unidad entre un amplio número de expertos en modelización y proveedores de herramientas de todo el Lenguaje Unificado de Modelado (UML, por sus siglas en inglés), dirigido por el Object Management Group (OMG, por sus siglas en inglés) y sus Model Driven Architecture (MDA, por sus siglas en inglés) estándar. Sin embargo, MDD no siempre resultan ser popular entre los desarrolladores del núcleo duro, ya que muchos de ellos prefieren el código en lugar de construir modelos. Es en las grandes empresas con grandes necesidades, como la defensa y aeroespacial, que es más probable encontrar la actividad de modelado.

Conclusiones

En este artículo se han mostrado algunos elementos del paradigma MDD, se puede observar que el desarrollo de software dirigido por modelos cobra cada vez más auge dentro de la comunidad de desarrolladores, debido a que es una tendencia contemporánea relevante en la ingeniería de software.

Los beneficios radican en poder manejar proyectos complejos, acortar los ciclos de desarrollo y gestionar adecuadamente los niveles de expectativas de los interesados (stakeholders). La idea fundamental es representar los diversos aspectos y fases del desarrollo de un producto de software comenzando desde modelos del ámbito del problema, pudiendo incluso utilizar lenguajes de modelado propios de este ámbito, y vía transformaciones, obtener productos de software confiables y que respondan a las necesidades del ámbito de aplicación. Lo anterior permite mejorar la gestión y el control de calidad sobre proyectos de software debido a que el control es establecido sobre modelos más que sobre porciones de un programa.

(11)

Referencias

-

CEBALLOS, A. R. y. F. "Líneas de Productos de Software Dirigidas por Modelos (MD-SPL): Oportunidades y Retos." 2009.

- ESCOBAR, K. R. "Un acercamiento al Desarrollo Dirigido por Modelos." Serie Científica de la Universidad de las Ciencias Informáticas 4. 2011.

- FONS, V. P. A. V. J. M. J. Actas del I Taller sobre Desarrollo Dirigido por Modelos, MDA y Aplicaciones (DSDM’04). Málaga, España. 2004.

- JIMÉNEZ, R. M. Metodología de generación automática de aplicaciones colaborativas. España, UNIVERSIDAD AUTÓNOMA DE MADRID: 142. 2011.

- JURISTO, J. I. P. F. V. Ó. P. N. Modelado de la Usabilidad en Entornos de Desarrollo Dirigidos por Modelos. España. 2007.

- MOLINA, J. J. G. Creación de Lenguajes Específicos del Dominio, Universidad de La Habana. 2011. - MOLINA, J. J. G. Fundamentos del Desarrollo de Software Dirigido por Modelos, Universidad de La Habana. 2011.

- ROTELA, R. O. MDA Model Driven Architecture Arquitectura Dirigida por Modelos - MDD Model Driven Development Desarrollo Dirigido por Modelos. España, Universidad Católica Nuestra Señora de la Asunción. 2007.

Referencias

Documento similar

[r]

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

El desarrollo de la investigación está dirigido a la implementación de un sistema para monitorear los software y hardware de las computadoras en la Dirección

 Teniendo como referencia el estudio del estado del arte realizado a los modelos y métodos definidos para la ingeniería y desarrollo de software basado en reutilización,

… Añadir un nuevo elemento al Audit Rule de tipo Domain Element Target y seleccionar en la vista de propiedades Element = EClass Root. … Añadir un nuevo elemento al Audit Rule de

La propuesta que esta Tesis hace al respecto consiste en un nuevo método de desarrollo de software para redes de sensores, basado en el Desarrollo de

Para  solucionar  los  problemas  asociados  al  proceso  tradicional  de  desarrollo  de  aplicaciones  domóticas,  en  esta  Tesis  se  ha  desarrollado  (1) 

En este capítulo de la memoria se mostrarán los pasos a realizar para el desarrollo de un lenguaje de componentes, comenzando con el desarrollo de la sintaxis abstracta (meta-modelo)