SlideShare una empresa de Scribd logo
1 de 17
Refactor y deuda técnica
Joan Sebastián Ramírez Pérez
2015
Diseño emergente
• Cuando se desarrolla con metodologías ágiles el diseño va creaciendo de la
mano con las funcionalidades.
• Adaptar este crecimiento implica cambios en el diseño del código para
soportar este crecimiento.
• Estos cambios los hacemos a través del refactor.
Un desarrollo con mala calidad, obtiene beneficios a corto
plazo. Sin embargo esto puede generar deudas cuyos
intereses se disparen, se alarguen o incluso sean imposibles
de pagar.
Deuda técnica
• “Poca deuda técnica acelera el desarrollo, siempre que se pague con prontitud.”
Ward Cunningham, OOPSLA 1992
• “El peligro viene de la deuda que no se paga. Cada minuto que pasamos con código
no del todo correcto se incrementan los intereses” Ward Cunningham, OOPSLA
1992
• “Muchos confunden la deuda técnica con la idea de que se puede hacer código malo
con la idea de mejorarlo después” Ward Cunningham, YOUTUBE 2009
• “La capacidad de mejorar depende de haber preparado el código para poder
refactorizarlo” Ward Cunningham, YOUTUBE 2009
“
”
Saltarse una actividad necesaria y hacerla a destiempo
lleva entre un x10 a un x100 de sobre tiempo
Fagan, IBM, 1976
Deuda técnica de Philippe Kruchten
Tomado de: http://www.slideshare.net/JavierGarzas/deuda-tecnica-slideshare?qid=2eba2bc2-2828-4c70-990d-
206fe0affe33&v=qf1&b=&from_search=1
Cuadrante deuda técnica de Fowler
Cuadrante deuda técnica de Fowler
“
”
My experience is that, in software, the “good mess” is
only good up to a few days, definitely less than a week.
Henrik Kniberg, 2013
Refactor
• Es una transformación del código que no altera su funcionalidad pero si
altera su diseño.
• Es el mecanismo que tenemos para pagar la deuda técnica o para inyectar
calidad a nuestro código.
¿Cuándo hacer refactor?
• Cuando detectamos malos olores en el código (lo que vimos en código
limpio).
• Cuando identificamos código duplicado.
• Cuando tenemos métodos muy grande (más de 20 líneas).
• Cuando tenemos clases muy grandes.
• Cuando un método tiene muchos parámetros.
• Cuanto identificamos comentarios en el código que dan señales de mal olor.
¿Qué buscamos con el refactor?
• Transformar código ya escrito.
• Mantener el comportamiento de la aplicación, es decir, las funcionalidades.
• Mejorar la calidad del código.
• Mejorar la mantenibilidad de la aplicación.
¿Qué buscamos evitar con el refactor?
Perdida de la productividad escribiendo código en la medida que crece el sistema.
Bibliografía
• P. Kruchten, R. Nord, and I. Ozkaya, “Technical debt: from metaphor to
theory and practice” IEEE Software, vol. 29(6), pp. 18-21, 2012.
• http://www.slideshare.net/JavierGarzas/deuda-tecnica-
slideshare?qid=2eba2bc2-2828-4c70-990d-
206fe0affe33&v=qf1&b=&from_search=1

Más contenido relacionado

La actualidad más candente

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 softwareDomingo Suarez Torres
 
Tabla comparativa- metodologías de desarrollo
Tabla comparativa-  metodologías de desarrolloTabla comparativa-  metodologías de desarrollo
Tabla comparativa- metodologías de desarrolloitsarellano
 
Metodología xp
Metodología xpMetodología xp
Metodología xpPiskamen
 
Metodologías de desarrollo ágiles: Scrum, XP
Metodologías de desarrollo ágiles: Scrum, XPMetodologías de desarrollo ágiles: Scrum, XP
Metodologías de desarrollo ágiles: Scrum, XPejordi
 
Cuadro comparativo
Cuadro comparativo Cuadro comparativo
Cuadro comparativo Seba Briones
 
Revisión de código fuente de manera ágil
Revisión de código fuente de manera ágilRevisión de código fuente de manera ágil
Revisión de código fuente de manera ágilJose Luis Bugarin Peche
 
Mitos y leyendas de la gestión ágil y scrum
Mitos y leyendas de la gestión ágil y scrumMitos y leyendas de la gestión ágil y scrum
Mitos y leyendas de la gestión ágil y scrumIEEE Uruguay
 
Behavior1
Behavior1Behavior1
Behavior1arajar
 
Díme que desarrollas y te diré que metodología usar
Díme que desarrollas y te diré que metodología usarDíme que desarrollas y te diré que metodología usar
Díme que desarrollas y te diré que metodología usarKiberley Santos
 
Metodologias modernas para el desarrollo de software
Metodologias modernas para el desarrollo de softwareMetodologias modernas para el desarrollo de software
Metodologias modernas para el desarrollo de softwareDeisy Sapaico
 

La actualidad más candente (20)

Métodos del proceso de software
Métodos del proceso de softwareMétodos del proceso de software
Métodos del proceso de software
 
Calidad de software y TDD
Calidad de software y TDDCalidad de software y TDD
Calidad de software y TDD
 
Calidad de software
Calidad de softwareCalidad de software
Calidad de software
 
2.modelos del proceso
2.modelos del proceso2.modelos del proceso
2.modelos del proceso
 
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
 
Tabla comparativa- metodologías de desarrollo
Tabla comparativa-  metodologías de desarrolloTabla comparativa-  metodologías de desarrollo
Tabla comparativa- metodologías de desarrollo
 
Metodología xp
Metodología xpMetodología xp
Metodología xp
 
Presentacion grupo8
Presentacion grupo8Presentacion grupo8
Presentacion grupo8
 
Metodologías de desarrollo ágiles: Scrum, XP
Metodologías de desarrollo ágiles: Scrum, XPMetodologías de desarrollo ágiles: Scrum, XP
Metodologías de desarrollo ágiles: Scrum, XP
 
Grupo82018
Grupo82018Grupo82018
Grupo82018
 
Cuadro comparativo
Cuadro comparativo Cuadro comparativo
Cuadro comparativo
 
Revisión de código fuente de manera ágil
Revisión de código fuente de manera ágilRevisión de código fuente de manera ágil
Revisión de código fuente de manera ágil
 
Mitos y leyendas de la gestión ágil y scrum
Mitos y leyendas de la gestión ágil y scrumMitos y leyendas de la gestión ágil y scrum
Mitos y leyendas de la gestión ágil y scrum
 
Behavior1
Behavior1Behavior1
Behavior1
 
Programacion extrema_WR
Programacion extrema_WRProgramacion extrema_WR
Programacion extrema_WR
 
Integración Continua
Integración ContinuaIntegración Continua
Integración Continua
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
Paradigmas
ParadigmasParadigmas
Paradigmas
 
Díme que desarrollas y te diré que metodología usar
Díme que desarrollas y te diré que metodología usarDíme que desarrollas y te diré que metodología usar
Díme que desarrollas y te diré que metodología usar
 
Metodologias modernas para el desarrollo de software
Metodologias modernas para el desarrollo de softwareMetodologias modernas para el desarrollo de software
Metodologias modernas para el desarrollo de software
 

Destacado

Lo que nadie te va a contar sobre Scrum
Lo que nadie te va a contar sobre ScrumLo que nadie te va a contar sobre Scrum
Lo que nadie te va a contar sobre ScrumVicenç García-Altés
 
Documento entregue ao TCU por Eduardo da Fonte
Documento entregue ao TCU por Eduardo da FonteDocumento entregue ao TCU por Eduardo da Fonte
Documento entregue ao TCU por Eduardo da FonteAnna Tiago
 
Conceptos y definiciones de educación a distancia
Conceptos y  definiciones de educación a distanciaConceptos y  definiciones de educación a distancia
Conceptos y definiciones de educación a distanciaLEIDE YOVANA DURAN CCUNO
 
Antônio Campos pede impugnação das contas de Lupércio
Antônio Campos pede impugnação das contas de LupércioAntônio Campos pede impugnação das contas de Lupércio
Antônio Campos pede impugnação das contas de LupércioPortal NE10
 
Ingles mi rutina diaria alexa
Ingles mi rutina diaria alexaIngles mi rutina diaria alexa
Ingles mi rutina diaria alexaSebastian Bernal
 
Good intentions does not mean real impact
Good intentions does not mean real impactGood intentions does not mean real impact
Good intentions does not mean real impactRobin Low
 
SCRUM Desarrollo ágil
SCRUM Desarrollo ágilSCRUM Desarrollo ágil
SCRUM Desarrollo ágilricardoroldan
 
Cartel na Arena Pernambuco é investigado pelo Cade
Cartel na Arena Pernambuco é investigado pelo Cade Cartel na Arena Pernambuco é investigado pelo Cade
Cartel na Arena Pernambuco é investigado pelo Cade Portal NE10
 
Do CSR programs and helping really work
Do CSR programs and helping really workDo CSR programs and helping really work
Do CSR programs and helping really workRobin Low
 

Destacado (19)

Lo que nadie te va a contar sobre Scrum
Lo que nadie te va a contar sobre ScrumLo que nadie te va a contar sobre Scrum
Lo que nadie te va a contar sobre Scrum
 
Kontrola
KontrolaKontrola
Kontrola
 
Documento entregue ao TCU por Eduardo da Fonte
Documento entregue ao TCU por Eduardo da FonteDocumento entregue ao TCU por Eduardo da Fonte
Documento entregue ao TCU por Eduardo da Fonte
 
Conceptos y definiciones de educación a distancia
Conceptos y  definiciones de educación a distanciaConceptos y  definiciones de educación a distancia
Conceptos y definiciones de educación a distancia
 
Antônio Campos pede impugnação das contas de Lupércio
Antônio Campos pede impugnação das contas de LupércioAntônio Campos pede impugnação das contas de Lupércio
Antônio Campos pede impugnação das contas de Lupércio
 
Ingles mi rutina diaria alexa
Ingles mi rutina diaria alexaIngles mi rutina diaria alexa
Ingles mi rutina diaria alexa
 
Metodologías agiles
Metodologías agilesMetodologías agiles
Metodologías agiles
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
 
Good intentions does not mean real impact
Good intentions does not mean real impactGood intentions does not mean real impact
Good intentions does not mean real impact
 
Diagramas comportamiento
Diagramas comportamientoDiagramas comportamiento
Diagramas comportamiento
 
SCRUM Desarrollo ágil
SCRUM Desarrollo ágilSCRUM Desarrollo ágil
SCRUM Desarrollo ágil
 
La nube. Cloud computting
La nube. Cloud computtingLa nube. Cloud computting
La nube. Cloud computting
 
Cartel na Arena Pernambuco é investigado pelo Cade
Cartel na Arena Pernambuco é investigado pelo Cade Cartel na Arena Pernambuco é investigado pelo Cade
Cartel na Arena Pernambuco é investigado pelo Cade
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Do CSR programs and helping really work
Do CSR programs and helping really workDo CSR programs and helping really work
Do CSR programs and helping really work
 
Microservicios
MicroserviciosMicroservicios
Microservicios
 
Modelo diseño
Modelo diseñoModelo diseño
Modelo diseño
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 

Similar a Refactor y deuda técnica

Programación extrema
Programación extremaProgramación extrema
Programación extremaBrandon Betto
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilJohnny Ordóñez
 
2. introduccion a la_ing_de_software
2. introduccion a la_ing_de_software2. introduccion a la_ing_de_software
2. introduccion a la_ing_de_softwareuniv of pamplona
 
Modelos Del ciclo de vida del Software
Modelos Del ciclo de vida del SoftwareModelos Del ciclo de vida del Software
Modelos Del ciclo de vida del Softwareguest37183b
 
Grupo 5-modelos-de-procesos-de-software
Grupo 5-modelos-de-procesos-de-softwareGrupo 5-modelos-de-procesos-de-software
Grupo 5-modelos-de-procesos-de-softwarePrimoLaura
 
Modelo de desarrollo de software
Modelo de desarrollo de softwareModelo de desarrollo de software
Modelo de desarrollo de softwareSaul mendoza valdez
 
Programación extrema [XP]
Programación extrema [XP]Programación extrema [XP]
Programación extrema [XP]Agustín
 
Extremeprograming
ExtremeprogramingExtremeprograming
Extremeprogramingestudiante
 
Experiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdfExperiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdfNicanor Sachahuaman
 
Ingenieria del Software & Caracteristicas y Mitos del Software.
Ingenieria del Software & Caracteristicas y Mitos del Software.Ingenieria del Software & Caracteristicas y Mitos del Software.
Ingenieria del Software & Caracteristicas y Mitos del Software.claudyabra
 

Similar a Refactor y deuda técnica (20)

Programación extrema
Programación extremaProgramación extrema
Programación extrema
 
14.administración de la calidad
14.administración de la calidad14.administración de la calidad
14.administración de la calidad
 
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
 
Programacion extrema
Programacion extremaProgramacion extrema
Programacion extrema
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágil
 
Metodos agiles 4
Metodos agiles 4Metodos agiles 4
Metodos agiles 4
 
2. introduccion a la_ing_de_software
2. introduccion a la_ing_de_software2. introduccion a la_ing_de_software
2. introduccion a la_ing_de_software
 
Capitulo 2
Capitulo 2Capitulo 2
Capitulo 2
 
Modelos de desarrollo del software grupo5
Modelos de desarrollo del software grupo5Modelos de desarrollo del software grupo5
Modelos de desarrollo del software grupo5
 
expodesarrollo29
expodesarrollo29expodesarrollo29
expodesarrollo29
 
Mitos del software
Mitos del softwareMitos del software
Mitos del software
 
Deuda tecnica
Deuda tecnicaDeuda tecnica
Deuda tecnica
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Modelos Del ciclo de vida del Software
Modelos Del ciclo de vida del SoftwareModelos Del ciclo de vida del Software
Modelos Del ciclo de vida del Software
 
Grupo 5-modelos-de-procesos-de-software
Grupo 5-modelos-de-procesos-de-softwareGrupo 5-modelos-de-procesos-de-software
Grupo 5-modelos-de-procesos-de-software
 
Modelo de desarrollo de software
Modelo de desarrollo de softwareModelo de desarrollo de software
Modelo de desarrollo de software
 
Programación extrema [XP]
Programación extrema [XP]Programación extrema [XP]
Programación extrema [XP]
 
Extremeprograming
ExtremeprogramingExtremeprograming
Extremeprograming
 
Experiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdfExperiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdf
 
Ingenieria del Software & Caracteristicas y Mitos del Software.
Ingenieria del Software & Caracteristicas y Mitos del Software.Ingenieria del Software & Caracteristicas y Mitos del Software.
Ingenieria del Software & Caracteristicas y Mitos del Software.
 

Más de Joan Sebastián Ramírez Pérez (16)

Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
 
Orm
OrmOrm
Orm
 
Servicios web
Servicios webServicios web
Servicios web
 
Roles scrum
Roles scrumRoles scrum
Roles scrum
 
Lean startup
Lean startupLean startup
Lean startup
 
Principios SOLID
Principios SOLIDPrincipios SOLID
Principios SOLID
 
Roles desarrollo del software
Roles desarrollo del softwareRoles desarrollo del software
Roles desarrollo del software
 
Patrones diseño y arquitectura
Patrones diseño y arquitecturaPatrones diseño y arquitectura
Patrones diseño y arquitectura
 
Calidad en el desarrollo del software
Calidad en el desarrollo del softwareCalidad en el desarrollo del software
Calidad en el desarrollo del software
 
Lean canvas
Lean canvasLean canvas
Lean canvas
 
MVC
MVCMVC
MVC
 
Uml
UmlUml
Uml
 
Modelo negocio
Modelo negocioModelo negocio
Modelo negocio
 
Retrospectiva
RetrospectivaRetrospectiva
Retrospectiva
 
Integracion continua
Integracion continuaIntegracion continua
Integracion continua
 
BDD TDD ATDD
BDD TDD ATDDBDD TDD ATDD
BDD TDD ATDD
 

Refactor y deuda técnica

  • 1. Refactor y deuda técnica Joan Sebastián Ramírez Pérez 2015
  • 2. Diseño emergente • Cuando se desarrolla con metodologías ágiles el diseño va creaciendo de la mano con las funcionalidades. • Adaptar este crecimiento implica cambios en el diseño del código para soportar este crecimiento. • Estos cambios los hacemos a través del refactor.
  • 3. Un desarrollo con mala calidad, obtiene beneficios a corto plazo. Sin embargo esto puede generar deudas cuyos intereses se disparen, se alarguen o incluso sean imposibles de pagar.
  • 4. Deuda técnica • “Poca deuda técnica acelera el desarrollo, siempre que se pague con prontitud.” Ward Cunningham, OOPSLA 1992 • “El peligro viene de la deuda que no se paga. Cada minuto que pasamos con código no del todo correcto se incrementan los intereses” Ward Cunningham, OOPSLA 1992 • “Muchos confunden la deuda técnica con la idea de que se puede hacer código malo con la idea de mejorarlo después” Ward Cunningham, YOUTUBE 2009 • “La capacidad de mejorar depende de haber preparado el código para poder refactorizarlo” Ward Cunningham, YOUTUBE 2009
  • 5. “ ” Saltarse una actividad necesaria y hacerla a destiempo lleva entre un x10 a un x100 de sobre tiempo Fagan, IBM, 1976
  • 6. Deuda técnica de Philippe Kruchten
  • 10. “ ” My experience is that, in software, the “good mess” is only good up to a few days, definitely less than a week. Henrik Kniberg, 2013
  • 11. Refactor • Es una transformación del código que no altera su funcionalidad pero si altera su diseño. • Es el mecanismo que tenemos para pagar la deuda técnica o para inyectar calidad a nuestro código.
  • 12. ¿Cuándo hacer refactor? • Cuando detectamos malos olores en el código (lo que vimos en código limpio). • Cuando identificamos código duplicado. • Cuando tenemos métodos muy grande (más de 20 líneas). • Cuando tenemos clases muy grandes. • Cuando un método tiene muchos parámetros. • Cuanto identificamos comentarios en el código que dan señales de mal olor.
  • 13. ¿Qué buscamos con el refactor? • Transformar código ya escrito. • Mantener el comportamiento de la aplicación, es decir, las funcionalidades. • Mejorar la calidad del código. • Mejorar la mantenibilidad de la aplicación.
  • 14. ¿Qué buscamos evitar con el refactor? Perdida de la productividad escribiendo código en la medida que crece el sistema.
  • 15.
  • 16.
  • 17. Bibliografía • P. Kruchten, R. Nord, and I. Ozkaya, “Technical debt: from metaphor to theory and practice” IEEE Software, vol. 29(6), pp. 18-21, 2012. • http://www.slideshare.net/JavierGarzas/deuda-tecnica- slideshare?qid=2eba2bc2-2828-4c70-990d- 206fe0affe33&v=qf1&b=&from_search=1