Reestructuraci贸n del C贸digo M.C. Juan Carlos Olivares Rojas
Marzo 2010
Competencias
• Específica: conoce y corrige los errores que generalmente se cometen al desarrollar código. • Genéricas • Instrumentales: Capacidad de análisis y síntesis, Solución de problemas, Toma de decisiones.
Competencias
• Interpersonales: Capacidad crítica y autocrítica, Capacidad de trabajar en equipo interdisciplinario, Habilidad para trabajar en un ambiente laboral, Compromiso ético. • Sistémicas: Capacidad de aprender, Capacidad de adaptarse a nuevas situaciones, Capacidad de generar nuevas ideas (creatividad), Habilidad para trabajar en forma autónoma, Preocupación por la calidad.
Temario
• Análisis para reestructuración. • Métodos • Simplificación • Generalización
una
adecuada
• 30% Prácticas
Evidencias
• 70% Actividad de (Teórico-Práctico)
Evaluación
Integral
• Actividades entregadas en horario de clases. Dudas en horarios de clases
Práctica 11 Refactoring AOP
• Último trabajo unidad 3
• Refactorizar una aplicación existente Orientada a Objetos con al menos tres aspectos diferentes (login, acounting, etc.) • El miércoles se deberá definir que software existente se va a modificar para entregar (en clase) el viernes 14 de mayo por plataforma.
¿Por qué no refactorizamos?
• Generalmente se pide una extensión a un sistema, y ni siquiera se comprende completamente lo que se va a hacer, cuando ya hay que hacerlo. • ¿Porqué voy yo a corregir lo que otros hicieron mal? • ¿Qué me garantiza que al “corregir” el código, el programa siga funcionando tal como al principio?
¿qué pasa si no se refactoriza?
• Con el tiempo, los errores se propagan a sí mismos. • El diseño del programa se corrompe. • El costo incremental de cambios se escala
Reuso de Software
• El desarrollo de software con reuso consiste en desarrollar una aplicación usando software existente. • El desarrollo de software para reuso consiste en la construcción de un sistema con la intención de reutilizar partes de él en futuros desarrollos. • Estudios realizados determinaron que la práctica de reutilización del software en un proyecto aumenta la productividad durante el desarrollo de dicho proyecto.
Problemas con el refactoring
• Los desarrolladores de software no entienden bien el concepto y creen que es solo copy-paste profesional. • El beneficio no se da en el instante de desarrollar software para reuso, sino más adelante al minimizar tiempos de codificación y pruebas; por tanto, ¿para que lo hago si yo no disfrutaré esos beneficios? • Pondré al descubierto mi forma de codificar (buena o mala) al dejar componentes reusables.
Patrones de Diseño
• El curso se llevará por su cuenta se realizarán los siguientes temas para el examen teórico y práctico. • Las prácticas se darán el lunes antes de las 16:00 (se espera que estén antes) para entregarse el jueves en horario de clases. • El examen práctico de la cuarta unidad será el lunes 31 de mayo y el téorico el jueves 3 de junio en horario de laboratorio y clases respectivamente.
Patrones de Diseño
• Los exámenes de nivelación (máximo dos unidades) serán los siguientes días: • Unidad 1 (solo teoría) y Unidad 2 Téorico Lunes 7 de junio (11:00 salón de clases Max. 2 horas) • Unidad 3 Práctico (laboratorio 14 horas)
Lunes
7
de
junio
• Unidad 3 y 4 téoricos martes 8 de junio (11:00 salón de clases).
Patrones de Diseño
• Unidad 2 Práctico (laboratorio 14:00)
martes
8
de
junio
• Práctico unidad 4 miercoles 9 de junio (laboratorio 14:00) • Resultados 24 horas después de aplicar los exámenes. • Extras: • Jueves 10 de junio examenes teóricos (sólo una unidad una hora máximo) salón de clases 11
Patrones de Diseño
• Extras: • Viernes 11 de junio examenes prácticos (sólo uno) en el laboratorio 14:00 horas • Semana 17-20 de mayo • Patrones de diseño estructurales: adapter, bridge, composite, decorator, facade y proxy. • Semana 24-27 de mayo • Patrones de diseño de comportamiento: command, memento, mediator y observer.
Patrones de Diseño
• Referencias:
• Libro de patrones de diseño de gama (Gang of Four). • Ebooks proporcionados por el profesor sobre patrón de diseño. • Referencias electrónicas
Referenicas
โ ข Sanchez, M., (2009), Material del Curso de Reestructuraciรณn de Cรณdigos, Instituto Tecnolรณgico de Morelia.
Dudas