Detección de Bad Smells en aplicaciones Java

Slides:



Advertisements
Presentaciones similares
PLAN ESTRATÉGICO Introducción 1.- Definición.
Advertisements

Curso de java básico (scjp)
Metodologías ágiles.
Pablo Fernández Busch - Marcos Pasqualino
METODOS, TECNICAS E INSTRUMENTOS DE RECOLECCION DE DATOS
Fundamentos de Diseño de Software INFT.1
Metodología de la Investigación Social
FACHADA COMPOSITOR MEMENTO
DISEÑO DE EXPERIMENTOS
MUESTREO (NAGA´s) BOLETÍN 5020
AWA: Accesibilidad Web en el proceso de desarrollo software Lourdes Moreno López Departamento de Informática UC3M "Congreso Internacional.
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
Elaboración de Planes de trabajos para Proyectos Informáticos
Pruebas de Unidad y Refactorización
Puntos de función Integrantes de X Soft: - Carlos Retana
EvaluaciónEstudio de Caso Objetivo del Estudio de Caso Objetivo Someter a evaluación cuatro modelos de proceso, estudiando los resultados con ingenieros.
FUNDAMENTOS DE AUDITORIA
Programación Orientada a Objetos
Introducción a la Programación
“8 Principios de la Gestión Administrativa”
Planeación Participativa
SILVIA BEATRIZ GAVILANES NARANJO KELLY VERÓNICA CARVAJAL CUJI
POO Santiago, Mayo 2004 TRABAJO DE INVESTIGACIÓN POO Programación Orientada a Objetos CENAFOM Carolina Bravo V. Jaime Jofré B.
Entornos de programación
Aplicación del paradigma orientado a objetos
Preguntas tipo test (Tema I)
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
© Manuel ColladoEntornos de Programación-1 Entornos de programación Concepto, funciones y tipos.
© Manuel ColladoHerramientas software-1 Herramientas software Clasificación. Integración de herramientas.
1.1.2 Sistemas de información para la gestión y para la ayuda en la toma de decisiones. Los SI contribuyen activamente a la consecución de los objetivos.
Principios y Patrones de Diseño
Funciones en lenguaje C
Ciclo de formulación del proyecto.
I Taller sobre Desarrollo de Software Dirigido por Modelos, MDA y Aplicaciones (DSDM'04) MDA Aplicado: Una Gramática de Grafos para la Transformación de.
Anteproyecto «SISTEMA INFORMÁTICO PARA EL REGISTRO Y CONTROL DE EXPEDIENTES DE PENAS SUSTITUTIVAS A CÁRCEL PARA LA CORTE SUPREMA DE JUSTICIA.» Grupo 19.
Explorar y conocer la técnica de Verificación De Modelos (Model Checking) con la finalidad de poder validar los Modelos de Casos de Uso y así poder ampliar.
Criterios de la Orientación a Objetos 1. Método y Lenguaje (proceso de pensamiento y notaciones para analizar y producir software). 2. Implementación y.
Definición de un modelo colaborativo entre Especializada y Primaria aplicado al diagnóstico por imagen médica.
PROCESO DE DESARROLLO. Introducción Mediante esta presentación se pretende describir el proceso de desarrollo del TALLER I.
 El primer navegador Web incluía un lenguaje de estilo interno que utilizaba dicho navegador para mostrar las páginas HTML.  Sin embargo estos primeros.
TSPiSM Plan de Desarrollo
Unidad VI Documentación
Proyecto de Ingeniería de Software Grupo 9 Septiembre 2009
DISEÑO “CURSO VIRTUAL CICLO BÁSICO CONTABLE” COMO APOYO DEL PROCESO DE ENSEÑANZA – APRENDIZAJE Mg. Ximena Sánchez Mayorga Grupo Investigación Gestión y.
Metodología para solución de problemas
Ingeniería del Software
Métricas Técnicas para Sistemas Orientados a Objeto
REINGENIERIA Alumno: Ronald Marquez A.W. Modulo: Ing. Software.
Programación orientada a objetos. La programación orientada a objetos es un conjunto de normas, que se basan en la idea de construir un software de forma.
Universidad de Managua U de M
Representación de Algoritmos
Code Smells Código que huele mal….
INGENIERÍA DEL SOFTWARE GESTIÓN DE PROYECTOS
Alexander Aristizabal Ángelo flores herrera
 Sara Isabel Osorio Alcaraz Ana Isabel Vallejo Grisales 10 Informática 1.
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de metodologías ágiles Tatiana Alejandra.
Patrones de diseño equipo n.1
MÓDULO INTRODUCCIÓN AL CICLO DE VIDA DEL SOFTWARE ARTICULADORA: CLAUDIA MARIA RESTREPO P.
III. DESARROLLO DE SISTEMAS.. Podemos definir el desarrollo de sistemas informáticos como el proceso mediante el cual el conocimiento humano y el uso.
Conceptos. -Programación orientada a eventos. -Instancias de clase. -Atributo de los objetos. -Método main, get y set. -Ejemplo de la declaración de.
Desarrollo de lógica algorítmica.
Métricas De Software OO
Dra. Ma. Candelaria Ochoa A.
Ciclo de Vida del Software
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
Algunas anotaciones sobre las TIC y los procesos de investigación Vivian Rivera R. Setiembre, 2015.
Planificación de Sistemas de Información
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Transcripción de la presentación:

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

AGENDA 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

80% 20% EL PROBLEMA Cómo detectarlas? Cómo medirlas? Detección de Bad Smells en aplicaciones Java a partir de una representación XML del código fuente. EL PROBLEMA Valor ($$) del Mantenimiento 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

Cuál es el problema de los Bad Smells? 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

Cuál es el problema de las propuestas? 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

PROPUESTAS DE SOLUCION 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

CONCEPTOS BASICOS 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

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

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

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

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

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

Representación de interacciones como grafos 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

Subgrafos débilmente conexos 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

Encuesta Web 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

Datos solicitados a los programadores 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

Encuesta Web 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

Mecanismo de filtrado de ruido. 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

Mecanismo de filtrado de ruido. 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

Encuesta Web Resultados Obtenidos. 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

Conclusiones 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

Conclusiones 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

Trabajos Futuros 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

Gracias! 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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