1 / 38

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.

claus
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

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

  3. 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

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

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

  6. 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

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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

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

  23. 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

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

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

  26. 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

  27. 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

  28. 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

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

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

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

  32. 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

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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

  38. 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

More Related