Nombre del Proyecto:
This presentation is the property of its rightful owner.
Sponsored Links
1 / 38

Nombre del Proyecto: Detección de Bad Smells en aplicaciones Java PowerPoint PPT Presentation


  • 66 Views
  • Uploaded on
  • Presentation posted in: General

Nombre del Proyecto: Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Desarrollado por: Carlos Eduardo Angarita Márquez Asesor: Silvia Takahashi Rodríguez Co-asesor Angela Lozano Julio de 2005.

Download Presentation

Nombre del Proyecto: Detección de Bad Smells en aplicaciones Java

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Nombre del proyecto detecci n de bad smells en aplicaciones java

Nombre del Proyecto:

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

Desarrollado por:

Carlos Eduardo Angarita Márquez

Asesor:

Silvia Takahashi Rodríguez

Co-asesor

Angela Lozano

Julio de 2005.

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

AGENDA

  • El problema

  • Propuestas de Solución

  • Conceptos Básicos

  • Estrategias de Detección de Feature Envy

  • Estrategias de Detección de Low Cohesion

  • Validación de las Propuestas (Encuesta Web)

  • Conclusiones

  • Trabajos Futuros

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

Valor ($$) del

Mantenimiento

EL PROBLEMA

Mantenimiento

Depuración

+

Extender

Funcionalidad

80%

Confiabilidad

del Aplicativo

Nivel de

Mantenibilidad

Tiempo de

Vida útil

Buenas Prácticas

de Diseño y

Codificación

Cómo detectarlas?

Cómo medirlas?

Ciclo de

Desarrollo

20%

Detección de Malas Prácticas

de Diseño o Codificación

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

PROPUESTAS DE SOLUCION

Cuál es el problema

de los Bad Smells?

PUNTO DE PARTIDA

Martin Fowler

Kent Beck

  • Bad Smells

  • Large Class

  • Long Method

  • Duplicate Code

  • God Class

  • Too many parameters

  • Feature Envy

  • Low Cohesion

  • ….

  • Definidos en términos cualitativos

  • Hay Ambigüedad

    (multiplicidad de interpretaciones)

  • Definiciones para la intuición Humana.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

PROPUESTAS DE SOLUCION

ESFUERZOS AISLADOS

  • Planteamientos de Estrategias de detección de malas prácticas basados en métricas de software.

  • Robert Martin

  • Radu Marinescu

  • A. J. Riel.

  • M. Fowler

  • E. Gamma, R. Helm, R. Johnson, J. Vlissides.

Cuál es el problema de las propuestas?

  • Obedecen a una conceptualización muy personal del autor.

  • No han sido sometidos a un proceso de confrontación con

  • resultados de aplicación de la intuición humana.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

PROPUESTAS DE SOLUCION

PLANTEAR ESTRATEGIAS DE DETECCIÓN

  • FEATURE ENVY

  • LOW COHESION

CONSIDERACIONES

  • Basar las estrategias planteadas en conceptualizaciones apoyadas en concensos logrados a partir de la opinión grupos heterogéneos de desarrolladores experimentados.

  • Someter los resultados de obtenidos con las estrategias de detección planteadas a un proceso de confrontación con resultados de aplicación de la intuición humana.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CONCEPTOS BASICOS

DEFINICIÓN DE FEATURE ENVY

Martin Fowler define el Bad Smell de Feature Envy de la siguiente manera “un método parece estar más interesado en otra clase que la propia clase a la que pertenece”.

El Bad Smell Feature Envy cuestiona la presencia de un determinado método en una clase, sugiriendo la posibilidad de transportarlo a otra.

ESTRATEGIAS DE DETECCIÓN PLANTEADAS

Qué porcentaje de la funcionalidad de cada clase usa el método analizado.

Del 100% de las instrucciones del método, qué porcentaje de ellas involucran a cada clase?

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

ESTRATEGIAS DE DETECCION DE FEATURE ENVY

Cuál clase debería declarar el método TestFE? X o Y ?

  • Utiliza en 6 ocasiones un único atributo de la clase X (a1X).

  • Utiliza en un única ocasión 4 atributos diferentes de la clase Y.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

ESTRATEGIAS DE DETECCION DE FEATURE ENVY

PORCENTAJE DE EXPLOTACIÓN DE CADA CLASE

CONVENCIONES

NC (Nombre de Clase)

NAA (Número de Atributos Accesibles)

NMA (Número de Métodos Accesibles)

NAU (Número de Atributos utilizados)

NMU (Número de Métodos utilizados)

FUM (Factor de utilización de Métodos)

FUA (Factor de utilización de Atributos)

FUC (Factor de utilización de Clase)

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

ESTRATEGIAS DE DETECCION DE FEATURE ENVY

PORCENTAJE DE EXPLOTACIÓN DE CADA CLASE

PARAMETRIZACIONES ADMITIDAS

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

ESTRATEGIAS DE DETECCION DE FEATURE ENVY

PORCENTAJE DE USO DE CADA CLASE

CONVENCIONES

NTA (Número Total de Accesos)

PU (Porcentaje de Utilización)

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

ESTRATEGIA DE DETECCION DE LOW COHESION

Representación de las interacciones entre

Atributos y métodos de una clase como grafo dirigido

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

ESTRATEGIA DE DETECCION DE LOW COHESION

Representación de interacciones como grafos

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

ESTRATEGIA DE DETECCION DE LOW COHESION

Subgrafos débilmente conexos

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

Encuesta Web

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

Encuesta Web

Datos solicitados a los programadores

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

Encuesta Web

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

Encuesta Web

Mecanismo de filtrado de ruido.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

Encuesta Web

Mecanismo de filtrado de ruido.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

Encuesta Web

Resultados Obtenidos.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

Conclusiones

Es factible de construir herramientas que detecten de forma automática malas prácticas de diseño y programación como “Feature Envy” y “Low Cohesion” a partir de la utilización de métricas de software.

Esta factibilidad de construir modelos exitosos de detección de malas prácticas esta condicionada en gran medida por la disponibilidad de mecanismos que extraigan métricas complejas de orden semántico a partir del código fuente.

Un elemento que contribuye a facilitar el cálculo de dichas métricas es contar con una representación del código fuente de más alto nivel, que sea más fácil de analizar, como por ejemplo la representación XML de XSCORE usada en este proyecto.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

Conclusiones

Las técnicas de grafos y métricas calculadas en este proyecto pueden ser extendidas para contribuir a la detección y especialmente para el refactoring de otras malas prácticas de diseño y programación, tales como clase muy larga y método muy largo.

Es útil representar las interrelaciones de los elementos que componen una clase mediante grafos ya que no solo permite identificar casos de subconjuntos de atributos y métodos como independencia funcional total sino también subconjuntos débilmente conectados con los demás elementos de la clase.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

Trabajos Futuros

  • Plantear mecanismos mas elaborados para la detección automática de un método “Getter” y “Setter”, a partir de sus instrucciones.

  • Transformar la herramienta desarrollada para detección de Low Cohesion y Feature Envy en un plugin que se integren con Eclipse.

  • Abordar proyectos que hagan el refactoring a partir de la detección ya realizada de las malas prácticas “Feature Envy” y “Low Cohesion”.

  • Abordar proyectos que exploren MPDP tales como redundancia semántica de código fuente.

  • Abordar enfoques complementarios para la detección de “Low Cohesion”.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

Gracias!

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 1. SEÑUELO

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 2. ¿Se le debe dar tratamiento a las clases ancestros?.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 3. ¿Se examina el nivel de explotación de una clase o el porcentaje de instrucciones que la utilizan?.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 4. SEÑUELO

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 5.

¿Se valoran por igual los accesos a atributos y métodos?.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 6.

¿Se examina el nivel de explotación de una clase o el porcentaje de instrucciones que la utilizan?.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 7.

¿Se valoran por igual los accesos a getters y a métodos funcionales?

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 8.

¿Se valoran por igual los accesos a setters y a métodos funcionales?.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 9.

¿Se valoran por igual los accesos a setters y getters?.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 10.

¿Se valoran por igual el número de invocaciones en tiempo de ejecución y el número de métodos invocados?

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 11.

¿Se valoran por igual el número de instancias que se usan de una clase y el número de atributos utilizados?

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 12.

¿Se contabilizan los accesos indirectos a atributos?.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 13.

¿Se contabilizan los accesos indirectos a métodos?.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


Nombre del proyecto detecci n de bad smells en aplicaciones java

Detección de Bad Smells en aplicaciones Java

a partir de una representación XML del código fuente.

CASO 14.

¿Se contabilizan por igual los accesos a atributos o métodos declarados en la clase y los heredados de clases del Java Development Kit?.

Agenda

Carlos Eduardo Angarita Márquez Universidad de los Andes


  • Login