Вы находитесь на странице: 1из 6

1.

- DATOS DE LA ASIGNATURA:

Nombre de la asignatura: Reestructuración de código

Carrera: Ing. en Sistemas Computacionales

Clave de la asignatura: ISC-0704

Horas teoría-horas práctica-créditos: 4 – 2 - 10

2.- HISTORIA DEL PROGRAMA:

Lugar y fecha de
elaboración o Participantes Observaciones
revisión (cambios y
justificación)
Instituto Tecnológico de MC. Miriam Zulma Reunión para revisión
Morelia del 20 de Enero Sánchez Hernández del módulo de
al 21 de Enero del 2008 M.C. Esperanza Aguillón especialidad.
Robles

3.- UBICACIÓN DE LA ASIGNATURA:

a). Relación con otras asignaturas del plan de estudios


Anteriores Posteriores
Asignaturas Temas Asignaturas Temas
1) Programación Ninguna
de WEB
2) Programación
Orientada a
Objetos
3) Tópicos
selectos de
programación
4) Estructura de
Datos

b) Aportación de la asignatura al perfil del egresado

En la actualidad, la importancia de desarrollar código robusto y fiable es relevante,


por lo que es indispensable eliminar los errores que se han venido cometiendo en el
desarrollo de software. Los métodos y técnicas de reestructuración de código son
fundamentales para que el Ingeniero en Sistemas pueda desarrollarse en áreas de
desarrollo de sistemas con la calidad y fiabilidad que el entorno actual de trabajo
exige.

4.- OBJETIVO(S) GENERAL(ES) DEL CURSO

Objetivo General
Que el alumno analice y comprenda las características deseables de una buena
codificación, permitiéndole aplicar técnicas de reestructuración de código.

Objetivos Particulares
1. Conocer los conceptos básicos de la reestructuración de código
2.- Conocer los antecedentes que dan pie a la necesidad de la reestructuración
3.- Conocer las tendencias de los programadores que generan malos hábitos en la
codificación
4.- Conocer y aplicar los principios y métodos de una adecuada reestructuración de
código para desarrollar código de calidad.

5.- TEMARIO

Unidad Temas Subtemas


1 – Principios de 1.1 Conceptos básicos Términos asociados a la
Reestructuración 1.2 Pasos de la reestructuración
reestructuración
1.3 Problemas de la
reestructuración
1.4 Reestructuración y
desempeño del Software
1.5 Herramientas para
reestructuración

2.- “Bad Smells” en el 2.1 Código duplicado


código 2.2 Métodos grandes
2.3 Clases grandes
2.4 Lista de parámetros
excesiva
2.5 Característica de la
“envidia”
2.6 Sentencias Switch
2.7 Jerarquías de
herencia paralelas
2.8 Campos temporales
2.9 Encadenamiento de
mensajes
2.10 Clases alternativas
con diferentes interfaces
2.11 Librerías de clases
incompletas

3.- Catálogo de 3.1 Composición de


Refactorizaciones Métodos
3.2 Moviendo
Caracteristicas entre
objetos
3.3 Organización de
datos
3.4 Simplificación de
expresiones
condicionales
3.5. Simplificar llamadas
a métodos
3.6. Generalización
3.7. Refactorizaciones
mayores

4.- Reestructuración, 4.1 Rechazo a la


Reuso y la Realidad Reestructuración
4.2 Implicaciones
concernientes al reuso
de software
4.3 La realidad de la
reestructuración

6.- APRENDIZAJES REQUERIDOS

Se requiere que el alumno conozca los siguientes temas


• Fundamentos de programación
• Programación Orientada a Objetos
• Estructura de Datos
• Diseño de software
7.- SUGERENCIAS DIDACTICAS

• Realizar refactorizaciones a códigos previamente desarrollados por los


mismos alumnos.
• Presentar proyectos finales por parte de los alumnos donde demuestren la
mejora en cuanto a calidad del software reestructurado.
• Investigar el estado actual de los productos software en el entorno en cuanto
a la calidad de su desarrollo de código.

8.- SUGERENCIAS DE EVALUACION

• Evaluación diagnóstica (valoración de conocimientos previos).


• Dar seguimiento al desempeño en el desarrollo del programa (dominio de
los conceptos, capacidad de aplicación de los conocimientos en problemas
reales, transferencia del conocimiento).
• Desarrollo de un proyecto final que integre todas las unidades de
aprendizaje.
• Presentación del proyecto final. (Informe, presentación y defensa del
proyecto final.)
• Participación del estudiante en dinámicas grupales (mesas redondas,
conferencias, debate entre otras.)
• Actividades de auto evaluación.
• Exámenes departamentales.
• Cumplimiento de los objetivos y desempeño en las prácticas.

9.- UNIDADES DE APRENDIZAJE

UNIDAD 1.- Principios de Reestructuración

Objetivo Actividades de Aprendizaje Fuentes de


Educacional información
El alumno Investigar el estado actual del código 1,2,3,4
investigará los desarrollado en nuestro entorno, así
términos básicos de como analizar el verdadero concepto
la reestructuración de reestructuración.
de código e Investigar herramientas actuales que
identificará el permitan realizar una
problema de código reestructuración automática de
mal desarrollado en código.
el contexto de
desarrollo de
software.

UNIDAD 2.- “Bad Smells” en el código


Objetivo Actividades de Aprendizaje Fuentes de
Educacional información
El estudiante Investigación sobre los principales 1,2,3,4
aprenderá e errores que se cometen al desarrollar
identificará los código, como son la codificación
malos hábitos de excesiva o generar código duplicado.
codificación (bad Investigar y comprender en que
smells), conociendo consiste un mal diseño de código y
así los errores que los problemas que esto ocasiona.
generalmente se Analizar código previamente
cometen al desarrollado, para detectar los
desarrollar código. errores ya aprendidos.

UNIDAD 3.- Catálogo de Refactorizaciones

Objetivo Actividades de Aprendizaje Fuentes de


Educacional información
El alumno Realizar el análisis y 1,2,3,4
investigará las reestructuración de un código
técnicas de previamente desarrollado, utilizando
reestructuración el catálogo de refactorizaciones
necesarias para propuesto por Martín Fowler.
corregir los errores
de código, y las
aplicará en un caso
práctico.

UNIDAD 4.- Reestructuración, Reuso y la Realidad

Objetivo Actividades de Aprendizaje Fuentes de


Educacional información
El alumno conocerá Realizar una investigación sobre la 1,2,3,4
el impacto de la aplicación de reestructuración de
reestructuración en código en el desarrollo de sistemas
el reuso de software, en su entorno local.
así como la realidad Analizar el impacto
actual de la positivo/negativo que se tiene en el
aplicación de la área de reuso de software.
misma en el ámbito Realizar una encuesta a
de desarrollo de desarrolladores de software para
software. conocer su aceptación/rechazo hacia
la reestructuración de código.
10.- FUENTES DE INFORMACION

1. Refactoring: Improving the Design of Existing Code


Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts,
Addison-Wesley Professional; 1st edition (June 28, 1999), ISBN: 978-
0201485677.

2. Analysis Patterns: Reusable Object Models


Martin Fowler, Addison-Wesley Professional; 1st edition (October 9, 1996),
ISBN: 978-0201895421.

3. In pursuit of code quality: Refactoring with code metrics


Andrew Glover

4. Refactoring to Patterns
Joshua Kerievsky, Addison-Wesley, ISBN: 978-0321213358

11. PRÁCTICAS

Unidad Práctica
1 Ejemplificar la problemática existente con el apoyo de códigos ya
desarrollados.
2 Realizar un análisis detallado de un código, donde se documente los
problemas que se generan por un mal diseño, y por consecuencia, un
deficiente desempeño.
3 Desarrollo de un software entregando el código fuente para ser
analizado posteriormente e identificar los malos hábitos de
programación en el desarrollo de software.
Aplicar distintas técnicas de reestructuración en un código
previamente desarrollado, documentando los errores encontrados y
las soluciones propuestas, así como comprobar su efectividad.
4 Realizar un ensayo del porqué el rechazo de los desarrolladores hacia
esta nueva técnica de mejora del software.
Realizar una encuesta sobre la real aplicación de la reestructuración
de código en el entorno local de desarrollo de sofware.