Arquitectura de software dirigida por modelos (Model-Driven Architecture)

49
Arquitectura de Arquitectura de software dirigida software dirigida por modelos por modelos (Model-Driven (Model-Driven Architecture) Architecture) Liliana Favre Liliana Favre UNCPBA UNCPBA 2006 2006

description

Arquitectura de software dirigida por modelos (Model-Driven Architecture). Liliana Favre UNCPBA 2006. Los ejemplos y gráficas son de : Tonella, P. Potrich, A. Reverse Engineering of Object-Oriented Code, Springer, 2005. Ingeniería inversa (reverse engineering). - PowerPoint PPT Presentation

Transcript of Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Page 1: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Arquitectura de software Arquitectura de software dirigida por modelosdirigida por modelos(Model-Driven Architecture)(Model-Driven Architecture)

Liliana FavreLiliana FavreUNCPBAUNCPBA

20062006

Page 2: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Los ejemplos y gráficas son de :Los ejemplos y gráficas son de :

Tonella, P. Potrich, A. Reverse Engineering ofTonella, P. Potrich, A. Reverse Engineering of

Object-Oriented Code, Springer, 2005Object-Oriented Code, Springer, 2005

Page 3: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Ingeniería inversaIngeniería inversa(reverse engineering)(reverse engineering)

Ingeniería inversa estática +Ingeniería inversa estática +Ingeniería inversa dinámicaIngeniería inversa dinámica

Análisis estáticoAnálisis estáticoDescribe la estructura del software a partir del código (texto)

Análisis dinámicoAnálisis dinámicoDescribe el comportamiento en ejecución del software.Extraer información en código OO es difícil (o imposible?) Naturaleza dinámica de los lenguajes OO

Creación de objetos, garbage collector, dynamic binding,…

Page 4: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Ingeniería inversa estáticaIngeniería inversa estática

OFGOFG:: representación básica para el análisis estático. representación básica para el análisis estático. Permite seguir el flujo de información de objetos desde Permite seguir el flujo de información de objetos desde

su creación,su creación,a través de asignaciones a variables, su uso en a través de asignaciones a variables, su uso en

invocaciones deinvocaciones demétodos, almacenamiento en atributos de una clase,...métodos, almacenamiento en atributos de una clase,...El tipo de información que se propaga en el OFG depende El tipo de información que se propaga en el OFG depende

deldelobjetivo del análisis en el que se use.objetivo del análisis en el que se use.

Un lenguaje abstractoUn lenguaje abstracto Un algoritmo de propagación de flujo que es Un algoritmo de propagación de flujo que es

genérico en el tipo degenérico en el tipo deinformación procesadainformación procesada

Page 5: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Ingeniería inversa Ingeniería inversa estáticaestática

Análisis estático sobre JAVAAnálisis estático sobre JAVA Sensible al flujo de datosSensible al flujo de datos Insensible al flujo de controlInsensible al flujo de control Representación por grafos de flujos de Representación por grafos de flujos de

objetos basada en una versión abstracta, objetos basada en una versión abstracta, simplificada de JAVA que omite sentencias simplificada de JAVA que omite sentencias de control (condicionales, iteraciones, etc)de control (condicionales, iteraciones, etc)

Evita conflictos de nombres (los Evita conflictos de nombres (los identificadores son precedidos por un identificadores son precedidos por un punto separados por la lista de packages, punto separados por la lista de packages, clases y métodos que los incluyen)clases y métodos que los incluyen)

Page 6: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

OFGOFGLenguaje abstractoLenguaje abstracto

Page 7: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

OFGOFGLenguaje abstractoLenguaje abstracto

Page 8: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

EjemploEjemploLenguaje abstracto-Lenguaje abstracto-

SentenciasSentencias

60-62Library.borrowDocument.loan =new Loan(Library.borrowDocunent.user, Library.borrowDocument.doc);Library.borrowDocument.this. Library.addLoan(library.borrowDocument.loan)

Page 9: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

EjemploEjemploLenguaje abstracto-Lenguaje abstracto-

SentenciasSentencias

42Library.addLoan.user=Loan.getUser.return43Library.addLoan.doc =

Loan.getDocument.return;

Page 10: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Generación del OFGGeneración del OFG

OFG = (N, E) N: conjunto de nodos E: conjunto de arcosPara cada variable local, atributo o parámetro formal, se agregaun nodo a OFG.Por ejemplo, el OFG de la clase Library de eLib contiene: Un nodo asociado al atributo loan rotulado Library.loans Dos rótulos asociados con los parámetros formales del método

borrowDocument rotuladosLibrary.borrowDocument.userLibrary.borrowDocument.doc

La variable local loan asociada con el nodo rotulado Library.borrowDocument.loan El objeto current en BorrowDocument está asociado con un nodo

rotuladoLibrary.borrowDocument.this

Page 11: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Generación del OFGGeneración del OFG

Los arcos se insertan de acuerdo a las siguientes reglas

Page 12: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Algoritmo Data-Flowforward

Page 13: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Desde JAVA a diagramas de interacciónDesde JAVA a diagramas de interacción

Page 14: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Extracción de diagramas de Extracción de diagramas de interaccióninteracción

Se contemplan dos formas de diagramas de interacción:Se contemplan dos formas de diagramas de interacción:diagramas de colaboración diagramas de colaboración y y diagramas de secuencia.diagramas de secuencia.Un diagrama de secuenciaUn diagrama de secuencia muestra los objetos y actores que muestra los objetos y actores queparticipan en una colaboración poniendo el énfasis en elparticipan en una colaboración poniendo el énfasis en elordenamiento en el tiempo de los mensajes. ordenamiento en el tiempo de los mensajes. Un diagrama de colaboración Un diagrama de colaboración pone el énfasis en la organizaciónpone el énfasis en la organizaciónestructural de los objetos o roles que envían y reciben mensajesestructural de los objetos o roles que envían y reciben mensajesLos diagramas de interacción pueden obtenerse mediante unLos diagramas de interacción pueden obtenerse mediante unanálisis estáticoanálisis estático que provee un superset conservativo de todas que provee un superset conservativo de todaslas posibles interacciones combinado con un las posibles interacciones combinado con un análisis dinámicoanálisis dinámicoque provee una traza del comportamiento del programaque provee una traza del comportamiento del programadurante una específica ejecución.durante una específica ejecución.

Page 15: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Extracción de diagramas de Extracción de diagramas de interaccióninteracción

Se contemplan dos formas de diagramas de interacción:Se contemplan dos formas de diagramas de interacción:diagramas de colaboración diagramas de colaboración y y diagramas de secuencia.diagramas de secuencia.Un diagrama de secuenciaUn diagrama de secuencia muestra los objetos y actores que muestra los objetos y actores queparticipan en una colaboración poniendo el énfasis en elparticipan en una colaboración poniendo el énfasis en elordenamiento en el tiempo de los mensajes. ordenamiento en el tiempo de los mensajes. Un diagrama de colaboración Un diagrama de colaboración pone el énfasis en la pone el énfasis en la

organizaciónorganizaciónestructural de los objetos que envían y reciben mensajesestructural de los objetos que envían y reciben mensajesLos diagramas de interacción pueden obtenerse mediante unLos diagramas de interacción pueden obtenerse mediante unanálisis estáticoanálisis estático que provee un superset conservativo de todas que provee un superset conservativo de todaslas posibles interacciones combinado con un las posibles interacciones combinado con un análisis dinámicoanálisis dinámicoque provee una traza del comportamiento del programaque provee una traza del comportamiento del programadurante una específica ejecución.durante una específica ejecución.

Page 16: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Extracción de diagramas de interacción

La extracción de las interacciones entre La extracción de las interacciones entre objetos seobjetos se

realiza en dos pasos:realiza en dos pasos:- Primero, se infieren desde el código los Primero, se infieren desde el código los

objetos creados en el programa y objetos creados en el programa y accedidos a través de variables.accedidos a través de variables.

- Luego, cada invocación a un método se Luego, cada invocación a un método se resuelve en términos de posibles resuelve en términos de posibles objetos source y target involucrados en objetos source y target involucrados en intercambios de mensajes.intercambios de mensajes.

Page 17: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Extracción de diagramas de interacción

Especialización del data-flow para determinar elconjunto de objetos asignados en el programa

Cada punto de asignación de objetos en el programaCada punto de asignación de objetos en el programa

se asocia a un identificador cse asocia a un identificador cii, donde c es el nombre , donde c es el nombre

de la clase. La propagación de los identificadores ende la clase. La propagación de los identificadores en

el OFG permite asociar a cada variable con elel OFG permite asociar a cada variable con el

conjunto de objetos que puede referenciar. conjunto de objetos que puede referenciar.

Page 18: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Especialización de data-flow

Page 19: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Algoritmo para la resolución estática de una

invocación a un método

Page 20: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Algoritmo para la resolución estática de una

invocación a un método Si una cadena de accesos a atributos precede a la

invocación a un método, como por ejemplo p.q.g(), el

target se obtiene desde el último atributo involucrado

out[B.q], donde B es la clase del atributo q, que se

accede a través de p. Si una invocación a otro método precede a otra, por

ejemplo p. f().g(), return puede ser usador para

determinar los targets de la invocación out[B.f.return]

Page 21: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

EjemploEjemploOFG-Resolución de OFG-Resolución de

invocacionesinvocaciones

Page 22: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

EjemploEl método addLoan

Page 23: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

EjemploEjemploOFG-Resolución de OFG-Resolución de

invocacionesinvocaciones

Library1

Page 24: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

EjemploEjemploOFG-Resolución de OFG-Resolución de

invocacionesinvocaciones

Page 25: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

EjemploEl método addLoan

Page 26: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

EjemploDiagrama de secuencia

Page 27: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

EjemploDiagrama de colaboración

Page 28: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Resolución de invocaciones parasistemas incompletos

Page 29: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Ejemplo-Resolución de Ejemplo-Resolución de invocacionesinvocaciones

Diagrama de secuenciaDiagrama de secuencia

Page 30: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Ejemplo-Resolución de Ejemplo-Resolución de invocacionesinvocaciones

Diagrama de secuenciaDiagrama de secuencia

Page 31: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Resolución de invocaciones parasistemas incompletos

Supongamos que excluimos la clase Main. CuandoSupongamos que excluimos la clase Main. CuandoaddLoan de la clase Library es analizado, el objeto addLoan de la clase Library es analizado, el objeto

fuentefuentede las 4 invocaciones en 42,43,45,46 no es conocido. de las 4 invocaciones en 42,43,45,46 no es conocido.

ParaParalas 2 primeras llamadas es posible determinar el objetolas 2 primeras llamadas es posible determinar el objetotarget, Loan1, el objeto asignado en la línea 60, sintarget, Loan1, el objeto asignado en la línea 60, sinembargo esto no es posible para las otras dos llamadas.embargo esto no es posible para las otras dos llamadas.Los conjuntos target para 45 y 46 son vacíos (ningúnLos conjuntos target para 45 y 46 son vacíos (ningúnobjeto de las clases User o Document). Se introduceobjeto de las clases User o Document). Se introduceLibrary*,como objeto genérico fuente de las 4Library*,como objeto genérico fuente de las 4invocaciones. User* y Document* se introducen para lasinvocaciones. User* y Document* se introducen para lasinvocaciones en 45 y 46.invocaciones en 45 y 46.

Page 32: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Resolución de invocaciones parasistemas incompletos

Page 33: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Extracción de diagramas de Extracción de diagramas de interacción- Filtradointeracción- Filtrado

Para grandes sistemas el algoritmo puede Para grandes sistemas el algoritmo puede aplicarseaplicarse

filtrando información relevante de dos filtrando información relevante de dos maneras:maneras:

Resolviendo sólo las llamadas Resolviendo sólo las llamadas distribuidas desde el método de interésdistribuidas desde el método de interés

Incluyendo sólo las clases interesantes Incluyendo sólo las clases interesantes en un sistema incompleto.en un sistema incompleto.

Page 34: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Extracción de diagramas de Extracción de diagramas de interacción-Filtradointeracción-Filtrado

Las invocaciones en diagramas de colaboración puede ser numeradaLas invocaciones en diagramas de colaboración puede ser numerada

de acuerdo a la notación de Dewey. Esta numeración puede serde acuerdo a la notación de Dewey. Esta numeración puede ser

utilizada para inducir orden temporal en diagramas de secuencia.utilizada para inducir orden temporal en diagramas de secuencia.

Numeracón de invocacionesNumeracón de invocaciones

Page 35: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Extracción de diagramas de Extracción de diagramas de interaccióninteracción

Page 36: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Extracción de diagramas de Extracción de diagramas de interaccióninteracción

Page 37: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Análisis dinámicoAnálisis dinámico

Herramientas específicasHerramientas específicas-Soluciones ad-hoc que incluyan:-Soluciones ad-hoc que incluyan:- Identificadores de objetos, que serán calculados e Identificadores de objetos, que serán calculados e

incorporados a la traza de ejecución durante la incorporados a la traza de ejecución durante la ejecución de constructoresejecución de constructores

- Ante una invocación a un método, agregar a la traza Ante una invocación a un método, agregar a la traza los identificadores del objeto actual y el los identificadores del objeto actual y el target.Además incluir el nombre del método actual target.Además incluir el nombre del método actual los objetos referenciados por el atributolos objetos referenciados por el atributo

- Generar marcas de tiempo cuando ocurren Generar marcas de tiempo cuando ocurren invocaciones.invocaciones.

Page 38: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Análisis diámicoAnálisis diámico

- Un procesamiento de la traza de ejecución provee un Un procesamiento de la traza de ejecución provee un diagrama de interacción para cada test ejecutado.diagrama de interacción para cada test ejecutado.

- Cada vez que se detecta una invocación en la traza, se Cada vez que se detecta una invocación en la traza, se dibuja una llamada en el diagram de interacción entre dibuja una llamada en el diagram de interacción entre los objetos identificados en la traza.los objetos identificados en la traza.

- El orden de los eventos se induce de las marcas de El orden de los eventos se induce de las marcas de tiempo.tiempo.

- Produce un conjunto de diagramas de interacción, Produce un conjunto de diagramas de interacción, uno para cada test.uno para cada test.

- Depende de la calidad de los testDepende de la calidad de los test

Page 39: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Extracción de diagramas de Extracción de diagramas de interacción- Análisis interacción- Análisis

dinámicodinámico

Un libro previamente prestado a un usuario normal de la biblioteca es devuelto y el préstamo cerrado.

Page 40: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Extracción de diagramas de Extracción de diagramas de interacción- Análisis interacción- Análisis

dinámicodinámico

Devolución de un libro disponible para

préstamos

Page 41: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Desde JAVA a diagramas de estadoDesde JAVA a diagramas de estado

Page 42: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Diagramas de estadoDiagramas de estado

Describe el comportamiento que muestra un objeto deuna clase. Es un autómata que consiste de estados,transiciones, eventos y actividades. La ingenieríareversa de diagramas de estado no puede ser totalmenteautomatizada.El primer paso para recuperar un diagrama de estadopara una clase consiste en definir un dominio abstractoapropiado para sus atributos y ( posiblemente ) para lasvariables involucradas en las computaciones deatributos. Luego, la interpretación de los métodos declase da las transiciones de estadoa estado a ser representadas en el diagrama de estados.

Page 43: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Diagramas de estadoDiagramas de estado

Page 44: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Ejemplo- Diagrama de Ejemplo- Diagrama de estado. Clase Documentestado. Clase Document

Page 45: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Ejemplo- Diagrama de Ejemplo- Diagrama de estado. Clase Documentestado. Clase Document

Page 46: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Ejemplo- Diagrama de Ejemplo- Diagrama de estado. Clase Userestado. Clase User

Page 47: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Ejemplo- Diagramas de Ejemplo- Diagramas de estado proyectados para estado proyectados para

LibraryLibrary

Page 48: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Ejemplo-Diagrama de Ejemplo-Diagrama de estado combinado para estado combinado para

LibraryLibrary

Page 49: Arquitectura de software dirigida por modelos (Model-Driven Architecture)

Otras propuestasOtras propuestasSysta, Tarja. Static and Dynamic ReverseSysta, Tarja. Static and Dynamic ReverseEngineering for Java Software Systems. Ph. D.Engineering for Java Software Systems. Ph. D.University Tempere, Finland, 2000University Tempere, Finland, 2000Distingue ingeniería inversa estática y dinámica. La informaciónDistingue ingeniería inversa estática y dinámica. La informaciónestática consiste de artefactos y relaciones. La informaciónestática consiste de artefactos y relaciones. La informacióndinámica contiene además de artefactos, información de trazas dedinámica contiene además de artefactos, información de trazas deeventos secuenciales, sobre concurrencia, administración deeventos secuenciales, sobre concurrencia, administración dememoria, etc.memoria, etc.La información estática se extrae del código y es vista en elLa información estática se extrae del código y es vista en elentorno para ingeniería inversa RIGI. La información dinámica esentorno para ingeniería inversa RIGI. La información dinámica esgenerada ejecutando el software bajo un debugger y es vistagenerada ejecutando el software bajo un debugger y es vistacomo un diagrama de escenarios usando la herramienta SCED.como un diagrama de escenarios usando la herramienta SCED.Esta permite sintetizar diagramas de estado desde escenarios,Esta permite sintetizar diagramas de estado desde escenarios,pudiendo examinar el comportamiento de un objeto o métodopudiendo examinar el comportamiento de un objeto o métododesconectado del resto del sistema. desconectado del resto del sistema.