reingenieria
TRANSCRIPT
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 1/32
Reingeniería del Software
M.C. Juan Carlos Olivares Rojas
CECyTEM, Morelia, Junio 2010
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 2/32
Software Hoy en Día
• Mito: los
programadores deahora ya noprograman como losde antes.
• Herramientas másfáciles y productivas
• El software es cadadía más complejo
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 3/32
• ¿Si su software fuera un edificio, se parecería
mas a uno de la izquierda o de la derecha?
Reingeniería del Software
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 4/32
¿Software Sustentable?
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 5/32
• Reducir
• Reusar
• Reciclar
• 80% Desarrollo de Software es paramantenimiento. Por lo tanto se necesita de uncódigo simple, legible y bien diseñado para queen un futuro pueda ser extensible.
Software Sustentable
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 6/32
• 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 acasohaciendo las cosas bien o podríamos hacerlasmejor?
• Es el rediseño o cambio drastico de un procesoen un negocio (deriva hacia el producto). Escomenzar de cero, cambio de todo o nada.
Reingeniería
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 7/32
Ejemplo de Reingeniería
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 8/32
• La reingeniería de software es costosa y
consumidora de tiempo.
• La reingeniería es una actividad de
reconstrucción, preferible de realizar antes deque se “derrumbe” la obra.
• Antes de derribar una casa, quizás se necesitacorroborar que está mal.
Reingeniería del Software
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 9/32
Reingeniería del Software
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 10/32
• La reingeniería es un proceso que altera los
elementos internos de toda obra, no es unasola remodelación de la fallada.
• La reingeniería ayuda a la evolución ymantenimiento del software
• Generalmente se siguen los siguientes pasospara aplicar reingeniería:
Reingeniería del Software
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 11/32
Reingeniería del Software
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 12/32
Reingeniería del Software
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 13/32
• Refactoring (Reestructuración) es modificar el
comportamiento interno (generalmente códigofuente) sin modificar su comportamientoexterno (apariencia, funcionalidad).
• Un cambio al sistema que deja sucomportamiento inalterable (sin cambios), peroaumenta alguna cualidad no funcional comosimplicidad, flexibilidad, comprensión, … [Beck,1999]
Refactoring
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 14/32
• 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
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 15/32
• Es correcto el siguiente modelo
•¿Se puede mejorar?¿cómo?
Ejemplo de Refactoring
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 16/32
• Si. Subiendo el método a la clase padre
• ¿En qué casos no sería conveniente estarefactorización?
• Cuando los métodos difieren en suim lementación. Pero aun así es mala?
Ejemplo de Refactoring
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 17/32
¿Qué hay de malo en esto?
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 18/32
Antipatrón BLOB
ó O
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 19/32
Antipatrón BLOB
B d S ll
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 20/32
• Algunas ideas sobre que reestructura
Bad SmellsBAD SMELL REFACTORING PROPUESTO
CODIGO DUPLICADO EXTRAER EL MÉTODO
SUBIR VARIABLES
SUSTITUIR EL ALGORITMO
MÉTODOS LARGOS EXTRAER EL MÉTODO
INTRODUCIR OBJETOS COMO PARÁMETROS
REEMPLAZAR EL MÉTODO CON UN OBJETOMÉTODO
CLASES GRANDES EXTRAER CLASES
EXTRAER SUBCLASES
CARACTERÍSTICA DE LA “ENVIDIA” MOVER MÉTODO
CLASES “PEREZOSAS” COLAPSAR JERARQUÍAS
I i í I
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 21/32
• Se aplica para obtener un modelo detallado de
análisis, ingeniería de requerimientos, diseño yen algunos casos implementación teniendo unasolución, la cual es una actividad consumidorade tiempo.
• Tanto la Ingeniería Inversa como laReingeniería en la mayoría de las licencias deSoftware se encuentran penadas por la ley.
Ingeniería Inversa
I i í I
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 22/32
• Los archivos ejecutables pueden ser
desemsamblados obteniendo su código fuenteen ensamblador.
• Los archivos ejecutables con código portable(Java, .NET) pueden ser desemsambladospara obtener su código fuente.
Ingeniería Inversa
R di ñ
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 23/32
Rediseño
R d S ft
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 24/32
• 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 nuestrocerebro.
• El reuso en software nos ayuda a mejorar laproducción y calidad del software al “no reinventar la rueda”.
• Desafortunadamente no todo se puede
reutilizar.
Reuso de Software
R d S ft
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 25/32
• La reutilización es la propiedad de utilizar
conocimiento, procesos, metodologías ocomponentes de software ya existente paraadaptarlo a una nueva necesidad,incrementando significativamente la calidad yproductividad del desarrollo.
• Para que un objeto pueda ser reusable senecesita de un alto nivel de abstracción. Entremayor es su nivel de abstracción, mayor es sunivel de reuso.
Reuso de Software
Of ió
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 26/32
Ofuscación
Ot Ej i i
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 27/32
• 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ónCamello-Húngaro, manejo de IDs) y Pruebas
Unitarias.
• P4: manejo de versiones, construcción desde
cero. Ofuscación de código.
Otros Ejercicios
Ot Ej i i
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 28/32
• 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
Ot Ej i i
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 29/32
• 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
Calidad del Soft are en Mé ico
R f i
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 30/32
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
D d
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 31/32
Dudas
Datos de Contacto
5/17/2018 reingenieria - slidepdf.com
http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 32/32
• Departamento de Sistemas y Computación
• Edificio I, Inst. Tec. De Morelia
• http://antares.itmorelia.edu.mx/~jcolivar • MSN: [email protected]
• Skype: juancarlosolivares
• Twitter: @jcolivares
• Facebook: Juan Carlos Olivares Rojas
Datos de Contacto