Trabajando con código heredado y ser feliz

17
Working with Legacy Code and Be Happy Ing. Diego Caballero, CSM

description

Metodología para trabajar con código legacy y tratar de sobrevivir

Transcript of Trabajando con código heredado y ser feliz

Page 1: Trabajando con código heredado y ser feliz

Working with Legacy Code and Be Happy

Ing. Diego Caballero, CSM

Page 2: Trabajando con código heredado y ser feliz

Legacy Code• Definición académica:

• Código Viejo

• Con muchos años en producción

• Mucho mantenimiento y cambios

• Difícil de mantener

• Pero es EXITOSO

Page 3: Trabajando con código heredado y ser feliz

Legacy Code

• Si Homero fuera un programa, ¿sería fácil de mantener?

• No es código tan viejo

• ¿Qué hace que sea fácil o difícil de mantener?

Page 4: Trabajando con código heredado y ser feliz

Legacy Code

!

Todo código sin Testcases

Page 5: Trabajando con código heredado y ser feliz

¿Por qué cambia el software?

• Arreglar un bug

• Añadir un feature

• Mejorar Diseño

• Optimizar

Page 6: Trabajando con código heredado y ser feliz

¿Por qué cambia el software?

• Arreglar un bug

• Añadir un feature

• Mejorar Diseño

• OptimizarComportamiento Invariante

Page 7: Trabajando con código heredado y ser feliz

¿Por qué cambia el software?

• Arreglar un bug

• Añadir un feature

• Mejorar Diseño

• OptimizarComportamiento Invariante

Comportamiento Invariante

Page 8: Trabajando con código heredado y ser feliz

Hay que modificar Legacy Code. ¿Qué Hacer?

• Renunciar

• Hacer el sistema de vuelta

• Pagarle a otro para que lo haga

• Hacerlo nosotros

Page 9: Trabajando con código heredado y ser feliz

DIY

• Dos formas de trabajar:

• Edit and Pray (Estandar de facto)

• Cover and Modify

Page 10: Trabajando con código heredado y ser feliz

Cover and Modify• Legacy Code Change algorithm

1. Identificar Puntos cambios

2. Encontrar puntos de testing

3. Romper las dependencias

4. Escribir Tests

5. Hacer cambios y refactorear

Page 11: Trabajando con código heredado y ser feliz

Romper Dependencias

• Sensing

• Separation

Demo Sencilla

Page 12: Trabajando con código heredado y ser feliz

Seam

• Un punto del programa

• Donde se puede cambiar el comportamiento

• Sin modificar en ese punto

• Tiene un punto de activación

Page 13: Trabajando con código heredado y ser feliz

Tipos de Seam• Dependiente del leguaje

• Tipos más comunes

• De Preprocesador(c/c++)

• De Linkeado (Ejemplo)

• De Objetos

Page 14: Trabajando con código heredado y ser feliz

public  void  metodo(UnaClase  o){  

       int  i  =  o.doSomething();  

       o.PrintOnConsole();  

}  

Seam de Objeto

Page 15: Trabajando con código heredado y ser feliz

Herramientas

• xUnit

• Herramientas de Refactoring

• Analizadores Estáticos

• Frameworks de Mocks

Page 16: Trabajando con código heredado y ser feliz

Diferencias con TDD

• No derivamos diseño a través de pruebas

• No tienen por qué ser Test Unitarios

• Una vez que cubrimos, podemos aplicar TDD

Page 17: Trabajando con código heredado y ser feliz

Conclusiones

• Se puede trabajar código legado y ser feliz.

• Ser metódico.

• Tratar de aplicar siempre refactoring automático.