reingeniería del software m.c. juan carlos olivares rojas cecytem, morelia, junio 2010
TRANSCRIPT
![Page 1: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/1.jpg)
Reingeniería del Software
M.C. Juan Carlos Olivares Rojas
CECyTEM, Morelia, Junio 2010
![Page 2: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/2.jpg)
Software Hoy en Día•Mito: los
programadores de ahora ya no programan como los de antes.
•Herramientas más fáciles y productivas
•El software es cada día más complejo
![Page 3: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/3.jpg)
• ¿Si su software fuera un edificio, se parecería mas a uno de la izquierda o de la derecha?
Reingeniería del Software
![Page 4: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/4.jpg)
¿Software Sustentable?
![Page 5: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/5.jpg)
• Reducir
• Reusar
• Reciclar
• 80% Desarrollo de Software es para mantenimiento. Por lo tanto se necesita de un código simple, legible y bien diseñado para que en un futuro pueda ser extensible.
Software Sustentable
![Page 6: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/6.jpg)
• Se originó a finales de la década de 1980 aunque se popularizó en la década de 1990.
• La reingeniería es un proceso que trata de dar respuesta a una interrogante: ¿Estamos acaso haciendo las cosas bien o podríamos hacerlas mejor?
• Es el rediseño o cambio drastico de un proceso en un negocio (deriva hacia el producto). Es comenzar de cero, cambio de todo o nada.
Reingeniería
![Page 7: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/7.jpg)
Ejemplo de Reingeniería
![Page 8: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/8.jpg)
• La reingeniería de software es costosa y consumidora de tiempo.
• La reingeniería es una actividad de reconstrucción, preferible de realizar antes de que se “derrumbe” la obra.
• Antes de derribar una casa, quizás se necesita corroborar que está mal.
Reingeniería del Software
![Page 9: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/9.jpg)
Reingeniería del Software
![Page 10: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/10.jpg)
• La reingeniería es un proceso que altera los elementos internos de toda obra, no es una sola remodelación de la fallada.
• La reingeniería ayuda a la evolución y mantenimiento del software
• Generalmente se siguen los siguientes pasos para aplicar reingeniería:
Reingeniería del Software
![Page 11: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/11.jpg)
Reingeniería del Software
![Page 12: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/12.jpg)
Reingeniería del Software
![Page 13: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/13.jpg)
• Refactoring (Reestructuración) es modificar el comportamiento interno (generalmente código fuente) sin modificar su comportamiento externo (apariencia, funcionalidad).
• Un cambio al sistema que deja su comportamiento inalterable (sin cambios), pero aumenta alguna cualidad no funcional como simplicidad, flexibilidad, comprensión, … [Beck, 1999]
Refactoring
![Page 14: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/14.jpg)
• El término se creó como analogía con la factorización de números y polinomios. Por ejemplo, x² − 1 puede ser factorizado como (x + 1)(x − 1), revelando una estructura interna que no era visible previamente (como las dos raíces en -1 y +1)
• El libro de Martin Fowler Refactoring es la referencia clásica (1999).
Definición
![Page 15: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/15.jpg)
• Es correcto el siguiente modelo
• ¿Se puede mejorar?¿cómo?
Ejemplo de Refactoring
![Page 16: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/16.jpg)
• Si. Subiendo el método a la clase padre
• ¿En qué casos no sería conveniente esta refactorización?
• Cuando los métodos difieren en su implementación. ¿Pero aun así es mala?
Ejemplo de Refactoring
![Page 17: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/17.jpg)
¿Qué hay de malo en esto?
![Page 18: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/18.jpg)
Antipatrón BLOB
![Page 19: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/19.jpg)
Antipatrón BLOB
![Page 20: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/20.jpg)
• Algunas ideas sobre que reestructuraBad Smells
BAD SMELL REFACTORING PROPUESTO
CODIGO DUPLICADO EXTRAER EL MÉTODOSUBIR VARIABLESSUSTITUIR EL ALGORITMO
MÉTODOS LARGOS EXTRAER EL MÉTODOINTRODUCIR OBJETOS COMO PARÁMETROSREEMPLAZAR EL MÉTODO CON UN OBJETO MÉTODO
CLASES GRANDES EXTRAER CLASESEXTRAER SUBCLASES
CARACTERÍSTICA DE LA “ENVIDIA” MOVER MÉTODO
CLASES “PEREZOSAS” COLAPSAR JERARQUÍAS
![Page 21: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/21.jpg)
• Se aplica para obtener un modelo detallado de análisis, ingeniería de requerimientos, diseño y en algunos casos implementación teniendo una solución, la cual es una actividad consumidora de tiempo.
• Tanto la Ingeniería Inversa como la Reingeniería en la mayoría de las licencias de Software se encuentran penadas por la ley.
Ingeniería Inversa
![Page 22: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/22.jpg)
• Los archivos ejecutables pueden ser desemsamblados obteniendo su código fuente en ensamblador.
• Los archivos ejecutables con código portable (Java, .NET) pueden ser desemsamblados para obtener su código fuente.
Ingeniería Inversa
![Page 23: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/23.jpg)
Rediseño
![Page 24: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/24.jpg)
• El reuso es una de las técnicas de resolución de problemas que más utilizamos los humanos. De hecho es lo primero que verifica nuestro cerebro.
• El reuso en software nos ayuda a mejorar la producción y calidad del software al “no reinventar la rueda”.
• Desafortunadamente no todo se puede reutilizar.
Reuso de Software
![Page 25: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/25.jpg)
• La reutilización es la propiedad de utilizar conocimiento, procesos, metodologías o componentes de software ya existente para adaptarlo a una nueva necesidad, incrementando significativamente la calidad y productividad del desarrollo.
• Para que un objeto pueda ser reusable se necesita de un alto nivel de abstracción. Entre mayor es su nivel de abstracción, mayor es su nivel de reuso.
Reuso de Software
![Page 26: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/26.jpg)
Ofuscación
![Page 27: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/27.jpg)
• P1: Reestructuración de auto documentación con Javadoc
• P2: traducción de un código a otro
• P3: Estándares de codificación (notación Camello-Húngaro, manejo de IDs) y Pruebas Unitarias.
• P4: manejo de versiones, construcción desde cero. Ofuscación de código.
Otros Ejercicios
![Page 28: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/28.jpg)
• P5: reestructuración de datos (archivos a base de datos). Internalización.
• P6: creación de bibliotecas utilizando patrón de diseño MVC
• P7: uso de catálogo de refactorings
• P8: Utilización de patrón de diseño factoría
Otros Ejercicios
![Page 29: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/29.jpg)
• P9: Refactoring otro lenguaje mismo paradigma de programación
• P10: Ingeniería inversa
• P11: Refactoring de POO a Aspectos
• P12: Patrón Diseño Adapter
• P13: Patrón diseño memento
Otros Ejercicios
![Page 30: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/30.jpg)
Calidad del Software en México• Roger S. Pressman, Ingeniería de software
un enfoque práctico.Ed. McGraw Hill.• • Piattini M.G. y F.O, Calidad en el
desarrollo y mantenimiento del software. Ed. RAMA.
• • Fowler, M. (1999), Refactoring, Adison-
Wesley.
Referencias
![Page 31: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/31.jpg)
Dudas
![Page 32: Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010](https://reader036.vdocuments.net/reader036/viewer/2022062500/5665b4291a28abb57c8faa35/html5/thumbnails/32.jpg)
• Departamento de Sistemas y Computación
• Edificio I, Inst. Tec. De Morelia
• [email protected]• http://antares.itmorelia.edu.mx/~jcolivar• MSN: [email protected]• Skype: juancarlosolivares• Twitter: @jcolivares• Facebook: Juan Carlos Olivares Rojas
Datos de Contacto