Está en la página 1de 32

Pablo Fernndez Busch - Marcos Pasqualino

Motivacin: Construccin de jerarquas de clases Anlisis de Conceptos Formales Desarrollo de la Metodologa Implementacin: Jernimo Casos de Estudio: Collections y Swing Anlisis de Resultados: Patrones de codificacin Lecciones Aprendidas Conclusiones

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos 2

Herencia
Tipos :
Implementacin / Subclasificacin Interfaz Clase

Construccin evolutiva Contratos implcitos

Reingeniera
Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos 3

Las clases B y C reutilizan comportamiento definido en la clase A, va this


Clase B

Clase A
a1 m1 { } m2 { } m3 { this.m1}

Las clases D y E utilizan comportamiento definido en la superclase va super

Clase C
a2 a3 m6 { this.m1 } m7 { this.m2 }

Las clases D y E utilizan estado de sus superclases

m4 { this.m1 } m5 { this.m2 }

Clase D
m8 { a1 } m4 { super.m4 }

Clase E
m9 { a2, a3 } m6 { super.m6 }

Las clases D y E extienden comportamiento de sus superclases

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

Deteccin no trivial
Documentacin desactualizada No explcitos en el cdigo fuente.

Qu esconden?
Definiciones, utilizaciones, reutilizaciones,

extensiones, cancelaciones

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

Es una herramienta que permite identificar grupos de elementos que tienen propiedades comunes. Elementos importantes
Tabla de incidencia Concepto Lattice
Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

Rock
Jos Juan Ana Camila Pedro Mara Nicols Gastn X X X X

Pop

Jazz

Blues Salsa Merengue Tango Mambo


X X X X X X X X X

X X X X X X X X X X

X X

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

Jerarqua de clases

Tabla de incidencia

Patrones

Propiedades Lattice

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

10

Qu son?
Conjunto de caractersticas

Para qu sirven?
Extraccin de informacin Agrupadas conforman patrones

Cmo se detectan?
Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos 11

Ejemplo

Acceso directo a estado local


ArrayList -> size EnumMap -> putAll

Concreto en ancestro X

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

12

Qu son?
Conjunto de propiedades

Tipos
Buenas prcticas Prcticas irregulares Malas prcticas

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

13

Ejemplo
Comportamiento concreto local redefinido

Propiedades: Concreto localmente Concreto en descendiente Invocado va this

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

14

Nuestra herramienta: Jernimo Cuatro etapas de anlisis:


Anlisis de cdigo fuente Extraccin de propiedades Construccin de la tabla de incidencia y el lattice Inferencia de patrones

Clculo de mtricas
Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos 15

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

16

Construccin de un metamodelo del cdigo fuente Se utiliz una biblioteca de terceros: Recoder

Cdigo fuente

Metamodelo

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

17

Anlisis del metamodelo


Invocaciones a mtodos Acceso a variables de instancia
Metamodelo

Caractersticas consideradas
Ubicacin de la declaracin Tipo de invocacin Mtodos de acceso a estado,

concretos, abstractos y cancelados Comparacin de mtodos

Propiedades

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

18


Propiedades

Se utiliz y extendi la biblioteca de ACF Colibri Construccin de la tabla de incidencia a partir de las propiedades detectadas Usando la tabla de incidencia se construye el lattice
19

Tabla de incidencia

Lattice

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

Dos fases:
1. Bsqueda automtica de instancias

Lattice

de patrones conocidos 2. Descubrimiento de nuevos patrones a travs de un anlisis manual

Deteccin de patrones contenidos en otros ms generales

Patrones

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

20

Aportan informacin sobre el proceso y los resultados obtenidos


Distintos grupos de mtricas
De las jerarquas analizadas Del contexto estudiado Del anlisis realizado De los patrones detectados
Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos 21

Mtricas

Se prob la metodologa y la herramienta en:


Java Collections Swing

Los resultados se utilizaron para validar y enriquecer el anlisis

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

22

Comportamiento concreto de ancestro redefinido y extendido

TreeMap extiende comportamiento heredado

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

23

Uso de nombres incorrecto

El nombre del mtodo size() coincide con el nombre de la variable de instancia size.

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

24

Acceso directo a estado en ancestro

SyntTableHeaderUI accede directamente a una variable definida en su superclase

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

25

Collections Instancias de patrones Conceptos con inclusin de patrones 54 25

Swing 1258 357

Tipos de patrones
Tipos de patrones Buenas Prcticas

8
5

17
10

Tipos de patrones Malas Prcticas


Tipos de patrones Prcticas Irregulares

3
0

5
2

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

26

Collections vs Swing
Elementos
40000 30000 20000 10000 0 Collections Swing 200 150 100 50

Propiedades

Densidad

0 Collections Swing

0.03 0.02 0.01 0 Collections Swing

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

27

Lattice completo vs lattice reducido Proporcin de patrones


100%

80%

658
60%

Malas Prcticas
48 56

40%

Prcticas Irregulares Buenas Prcticas

20%

543

0%

Collections

Swing
28

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

Anlisis de conceptos formales


Anlisis manual de resultados
Evolucin del proceso
Deteccin de nuevos patrones Patrones contenidos (Superpatrones)

Volumen de informacin
Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos 29

Descubrimiento de patrones de codificacin Deteccin de fortalezas y debilidades Anlisis semiautomtico

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

30

Definicin de Superpatrones Ampliar informacin de las propiedades Continuar con el anlisis de resultados Analizar cuerpo de los mtodos Incorporar propiedades negativas
Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos 31

Construccin de jerarquas de clases Anlisis de Conceptos Formales Desarrollo de la Metodologa Implementacin: Jernimo Casos de Estudio: Collections y Swing Patrones de codificacin

Patrones de Codificacin de Jerarquas de Clases en Aplicaciones Orientadas a Objetos

32

También podría gustarte