reingenieria

32
 Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010

Upload: fidelmen

Post on 19-Jul-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: reingenieria

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

Page 2: reingenieria

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

Page 3: reingenieria

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

Page 4: reingenieria

5/17/2018 reingenieria - slidepdf.com

http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 4/32

 

¿Software Sustentable?

Page 5: reingenieria

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

Page 6: reingenieria

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

Page 7: reingenieria

5/17/2018 reingenieria - slidepdf.com

http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 7/32

Ejemplo de Reingeniería

 

Page 8: reingenieria

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

 

Page 9: reingenieria

5/17/2018 reingenieria - slidepdf.com

http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 9/32

Reingeniería del Software

 

Page 10: reingenieria

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

 

Page 11: reingenieria

5/17/2018 reingenieria - slidepdf.com

http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 11/32

 

Reingeniería del Software

 

Page 12: reingenieria

5/17/2018 reingenieria - slidepdf.com

http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 12/32

 

Reingeniería del Software

 

Page 13: reingenieria

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

 

Page 14: reingenieria

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

 

Page 15: reingenieria

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

 

Page 16: reingenieria

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

 

Page 17: reingenieria

5/17/2018 reingenieria - slidepdf.com

http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 17/32

¿Qué hay de malo en esto?

 

Page 18: reingenieria

5/17/2018 reingenieria - slidepdf.com

http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 18/32

Antipatrón BLOB

 

ó O

Page 19: reingenieria

5/17/2018 reingenieria - slidepdf.com

http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 19/32

Antipatrón BLOB

 

B d S ll 

Page 20: reingenieria

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

Page 21: reingenieria

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

Page 22: reingenieria

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 ñ

Page 23: reingenieria

5/17/2018 reingenieria - slidepdf.com

http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 23/32

Rediseño

 

R d S ft

Page 24: reingenieria

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

Page 25: reingenieria

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ó

Page 26: reingenieria

5/17/2018 reingenieria - slidepdf.com

http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 26/32

 

Ofuscación

 

Ot Ej i i

Page 27: reingenieria

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

Page 28: reingenieria

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

Page 29: reingenieria

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

Page 30: reingenieria

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

Page 31: reingenieria

5/17/2018 reingenieria - slidepdf.com

http://slidepdf.com/reader/full/reingenieria-55b07a8c555cb 31/32

 

Dudas

  

Datos de Contacto