La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA2006.

Presentaciones similares


Presentación del tema: "Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA2006."— Transcripción de la presentación:

1 Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA2006

2 Los ejemplos y gráficas son de : Tonella, P. Potrich, A. Reverse Engineering of Object-Oriented Code, Springer, 2005 Object-Oriented Code, Springer, 2005

3 Ingeniería inversa (reverse engineering) Ingeniería inversa estática + Ingeniería inversa dinámica Análisis estático Describe la estructura del software a partir del código (texto) Análisis dinámico Describe 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,…

4 Ingeniería inversa estática OFG: representación básica para el análisis estático. Permite seguir el flujo de información de objetos desde su creación, a través de asignaciones a variables, su uso en invocaciones de métodos, almacenamiento en atributos de una clase,... El tipo de información que se propaga en el OFG depende del objetivo del análisis en el que se use. Un lenguaje abstracto Un lenguaje abstracto Un algoritmo de propagación de flujo que es genérico en el tipo de Un algoritmo de propagación de flujo que es genérico en el tipo de información procesada

5 Ingeniería inversa estática Análisis estático sobre JAVA Sensible al flujo de datos Sensible al flujo de datos Insensible al flujo de control Insensible al flujo de control Representación por grafos de flujos de objetos basada en una versión abstracta, simplificada de JAVA que omite sentencias de control (condicionales, iteraciones, etc) Representación por grafos de flujos de objetos basada en una versión abstracta, simplificada de JAVA que omite sentencias de control (condicionales, iteraciones, etc) Evita conflictos de nombres (los identificadores son precedidos por un punto separados por la lista de packages, clases y métodos que los incluyen) Evita conflictos de nombres (los identificadores son precedidos por un punto separados por la lista de packages, clases y métodos que los incluyen)

6 OFG Lenguaje abstracto

7

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

9 Ejemplo Lenguaje abstracto-Sentencias 42 Library.addLoan.user=Loan.getUser.return 43 Library.addLoan.doc = Loan.getDocument.return;

10 Generación del OFG OFG = (N, E) N: conjunto de nodos E: conjunto de arcos Para cada variable local, atributo o parámetro formal, se agrega un 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 rotulados Library.borrowDocument.user Library.borrowDocument.doc La variable local loan asociada con el nodo rotulado Library.borrowDocument.loan El objeto current en BorrowDocument está asociado con un nodo rotulado Library.borrowDocument.this

11 Generación del OFG Los arcos se insertan de acuerdo a las siguientes reglas

12 Algoritmo Data-Flow forward

13 Desde JAVA a diagramas de interacción

14 Extracción de diagramas de interacción Se contemplan dos formas de diagramas de interacción: diagramas de colaboración y diagramas de secuencia. Un diagrama de secuencia muestra los objetos y actores que participan en una colaboración poniendo el énfasis en el ordenamiento en el tiempo de los mensajes. Un diagrama de colaboración pone el énfasis en la organización estructural de los objetos o roles que envían y reciben mensajes Los diagramas de interacción pueden obtenerse mediante un análisis estático que provee un superset conservativo de todas las posibles interacciones combinado con un análisis dinámico que provee una traza del comportamiento del programa durante una específica ejecución.

15 Extracción de diagramas de interacción Se contemplan dos formas de diagramas de interacción: diagramas de colaboración y diagramas de secuencia. Un diagrama de secuencia muestra los objetos y actores que participan en una colaboración poniendo el énfasis en el ordenamiento en el tiempo de los mensajes. Un diagrama de colaboración pone el énfasis en la organización estructural de los objetos que envían y reciben mensajes Los diagramas de interacción pueden obtenerse mediante un análisis estático que provee un superset conservativo de todas las posibles interacciones combinado con un análisis dinámico que provee una traza del comportamiento del programa durante una específica ejecución.

16 Extracción de diagramas de interacción La extracción de las interacciones entre objetos se realiza en dos pasos: - Primero, se infieren desde el código los objetos creados en el programa y accedidos a través de variables. - Luego, cada invocación a un método se resuelve en términos de posibles objetos source y target involucrados en intercambios de mensajes.

17 Extracción de diagramas de interacción Especialización del data-flow para determinar el conjunto de objetos asignados en el programa Cada punto de asignación de objetos en el programa se asocia a un identificador c i, donde c es el nombre de la clase. La propagación de los identificadores en el OFG permite asociar a cada variable con el conjunto de objetos que puede referenciar.

18 Especialización de data-flow

19 Algoritmo para la resolución estática de una invocación a un método

20 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]

21 Ejemplo OFG-Resolución de invocaciones

22 Ejemplo El método addLoan

23 Ejemplo OFG-Resolución de invocaciones Library1

24 Ejemplo OFG-Resolución de invocaciones

25 Ejemplo El método addLoan

26 Ejemplo Diagrama de secuencia

27 Ejemplo Diagrama de colaboración

28 Resolución de invocaciones para sistemas incompletos

29 Ejemplo-Resolución de invocaciones Diagrama de secuencia

30

31 Resolución de invocaciones para sistemas incompletos Supongamos que excluimos la clase Main. Cuando addLoan de la clase Library es analizado, el objeto fuente de las 4 invocaciones en 42,43,45,46 no es conocido. Para las 2 primeras llamadas es posible determinar el objeto target, Loan1, el objeto asignado en la línea 60, sin embargo esto no es posible para las otras dos llamadas. Los conjuntos target para 45 y 46 son vacíos (ningún objeto de las clases User o Document). Se introduce Library*,como objeto genérico fuente de las 4 invocaciones. User* y Document* se introducen para las invocaciones en 45 y 46.

32 Resolución de invocaciones para sistemas incompletos

33 Extracción de diagramas de interacción- Filtrado Para grandes sistemas el algoritmo puede aplicarse filtrando información relevante de dos maneras: Resolviendo sólo las llamadas distribuidas desde el método de interés Resolviendo sólo las llamadas distribuidas desde el método de interés Incluyendo sólo las clases interesantes en un sistema incompleto. Incluyendo sólo las clases interesantes en un sistema incompleto.

34 Extracción de diagramas de interacción-Filtrado Las invocaciones en diagramas de colaboración puede ser numerada de acuerdo a la notación de Dewey. Esta numeración puede ser utilizada para inducir orden temporal en diagramas de secuencia. Numeracón de invocaciones

35 Extracción de diagramas de interacción

36

37 Análisis dinámico Herramientas específicas -Soluciones ad-hoc que incluyan: - Identificadores de objetos, que serán calculados e incorporados a la traza de ejecución durante la ejecución de constructores - Ante una invocación a un método, agregar a la traza los identificadores del objeto actual y el target.Además incluir el nombre del método actual los objetos referenciados por el atributo - Generar marcas de tiempo cuando ocurren invocaciones.

38 Análisis diámico - Un procesamiento de la traza de ejecución provee un diagrama de interacción para cada test ejecutado. - Cada vez que se detecta una invocación en la traza, se dibuja una llamada en el diagram de interacción entre los objetos identificados en la traza. - El orden de los eventos se induce de las marcas de tiempo. - Produce un conjunto de diagramas de interacción, uno para cada test. - Depende de la calidad de los test

39 Extracción de diagramas de interacción- Análisis dinámico Un libro previamente prestado a un usuario normal de la biblioteca es devuelto y el préstamo cerrado.

40 Extracción de diagramas de interacción- Análisis dinámico Devolución de un libro disponible para préstamos

41 Desde JAVA a diagramas de estado

42 Diagramas de estado Describe el comportamiento que muestra un objeto de una clase. Es un autómata que consiste de estados, transiciones, eventos y actividades. La ingeniería reversa de diagramas de estado no puede ser totalmente automatizada. El primer paso para recuperar un diagrama de estado para una clase consiste en definir un dominio abstracto apropiado para sus atributos y ( posiblemente ) para las variables involucradas en las computaciones de atributos. Luego, la interpretación de los métodos de clase da las transiciones de estado a estado a ser representadas en el diagrama de estados.

43 Diagramas de estado

44 Ejemplo- Diagrama de estado. Clase Document

45

46 Ejemplo- Diagrama de estado. Clase User

47 Ejemplo- Diagramas de estado proyectados para Library

48 Ejemplo-Diagrama de estado combinado para Library

49 Otras propuestas Systa, Tarja. Static and Dynamic Reverse Engineering for Java Software Systems. Ph. D. University Tempere, Finland, 2000 Distingue ingeniería inversa estática y dinámica. La información estática consiste de artefactos y relaciones. La información dinámica contiene además de artefactos, información de trazas de eventos secuenciales, sobre concurrencia, administración de memoria, etc. La información estática se extrae del código y es vista en el entorno para ingeniería inversa RIGI. La información dinámica es generada ejecutando el software bajo un debugger y es vista como un diagrama de escenarios usando la herramienta SCED. Esta permite sintetizar diagramas de estado desde escenarios, pudiendo examinar el comportamiento de un objeto o método desconectado del resto del sistema.


Descargar ppt "Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA2006."

Presentaciones similares


Anuncios Google