La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


Presentación del tema: "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."— Transcripción de la presentación:

1 Pablo Fernández Busch - Marcos Pasqualino

2 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 Objetos2

3 Herencia Tipos : Implementación / Subclasificación Interfaz Clase Construcción evolutiva Contratos implícitos Reingeniería Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos3

4 4 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

5 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 Objetos5

6 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

7 RockPopJazzBluesSalsaMerengueTangoMambo JoséXX JuanXXXX AnaXXX CamilaXXXX PedroXXX MaríaXXX NicolásXXXX GastónXXX Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos7

8 8

9 9

10 10 Jerarquía de clases Tabla de incidencia Patrones Lattice Propiedades

11 ¿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 Objetos11

12 Ejemplo Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos12 Acceso directo a estado localConcreto en ancestro ArrayList -> size X EnumMap -> putAll X

13 ¿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 Objetos13

14 Ejemplo Comportamiento concreto local redefinido Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos14 Propiedades: Concreto localmente Concreto en descendiente Invocado vía this

15 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étricas Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos15

16 Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos16

17 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 Objetos17 Metamodelo Código fuente

18 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 Objetos18 Propiedades Metamodelo

19 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 Objetos19 Propiedades Lattice Tabla de incidencia

20 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 Objetos20 Lattice Patrones

21 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 Objetos21 Métricas

22 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 Objetos22

23 Comportamiento concreto de ancestro redefinido y extendido TreeMap extiende comportamiento heredado Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos23

24 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 Objetos24

25 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 Objetos25

26 CollectionsSwing Instancias de patrones Conceptos con inclusión de patrones25357 Tipos de patrones817 Tipos de patrones Buenas Prácticas510 Tipos de patrones Malas Prácticas35 Tipos de patrones Prácticas Irregulares02 Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos26

27 Collections vs Swing Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos27

28 Lattice completo vs lattice reducido Proporción de patrones Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos28

29 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 Objetos29

30 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 Objetos30

31 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 Objetos31

32 Patrones de Codificación de Jerarquías de Clases en Aplicaciones Orientadas a Objetos32 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


Descargar ppt "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."

Presentaciones similares


Anuncios Google