Академический Документы
Профессиональный Документы
Культура Документы
(Model-Driven Architecture)
Liliana Favre UNCPBA 2006
Bibliografa
Las grficas fueron extradas de 1. Demeyer, S.; Ducasse, S.; Nierstrasz, O. Object-Oriented Reengineering Patterns, Morgan-Kaufmann Publishers, 2002 2. Systa, Tarja. Static and Dynamic Reverse Engineering for Java Software Systems. Ph. D. University Tempere, Finland, 2000 3. Tonella, P. Potrich, A. Reverse Engineering of Object-Oriented Code, Springer, 2005
Refactoring
Es el proceso de reestructuracin en un contexto orientado a objetos
Mantenimiento
El proceso de modificacin de un producto de software para corregir fallas, mejorar la performance o adaptarlo a un cambio de entorno.
Ingeniera inversa
Las tcnicas de ingeniera inversa permiten analizar y representar software en una forma abstracta a fin de facilitar mantenimiento, reingeniera, reusabilidad y documentacin. Proveen una manera de extraer vistas de alto nivel desde el cdigo sistema, que resumen aspectos relevantes de la computacin ejecutada por las sentencias del programa.
Chikofsky y Cross(*) definen a la ingeniera inversa como el proceso de analizar un sistema target con dos objetivos: Identificar los componentes del sistema y sus interrelaciones Crear representaciones del sistema en otra forma o en un mayor nivel de abstraccin * Reverse Engineering and design Recovery: A taxonomy. IEEE Software, January 1990
Anlisis dinmico
Describe el comportamiento en ejecucin del software. Extraer informacin en cdigo OO es difcil (o imposible?) Naturaleza dinmica de los lenguajes OO Creacin de objetos, garbage collector, dynamic binding,
Ingeniera inversa
Inconvenientes La nica fuente confiable es el cdigo que est poco (o nada) documentado y se ha perdido contacto con los diseadores y/o programadores. Las herramientas CASE proveen buen soporte para anlisis esttico pero limitado para anlisis dinmico.
JAVA
Propuesta de :
Tonella, P. Potrich, A. Reverse Engineering of Object-Oriented Code. Springer, 2005 Describe ingeniera inversa de diagramas UML de clases, objetos, interaccin, estados y paquetes. Propone especializaciones de algoritmos de data-flow basados en una estructura llamada OFG (Object Flow Graph).
Un lenguaje abstracto Un algoritmo de propagacin de flujo que es genrico en el tipo de informacin procesada
return y this
Library.loans
Declaracin de atributo loans
Library.loans = Library.addLoan.loan
Library.printAllLoans.i = Library.loans - el flujo desde el container(loans) al iterador i Libray.printAllLoans.loan =Library.printAllLoans.i; - El acceso al objeto contenido ( invocacin de next) y la asignacin a la variable local loan
Library.users = Library.addUser.user
5 objetos son asignados en el fragmento de cdigo: User1, Document1, Loan1, Document2, Loan2
OFG Data-flow
Insensible a objetos
OFG Data-Flow
Sensible a objetos
OFG Data-Flow
OFG Data-Flow
OFG Data-Flow
OFG Data-Flow
OFG Data-Flow
OFG Data-Flow
Extraccin de clases
La informacin mostrada en una clase (atributos, mtodos, el tipo de los atributos, los parmetros de los mtodos, su visibilidad y alcance) puede extraerse analizando la sintaxis.
Extraccin de relaciones
InternalUser es una subclase de User. Book, Journal, TechnicalReport son subclases de Document Si la aplicacin usa slo una parte del subrbol de herencia, el target de la asociacin o dependencia puede ser incorrecto. Por ejemplo en una instancia especfica una asociacin debera conectar Loan y Book en vez de Document.
Data-Flow
Containers
Clases que implementan estructuras de datos (Listas, rboles grafos, vectores, ) Los containers dbilmente tipados coleccionan objetos cuyos tipos no son declarados, por ejemplo, Containers en versiones de JAVA que no soportan genericidad. Esto dificulta la ingeniera inversa dado que la informacin acerca de las clases de los objetos contenidos no se encuentra disponible en el cdigo.
Containers
Map y Collection son interfaces. Las clases que las implementan son HashMap y LinkedList, dos containers dbilmente tipados, que son clases de biblioteca y no sern explicitadas
Ejemplo
Ejemplo Containers
Ejemplo Containers
Insensible a objetos
Sensible a objetos
Anlisis dinmico
Un anlisis dinmico provee un conjunto de diagramas de objetos, cada uno asociado con un test. Las ejecuciones de un programa se asocian a una traza de ejecucin de cuyo anlisis surge un diagrama de objetos. Es parcial, est basado en un caso limitado de casos de prueba
Anlisis dinmico
Anlisis dinmico