Mantenimiento de Aplicaciones Legacy


Diseño con objetos

Introducción
¿Te vuelve loco matener el sistema en el que estás trabajando?
¿Tenés miedo de modifcar el sistema porque no sabés el impacto que el cambio puede tener?
¿No sabés cómo testear los cambios que estas aplicando?
¿No sabés qué refactorings automatizados podés usar para cambiar el sistema?
Si alguna vez te hiciste alguna de estas preguntas, ¡entonces este curso es para vos!
Descripción
En este curso se ven temas complejos de mantenimiento de software y mejora de diseños.
Se mostrarán trucos y técnicas de diseño especialmente preparados para romper acoplamiento y para introducir “cuñas” en el diseño que permita testearlo.
Se realizará uso exhaustivo de refactorings automatizados y como hacer cambios en el sistema aplicando Refactorings compuestos, de a pequeños pasos, para llegar a patrones de diseño y arquitectura.
Una vez tomado este curso, lo asistentes estarán capacitados para resolver problemas complejos de mantenimiento de sistemas.
El curso es ampliamente práctico con ejercicios relacionados a situaciones del trabajo cotidiano

Temario

  • Repaso de conceptos de buen diseño (Cohesión y Acoplamiento)

  • Problemas de Sistemas existentes (Entropía en el diseño)

  • Trucos y Técnicas de diseño para romper Acoplamiento

  • Técnicas de modificación de diseño para poder testear

  • Refactorings:


    • Extract Method/Inline Method

    • Extract Variable/Inline Variable

    • Change Method Signature

    • Introduce Parameter/Add Parameter Object/Extract Class from Parameter

    • Convert local to field/Encapsulate Field

    • Rename method/Rename Class/Rename variable

    • Move method

    • Pull up/Push down

    • Extract Class/Introduce Interface / Superclass

    • Generalize declared Type


  • Encadenamiento de Ractorings:

    • Extract Variable+Entract Method+Inline

    • Encapsulate Field+Move

    • Extract Interface+Generalize declared type

    • Extract Parameter Object + Move

    • Extract Parameter Object + Generalize Declared Type


Objetivos
Rsultado Esperado

  • Los asistentes estarán capacitados para realizar cambios de diseño seguros en sistemas existentes

  • Los asistentes estarán capacitados para testear aplicaciones legacy no preparadas para tal fin

  • Los asistentes conocerán en detalle cada uno de los refactorings vistos y cómo y cuándo aplicarlos

  • Los asistentes estarán capacitados para realizar mejoras en código existente basados en la aplicación iterativa e incremental de pequeños refactorings


Pre-requisitos


Audiencia
Arquitectos, Diseñadores, Programadores, Líderes Técnicos

Cursos Relacionados

Duración
16 horas
Lenguajes de programación
Smalltalk - Java - .Net - Ruby - Python - ObjectiveC - Php - Swift - JavaScript