Análisis de dependencia entre refactorings - Ditz, Lucas Martin (2016)
Los sistemas de software están sujetos a constantes tareas de mantenimiento, lo cual implica que una vez entregados, inevitablemente sufrirán cambios motivados por nuevos requerimientos funcionales, cambios en el negocio, cambios en el ambiente, correcciones a fallos encontrados en el funcionamiento, actualizaciones de los requerimientos existentes, etc. Para que el sistema no quede obsoleto, éste debe evolucionar junto con sus requerimientos, por lo que los cambios son inevitables y el mantenimiento del software será necesario para prevenir su “envejecimiento”. Una de las soluciones que se han propuesto tradicionalmente, es diseñar para el cambio con lo cual se trata de prevenir los eventuales problemas que pueden surgir con la evolución del software. Sin embargo, no importa qué tan bien se diseñe un sistema, siempre pueden surgir modificaciones imprevistas que dificultan la tarea de mantenimiento del mismo. Una de las técnicas utilizadas en el proceso de cambio es el refactoring, la cual permite mejorar la estructura interna del sistema, sin modificar su funcionalidad, antes de introducir los cambios necesarios, logrando un balance entre una buena codificación y un buen diseño, permitiendo mantener el sistema evolucionable. Para identificar el código que debe ser refactorizado se sugiere el uso de los code smells, los cuales son características en el código que sugieren la posibilidad de aplicar determinados refactorings. Párrafo extraído de la tesis de grado a modo de resumen.