Fundamentos del Desarrollo de Software Dirigido por Modelos
Jesús J. García Molina Grupo Modelum Universidad de Murcia [email protected]
Organización del Seminario Fundamentos de MDD – – – –
Visión global Principios básicos Introducción a la creación de DSL con metamodelos. Ejemplo Paradigmas MDD más extendidos: MDA, Desarrollo Específico del Dominio y Factorías de Software
Metamodelado – – – –
Arquitectura de cuatro capas Lenguajes de metamodelado Ecore y MOF. OCL Perfiles UML
Organización del Seminario Creación de DSL – DSL externos vs. DSL internos – Gramáticas vs. Metamodelos – Familias de DSL
Transformaciones de modelos – – – –
Lenguajes m2m: ATL, QVTr, QVTo y RubyTL Dimensiones de un lenguaje de transformaciones m2m Lenguajes m2c: Mof2Text, MofScript Lenguajes c2m: Gra2MoL
Modernización de software dirigida por modelos – El modelo horseshoe de reingeniería – La iniciativa ADM de OMG – Ejemplo.
Grupo Modelum
Universidad de Murcia – 30.000 alumnos – 66 titulaciones de grado – 33 programas de posgrado
Facultad de Informática – Grado y Master en Ingeniería Informática – 1200 alumnos – 140 profesores – 10 grupos de investigación
Grupo de Investigación Modelum Investigación en “Desarrollo de Software Dirigido por Modelos” desde 2005. – Transformaciones de modelos – Familias de DSL – Modernización basada en modelos
Resultados en revistas y conferencias internacionales – IEEE Transactions on Software Engineering, IEEE Software (2), Software and System Modeling (2), Information and Software Technology (2) – Models (2), EC-MDA (4), ICMT (4), ASE, WCRE
Proyectos con empresas – Sinergia, Steria, Visualtis, Open Canarias, CenTIC – Automatización de la migración Oracle Forms (Sinergia, 900.000 euros)
Colaboración con otros grupos: AtlanMod (INRIA, Nantes), Onekin (U. País Vasco), Atenea (Malaga),..
Contenidos Motivación del nuevo paradigma MDD – La importancia de lenguajes orientados al dominio – El modelado del software
MDD: Una nueva visión del desarrollo – Conceptos básicos
Diferentes paradigmas MDD: – MDA – Desarrollo con DSL – Factorías de software
Situación actual del MDD
Motivación del nuevo paradigma Principal objetivo de la ingeniería del software: Conseguir un enfoque industrial: “capacidad de producir software de alta calidad a bajo coste” Hasta ahora la industria del software ha satisfecho unas demandas cada vez más exigentes con un uso intensivo de tareas manuales. Avances en abstracción, reutilización, automatización y estándares, pero no es suficiente.
Motivación Algunos hitos en la evolución del desarrollo del software: – – – –
Lenguajes de programación y Compiladores Lenguajes 4GL Herramientas CASE Orientación a objetos Lenguajes (Smalltalk, C++, Java, C#, Ruby,..) Frameworks, patrones de diseño Modelado con UML Componentes (EJB, DCOM, .Net,..) Objetos distribuidos (RMI, Corba, :Net,..) Servicios web y SOA
Algunos hitos en la evolución acceso y manejo de la información: – Bases de datos relacionales – Modelado conceptual ER
Motivación Algunos hitos en la evolución de las plataformas – – – – – – – –
Cliente/Servidor Aplicaciones empaquetadas: ERP EAI XML como formato estándar de intercambio Servicios Web SOA BPMS Motores reglas de negocio
Motivación Automatización del proceso de desarrollo de software – Compiladores / Lenguajes de Alto Nivel
– – – – – –
Abstracción y automatización
Cargadores y Linkers Depuradores Gestión de versiones Editores Generadores de documentación …
Motivación
+Abstracción + Automatización
¿Cómo conseguir mayor abstracción y automatización?
Lenguajes de modelado y Especificación formal
Elevado salto semántico
Compiladores
“Personal reflections on automation, programming, culture, and model-based software engineering”, Bran Selic, Autom. Softw. Eng. (2008) 15: 379-391.
Motivación
+Abstracción + Automatización
¿Cómo conseguir mayor abstracción y automatización?
Lenguajes 4GL (Matlab, SQL, SPSS,..)
Compiladores
Son específicos del dominio. Beneficio más limitado
Motivación
+Abstracción + Automatización
¿Cómo conseguir mayor abstracción y automatización?
Herramientas CASE
¡No tuvieron el éxito esperado!
Compiladores
Motivación El Desarrollo de Software Dirigido por Modelos (Ingeniería Dirigida por Modelos o Ingeniería del Software Basada en Modelos) se ha convertido en el nuevo paradigma que promete elevar los niveles de abstracción y automatización.
¿Cómo?
Motivación Nombres más extendidos en la literatura: – – – –
Model-driven development (MDD) Model-driven software development (MDSD) Model-driven engineering (MDE) Model-based software engineering (MBSE)
Motivación La idea detrás del MDD es: – Utilizar modelos para automatizar el desarrollo de software. – Los modelos se crean mediante lenguajes de modelado o lenguajes específicos del dominio (DSL) que pueden ser textuales o gráficos. – Cadenas de transformación de modelos para generar código Transformaciones de modelos
Código Java Framework aplicaciones móviles
Modelo (DSL)
Plataforma
Motivación “De los objetos a los modelos” Model Driven Development (MDD)
Valor
Abstracción, Reutilización y Automatización limitada
OO
Tiempo (Jack Greenfield y Keith Short, “Software Factories”, 2004)
Motivación “La libertad ofrecida por los lenguajes de programación sólo es necesaria para una pequeña parte de una business application. La mayor parte del trabajo se puede hacer mejor y más barata con wizards, feature models, MDD y patrones” “El paso de lenguajes como Java y C# a mayores niveles de abstracción (modelos) puede suponer mayores beneficios que el paso de ensamblador a esos lenguajes” (J. Greenfield y K. Short, “Software Factories”, John Wiley, 2004)
Motivación Sergey Dmitriev, “Language-Oriented Programming. The next programming paradigm”, JetBrains, 2004. “Cualquier GPL, como Java o C#, nos permite hacer lo que queramos con un ordenador, hasta cierto punto, ya que ellos tienden a ser improductivos. Una alternativa es el uso de DSL diseñados para ser productivos en un dominio particular, como es el caso de SQL. La fortaleza de los DSLs es su debilidad, ya que cualquier problema requiere bastantes dominios diferentes” “Language-Oriented Programming, LOP”
Motivación
+Abstracción + Automatización
Lenguajes de Modelado / DSL
Conceptos del dominio
Traductor
Lenguajes de Programación
tipos, funciones, clases, etc.
Traductor
Lenguajes Ensambladores
registros, direcciones, etc.
Motivación “DSLs
have been a part of the computing landscape since before I got into programming” (Martin Fowler, “Domain-Specific Languages”, Addison-Wesley, 2010)
Un DSL es un lenguaje destinado a resolver problemas en un determinado dominio de aplicación. Tipos de DSLs – Gráficos y Textuales – Externos o internos (embebidos) – Ejemplos: BPMN, WF, SQL, HTML, Excel, VHDL, make, etc.
Motivación En la pasada década aumentó considerable el interés por los DSL, ¿Por qué?
(según M. Fowler) – Mejorar la productividad y facilitar mantenimiento – Mucho código XML de metadatos – Uso extensivo de fraweworks
creo que también … – … el éxito de MDD y la creación de nuevas herramientas que facilitan la creación de DSLs.
Motivación OMG (Object Management Group) presentó MDA (ModelDriven Architecture) en noviembre de 2001. – Un enfoque para aplicar MDD basado en estándares de OMG: MOF, UML, XMI, QVT.
Durante muchos años se confunde MDD con MDA. En 2003 OMG también lanzó una propuesta para fomentar la aplicación de MDD en modernización de legacy software. – ADM (Architecture-Driven Modernization) – No ha tenido tanto éxito como MDA
El desarrollo de software a partir de modelos no surge con MDA. – Generadores de aplicaciones, generadores de GUI, etc.
Modelo BPMN
Sistemas BPMS Generación de código BPEL a partir de diagramas BPMN Herramientas como Intalio
Biztalk
Windows Wokflows Foundations (.Net)
Generador de GUI de JBuilder
Contenidos Motivación del nuevo paradigma MDD – La importancia de lenguajes orientados al dominio – El modelado del software
MDD: Una nueva visión del desarrollo – Conceptos básicos
Diferentes paradigmas MDD: – MDA – Desarrollo con DSL – Factorías de software
Situación actual del MDD
¿Qué es un modelo?
Modelo “Un modelo es una simplificación de la realidad, como resultado de un proceso de abstracción, y ayuda a comprender y razonar sobre esa realidad”
Modelo Un modelo oculta ciertos detalles para mostrar aquellos relevantes para cierto propósito. Un modelo se expresa en algún lenguaje o notación.
¿Qué es un modelo del software?
Modelos del software Un modelo de software es una descripción de un aspecto de un sistema software escrita en un lenguaje bien definido
U s u a rio
P e d id o
realiza
n o m b re 1 n if
0* .. n
id t ot a l
L in e a P e d id o 1
1..n 1..*
u n id a d e s 0..n
1
tiene 1 1 C a rro C o m p ra total
1
0..n *
Ite m C a rro u n id a d e s
0 .. n
*
1
P r o du c t o nom bre p re c i o d e s c rip c io n
Modelo de clases UML
Modelado del software Un modelo software es una descripción abstracta del sistema que oculta ciertos detalles para mostrar otros de una forma más simple. Los modelos permiten especificar aspectos del sistema software tales como los requisitos, la estructura, el comportamiento o el despliegue. – Permite “separation of concerns”
En el análisis/diseño de aplicaciones software se crean modelos (“planos del software”) antes de escribir el código. A finales de los noventa aparece UML (Unified Modeling Language) como lenguaje estándar para realizar modelado de software.
Modelos / Diagramas UML Realizar puja ordinari a
Pujador
Cerrar edición de subasta
Cancelar puja ordinaria Realizar pago de subasta ordinaria
Producto precio descripcion id
Rechazar adjudicac ión Sistema Notif icar adjudicatario Teleoperador
CatalogoProducto 1..n
cargarProd() getProducto()
1
getPrecio()
Participant e
1
1
Usa 1
describe 1..n
Diagrama Casos de Uso
Crear edic ión de subasta
Tienda
LineaVenta 1 1..n 1 Venta
Anular anuncio de subast a
Administrador
registra
1 TPV
0..n
completar() crearLV() crearPago() 1 getDevolucion() getTotal() 1 pagada 1 Pago
Terminar Venta manejarRespuesta efectuar Pago Efectivo
Máquinas de estado
Autorizacion Pago efectuar Pago Tarjeta
Espera Pago
Utilidad del modelado Ayuda a razonar sobre el cómo se implementa. Se facilita la comunicación entre el equipo al existir un lenguaje común. Se dispone de documentación que trasciende al proyecto. – Hay estructuras que no son visibles en los programas.
y también … Generación de código a partir de modelos
Modelado UML y MDD “UML no está desempeñando el papel esperado por sus creadores en MDD” “He sido testigo de miles de proyectos que han se han beneficiado del uso de UML pero un menor número ha fallado por tres motivos principales: nunca han llegado al código, o sólo usan UML para documentar, lo que no está mal, pero no es lo más importante, o sólo usan UML los analistas pero no los programadores” “la nueva etapa de UML como lenguaje para MDD… MDD puede influir en mejorar la calidad del software al elevar los modelos a ciudadanos de primera clase como el código de los lenguajes textuales tradicionales”.
“Un reciente informe de IDC propone automatizar la conexión de la lógica de negocio a la lógica de la infraestructura y a las APIs de la tecnología para crear software más rápido”
Grady Booch, “Growing UML”, ICSE, 2002
De modelos que documentan a .. Código public interface Cuenta extends EJBObject {...} public interface CuentaHome extends EJBHome {...} public abstract class CuentaBean implements EntityBean{...} ...
Documentar (hasta ahora)
Modelo Cuenta codigo : Integer 0..n saldo : Float
1
Cliente id : String nombre : St ri ng apelli do : St ri ng fi ndByLast Name()
Cliente id : String nombre : St ri ng apelli do : St ri ng fi ndByLast Name()
Automatización
Código public interface Cuenta extends EJBObject {...} public interface CuentaHome extends EJBHome {...} public abstract class CuentaBean implements EntityBean{...} ...
Motivación
DSL Perfiles UML
… modelos de entidades del negocio (diagramas de clase) y máquinas de estado son muy usadas en MDD pero ni siquiera en esos casos se usa UML
Profiles UML (Perfiles) UML es una familia de lenguajes – Lenguaje core + Mecanismo de extensión (Perfiles)
Un perfil está formado por un conjunto de estereotipos que pueden tener valores etiquetados y restricciones, con su correspondiente notación. Un perfil define una extensión de UML para su especialización a un dominio concreto: EJB, aplicaciones web, CORBA, modelado del negocio, esquemas relacionales, etc.
Perfiles UML Estereotipos – Extienden el vocabulario de UML, permitiendo definir nuevos tipos de elementos y relaciones a partir de los existentes pero específicos de un dominio. – Algunos son predefinidos en UML.
Valores etiquetados – Extienden las propiedades de un estereotipo.
Restricciones – Especifican condiciones sobre los elementos del modelo mediante OCL
Perfiles UML Cliente
Empleado
id : String nombre : String
dni : String nombre : String edad : int
1
apellido : String findByLastName()
Estereotipo: Table Valores Etiquetados: key
Estereotipo: BusinessEntity Valores Etiquetados: UniqueID y Query
Reglas OCL Se expresan en OCL Permiten asociar información que no se puede expresar en UML que denota cuando un modelo está bien formado. Ejemplo: “Dos tablas de un mismo esquema relacional deben tener distinto nombre”. context Schema inv: tablasDistintoNombre tablas -> forAll ( t1, t2 | t1.name = t2.name implies t1 = t2) end
Modelos y abstracción en MDD En una solución MDD se usan modelos a diferente nivel de abstracción, incluso modelos muy cercanos al código. ─ Abstracción
Modelo 1
Modelo 2
…
Modelo n
DSL 1
Cadena de transformaciones
Código
Contenidos Motivación del nuevo paradigma MDD – La importancia de lenguajes orientados al dominio – El modelado del software
MDD: Una nueva visión del desarrollo – Conceptos básicos
Diferentes paradigmas MDD: – MDA – Desarrollo con DSL – Factorías de software
Situación actual del MDD
Desarrollo de software dirigido por modelos (MDD) Los modelos dirigen las tareas del ciclo de vida de desarrollo del software, permitiendo elevar el nivel de abstracción y de automatización. Abstracción
MDD
Automatización
Estándares
MDE. Principios y Paradigmas Aplicaciones de MDE – Ingeniería directa (MDD), Ingeniería Inversa, Models@Runtime
Principios básicos en MDE – Modelos conformes a un metamodelo – Generación de artefactos software a través de una cadena de transformaciones de modelos – Uso de lenguajes de modelado o lenguajes específicos del dominio (DSL) para escribir los modelos.
Diferentes visiones o paradigmas MDD: – Model-Driven Architecture (MDA) – Domain-Specific Development (Desarrollo basado en DSL) – Factorías de Software = Líneas de Producto Software + MDD
MDA MDD
forward engineering
Software Factories DSM Models@runtime
MDE reengineering
ADM
sistemas adaptativos
MDR
MDE: Model Driven Engineering MDD: Model Driven Development MDM: Model Driven Reengineering
MDD. Elementos en la definición de un DSL Metamodelo de la sintaxis abstracta – Describe conceptos del lenguaje y relaciones entre ellos, y reglas que determinan sin un modelo está bien formado (well-formedness): sintácticamente válido. – Se crea con un lenguaje de metamodelado, p.e. Ecore y MOF – Lenguaje tipo OCL para expresar las well-formedness rules
Sintaxis concreta o notación Semántica (transformaciones de modelos) – Normalmente mediante traducción a un lenguaje con semántica bien definida, p.e. un lenguaje de programación o una máquina virtual. – Lenguajes de transformación de modelos – Modelo-Modelo: ATL, QVT, RubyTL,.. – Modelo-Texto: MofScript, xPand, Jet,..
MDD. Sintaxis abstracta vs. Sintaxis concreta descripción de un DSL
Metamodelo MM (Sintaxis abstracta)
expresado con
conforma con
Aspecto de un Sistema S
Notación (Sintaxis concreta)
Modelo M representa a / genera parte de
MDD. Transformaciones de modelos m2m
Modelo origen
Modelo destino es transformado en
m2t
Modelo es transformado en
Texto (Código, XML,..)
MDD. Elementos Metamodelo M0
Gramática, XML Schema, ..
Metamodelo M1
conforma
conforma
Modelo 0 (L0)
conforma
Código
Modelo 1 (L1) m2m
(Java, HTML, XML,...)
m2t escrita
escrita Lenguaje de transformación modelo a modelo
Lenguaje de transformación modelo a texto
MDD. Metamodelo Describe el DSL Metamodelo
conforma a
Sistema representa a / genera parte de
Modelo
Metamodelos y Gramáticas
Gramática Java
Metamodelo UML
conforma a
Programa Java
conforma a
Modelo UML
MDD / Metamodelo UML descripción de UML Metamodelo UML
conforma a
Sistema Pujas representa a
Un Modelo de Clases UML Creado por el desarrollador
isDe rive d : Boolean = false isRe adOnly : Bo ole an = false isDe rive dUni on : Boo lea n = false [0..1] / d ef aul t : String [0..1] ag gregati on : Aggreg ationK ind = no ne / isComposite : Boo le an
* {subsets o wned End} + re defin edPropert y 0..1
0..1 {subsets redefinedElement} * +class 0..1
+owningProperty {subsets owner}
+nested Cla ssif ie r
{subsets namespace, subsets redefinitionContext}
+cla ss
{ordered, * subsets ownedMember}
0..1
{ordered, * subsets feature, subsets ownedMember}
ValueSpecification
+/opposite
Classifier +/endType {o rdere d}
AggregationKind
+ownedOperation
0..1 {subsets redefinitionContext, sub sets name spa ce, subsets feat uring Cla ssif ie r}
+defaultValue {subsets ownedElement}
1..*
Type
none shared composite
Operatio n
MDD. Notación UML Diagrama de clases UML U s u a rio
P e d id o
realiza
n o m b re 1 n if
0* .. n
id t ot a l
L in e a P e d id o 1
1..n 1..*
u n id a d e s 0..n
1
tiene 1 1 C a rro C o m p ra total
1
0..n *
Ite m C a rro u n id a d e s
0 .. n
*
1
P r o du c t o nom bre p re c i o d e s c rip c io n
¿Cómo creo un DSL basado en un metamodelo?
Metamodelado Un metamodelo (modelo de la sintaxis abstracta ) es un modelo que describe qué modelos pueden ser expresados con un lenguaje de modelado o DSL. Un metamodelo describe los conceptos en el lenguaje y las relaciones estructurales entre ellos. – Más well-formedness rules expresadas en OCL
Las herramientas manejan metamodelos y los desarrolladores la sintaxis concreta (modelos).
Metamodelo Crear un metamodelo es una actividad de modelado conceptual orientado a objetos. – Necesidad de conocer bien el dominio – Conceptos como clases, propiedades de un concepto como atributos, relaciones como asociaciones, relación parte-de cómo composición, especialización de conceptos como generalización, paquetes, etc.
MOF y Ecore se basan en elementos de modelado orientado a objetos: – – – – –
Clases y Atributos Asociaciones Agregación Generalización Paquetes
Dada una sintaxis abstracta podemos definir una o más notaciones textuales o gráficas. Herramientas de metamodelado que permiten:
– – – – – –
Definir el metamodelo (sintaxis abstracta) de un DSL Asociarle una sintaxis concreta Generar un editor Validar modelos del DSL Generar un parser (DSL textuales) Generar código a partir de modelos
– –
Herramientas cerradas: MetaEdit+, DSL Tools Herramientas sólo sintaxis concreta: GMF de Eclipse, xText de openArchitectureware, TCS, EMFText
Ejemplo “Máquina de estados”. Notación gráfica after (2 sec) send c.estaActivo
ruido
Inactivo
objetivoEn(p) [amenaza] / t.añadirObjetivo(p)
Buscando
Acoplamiento
Rastreando contactar
Ejemplo “Máquina de estados”. Notación textual state Inactivo { is_initial transitionTo Rastreando { event objetivoEn(p) condition amenaza action [t.addObjetivo(p)] } transitionTo Buscando { event ruido } } state Buscando { transitionTo Rastreando { } } state Rastreando { transitionTo Acoplamiento { event contactar } } state Acoplamiento { is_final }
Un esquema y una tabla tienen un nombre;.. Una clave ajena referencia a una tabla,..
Un esquema está formado por tablas; Una tabla tiene columnas;..
Atributos name en Schema y Table Asociaciones (Table y Fkey) Composición (Schema y Table; Table y Column)
Metamodelo: Ejemplo “modelo relacional”
name: String
Table
*
Schema tbls
0..1
name: String refs
1 pkey cols
*
Column name: String type: String *
* FKey
cols
fkeys Metamodelo Simple RDBMS
Metamodelo. Ejemplo “UML simple”
Metamodelo. Ejemplo “Relacional”
Semántica de un DSL Se expresa normalmente mediante transformaciones a un lenguaje que tenga una semántica bien definida, por ejemplo código de un lenguage de programación, una máquina virtual, etc. Dos tipos de transformación: – Directa con transformaciones modelo a código – Indirecta con transformaciones modelo a modelo que generan modelos intermedios: cadena de transformación.
Ejemplo de transformación modelo-modelo Metamodelo Simple UML
Classifier type
PrimitiveDataType
name: String 1
Package name: String
Schema name: String
*
* Class elems isPersistent: Bool
Table
* tbls
0..1
name: String
refs
1 pkey cols
* *
fkeys
Attribute
attrs
Column name: String type: String *
cols
Metamodelo Simple RDBMS
FKey
Ejemplo de definición de transformación m2m phase 'class2table' do top_rule 'class2table' do from ClassM::Class to TableM::Table mapping do |class, table| table.name = class.name table.cols = class.attrs end end
RubyTL
rule 'property2column' do from ClassM::Attribute to TableM::Column filter { |attr| attr.type.is_a? ClassM::PrimitiveType } mapping do |attr, column| column.name = attr.name column.type = attr.type.name column.owner.pkeys @MediaCharacterRepository int getNumberOfMovies(Long libraryId) => AccessObject; List findMediaByCharacter(Long libraryId, String characterName); findById; save; findAll; findByQuery; protected findByKeys(Set keys, String keyPropertyName, Class persistentClass); List findMediaByName(Long libraryId, String name); Map findMovieByUrlIMDB(Set keys); } } Entity Book extends @Media { !auditable String isbn key length="20“ } Entity Movie extends @Media { !auditable String urlIMDB key Integer playLength } }
Ejemplo Javato Prototipo de arquitectura generativa para la plataforma Javato del Gobierno Regional de la Región de Murcia
value : String converter : String validator : String
value : String converter : String
value : String
Column
GraphicImage value : String width : Integer height : Integer title : String
CommandLink
Generación de código SQL
Mapping Objeto-Relacional (m2m + m2c)
Generación ficheros mappings Hibernate
m2m + m2c ’dark_room’ }
Ejemplo de Línea de Productos
TextAdventures
Output
Input
Navegation GUI
alter
Text
Voice Voice
Syntetized
Recorded
Text
Widget
Text
Ejemplo de Línea de Productos Metamodelo SM
adv2StateMachine Modelo SM room table_and_notebook { text % There is … % object lamp { allowed_actions: take description: "a normal lamp“ } when_exit: west, goto =>’dark_room’ }
Metamodelo GUI adv2Commands Modelo GUI
Metamodelo GUI
adv2GUI
Modelo GUI
Ejemplo de Línea de Productos
Modelo SM
Intérprete de commands m2c Modelo GUI
Navegación GUI
Modelo GUI
Factorías de software Una factoría de software es una línea de productos dirigida por modelos – una línea de productos automatizada por metadatos representados por modelos expresados lenguajes específicos del dominio. Basada en la idea de esquema software y plantilla de software. Microsoft no adopta estándares de MDA, pero comparte principios básicos: modelos, DSL, metamodelado, transformaciones, generación automática de código fuente.
Factoría de software construye /usa Desarrollador línea producto
Esquema Factoría construye Plantilla Factoría
cargada en IDE
Factoría Software usa
Desarrollador del producto
construye
Miembros de la familia de productos
La plantilla es un conjunto de elementos software (procesos, patrones, frameworks, DSL, ..) que son instalados en un IDE para desarrollar aplicaciones para un dominio.
Ejemplo de Esquema Información Conceptual
Entidad de negocio
Aplicación Proceso de negocio
Web Service
Lógico
Implementación
Tecnología
Lenguaje de Programación
Servidor Lógico
Topología de red
Plataforma
El esquema es un grafo de viewpoints que describe la información requerida para producir un miembro de la familia.
Aplicaciones del MDD Ingeniería directa Código Aplicación
MDD y OMG MDA (Model-Driven Architecture) Código Aplicación
Modelos
ADM (Architecture-Driven Modernization)
Soluciones MDD Modelos permiten automatizar – Tareas de codificación repetitivas
– – – – – – –
Crear adaptadores (wrappers) Ficheros de configuración XML
Generar software (código de infraestructura) Instanciar un framework para crear una aplicación concreta Aplicar patrones Refactoring Migración de aplicaciones Automatizar el despliegue y la construcción (build) Automatizar test
Soluciones MDD Algunos ejemplos de automatización: – Instanciar el framework myMobileWeb de aplicaciones móviles. – Arquitectura generativa con los frameworks JSF, Spring e Hibernate. – Añadir contribuciones a Eclipse – Crear wrappers Java y servicios web a código PL/SQL – Línea de productos muy simple para “adventures games” – Automatizar la migración de aplicaciones Oracle Forms a Java – DSL para aplicaciones context-aware
Soluciones MDD Metamodelo 1
Metamodelo 2
Modelo 1
Modelo 2
Gramática/ XMLSchema/ …
…
DSL 1
Cadena de transformaciones
Código
Modernización Dirigida por Modelos Generación
Código nuevo sistema
Modelo 2 Ingeniería inversa
Modelo 1
Extractores de modelos
Código Legacy
Ejemplo de modernización. Migración Forms
Ejemplo de modernización Migración de GUIs en aplicaciones RAD (Forms, VisualBasic, Delphi ..) a otros entornos más modernos (Web, Java, .Net,..)
Ejemplo de modernización Migración de GUIs en aplicaciones RAD (Forms, VisualBasic, Delphi ..) a otros entornos más modernos (Web, Java, .Net,..)
Contenidos Motivación del nuevo paradigma MDD – La importancia de lenguajes orientados al dominio – El modelado del software
MDD: Una nueva visión del desarrollo – Conceptos básicos
Diferentes paradigmas MDD: – MDA – Desarrollo con DSL – Factorías de software
Situación actual del MDD
MDD. Estado actual Bran Selic (“Manifestaciones sobre MDD”, número especial sobre MDD en Novática/Upgrade, 2008) – “El principal problema que MDD intenta resolver es la frecuente y
abrumadora complejidad involucrada en el diseño e implementación del software moderno”… a través de abstracción, automatización y estándares” – “MDD tiene el potencial para proporcionar mejoras en el desarrollo de software” – “Existen casos de éxito en la industria, pero MDD es la excepción no la norma” – “Aunque hay muchos obstáculos de tipo técnico, los más importantes son de tipo cultural” http://www.upgrade-cepis.org/issues/2008/2/upgrade-vol-IX-2.html#contents
Ventajas MDD Elevación del nivel de abstracción. – Nivel de conceptos cercanos al dominio del problema
El código final se genera a partir de especificaciones de alto nivel: Automatización – Mayor productividad – Mayor calidad – Favorece el mantenimiento – Usuarios no expertos puedan escribir código
Deficiencias Técnicos ─ ─ ─ ─
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
Culturales ─ ─ ─
Falta concienciación sobre su potencial Dificultad de introducir nuevos métodos en la empresa Mentalidad conservadora de muchos profesionales, inercia al cambio
• Económicos ─ ─
Empresas centradas en el corto plazo para conseguir el ROI Dificultad de encontrar personas con experiencia “Personal reflections on automation, programming, culture, and model-based software engineering”, Bran Selic, Autom. Softw. Eng. (2008) 15: 379-391.
Problemas a resolver Madurez y usabilidad de las herramientas Manejo ineficiente de grandes modelos y versionado – Ahora modelos serializados como XMI – Necesidad de repositorios
Evolución de soluciones MDD – Modelos, metamodelos, notación, transformaciones
Reutilización de DSLs Generación de código Lenguajes m2m
…
El camino a seguir Enseñanza universitaria − Inculcar respeto por el usuario − Enseñar MDD
Investigación − Plan global
Transferencia de tecnología Definición de estándares (de facto o de iure) − Eclipse implementando los estándares de OMG.
MDD en los planes de estudio Asignatura en muchos postgrados. – Universidad de Murcia: http://modelum.es/cursos/mnti2010/
Diploma Internacional de Posgrado “MDE for Software Management”, Ecole des Mines de Nantes, Francia desde 2009/2010. – 60 ECTS con un semestre de prácticas en empresas
Necesarios conocimientos y destrezas Visión general de MDD … Metamodelado Creación de DSL – Sintaxis abstracta (metamodelos) vs. Sintaxis concreta – Herramientas
Transformaciones modelo a modelo – Lenguajes ATL, QVT o RubyTL
Transformaciones modelo a texto – Lenguajes MofScript, Mof2Text o plantillas Ruby
Y por supuesto conocer el dominio, en este caso frameworks y tecnologías software.
MDD. Gran interés en la actualidad “My cat is Model Driven” Some times ago, there was an excellent paper by Roger King entitled : "My cat is Object-Oriented" [1]. Today we could easily take the arguments expressed in this paper and repeat all of it again. Here is my cat named Caml. As Trash, Roger King's cat he has a lot of qualities that I would summarize today by stating how much model driven my cat is. (blog “Models Everywhere”, de Jean Bézìvin)
[1] Roger King My Cat Is Object-Oriented. Object-Oriented Concepts, Databases, and Applications 1989: 23-30
Bibliografía
Clark, A. , Andy Evans, Paul Sammut, J. Willians. “Applied Metamodelling A Foundation for Language Driven Development”. Xactium, 2008 http://itcentre.tvu.ac.uk/~clark/docs/Applied%20Metamodelling%20(Second% 20Edition).pdf
Greenfield, Jack y Short, Keith. “Software Factories: Assembling Applications with Patterns, Frameworks, Models & Tools", John Wiley, 2004.
Kelly, Steven and Juha-Pekka Tolvanen, “Domain Specific Modeling: Enabling Full code generation”, John Wiley, 2008.
Kleppe, Anneke “Software Language Engineering: Creating Domain-Specific Languages Using Metamodels”, Addison-Wesley, 2009.
Kleppe, Anneke, Jos Warmer, and Win Bast. MDA Explained. 2003, AddisonWesley.
Stahl, Thomas y Volter, Marckus. “Model-driven Software Development”. John Wiley, 2006.