Pages Menu
Categories Menu

Posted by on Feb 28, 2011 in diseño, refactoring | 1 comment

Breve introducción a la Refactorización (Refactoring) (1/3). Definición

Refactorizar (o Refactoring) es realizar una  transformación al software preservando su comportamiento, modificando sólo su estructura interna para mejorarlo. El término es de Opdyke, quien lo introdujo por primera vez en 1992, en su tesis doctoral. Más definiciones, en 2001 Tokuda y Batory las definieron como una transformación parametrizada a un programa preservando su comportamiento, modificando automáticamente el diseño de la aplicación y el código fuente subyacente. Decía Fowler que eran cambios realizados en el software para hacerlo más fácil de modificar y comprender, por lo que no son una optimización del código, ya que esto en ocasiones lo hace menos comprensible, ni solucionar errores o mejorar algoritmos. Las refactorizaciones pueden verse como un tipo de mantenimiento preventivo, cuyo objetivo es disminuir la complejidad del software en anticipación a los incrementos de complejidad que los cambios pudieran traer.

Aunque hay varios catálogos de refactorizaciones el más famoso es el de Fowler, que se mantiene en la página www.refactoring.com. Algunos ejemplos de las refactorizaciones que podéis encontrar en este catálogo: Add Parameter, Change Bidirectional Association to Unidirectional, Consolidate Conditional Expression, Extract Class, Introduce Null Object, Move Method, etc.

Y para terminar de definir el concepto, os dejo más abajo el diseño UML de algunas refactorizaciones…

Fig. Extract Class

Fig. Replace Method With Method Object

Fig. Replace Type Code With StateStrategy

(Enlace a la parte 2 de este artículo: Breve introducción a la Refactorización (Refactoring) (2/3). Justificación)

ReplaceMethodWithMethodObject

Javier Garzás

Javier Garzás

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.
Javier Garzás

1 Comment

  1. Hola Javier, muchas gracias por la informacion, es clara y puntual

Trackbacks/Pingbacks

  1. Herramientas de refactorización | Fábricas de Software - [...] de cambiar la estructura del software preservando su comportamiento externo. Aquí encontraréis más información. Y claro, tiene un poco…
  2. Herramientas de refactorización | Fábricas de Software - [...] de cambiar la estructura del software preservando su comportamiento externo. Aquí encontraréis más información. Y claro, tiene un poco…
  3. Una lista de herramientas de calidad software imprescindibles - Javier Garzás, sobre calidad software y otros temas relacionados - [...] generación de Test unitarios, etc. Mira las excepciones, refactorizaciones potenciales (te dejo un post de refactorización), convenios de JavaDoc,…
  4. Breve introducción a la Refactorización (Refactoring) (2/3). Justificación - Javier Garzás, sobre calidad software y otros temas relacionados - [...] (Enlace a la parte 1 de este artículo: Breve introducción a la Refactorización (Refactoring) (1/3... [...]
  5. Ejemplos y buenas prácticas para descomponer historias de usuario en tareas (parte 1 de 2) - Javier Garzás, sobre calidad software y otros temas relacionados - [...] del código (te recomiendo aquí leer este post sobre qué es la refactorización): Esta tarea se debe incluir para…
  6. Qué es UML y por qué es tan sumamente importante (seas informático o no) saber interpretar diagramas UML - Javier Garzás | Javier Garzás - [...] El “Lenguaje Unificado de Modelado” o UML (de Unified Modeling Language) no es ni un método, ni una metodología,…
  7. Tres maneras muy típicas de fracasar con un proyecto ágil - Javier Garzás | Javier Garzás - [...] ¿copy paste? ¿complejidad ciclomática disparada? ¿pruebas unitarias? ¿diseño mantenible? ¿refactorizas? etc., etc., etc. Supongo que saber por dónde voy,…

Post a Reply

Tu dirección de correo electrónico no será publicada.

Share This