Grandes empresas con una importante necesidad de extender sus software a menudo se encuentran con problemas de mantenimiento. Un software es muy dependiente del hardware sobre el que funciona, de las necesidades de los clientes y del ambiente. Un ejemplo de esto es lo que ocurre con el cambio a un nuevo milenio o con los software de bancos cuando tienen que cambiar una moneda a Euros. Las razones a esta situación son varias: falta de diseño, de unit tests, pobre conocimiento de programación con objetos.

Este curso presenta técnicas (reverse engineering, program visualization, refactoring, design, data mining) que son efectivas para re-engineer y evolucionar software industriales.

Los objetivos de este curso son:

  1. Hacer del participante un mejor programador
  2. Desarrollar técnicas de diseño
  3. Desarrollar técnicas de visualización
  4. Analizar y discutir sobre el proceso de mantener la calidad de un software
  5. Identificar el problema relacionado a la evolución de sistemas
  6. Realizar una experiencia práctica con el objetivo de conseguir cartas de software que identifiquen las deficiencias de este.

Cada alumno va a tener un proyecto personal que va a desarrollar en clase, durante el semestre. La comunidad Pharo y Moose evaluará cada proyecto y dará feedback. Cada proyecto tiene que ser un beneficio para Pharo en general.