SlideShare una empresa de Scribd logo
1 de 34
Código flu í do con refactorización: Volviendo a poner el “soft” en software Empower Agile 2010 - Todos los derechos reservados
Sobre el orador ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
“ Soft” en Software ,[object Object],[object Object],[object Object],[object Object]
Software debe ser fácil de
Software es complejo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cuando software deja de ser «soft» ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
¿Por qué software se vuelve «hard»? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
A veces es necesario tomar el torro por las astas
Tarde o temprano, si solamente juegas para evadir …
¿ Entonces, como mantener el «soft» en el software? ,[object Object],[object Object],[object Object]
Ciclo de Refactorización ,[object Object],[object Object],[object Object]
Malos olores del código fuente ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Refactorización ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Desafío ,[object Object],[object Object],[object Object]
Detecta el mal olor
Comentarios ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Método largo ,[object Object],[object Object],[object Object],[object Object],[object Object]
Detecta el mal olor
Código duplicado; no cumple con OCP ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Detecta el olor
Clase de datos ,[object Object],[object Object],[object Object],[object Object],[object Object]
Detecta el mal olor
Lista de parámetros larga, Aglomerado de datos ,[object Object],[object Object],[object Object]
Detecta el mal olor
Numero mágico ,[object Object],[object Object],[object Object],[object Object]
Código heredado ,[object Object],[object Object],[object Object],[object Object]
Red de objetos
¿Y los colaboradores?
¿Y que es … ,[object Object],[object Object],[object Object],[object Object],[object Object]
¿Cómo introducir pruebas unitarias en proyectos legados? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ejemplo practico
Literatura
Contacto ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
¿Preguntas?

Más contenido relacionado

La actualidad más candente

Literal 5 pre logica
Literal 5 pre logicaLiteral 5 pre logica
Literal 5 pre logica
slideedison
 
Unidad 02 metodología para solucionar un problema
Unidad 02   metodología para solucionar un problemaUnidad 02   metodología para solucionar un problema
Unidad 02 metodología para solucionar un problema
Lorenzo Alejo
 

La actualidad más candente (19)

Estilos de programación y sus lenguajes
Estilos de programación y sus lenguajesEstilos de programación y sus lenguajes
Estilos de programación y sus lenguajes
 
Paradigmas de programacion
Paradigmas de programacionParadigmas de programacion
Paradigmas de programacion
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Cazaguano peñaherrera
Cazaguano peñaherreraCazaguano peñaherrera
Cazaguano peñaherrera
 
PARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOPARADIGMA IMPERATIVO
PARADIGMA IMPERATIVO
 
Tdd desde las_trincheras
Tdd desde las_trincherasTdd desde las_trincheras
Tdd desde las_trincheras
 
Literal 5 pre logica
Literal 5 pre logicaLiteral 5 pre logica
Literal 5 pre logica
 
Introduccion a la programacion
Introduccion a la programacionIntroduccion a la programacion
Introduccion a la programacion
 
Unidad 02 metodología para solucionar un problema
Unidad 02   metodología para solucionar un problemaUnidad 02   metodología para solucionar un problema
Unidad 02 metodología para solucionar un problema
 
Unidad I. Algoritmo y Programas. Parte 1
Unidad I. Algoritmo y Programas. Parte 1Unidad I. Algoritmo y Programas. Parte 1
Unidad I. Algoritmo y Programas. Parte 1
 
Programación
ProgramaciónProgramación
Programación
 
Clase 1 lógica de programación
Clase 1 lógica de programaciónClase 1 lógica de programación
Clase 1 lógica de programación
 
Notacion Hungara
Notacion HungaraNotacion Hungara
Notacion Hungara
 
PARADIGMA FUNCIONAL
PARADIGMA FUNCIONALPARADIGMA FUNCIONAL
PARADIGMA FUNCIONAL
 
Programaciòn
ProgramaciònProgramaciòn
Programaciòn
 
Aplicaciones distribuidas
Aplicaciones distribuidasAplicaciones distribuidas
Aplicaciones distribuidas
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
 
Aprende a Programar: Introducción
Aprende a Programar: IntroducciónAprende a Programar: Introducción
Aprende a Programar: Introducción
 
Pres algoritmos
Pres algoritmosPres algoritmos
Pres algoritmos
 

Destacado

Destacado (6)

El mundo se acaba en 2012
El mundo se acaba en 2012El mundo se acaba en 2012
El mundo se acaba en 2012
 
El mundo se acaba en el 2012
El mundo se acaba en el 2012El mundo se acaba en el 2012
El mundo se acaba en el 2012
 
El Emperador No Tiene Traje
El Emperador No Tiene TrajeEl Emperador No Tiene Traje
El Emperador No Tiene Traje
 
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteSoftware Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

Similar a Volviendo a poner el “soft” en software

CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdfCarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
ssuser7ccf16
 

Similar a Volviendo a poner el “soft” en software (20)

Anti patrones
Anti patronesAnti patrones
Anti patrones
 
Extreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de CalidadExtreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de Calidad
 
Estrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar softwareEstrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar software
 
legacy
legacylegacy
legacy
 
Cuida tu código: Clean Code
Cuida tu código: Clean CodeCuida tu código: Clean Code
Cuida tu código: Clean Code
 
Taller SOLID Refactor
Taller SOLID RefactorTaller SOLID Refactor
Taller SOLID Refactor
 
Mejores formas de aprender a programar
Mejores formas de aprender a programarMejores formas de aprender a programar
Mejores formas de aprender a programar
 
200610 - Antipatrones de Software
200610 - Antipatrones de Software200610 - Antipatrones de Software
200610 - Antipatrones de Software
 
Unidad ii. tdd
Unidad ii. tddUnidad ii. tdd
Unidad ii. tdd
 
Conceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOConceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEO
 
Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)
 
Refactoring code smelss
Refactoring   code smelssRefactoring   code smelss
Refactoring code smelss
 
Refactorización
RefactorizaciónRefactorización
Refactorización
 
Sem 001 - Clase 01 - Ingenieria del Software.ppt
Sem 001 - Clase 01 - Ingenieria del Software.pptSem 001 - Clase 01 - Ingenieria del Software.ppt
Sem 001 - Clase 01 - Ingenieria del Software.ppt
 
Meetup: Sesion #1 Unit Testing & Simian Army
Meetup: Sesion #1 Unit Testing & Simian ArmyMeetup: Sesion #1 Unit Testing & Simian Army
Meetup: Sesion #1 Unit Testing & Simian Army
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
 
El poder de los reptiles: Hacer herramientas de hacking es fácil
El poder de los reptiles: Hacer herramientas de hacking es fácilEl poder de los reptiles: Hacer herramientas de hacking es fácil
El poder de los reptiles: Hacer herramientas de hacking es fácil
 
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdfCarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
 
Xp
XpXp
Xp
 

Volviendo a poner el “soft” en software

Notas del editor

  1. - Pedir todos que digan su nombre y algunas palabras
  2. Trabajo como programador, desarrollador, arquitecto, jefe de proyecto, equipo etc. Publique libros, articulos Vengo de Chile, pero originalmente de otro pais Agustin y Philippe otros 2 oradores de Chile Ma ñana hablan de experiencia « Un terremoto, 120 voluntarios y 5 días para levantar un portal» Como me empecé interesar en Refactoring : trabajando en mantención de un software heredado Muchos aprendían código de memoria yo decidí aprender técnicas reutilizables
  3. Cuando software deja de ser fácil de modificar, pierde su esencia. Software vs. Hardware
  4. - Termino inventado por Kent Beck y Martin Fowler en su libro de Refactoring.
  5. Los tradicionalistas se sorprenden cuando se dice que comentarios son mala cosa
  6. Open Closed Principle: Closed for modification, open for extension.
  7. Algunos dicen que ciertos programas son creaciones mas complejas hechas por hombre
  8. Tipos de dobles xUnit patterns Fowler: Mocks aren’t Stubs