Refactoring asistido mediante la detección automática de code smells

Detalles Bibliográficos
Autor Principal: Castilla, Matías
Otros autores o Colaboradores: Garrido, Alejandra (Director/a)
Formato: Tesis
Lengua:español
Datos de publicación: 2014
Temas:
Acceso en línea:Consultar en el Cátalogo
Descripción Física:90 p. : il. + 1CD-ROM
Tabla de Contenidos:
  • 1. Introducción
  • 1.1. Contexto
  • 1.2. Motivación
  • 1.3. Objetivo
  • 1.4. Contribuciones
  • 1.5. Organización de la tesis
  • 1.6. Convenciones
  • 2. Trabajos relacionados
  • 2.1. Background
  • 2.1.2. Refactoring browser
  • 2.1.3. Code smells y análisis de código
  • 2.2. Trabajos de investigación
  • 2.2.1, Refactorización basada en búsqueda: Code-Imp
  • 2.2.2. Estrategias de detección: reglas basadas en métricas para la detección de fallas de diseño
  • 2.2.3. QA en Java mediante la detección de Code Smells
  • 2.3. Herramientas
  • 2.3.1. IntelliJ IDEA
  • 2.3.2. iPlasma
  • 2.3.3. inFussion e inCode
  • 2.3.4. Cincom VisualWorks
  • 3. Arquitectura debase
  • 3.1. El framework de refactoring
  • 3.1.1. Uso de la herramienta
  • 3.1.2. Creación de un nuevo refactoring
  • 3.1.3. Refactorings
  • 3.1.4. Condiciones
  • 3.1.5. Ejecución de las transformaciones: los cambios y el modelo
  • 3.1.6. Reescritura de código
  • 3.1.7. Patrones de diseño
  • 3.2. Small Lint
  • 3.2.1. El framework de reglas lint
  • 3.2.2. Ejemplo: Refused Bequest
  • 3.2.3. Ejemplo: Long Class
  • 3.2.4. Ejecución de las reglas
  • 3.2.5. Patrones de diseño
  • 4. Marco de trabajo
  • 4.1. Definición de Code Smell
  • 4.2. Relación entre code critics de Pharo y code smells
  • 4.3. Code Smells catalogados
  • 4.3.1. Dead Code
  • 4.3.2. Long Parameter List
  • 4.3.3. Large Class
  • 4.3.4. Long method
  • 4.3.5. Messege Chain
  • 4.3.6. Duplicate Code
  • 4.3.7. Temporary Field
  • 4.4. Code Smells no catalogados
  • 4.4.1. Inconsistent method classification
  • 4.4.2. Escessive inheritance depth
  • 4.4.3. Method defined in all subclasses but not in superclass
  • 4.4.4. Rewrite super messages to self messages when both refer to same method
  • 4.4.5. Refer to class name instead of self class
  • 4.4.6. Variable is only assigned a single literal value
  • 4.4.7. Resumen de asociación de Code Critics con Refactorings predefinidos
  • 4.5. Code smells catalogados (Fowler) no implementados en Pharo
  • 4.5.1. Duplicate Code
  • 4.5.2. Divergent Change
  • 4.5.3. Shotgun Surgery
  • 4.5.4. Feature Envy
  • 4.5.5. Data Clumps
  • 4.5.6. Primitive Obsession
  • 4.5.7. Switch Statements
  • 4.5.8. Parallel Inheritance Hierarchies
  • 4.5.9. Lazy Class
  • 4.5.10. Speculative Generality
  • 4.5.11. Middleman
  • 4.5.12. Innappropriate Intimacy
  • 4.5.13. Alternative Class with different Interfaces
  • 4.5.14. Data Class
  • 4.5.15. Refused Bequest
  • 4.5.16. Comments
  • 4.5.17. Resumen de Code Smells no detectados mediante Code Critics
  • 5. Diseño de la herramienta
  • 5.1. Diseño
  • 5.1.1. Asociación de code critics con refactorings
  • 5.1.2. Aplicación de un refactoring a partir del resultado de la ejecución de un critic
  • 5.1.3. Precondiciones
  • 5.1.4. Parámetros adicionales
  • 5.1.5. Integración con el Class Browser
  • 5.2. Implementacion de asociaciones entre code critics y refacto
  • 5.2.1. Remove Class Not referenced
  • 5.2.2. Push Down Method with Refused Bequest
  • 5.2.3. Replace Variable Only Assigned a Single Literal Value with Query
  • 5.2.4. Extract when Long Methd
  • 5.3. Diagrama de clases de la herramienta
  • 6. Uso de la herramienta
  • 6.1. Ejecución de code critics para una clase
  • 6.2. Menú de refactoring en Critic Browser
  • 6.3. Diálogo de refactoring
  • 6.4. Ejemplo de uso
  • 7. Conclusiones y Trabajos Futuros
  • 7.1. Conclusiones
  • 7.2. Contribuciones
  • 7.3. Limitaciones
  • 7.4. Trabajos Futuros
  • 8. Bibliografía