Este documento presenta una lección sobre arquitecturas dirigidas por modelos. Explica conceptos clave como abstracción, clasificación, generalización y diferentes tipos de modelos. También discute la importancia de construir modelos para simplificar la comprensión de sistemas complejos y cómo los modelos pueden usarse para comunicar ideas de manera más efectiva.
1. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Métodos Avanzados de Desarrollo de Software
Asignatura Optativa de 4º Año
Grado en Informática
Departamento de Sistemas Informáticos
Universidad de Castilla-La Mancha
Métodos avanzados de
desarrollo de software
Tema III: Arquitecturas dirigidas por Modelos.
Construcción de modelos
2. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Índice
• Repaso
• Motivación
• Abstracción, clasificación y generalización
• El Dominio del problema y el lenguaje de abstracción
• Proyecciones de modelos
• Modelos de plataformas
El material que aquí se presenta está parcialmente basado en una traducción de:
Stephen J. Mellor, Kendall Scott, Axel Uhl, Dirk Weise. MDA Distilled: Principles of Model-
Driven Architecture. Addison Wesley. 2004.
3. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Repaso de Terminología y
Conceptos
• Sistema
• Aplicación
• Modelo
• Implementación
• Meta-modelo
• MDA
• Puntos de Vista
• CIM
• PIM
• PSM
• Vista
• Plataforma (indep.)
• Transformaciones
• Marcado de modelos
• DSL
• Elaboración de
modelos
• Modelos ejecutables
• MDA Ágil
• Proceso MDA
4. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Nos centraremos en la elaboración
de modelos
5. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Motivación
• Un «modelo» es una simplificación de algo que podemos ver,
manipular y razonar sobre él, ayudándonos a comprender la
complejidad inherente al caso de estudio.
• Existen muchas formas de modelos en la Ingeniería
• Características de un buen modelo:
• Omite información para que los lectores puedan centrarse en los
aspectos relevantes que quiere mostrar
• Refleja algo real, abstracto o hipotético
• Más barato que la cosa real que se quiere construir
• Sirve para comunicar ideas de una forma más rápida y fácil
6. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
HERRAMIENTAS DE MODELADO
Abstracción
Clasificación
Generalización
7. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Abstracción, clasificación y
generalización
• Independientemente de la disciplina, un «modelador»:
• Abstrae => Ignora información que no es interesante en un
contexto particular
• Clasifica => Agrupa información importante en propiedades
comunes
• Generaliza => Relaciona información conceptual de acuerdo a
sus características
8. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Abstracción,clasificacióny generalización
Mundo Real
Abstracción
Clasificación
Generalización
9. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
El dominio del problema y el
lenguaje de abstracción
• Entidades conceptuales de una “Librería”
• Aplicamos abstracción, clasificación y
generalización
ABSTRACCION
Se ha ignorado información no
relevante, por ej. la edad, el
salario, estado civil, etc.
GENERALIZACIÓN
Se ha relacionado información
en función de las características
de las entidades, por ej. stock,
precio, etc.
CLASIFICACION
Diagrama de clases
10. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
El dominio del problema y el
lenguaje de abstracción
• Supongamos que necesitamos
añadir información relacionada con
el acceso a las funciones del
sistema. Por ej.
• Vendedor => Stock de un
producto
• Gerente => Stock de un producto
+ ranking de libros por ventas
Gerente
Vendedor
11. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
El dominio del problema y el
lenguaje de abstracción
• Aplicando la separación de intereses (concerns)
• Desde el punto de vista, del «dominio del problema» la Librería
puede ser modelada sin hacer referencia a la seguridad
• Además, la seguridad puede ser modelada sin hacer referencia la
Librería, por lo tanto puede definirse en otro «dominio del
problema» independiente.
• Ejemplo:
Juan Pérez
Gerente
Libreria
librosPorVentas
Entidad
Rol
Recurso
Protegido
Recurso
Protegido
Permiso
0..*
0..*
0..* 0..*
0..*
12. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
El dominio del problema y el
lenguaje de abstracción
• Cada modelo de dominio se expresa en función de un
«lenguaje de modelado», por ejemplo:
• Un «lenguaje de modelado» permite decir ciertas cosas pero
no otras. Por ejemplo:
• una asociación (composición) entre FacturaVenta y Linea muestra
que las facturas de venta están relacionadas con las líneas, pero
no muestra cómo (listas enlazadas, arrays, tablas de hash, etc.)
• El motivo principal es que el lenguaje existe a un nivel de
abstracción
Dominio Lenguaje
Flujo de aire Ecuaciones matemáticas
Circuitos electrónicos Símbolos
13. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
El dominio del problema y el
lenguaje de abstracción
• A mayor nivel de abstracción del
lenguaje, mayor funcionalidad
puede ser entregada para un
esfuerzo determinado
• Motivo: Las transformaciones nos
permiten pasar de un lenguaje a
un nivel de abstracción a otro.
• Ejemplo:
• En el caso de la relación
FacturaVenta -> Linea, si se aplica
una transformación donde las
relaciones se convierten en listas
enlazadas o un arrays
• Así, se pasa de la definición de
una propiedad multi-valuada a
un tipo de implementación de
lista específico
Relación entre los niveles de
abstracción
14. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Proyecciones de modelos
• Para que un modelo sea útil no alcanza con abstraer los intereses no
relevantes y usar un lenguaje a un nivel apropiado de abstracción.
Debemos tratar de mostrar todo a la vez para poder conseguir una
implementación. Por ejemplo:
• UML, combina el diagrama de clases con el de secuencia
• Para mostrar la estructura estática y el comportamiento dinámico de un
sistema.
• Por lo tanto, se necesitan proyecciones complementarias e
interrelacionadas que juntas muestren un modelo completo
• En este caso particular, definiremos:
• «proyección» como una representación (diagrama) de un modelo
• «modelo» como un conjunto de abstracciones relacionadas
(estructura, comportamiento, etc.)
15. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Proyecciones de modelos representan
sub-conjuntos de modelos
• No es descabellado pensar en tratar sub-conjuntos de
modelos, como modelos.
• Es decir, relacionar parte de ellos por medio de
transformaciones.
• Los modelos pueden ser incompletos. Siempre y cuando se
completen en algún nivel de abstracción (tener en mente la
implementación).
• Situación típica, «código a mano»
Modelo alto nivel
de abstracción
Modelo de nivel de
abstracción más bajo
Transformación
16. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Modelos y plataformas
• Hasta ahora hemos hablado de las propiedades de un modelo único.
• Sin embargo MDA trata la «transformación» entre «modelos», cada
uno de los cuales captura uno o más «intereses» expresados en un
«lenguaje» en un grado de abstracción específico.
• Existen 2 tipos de modelos (CIM es PIM):
• PIM: Es un modelo de un interés concreto, la banca, la telefonía, el
uso de una copiadora, etc. El meta-modelo PIM representa las
abstracciones de una o más plataformas de modelos. Por ej.
• El PIM de un Librería, no necesita capturar los detalles de seguridad, de
red, de los mecanismos de persistencia, etc.
• PSM: Es un modelo que se basa en los detalles de la plataforma. El
PSM de una librería-con-bases-de-datos se refiere a las tablas de los
datos persistentes que describen a los clientes, proveedores,
facturas, etc.
17. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Modelos y plataformas
Ejemplo PIM
• El modelo no hace
referencia al acceso
remoto, aunque la
tecnología lo ofrezca
• Lo hemos abstraído
porque:
• La operación de objetos
remotos no es
interesante, respecto del
dominio de la Librería.
• Ensuciaría el modelo con
información innecesaria.
• Supongamos que
tenemos que modelar un
sistema de gestión de
una Librería vía Web y
representar una venta.
18. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Modelos y plataformas
Ejemplo PSM
• El PSM hace referencia a
conceptos específicos de
la plataforma, accesos
locales y remotos o
persistencia (ver
estereotipos)
• El PSM usa un lenguaje
de modelado en un nivel
de abstracción más bajo
que el análisis; incluye
clases y otros elementos
que capturan cómo es el
acceso.
• Cambia el nivel de
abstracción, incluyendo
tecnología
19. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
SQL Server CLR data type (SQL Server) CLR data type (.NET Framework)
varbinary SqlBytes, SqlBinary Byte[]
binary SqlBytes, SqlBinary Byte[]
varbinary(1), binary(1) SqlBytes, SqlBinary byte, Byte[]
image ninguno ninguno
varchar ninguno ninguno
char ninguno ninguno
nvarchar(1), nchar(1) SqlChars, SqlString Char, String, Char[]
nvarchar
SqlChars, SqlString
SQLChars es mejor para la transferencia de
datos ySQLString obtiene mejor
rendimiento para operaciones con Strings.
String, Char[]
nchar SqlChars, SqlString String, Char[]
text ninguno ninguno
ntext ninguno ninguno
uniqueidentifier SqlGuid Guid
rowversion ninguno Byte[]
bit SqlBoolean Boolean
tinyint SqlByte Byte
smallint SqlInt16 Int16
int SqlInt32 Int32
bigint SqlInt64 Int64
smallmoney SqlMoney Decimal
money SqlMoney Decimal
numeric SqlDecimal Decimal
decimal SqlDecimal Decimal
real SqlSingle Single
float SqlDouble Double
smalldatetime SqlDateTime DateTime
datetime SqlDateTime DateTime
sql_variant ninguno Object
User-defined type(UDT) ninguno Misma clase que la definida en el assemblie.
table ninguno ninguno
cursor ninguno ninguno
timestamp ninguno ninguno
xml SqlXml ninguno
20. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Conclusiones
• Construimos modelos para incrementar la productividad, bajo la
suposición de que construir modelos es más barato que la cosa real.
• Los modelos permiten un razonamiento que permiten una
exploración y razonamiento más baratos del universo de discurso
• Se lleva a cabo mediante: abstracción, clasificación y generalización
de las entidades de interés.
• El “asunto de interés” se encuentra lejos de la implementación.
• Por lo tanto, el lenguaje para expresar ambos es diferente (alto y bajo
nivel)
• Alternativas:
• UML puede servir para ambos, aunque se utiliza parte de él.
• MOF como alternativa (propios lenguajes)
21. Prof. Dr. Ricardo TESORIERO – Departamento de Sistemas Informáticos- Universidad de Castilla-La Mancha
[ricardo.tesoriero@uclm.es]
Referencias
1. Stephen J. Mellor, Kendall Scott, Axel Uhl, Dirk Weise. MDA
Distilled: Principles of Model-Driven Architecture. Addison
Wesley. 2004.
Notas del editor
La figura muestra la relación entre los animales y los conceptos de abstracción y clasificación
La abstracción se puede ver de izquierda a derecha y la clasificación de arriba abajo
La esquina superior izquierda muestra el universo de discurso (contiene cosas reales, hipotéticas y abstractas).
Un gato Munchkin, un pero Fido y una babosa (no es una mascota, porque tienen que tener nombre?)
Clasificación
Clasificamos estas criaturas de acuerdo a las propiedades comunes.
Todos los perros babean hasta cierto punto, y todos los gatos son más o menos pasotas.
Así tenemos, como mascotas, perros, gatos y animales varios (que se muestran en la esquina inferior izquierda).
Notar que clasificar no cambia el nivel de detalle, sólo agrupa propiedades e instancias comunes de las mascotas en clases comunes.
Abstracción
Algunas propiedades de las mascotas no son relevantes, como el color del pelo o los hábitos para dormir.
Así que sólo nos quedamos con las propiedades que nos interesan.
Además, algunas criaturas no son relevantes, existen pero no nos interesan (los Distracting Animals).
Las características comunes de perros y gatos (nombre y peso) han sido generalizadas en una clase separada mascota.
La agrupación de las características comunes de las mascotas se llama generalización.
Así, en el caso de Fido, se consigue una doble clasificación Perro y Mascota.
La columna derecha representa el mundo de los modelos.
El diagrama de clases captura los tipos y las propiedades de interés, así como también la generalización descripta entre mascotas y animales.
El cuadrante superior derecho representa los objetos del sistema, el cual es una instancia particular de una clase en el modelo.
Las instancias son abstracciones de las cosas en el dominio original del sistema, pero solo con las propiedades de interés.
Un ProtectedResource es algo affectado por las acciones del sistema
Una ProtectedAction es ina acción que es sujeto de autorización
Un Principal es un ser humano o una aplicación que operara como un usuario autorizado del sistema que puede disparar acciones
Un Role define la relación entre un Principal y el sistema
Un Permission refleja las acciones que un Principal, actuando en un Role, puede ejecutar en relación a un ProtectedResource particular.