1. DATOS DE LA ASIGNATURA
Nombre de la asignatura: Reingeniería del software
Carrera: Ingeniería en Sistemas computacionales
Clave de la asignatura:
Horas teóricas-horas prácticas: 3-2-8
2. HISTORIA DEL PROGRAMA
Lugar y fecha de
elaboración o revisión
Participantes
Observaciones
Instituto Tecnológico de
Tuxtepec
Academia de sistemas y
computación
b). Aportación de la asignatura al perfil del egresado
El alumno conocerá las actividades del proceso de software que tienen una importancia
vital para conseguir producir software de calidad: asegurar la calidad, la gestión de la
configuración del software, el mantenimiento y la reingeniería del software.
Reconocerá los pasos qué hay que tener presente durante el proceso de construcción del
software con el fin de asegurar la calidad final, y no sólo eso, sino que también aprenderá
qué hay que hacer para que esta calidad se mantenga durante toda la vida útil del software.
Entenderá qué es el proceso de software y su relación con la calidad.
Comprenderá que, aunque las actividades propuestas no suelen gustar, ya que se trata de
actividades más bien organizativas y de gestión, si no se realizan con rigor se provocan
muchos problemas.
Comprenderá que aunque estas actividades se consideran menos importantes que las
técnicas y las herramientas de desarrollo, son imprescindibles para garantizar la calidad del
producto.
El alumno tratará el tema del mantenimiento del software. Los sistemas, una vez en
explotación, siguen cambiando ya que hay que hacer mejoras, adaptaciones y correcciones
y por tanto, hay que velar a fin de que estos cambios se hagan siempre preservando la
calidad del sistema. Presentaremos un caso especial de mantenimiento preventivo que se
conoce como reingeniería del software.
Aplicará los métodos, procesos y métricas de calidad de la Reingeniería del software.
4.- OBJETIVO(S) GENERAL(ES) DEL CURSO
El objetivo general de la asignatura es reflexionar sobre situaciones reales en torno a la
construcción de software y como afrontarlas para garantizar la calidad del software desarrollado,
entendiendo que un software de calidad, no tan sólo hace lo que tiene que hacer, sino que
también se tiene que desarrollar en el tiempo y presupuesto establecidos, dando total satisfacción
al cliente.
5.- TEMARIO
Unidad
Temas
Subtemas
1 Introducción a la reingeniería del software
1.1 Definición de reingeniería del software. 1.1.1 Crisis del software
1.2 Sistemas de información heredados 1.2.1 ¿Por qué aplicar la reingeniería del software?
1.2.2 ¿Qué implica la reingeniería?
1.2.3 Herramienta que utiliza la reingeniería 1.2.4 ¿Cómo se hace una reingeniería? 1.3 Costes y beneficios de la reingeniería 1.3.1 Justificación del proyecto de
reingeniería.
1.3.2 Análisis de la cartera de aplicaciones. 1.3.3 Estimación de costes.
1.3.4 Análisis de costos/beneficios.
2 Procesos de la reingeniería
del software
2.1 Procesos de la reingeniería del software 2.1.1 Análisis te Inventarios
2.1.2 Reestructuración de documentos 2.1.3 Ingeniería inversa
2.1.3.1 ¿Cuando utilizar la ingeniería inversa? 2.1.4 reestructuración de código
2.1.5 Reestructuración de datos 2.1.6 Ingeniería progresiva
2.2 Desarrollo de software con y para reusó 2.2.1 Fases de la reingeniería del software 2.3 Reestructuración
2.3.1 Traducción del código fuente 2.3.2 Ingeniería inversa
2.3.3 Mejora de la estructura del programa 2.3.4 Modularización del programa
2,3.5 Reingeniería de datos
2.3.6 Reingeniería en el mantenimiento
3 Métodos y modelos de la
reingeniería del software
3.1 El método análisis de opciones para la reingeniería (“options análisis for
reingeneering “(OAR))
3.1.1Definición y Necesidad del Análisis de opciones para reingeniería
3.1.2 Actividades principales del método OAR 3.1.3 Tareas especializadas.
3.1.4 Estructura de Actividades
3.1.4.1 Ejemplo de actividad: establecimiento del contexto de extracción.
3.2 El modelo de herradura
3.2.1 Los tres niveles del modelo herradura 3.3 El modelo cíclico
3.3.1 Actividades del modelo cíclico.
4 Reconstrucción de la
arquitectura
4.1 El rol de la reconstrucción de la arquitectura.
4.2 Recomendaciones y fases para la reconstrucción de la arquitectura 4.2.1 Recomendaciones para la reconstrucción de arquitectura
4.2.2 Fases para la reconstrucción de la Arquitectura.
4.2.2.1 Extracción de la Información 42.2.2 Construcción de la base de datos. 4.2.2.3 Fusión de vistas.
4.2.2.4 Composición de vistas arquitectónicas.
5 Mantenimiento del software 5.1 Mantenimiento del software 5.2 Distribución del tiempo de vida del software
5.3 Tipos de mantenimiento
5.3.1Distribución del tiempo en tareas de mantenimiento
5.4 Tecnología de la reingeniería 5.4.1 Importancia de la reingeniería del software
5.4.2 Ingeniería directa 5.4.3Restructuración 5.4.4 Ingeniería inversa
5.4.4.1 Áreas en la ingeniería inversa 5. 5 Rediseño
5.5.1 Reingeniería del software 5.5.2 Otras tecnologías
5.6 Proceso de la reingeniería del software 5.6.1 Pasos de la reingeniería del software 5.6.2.1Analisis del código fuente
5.7. Tipos de métricas del producto 5.7.1 Análisis del código fuente
5.7.2 Métricas para medir el factor facilidad de mantenimiento
5.7.3 Criterios de calidad
5.7.4 Modelos normativos de calidad 5.7.5 Grafico de criterios
5.8 Reestructuración
5.8.1Restructuración de datos, ventajas 5.8.2 Herramientas de reestructuración de datos
5.8.3 Reestructuración de procesos 5.8.4 Construcciones no permitidas en un programa estructurado
5.9 Lógica del programa
5.9.1 Beneficios de la reestructuración de código
5.9.2 Objetivo de la ingeniería inversa 5.9.3 Ingeniería inversa de datos 5.9.4 Ingeniería inversa de procesos
6 Caso de estudio 6.1 Definición del problema
6.2 Estudio del código y vialidad del producto 6.3 Eliminación de la Interfaz de usuario 6.4 Mejora de la estructura del programa 6.5 Modularización el programa y eliminación de redundancias (refactorización)
6.6 Traducción del código mejorado a C 6.7 Ingeniería inversa
6.9 Perfeccionamiento de la interfaz resultante
6.10 Integración de la interfaz de usuario con código de cálculo
6.- APRENDIZAJES REQUERIDOS
Conocer las bases de la programación para la construcción de software
Conocer y manejar al menos dos lenguaje de programación de diferente nivel.
Conocer los fundamentos para el desarrollo de sistemas.
Conocer conceptos básicos de la ingeniería del software.
7.- SUGERENCIAS DIDÁCTICAS
Propiciar la búsqueda y selección de información en diversas fuentes, sobre los métodos, procesos,
mantenimiento, reconstrucción y métricas de calidad de la reingeniería del software.
Propiciar el uso de terminología técnica de la reingeniería del software.
Seleccionar temas de la reingeniería del software para discusión en clase.
Realizar un caso de estudio practico donde implemente todos los conocimientos adquiridos de la
reingeniería del software.
8.- SUGERENCIAS DE EVALUACIÓN
Dar seguimiento al desempeño integral del estudiante en el desarrollo del programa (dominio
de los conceptos, capacidad de la aplicación de los conocimientos en problemas reales).
Participación en actividades individuales y de equipo.
Cumplimiento de los objetivos y desempeño en las prácticas.
Desarrollo un caso de uso práctico final que integre todas las unidades.
Exámenes escritos e investigaciones
9.- UNIDADES DE APRENDIZAJE
UNIDAD 1.-
Introducción a la Reingeniería del software.Objetivo
Educacional
Actividades de
Aprendizaje
Actividades de
Aprendizaje Fuentes de
Información
El estudiante
Identificará la función de la
reingeniería del software y
¿el
porque
de
su
utilización?, sus costos y
beneficios.
1.1 Buscar, seleccionar y
evaluar
información
sobre
los
conceptos,
historia
e
introducción
de
la
reingeniería del software
1.2 Discutir en grupo, la
función y Beneficio de la
Ingeniería del Software.
UNIDAD 2.-
Procesos de la Reingeniería del softwareObjetivo
Educacional
Actividades de
Aprendizaje
Actividades de
Aprendizaje Fuentes de
Información
Conocerá las fases y
procesos de la reingeniería
del software que mejoran
la
comprensión
del
software e incrementan la
facilidad de mantenimiento
del mismo.
2.1 Buscar información
sobre los modelos y fases
de la reingeniería del
software
2.2 Analizar, por equipo
las fases, y procesos de la
reingeniería del software.
.
1, 2, 3, 4…28
UNIDAD 3.-
Métodos y modelos de la Reingeniería del SoftwareObjetivo
Educacional
Actividades de
Aprendizaje
Actividades de
Aprendizaje Fuentes de
Información
Reconocerá las diferentes
metodologías
de
la
reingeniería del software
para la remodelación de
aplicaciones antiguas que
siguen siendo útiles pero
se desea sean mas fáciles
de mantener y se adapten
a soportes de software
mas
evolucionados
y
modernos.
.
3.1 Investigar y analizar
las
diferentes
metodologías
de
la
reingeniería del software.
3.2 Explicar por equipos,
mediante exposición, las
ventajas y desventajas de
una y otra metodología.
3.3 Elaboración de cuadro
comparativo
de
metodologías en clase.
1, 2, 3, 4…28
UNIDAD 4.-
Reconstrucción de la arquitectura.Objetivo
Educacional
Actividades de
Aprendizaje
Actividades de
Aprendizaje Fuentes de
Información
Conocerá los métodos,técnicas y herramientas que puedan proporcionar una
solución global al
mantenimiento.
4.1 comprender en clases
cada uno de los métodos y
técnicas que sirven para la
construcción
de
una
arquitectura.
4.2 investigar en fuentes
de consulta o medios de
Internet las herramientas
de
mantenimiento
disponibles en el mercado.
UNIDAD 5.-
Mantenimiento del software.Objetivo
Educacional
Actividades de
Aprendizaje
Actividades de
Aprendizaje Fuentes de
Información
Identificará los tipos de
mantenimientos,
herramientas, tecnologías,
modelos de calidad y
criterios, que garantizan la
mejora y calidad de un
programa.
5.1 Exponer e investigar
en equipo los tipos de
mantenimientos,
tecnologías y métricas de
calidad de la reingeniería
del software.
5.2
I
dentificará los principios básicos para definir modelos de calidad.1, 2, 3, 4…28
UNIDAD 6.-
Caso de estudio.Objetivo
Educacional
Actividades de
Aprendizaje
Actividades de
Aprendizaje Fuentes de
Información
Definirá un problema como
caso de estudio, y
mejorara una aplicación ya
existente donde aplicará
todos los conocimientos
adquiridos.
6.1 Desarrollará un
proyecto final donde lleve
a la práctica toda la teoría
analizada de la
reingeniería del software.
1, 2, 3, 4…28
10. FUENTES DE INFORMACIÓN
1. Ian Sommerville: Ingeniería de Software. 6ª. Edición. Addison Wesley. 2. Arnold, R.S.: Software Reengineering. IEEE Computer Society Press, 1993.
3. Beck, J. and Eichmann, D.: Program and interface slicing for reverse engineering. In R.C. Waters and E.J. Chikosfsky, editors, Working Conference on Reverse Engineering, IEEE Computer Society Press. 1993, 54-63.
4. Biggerstaff T. and Perlis A.: Software Reusability. Addison-Wesley. November, 1990.
5. Chikofsky, E.J. and Cross, J.H.: Reverse engineering and design recovery: A taxonomy.IEEE Software. 7(1), 1990, 13-17.
6. Gall, H. and Klösch. R.: Finding Objects in Procedural Programs: An Alternative Approach. In Proceeding of the Second Working Conference on Reverse Engineering, Toronto, Canada. IEEE Computer Society Press, July 1995. 208-216.
7. Gall, H., Klösch, R., Mittermeir, R.: Object-Oriented re-architecturing. 5th European Software Engineering Conference (ESEC’95), September 1995, Sitges, Spain,. Lecture Notes in Computer Science 989, 1995, 499-519.
8. Jacobson, I., Lindström, F.: Re-engineering of old system to an object-oriented architecture. ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications, Phoenix, Arizona, October 1991, 340-350.
9. Jones, C.: The economics of Object-Oriented Software, American Programmer, vol. 7, nº 10, October 1994, 28–35.
10. Landis L.D.; Hyland, P.M.; Gilbert, A.L. and Fine, A.J.: Documentation in a software maintenance environment. In Proceeding of the IEEE Conference on Software Maintenance. IEEE Computer Society 1998, 66-73.
11. Linos, P.K., Molterer S., Paech B. and Salzmann C.: Re-engineering for Reuse: Integrating reuse techniques into the reengineering process. Technical report TUM-INFO-11-I9824-100 Intitut Für Informatik, Technische Universität München, 1998.
12. Moreno, M.N., González, J.L., Arco M.A. and Casado, J.: Determination of macroscopic thermodynamic ionization constants at variable ionic strenght by an optimization algorithm. Computers and Chemistry, 14, 1990, 165-168.
13. Murphy G. C., Notkin D. and Lan E.S.: An empirical study of static call graph extractors. Technical Report 95-08-01, Department of Computer Science and Engineering, University of Washington. 1995.
14. Piattini, M., Villalba, J., Ruiz, F., Bastanchury, T., Polo, M., Martínez, M.A. y Nistal, C.: Mantenimiento del software: Modelos, técnicas y métodos para la gestión del cambio. Rama,noviembre de 2000.
15. Postema M. and Schimidt, H.W.: Reverse Engineering and Abstraction of Legacy Systems. Informatica: An International Journal of Computing and Informatics. Vol 22 nº 3, 1998, 359-371. 16. Pressman, R.S.: Software Engineering: A Practitioner’s Approach. Fifth Edition. McGraw-Hill. 2001.
Metodología de Reingeniería del Software para la remodelación de aplicaciones científicas heredadas DPTOIA-IT- 16
17. Rugaber, S. and Clayton, R.: The representation problem in reverse engineering. In Proceedings of the working Conference in Reverse Engineering, Baltimore, Maryland.IEEE Computer Society, May 1993. 8-16.
18. Rugaber, S. and Will L.M.: Creating a research infrastructure for reengineering. In 3rd Working Conference on Reverse Engineering. IEEE Computer Society Press, September 1996, 120-130. 19. Sametinger, J.: Software engineering with reusable components, Springer-Verlag, 1997.
20. SICUMA, Grupo. Leiva, J.: Construcción de especificaciones de interfaces en un proceso de reingeniería, en: 2da. Conferencia Iberoamericana en Sistemas, Cibernética e Informática CISCI 2003, Orlando (Florida)-EEUU.
21. Sommerville, I.: Software Engineering. Sixth edition. Addison Wesley, 2001.
22. Ulrich, W. M.: The evolutionary growth of software reengineering and the decade ahead. American Programmer, 3(10), 1990,14-20.
23. Weiser M.: Program Slicing. In IEEE Transactions on Software Engineering, IEEE Computer Society, July 1984, 352-357.
24. "Innovation in Marketing". McGraw Hill. 203 pág.
25. MORRIS, Daniel. "Reingeniería: Cómo aplicarla con éxito en los negocios". Mc Graw Hill, 1994.282 páginas.
26. PRIDE, William. "Marketing: Concepto y estrategias". 9na edición. McGraw Hill. 1997. 877 pág. 27. TROUT, Jack. "Posicionamiento". Mc Graw Hill, 1986. 263 páginas.
28. WILSON, Bud. Planeación y Desarrollo Comercial del Producto". Herrero Hermanos, México. 217 pág
29. Hammer Michael & Champy James. Reingeniería