SlideShare una empresa de Scribd logo
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

Métodos del proceso de software
Métodos del proceso de softwareMétodos del proceso de software
Calidad de software y TDD
Calidad de software y TDDCalidad de software y TDD
Calidad de software y TDD
Jose Luis Bugarin Peche
 
Calidad de software
Calidad de softwareCalidad de software
Calidad de software
Software Guru
 
2.modelos del proceso
2.modelos del proceso2.modelos del proceso
2.modelos del proceso
Ramiro Estigarribia Canese
 
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
Domingo 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
 
Presentacion grupo8
Presentacion grupo8Presentacion grupo8
Presentacion grupo8
KatherineFernanda18
 
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
ejordi
 
Grupo82018
Grupo82018Grupo82018
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 scrum
IEEE Uruguay
 
Behavior1
Behavior1Behavior1
Behavior1arajar
 
Integración Continua
Integración ContinuaIntegración Continua
Integración Continua
Jose Patricio Bovet Derpich
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
Juan Camilo Calderon
 
Paradigmas
ParadigmasParadigmas
Paradigmas
guest09eda8
 
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 Scrum
Vicenç García-Altés
 
Kontrola
KontrolaKontrola
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
Anna 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 distancia
LEIDE 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ércio
Portal NE10
 
Ingles mi rutina diaria alexa
Ingles mi rutina diaria alexaIngles mi rutina diaria alexa
Ingles mi rutina diaria alexa
Sebastian Bernal
 
Metodologías agiles
Metodologías agilesMetodologías agiles
Metodologías agiles
Joan Sebastián Ramírez Pérez
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
Joan Sebastián Ramírez Pérez
 
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
Robin Low
 
Diagramas comportamiento
Diagramas comportamientoDiagramas comportamiento
Diagramas comportamiento
Joan Sebastián Ramírez Pérez
 
SCRUM Desarrollo ágil
SCRUM Desarrollo ágilSCRUM Desarrollo ágil
SCRUM Desarrollo ágilricardoroldan
 
La nube. Cloud computting
La nube. Cloud computtingLa nube. Cloud computting
La nube. Cloud computting
Joan Sebastián Ramírez Pérez
 
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
 
Código Limpio
Código LimpioCó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
Robin Low
 
Microservicios
MicroserviciosMicroservicios
Modelo diseño
Modelo diseñoModelo diseño
Patrones GOF
Patrones GOFPatrones GOF
Código Limpio
Código LimpioCódigo Limpio

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 extrema
Brandon Betto
 
14.administración de la calidad
14.administración de la calidad14.administración de la calidad
14.administración de la calidad
Ramiro Estigarribia Canese
 
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
Cristian Romero Matesanz
 
Programacion extrema
Programacion extremaProgramacion extrema
Programacion extrema
wilson Rodriguez
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágil
Johnny Ordóñez
 
Metodos agiles 4
Metodos agiles 4Metodos agiles 4
Metodos agiles 4
Diego Hernández Maya
 
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
 
Capitulo 2
Capitulo 2Capitulo 2
Modelos de desarrollo del software grupo5
Modelos de desarrollo del software grupo5Modelos de desarrollo del software grupo5
Modelos de desarrollo del software grupo5
Mauricio Cardozo Aguilar
 
Deuda tecnica
Deuda tecnicaDeuda tecnica
Deuda tecnica
Carlos Saldaña
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Domingo Gallardo
 
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
guest37183b
 
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
PrimoLaura
 
Modelo de desarrollo de software
Modelo de desarrollo de softwareModelo de desarrollo de software
Modelo de desarrollo de software
Saul mendoza valdez
 
Programación extrema [XP]
Programación extrema [XP]Programación extrema [XP]
Programación extrema [XP]
Agustín
 
Extremeprograming
ExtremeprogramingExtremeprograming
Extremeprograming
estudiante
 
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
Nicanor 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

Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
Joan Sebastián Ramírez Pérez
 
Orm
OrmOrm
Servicios web
Servicios webServicios web
Roles scrum
Roles scrumRoles scrum
Principios SOLID
Principios SOLIDPrincipios SOLID
Calidad en el desarrollo del software
Calidad en el desarrollo del softwareCalidad en el desarrollo del software
Calidad en el desarrollo del software
Joan Sebastián Ramírez Pérez
 
MVC
MVCMVC
Uml
UmlUml
Modelo negocio
Modelo negocioModelo negocio
Retrospectiva
RetrospectivaRetrospectiva
Integracion continua
Integracion continuaIntegracion continua
Integracion continua
Joan Sebastián Ramírez Pérez
 
BDD TDD ATDD
BDD TDD ATDDBDD TDD ATDD

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
 

Último

CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
AbbieDominguezGirond
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 

Último (6)

CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 

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