pablo fernández busch - marcos pasqualino. motivación: construcción de jerarquías de clases...
TRANSCRIPT
![Page 1: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/1.jpg)
Pablo Fernández Busch - Marcos Pasqualino
![Page 2: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/2.jpg)
Motivación: Construcción de jerarquías de clases
Análisis de Conceptos Formales Desarrollo de la Metodología Implementación: Jerónimo Casos de Estudio: Collections y Swing Análisis de Resultados: Patrones de codificación Lecciones Aprendidas Conclusiones
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 2
![Page 3: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/3.jpg)
Herencia Tipos :
Implementación / Subclasificación Interfaz Clase
Construcción evolutiva Contratos implícitos
ReingenieríaPatrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 3
![Page 4: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/4.jpg)
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 4
Clase A
a1
m1 { … }m2 { … }m3 { this.m1}
Clase C
m6 { this.m1 }m7 { this.m2 }
a2a3
Clase E
m9 { a2, a3 }m6 { super.m6 }
Clase B
m4 { this.m1 }m5 { this.m2 }
Clase D
m8 { a1 }m4 { super.m4 }
Las clases B y C reutilizan comportamiento definido en la clase A, vía this
Las clases D y E utilizan estado de sus superclases
Las clases D y E utilizan
comportamiento definido en la
superclase vía super
Las clases D y E extienden comportamiento de sus superclases
![Page 5: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/5.jpg)
Detección no trivial Documentación desactualizada No explícitos en el código fuente.
¿Qué esconden? Definiciones, utilizaciones,
reutilizaciones, extensiones, cancelaciones …
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 5
![Page 6: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/6.jpg)
Es una herramienta que permite identificar grupos de elementos que tienen propiedades comunes.
Elementos importantes Tabla de incidencia Concepto Lattice
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos
![Page 7: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/7.jpg)
Rock
Pop
Jazz
Blues
Salsa
Merengue
Tango
Mambo
José X X
Juan X X X X
Ana X X X
Camila X X X X
Pedro X X X
María X X X
Nicolás X X X X
Gastón X X X
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 7
![Page 8: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/8.jpg)
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 8
![Page 9: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/9.jpg)
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 9
![Page 10: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/10.jpg)
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 10
Jerarquía de clases Tabla de incidencia Patrones
Lattice
Propiedades
![Page 11: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/11.jpg)
¿Qué son? Conjunto de características
¿Para qué sirven? Extracción de información Agrupadas conforman patrones
¿Cómo se detectan?
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 11
![Page 12: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/12.jpg)
Ejemplo
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 12
Acceso directo a estado local
Concreto en ancestro
ArrayList -> size X
EnumMap -> putAll X
![Page 13: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/13.jpg)
¿Qué son? Conjunto de propiedades
Tipos Buenas prácticas Prácticas irregulares Malas prácticas
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 13
![Page 14: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/14.jpg)
Ejemplo Comportamiento concreto local
redefinido
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 14
Propiedades:• Concreto localmente• Concreto en descendiente• Invocado vía this
![Page 15: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/15.jpg)
Nuestra herramienta: Jerónimo
Cuatro etapas de análisis: Análisis de código fuente Extracción de propiedades Construcción de la tabla de incidencia y
el lattice Inferencia de patrones
Cálculo de métricasPatrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 15
![Page 16: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/16.jpg)
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 16
![Page 17: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/17.jpg)
Construcción de un metamodelo del código fuente
Se utilizó una biblioteca de terceros: Recoder
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 17
Metamodelo
Código fuente
![Page 18: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/18.jpg)
Análisis del metamodelo Invocaciones a métodos Acceso a variables de instancia
Características consideradas Ubicación de la declaración Tipo de invocación Métodos de acceso a estado,
concretos, abstractos y cancelados
Comparación de métodos
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 18
Propiedades
Metamodelo
![Page 19: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/19.jpg)
Se utilizó y extendió la biblioteca de ACF Colibri
Construcción de la tabla de incidencia a partir de las propiedades detectadas
Usando la tabla de incidencia se construye el lattice
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 19
Propiedades
Lattice
Tabla de incidencia
![Page 20: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/20.jpg)
Dos fases:1. Búsqueda automática de
instancias de patrones conocidos
2. Descubrimiento de nuevos patrones a través de un análisis manual
Detección de patrones contenidos en otros más generales
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 20
Lattice
Patrones
![Page 21: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/21.jpg)
Aportan información sobre el proceso y los resultados obtenidos
Distintos grupos de métricas De las jerarquías analizadas Del contexto estudiado Del análisis realizado De los patrones detectados
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 21
Métricas
![Page 22: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/22.jpg)
Se probó la metodología y la herramienta en: Java Collections Swing
Los resultados se utilizaron para validar y enriquecer el análisis
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 22
![Page 23: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/23.jpg)
Comportamiento concreto de ancestro redefinido y extendido
TreeMap extiende comportamiento heredado
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 23
![Page 24: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/24.jpg)
Uso de nombres incorrecto
El nombre del método size() coincide con el nombre de la variable de instancia size.
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 24
![Page 25: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/25.jpg)
Acceso directo a estado en ancestro
SyntTableHeaderUI accede directamente a una variable definida en su superclase
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 25
![Page 26: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/26.jpg)
Collections
Swing
Instancias de patrones 54 1258
Conceptos con inclusión de patrones
25 357
Tipos de patrones 8 17
Tipos de patrones Buenas Prácticas
5 10
Tipos de patrones Malas Prácticas
3 5
Tipos de patrones Prácticas Irregulares
0 2Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 26
![Page 27: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/27.jpg)
Collections vs Swing
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 27
![Page 28: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/28.jpg)
Lattice completo vs lattice reducido
Proporción de patrones
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 28
![Page 29: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/29.jpg)
Análisis de conceptos formales
Análisis manual de resultados Evolución del proceso Detección de nuevos patrones Patrones contenidos (Superpatrones)
Volumen de información
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 29
![Page 30: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/30.jpg)
Descubrimiento de patrones de codificación
Detección de fortalezas y debilidades
Análisis semiautomático
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 30
![Page 31: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/31.jpg)
Definición de Superpatrones
Ampliar información de las propiedades
Continuar con el análisis de resultados
Analizar cuerpo de los métodos
Incorporar propiedades negativas
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 31
![Page 32: Pablo Fernández Busch - Marcos Pasqualino. Motivación: Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología](https://reader033.vdocuments.net/reader033/viewer/2022061216/54a82c4c497959eb6d8b5198/html5/thumbnails/32.jpg)
Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos 32
Construcción de jerarquías de clases Análisis de Conceptos Formales Desarrollo de la Metodología Implementación: Jerónimo Casos de Estudio: Collections y Swing Patrones de codificación