La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


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

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 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. Carlos Eduardo Angarita Márquez Universidad de los Andes 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

3 Carlos Eduardo Angarita Márquez Universidad de los Andes EL PROBLEMA Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Ciclo de Desarrollo 20% Mantenimiento Depuración + Extender Funcionalidad 80% Valor ($$) del Mantenimiento Confiabilidad del Aplicativo Tiempo de Vida útil Nivel de Mantenibilidad Buenas Prácticas de Diseño y Codificación Cómo detectarlas? Cómo medirlas? Detección de Malas Prácticas de Diseño o Codificación Agenda

4 Carlos Eduardo Angarita Márquez Universidad de los Andes PROPUESTAS DE SOLUCION PUNTO DE PARTIDA Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Martin Fowler Kent Beck Bad Smells Large ClassLarge Class Long MethodLong Method Duplicate CodeDuplicate Code God ClassGod Class Too many parametersToo many parameters Feature EnvyFeature Envy Low CohesionLow Cohesion …. Cuál es el problema de los Bad Smells? Definidos en términos cualitativos Hay Ambigüedad (multiplicidad de interpretaciones) Definiciones para la intuición Humana. Agenda

5 Carlos Eduardo Angarita Márquez Universidad de los Andes PROPUESTAS DE SOLUCION Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. 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

6 Carlos Eduardo Angarita Márquez Universidad de los Andes PROPUESTAS DE SOLUCION Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. PLANTEAR ESTRATEGIAS DE DETECCIÓN FEATURE ENVYFEATURE ENVY LOW COHESIONLOW 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

7 Carlos Eduardo Angarita Márquez Universidad de los Andes 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. Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. ESTRATEGIAS DE DETECCIÓN PLANTEADAS 1.Qué porcentaje de la funcionalidad de cada clase usa el método analizado. 2.Del 100% de las instrucciones del método, qué porcentaje de ellas involucran a cada clase? Agenda

8 Carlos Eduardo Angarita Márquez Universidad de los Andes ESTRATEGIAS DE DETECCION DE FEATURE ENVY Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. 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

9 Carlos Eduardo Angarita Márquez Universidad de los Andes ESTRATEGIAS DE DETECCION DE FEATURE ENVY PORCENTAJE DE EXPLOTACIÓN DE CADA CLASE PORCENTAJE DE EXPLOTACIÓN DE CADA CLASE Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. 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

10 Carlos Eduardo Angarita Márquez Universidad de los Andes ESTRATEGIAS DE DETECCION DE FEATURE ENVY PORCENTAJE DE EXPLOTACIÓN DE CADA CLASE PORCENTAJE DE EXPLOTACIÓN DE CADA CLASE Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. PARAMETRIZACIONES ADMITIDAS Agenda

11 Carlos Eduardo Angarita Márquez Universidad de los Andes ESTRATEGIAS DE DETECCION DE FEATURE ENVY PORCENTAJE DE USO DE CADA CLASE PORCENTAJE DE USO DE CADA CLASE Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. CONVENCIONES NTA (Número Total de Accesos) PU (Porcentaje de Utilización) Agenda

12 Carlos Eduardo Angarita Márquez Universidad de los Andes ESTRATEGIA DE DETECCION DE LOW COHESION Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Representación de las interacciones entre Atributos y métodos de una clase como grafo dirigido Agenda

13 Carlos Eduardo Angarita Márquez Universidad de los Andes ESTRATEGIA DE DETECCION DE LOW COHESION Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Representación de interacciones como grafos Agenda

14 Carlos Eduardo Angarita Márquez Universidad de los Andes ESTRATEGIA DE DETECCION DE LOW COHESION Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Subgrafos débilmente conexos Agenda

15 Carlos Eduardo Angarita Márquez Universidad de los Andes Encuesta Web Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda

16 Carlos Eduardo Angarita Márquez Universidad de los Andes Encuesta Web Datos solicitados a los programadores Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda

17 Carlos Eduardo Angarita Márquez Universidad de los Andes Encuesta Web Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda

18 Carlos Eduardo Angarita Márquez Universidad de los Andes Encuesta Web Mecanismo de filtrado de ruido. Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda

19 Carlos Eduardo Angarita Márquez Universidad de los Andes Encuesta Web Mecanismo de filtrado de ruido. Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda

20 Carlos Eduardo Angarita Márquez Universidad de los Andes Encuesta Web Resultados Obtenidos. Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda

21 Carlos Eduardo Angarita Márquez Universidad de los Andes 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. Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda

22 Carlos Eduardo Angarita Márquez Universidad de los Andes 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. Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda

23 Carlos Eduardo Angarita Márquez Universidad de los Andes 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 deLow Cohesion. Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda

24 Carlos Eduardo Angarita Márquez Universidad de los Andes Gracias! Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda

25 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 1. SEÑUELO

26 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 2. ¿Se le debe dar tratamiento a las clases ancestros?.

27 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 3. ¿Se examina el nivel de explotación de una clase o el porcentaje de instrucciones que la utilizan?.

28 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 4. SEÑUELO

29 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 5. ¿Se valoran por igual los accesos a atributos y métodos?.

30 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 6. ¿Se examina el nivel de explotación de una clase o el porcentaje de instrucciones que la utilizan?.

31 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 7. ¿Se valoran por igual los accesos a getters y a métodos funcionales?

32 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 8. ¿Se valoran por igual los accesos a setters y a métodos funcionales?.

33 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 9. ¿Se valoran por igual los accesos a setters y getters?.

34 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 10. ¿Se valoran por igual el número de invocaciones en tiempo de ejecución y el número de métodos invocados?

35 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 11. ¿Se valoran por igual el número de instancias que se usan de una clase y el número de atributos utilizados?

36 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 12. ¿Se contabilizan los accesos indirectos a atributos?.

37 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda CASO 13. ¿Se contabilizan los accesos indirectos a métodos?.

38 Carlos Eduardo Angarita Márquez Universidad de los Andes Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. Agenda 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?.


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

Presentaciones similares


Anuncios Google