SlideShare uma empresa Scribd logo
1 de 32
Reingeniería del Software
M.C. Juan Carlos Olivares Rojas
CECyTEM, Morelia, Junio 2010
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
• ¿Si su software fuera un edificio, se parecería mas a uno de
la izquierda o de la derecha?
Reingeniería del Software
¿Software Sustentable?
• 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
• 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
Ejemplo de Reingeniería
• 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
Reingeniería del Software
• 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
Reingeniería del Software
Reingeniería del Software
• 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
• 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
• Es correcto el siguiente modelo
• ¿Se puede mejorar?¿cómo?
Ejemplo de Refactoring
• 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
¿Qué hay de malo en esto?
Antipatrón BLOB
Antipatrón BLOB
• Algunas ideas sobre que reestructura
Bad Smells
BAD 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 OBJETO
MÉTODO
CLASES GRANDES EXTRAER CLASES
EXTRAER SUBCLASES
CARACTERÍSTICA DE LA “ENVIDIA” MOVER MÉTODO
CLASES “PEREZOSAS” COLAPSAR JERARQUÍAS
• 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
• 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
Rediseño
• 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
• 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
Ofuscación
• 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
• 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
• 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 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
Dudas
• Departamento de Sistemas y Computación
• Edificio I, Inst. Tec. De Morelia
• jcolivar@itmorelia.edu.mx
• http://antares.itmorelia.edu.mx/~jcolivar
• MSN: juancarlosolivares@hotmail.com
• Skype: juancarlosolivares
• Twitter: @jcolivares
• Facebook: Juan Carlos Olivares Rojas
Datos de Contacto

Mais conteúdo relacionado

Mais procurados

Extremeprograming
ExtremeprogramingExtremeprograming
Extremeprogramingestudiante
 
Programación extrema [XP]
Programación extrema [XP]Programación extrema [XP]
Programación extrema [XP]Agustín
 
Metodologia xp (tarea msmad)
Metodologia xp (tarea msmad)Metodologia xp (tarea msmad)
Metodologia xp (tarea msmad)Renata Briseño
 
Extreme programming (1)
Extreme programming (1)Extreme programming (1)
Extreme programming (1)Enrique Polo
 
Metodologias xp
Metodologias xpMetodologias xp
Metodologias xpElvisAR
 
La programación extrema o e xtreme programming
La programación extrema o e xtreme programmingLa programación extrema o e xtreme programming
La programación extrema o e xtreme programmingJoseMariaAndujar
 
Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Cesar Acosta
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programmingjoaquin_win
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xpCrisCobol
 

Mais procurados (15)

Extremeprograming
ExtremeprogramingExtremeprograming
Extremeprograming
 
Programación Extrema - XP
Programación Extrema - XPProgramación Extrema - XP
Programación Extrema - XP
 
Monografia metodologia xp
Monografia   metodologia xpMonografia   metodologia xp
Monografia metodologia xp
 
Valores y prácticas XP
Valores y prácticas XPValores y prácticas XP
Valores y prácticas XP
 
Programación extrema [XP]
Programación extrema [XP]Programación extrema [XP]
Programación extrema [XP]
 
Metodologia xp (tarea msmad)
Metodologia xp (tarea msmad)Metodologia xp (tarea msmad)
Metodologia xp (tarea msmad)
 
Programación Extrema (XP)
Programación Extrema (XP)Programación Extrema (XP)
Programación Extrema (XP)
 
Extreme programming (1)
Extreme programming (1)Extreme programming (1)
Extreme programming (1)
 
Metodologias xp
Metodologias xpMetodologias xp
Metodologias xp
 
La programación extrema o e xtreme programming
La programación extrema o e xtreme programmingLa programación extrema o e xtreme programming
La programación extrema o e xtreme programming
 
Metodos agiles 4
Metodos agiles 4Metodos agiles 4
Metodos agiles 4
 
Programacion extrema_WR
Programacion extrema_WRProgramacion extrema_WR
Programacion extrema_WR
 
Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xp
 

Destaque

Ingeniería inversa y reingeniería de software
Ingeniería inversa y reingeniería de softwareIngeniería inversa y reingeniería de software
Ingeniería inversa y reingeniería de softwareMoises Medina
 
Tarea 1 metodos y modelos de la reingenieria
Tarea 1 metodos y modelos de la reingenieriaTarea 1 metodos y modelos de la reingenieria
Tarea 1 metodos y modelos de la reingenieriaElizabeth Juarez
 
Etapas de la reingenieria
Etapas de la reingenieriaEtapas de la reingenieria
Etapas de la reingenieriamaye210793
 
Etapas Para Aplicar La Reingenieria
Etapas Para Aplicar La ReingenieriaEtapas Para Aplicar La Reingenieria
Etapas Para Aplicar La ReingenieriaYoelvergatario
 
Teoria de la reingenieria
Teoria de la reingenieriaTeoria de la reingenieria
Teoria de la reingenieriaYao Rodriguez
 
Krds - Etude De Cas News Quiz France24
Krds - Etude De Cas News Quiz France24Krds - Etude De Cas News Quiz France24
Krds - Etude De Cas News Quiz France24KRDS
 
Instrucciones montaje mesa de ping pong cornilleau competition 610
Instrucciones montaje mesa de ping pong cornilleau competition 610Instrucciones montaje mesa de ping pong cornilleau competition 610
Instrucciones montaje mesa de ping pong cornilleau competition 610Cornilleau España
 
Presentacion presencia redes sociales updated liz noviembre 2010
Presentacion presencia redes sociales updated liz noviembre 2010Presentacion presencia redes sociales updated liz noviembre 2010
Presentacion presencia redes sociales updated liz noviembre 2010Liz Pagan
 
Usages d’Internet et pratiques culturelles. Le cas du Grand-Duché de Luxembo...
Usages d’Internet et pratiques culturelles. Le cas du Grand-Duché de Luxembo...Usages d’Internet et pratiques culturelles. Le cas du Grand-Duché de Luxembo...
Usages d’Internet et pratiques culturelles. Le cas du Grand-Duché de Luxembo...M@rsouin
 
Pourquoi les consommateurs recommandent-ils leur opérateur mobile ? Évidence ...
Pourquoi les consommateurs recommandent-ils leur opérateur mobile ?Évidence ...Pourquoi les consommateurs recommandent-ils leur opérateur mobile ?Évidence ...
Pourquoi les consommateurs recommandent-ils leur opérateur mobile ? Évidence ...M@rsouin
 
Despertar interior y el perdon
Despertar interior y el perdonDespertar interior y el perdon
Despertar interior y el perdonEuler
 
INICIATIVAS Y REALIDADES DE LA EDUCACIÓN A DISTANCIA EN LA INGENIERÍA ELECTRÓ...
INICIATIVAS Y REALIDADES DE LA EDUCACIÓN A DISTANCIA EN LA INGENIERÍA ELECTRÓ...INICIATIVAS Y REALIDADES DE LA EDUCACIÓN A DISTANCIA EN LA INGENIERÍA ELECTRÓ...
INICIATIVAS Y REALIDADES DE LA EDUCACIÓN A DISTANCIA EN LA INGENIERÍA ELECTRÓ...Manuel Mujica
 
Presentacion open source 2010
Presentacion open source 2010Presentacion open source 2010
Presentacion open source 2010Liz Pagan
 

Destaque (20)

Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Ingeniería inversa y reingeniería de software
Ingeniería inversa y reingeniería de softwareIngeniería inversa y reingeniería de software
Ingeniería inversa y reingeniería de software
 
Tarea 1 metodos y modelos de la reingenieria
Tarea 1 metodos y modelos de la reingenieriaTarea 1 metodos y modelos de la reingenieria
Tarea 1 metodos y modelos de la reingenieria
 
Proyecto de reingenieria de software
Proyecto de reingenieria  de softwareProyecto de reingenieria  de software
Proyecto de reingenieria de software
 
Reingenieria
ReingenieriaReingenieria
Reingenieria
 
Etapas de la reingenieria
Etapas de la reingenieriaEtapas de la reingenieria
Etapas de la reingenieria
 
Etapas Para Aplicar La Reingenieria
Etapas Para Aplicar La ReingenieriaEtapas Para Aplicar La Reingenieria
Etapas Para Aplicar La Reingenieria
 
Reingeniería De Proceso
Reingeniería De ProcesoReingeniería De Proceso
Reingeniería De Proceso
 
Teoria de la reingenieria
Teoria de la reingenieriaTeoria de la reingenieria
Teoria de la reingenieria
 
Ferrandez jfk2011
Ferrandez jfk2011Ferrandez jfk2011
Ferrandez jfk2011
 
Krds - Etude De Cas News Quiz France24
Krds - Etude De Cas News Quiz France24Krds - Etude De Cas News Quiz France24
Krds - Etude De Cas News Quiz France24
 
Instrucciones montaje mesa de ping pong cornilleau competition 610
Instrucciones montaje mesa de ping pong cornilleau competition 610Instrucciones montaje mesa de ping pong cornilleau competition 610
Instrucciones montaje mesa de ping pong cornilleau competition 610
 
Presentacion presencia redes sociales updated liz noviembre 2010
Presentacion presencia redes sociales updated liz noviembre 2010Presentacion presencia redes sociales updated liz noviembre 2010
Presentacion presencia redes sociales updated liz noviembre 2010
 
Usages d’Internet et pratiques culturelles. Le cas du Grand-Duché de Luxembo...
Usages d’Internet et pratiques culturelles. Le cas du Grand-Duché de Luxembo...Usages d’Internet et pratiques culturelles. Le cas du Grand-Duché de Luxembo...
Usages d’Internet et pratiques culturelles. Le cas du Grand-Duché de Luxembo...
 
Duysens jfk2011
Duysens jfk2011Duysens jfk2011
Duysens jfk2011
 
Pourquoi les consommateurs recommandent-ils leur opérateur mobile ? Évidence ...
Pourquoi les consommateurs recommandent-ils leur opérateur mobile ?Évidence ...Pourquoi les consommateurs recommandent-ils leur opérateur mobile ?Évidence ...
Pourquoi les consommateurs recommandent-ils leur opérateur mobile ? Évidence ...
 
Despertar interior y el perdon
Despertar interior y el perdonDespertar interior y el perdon
Despertar interior y el perdon
 
permenent tissue
permenent tissuepermenent tissue
permenent tissue
 
INICIATIVAS Y REALIDADES DE LA EDUCACIÓN A DISTANCIA EN LA INGENIERÍA ELECTRÓ...
INICIATIVAS Y REALIDADES DE LA EDUCACIÓN A DISTANCIA EN LA INGENIERÍA ELECTRÓ...INICIATIVAS Y REALIDADES DE LA EDUCACIÓN A DISTANCIA EN LA INGENIERÍA ELECTRÓ...
INICIATIVAS Y REALIDADES DE LA EDUCACIÓN A DISTANCIA EN LA INGENIERÍA ELECTRÓ...
 
Presentacion open source 2010
Presentacion open source 2010Presentacion open source 2010
Presentacion open source 2010
 

Semelhante a Swreng

Refactorización de Aplicaciones Orientadas a Objetos a Aspectos
Refactorización de Aplicaciones Orientadas a Objetos a AspectosRefactorización de Aplicaciones Orientadas a Objetos a Aspectos
Refactorización de Aplicaciones Orientadas a Objetos a AspectosJuan Carlos Olivares Rojas
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 
02 -introduccion_a_la_tecnologia_orientada_a_objetos
02  -introduccion_a_la_tecnologia_orientada_a_objetos02  -introduccion_a_la_tecnologia_orientada_a_objetos
02 -introduccion_a_la_tecnologia_orientada_a_objetoskarlalopezbello
 
Programación extrema (xp)
Programación extrema (xp)Programación extrema (xp)
Programación extrema (xp)Juan Avendaño
 
Metodologias De Analisis Y Diseño De Sistemas
Metodologias De Analisis Y Diseño De SistemasMetodologias De Analisis Y Diseño De Sistemas
Metodologias De Analisis Y Diseño De Sistemasgrupo7inf162
 
Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudEliud Cortes
 
Rup vs. xp
Rup vs. xpRup vs. xp
Rup vs. xpjhon
 
Rup vs. xp
Rup vs. xpRup vs. xp
Rup vs. xpljds
 
Comparación de dos Metodologias
Comparación de dos MetodologiasComparación de dos Metodologias
Comparación de dos Metodologiaszonajava
 
Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Lis Pater
 
Reingeniería
Reingeniería Reingeniería
Reingeniería one_ramos
 
Mejores formas de aprender a programar
Mejores formas de aprender a programarMejores formas de aprender a programar
Mejores formas de aprender a programarEduardo Enriquez
 

Semelhante a Swreng (20)

Esto es ingeniería inversa
Esto es ingeniería inversaEsto es ingeniería inversa
Esto es ingeniería inversa
 
Refactorización de Aplicaciones Orientadas a Objetos a Aspectos
Refactorización de Aplicaciones Orientadas a Objetos a AspectosRefactorización de Aplicaciones Orientadas a Objetos a Aspectos
Refactorización de Aplicaciones Orientadas a Objetos a Aspectos
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
Capitulo 2
Capitulo 2Capitulo 2
Capitulo 2
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
02 -introduccion_a_la_tecnologia_orientada_a_objetos
02  -introduccion_a_la_tecnologia_orientada_a_objetos02  -introduccion_a_la_tecnologia_orientada_a_objetos
02 -introduccion_a_la_tecnologia_orientada_a_objetos
 
Programación extrema (xp)
Programación extrema (xp)Programación extrema (xp)
Programación extrema (xp)
 
Metodologias De Analisis Y Diseño De Sistemas
Metodologias De Analisis Y Diseño De SistemasMetodologias De Analisis Y Diseño De Sistemas
Metodologias De Analisis Y Diseño De Sistemas
 
Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliud
 
Rup vs. xp
Rup vs. xpRup vs. xp
Rup vs. xp
 
Rup vs. xp
Rup vs. xpRup vs. xp
Rup vs. xp
 
Rup vs. xp
Rup vs. xpRup vs. xp
Rup vs. xp
 
Comparación de dos Metodologias
Comparación de dos MetodologiasComparación de dos Metodologias
Comparación de dos Metodologias
 
Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema
 
LÍNEAS DE PRODUCTOS DE SOFTWARE
LÍNEAS DE PRODUCTOS DE SOFTWARELÍNEAS DE PRODUCTOS DE SOFTWARE
LÍNEAS DE PRODUCTOS DE SOFTWARE
 
Reingeniería
Reingeniería Reingeniería
Reingeniería
 
Reingeniería
Reingeniería Reingeniería
Reingeniería
 
Modelos de Desarrollo de Software - INF162 - 2017
Modelos de Desarrollo de Software - INF162 - 2017Modelos de Desarrollo de Software - INF162 - 2017
Modelos de Desarrollo de Software - INF162 - 2017
 
Material trainer-depc-v1-parte2
Material trainer-depc-v1-parte2Material trainer-depc-v1-parte2
Material trainer-depc-v1-parte2
 
Mejores formas de aprender a programar
Mejores formas de aprender a programarMejores formas de aprender a programar
Mejores formas de aprender a programar
 

Mais de Juan Carlos Olivares Rojas

Analítica de Datos usando Single Board Computers
Analítica de Datos usando Single Board ComputersAnalítica de Datos usando Single Board Computers
Analítica de Datos usando Single Board ComputersJuan Carlos Olivares Rojas
 
Analitica de Datos en Dispositivos de Internet de las Cosas
Analitica de Datos en Dispositivos de Internet de las CosasAnalitica de Datos en Dispositivos de Internet de las Cosas
Analitica de Datos en Dispositivos de Internet de las CosasJuan Carlos Olivares Rojas
 
A Comparative Assessment of Cryptography Algorithms for Data Analytic Applica...
A Comparative Assessment of Cryptography Algorithms for Data Analytic Applica...A Comparative Assessment of Cryptography Algorithms for Data Analytic Applica...
A Comparative Assessment of Cryptography Algorithms for Data Analytic Applica...Juan Carlos Olivares Rojas
 
Propuesta de Flexibilidad Curricular en el Tecnológico Nacional de México
Propuesta de Flexibilidad Curricular en el Tecnológico Nacional de MéxicoPropuesta de Flexibilidad Curricular en el Tecnológico Nacional de México
Propuesta de Flexibilidad Curricular en el Tecnológico Nacional de MéxicoJuan Carlos Olivares Rojas
 
Analítica de Datos en Simulador de Redes para Sistemas de Medición Inteligente
Analítica de Datos en Simulador de Redes para Sistemas de Medición InteligenteAnalítica de Datos en Simulador de Redes para Sistemas de Medición Inteligente
Analítica de Datos en Simulador de Redes para Sistemas de Medición InteligenteJuan Carlos Olivares Rojas
 
Propuesta de Mercado Eléctrico Minorista Transactivo en México
Propuesta de Mercado Eléctrico Minorista Transactivo en MéxicoPropuesta de Mercado Eléctrico Minorista Transactivo en México
Propuesta de Mercado Eléctrico Minorista Transactivo en MéxicoJuan Carlos Olivares Rojas
 
Cyber Security on Transactions in Smart Metering Systems usign Blockchain
Cyber Security on Transactions in Smart Metering Systems usign BlockchainCyber Security on Transactions in Smart Metering Systems usign Blockchain
Cyber Security on Transactions in Smart Metering Systems usign BlockchainJuan Carlos Olivares Rojas
 
A Survey on Smart Metering Systems using Blockchain for E-mobility
A Survey on Smart Metering Systems using Blockchain for E-mobilityA Survey on Smart Metering Systems using Blockchain for E-mobility
A Survey on Smart Metering Systems using Blockchain for E-mobilityJuan Carlos Olivares Rojas
 
Detección de Movimiento usando Medidores Inteligentes
Detección de Movimiento usando Medidores Inteligentes Detección de Movimiento usando Medidores Inteligentes
Detección de Movimiento usando Medidores Inteligentes Juan Carlos Olivares Rojas
 
A Survey on Smart Metering Systems using Human-Computer Interaction
A Survey on Smart Metering Systems using Human-Computer InteractionA Survey on Smart Metering Systems using Human-Computer Interaction
A Survey on Smart Metering Systems using Human-Computer InteractionJuan Carlos Olivares Rojas
 
Machine Learnign Model for the Detection of Electricity Energy Fraud Using an...
Machine Learnign Model for the Detection of Electricity Energy Fraud Using an...Machine Learnign Model for the Detection of Electricity Energy Fraud Using an...
Machine Learnign Model for the Detection of Electricity Energy Fraud Using an...Juan Carlos Olivares Rojas
 
Forecasting Electricity Consumption Using Weather Data in Edge-Fog-Cloud Data...
Forecasting Electricity Consumption Using Weather Data in Edge-Fog-Cloud Data...Forecasting Electricity Consumption Using Weather Data in Edge-Fog-Cloud Data...
Forecasting Electricity Consumption Using Weather Data in Edge-Fog-Cloud Data...Juan Carlos Olivares Rojas
 
Aplicacion de Tecnicas de UX en el Desarrollo de un Portal de un Sistema de M...
Aplicacion de Tecnicas de UX en el Desarrollo de un Portal de un Sistema de M...Aplicacion de Tecnicas de UX en el Desarrollo de un Portal de un Sistema de M...
Aplicacion de Tecnicas de UX en el Desarrollo de un Portal de un Sistema de M...Juan Carlos Olivares Rojas
 
Internet de las Cosas en Redes Eléctricas Inteligentes
Internet de las Cosas en Redes Eléctricas InteligentesInternet de las Cosas en Redes Eléctricas Inteligentes
Internet de las Cosas en Redes Eléctricas InteligentesJuan Carlos Olivares Rojas
 
Optimización de la Eficiencia Energética en los Hogares utilizando una Arquit...
Optimización de la Eficiencia Energética en los Hogares utilizando una Arquit...Optimización de la Eficiencia Energética en los Hogares utilizando una Arquit...
Optimización de la Eficiencia Energética en los Hogares utilizando una Arquit...Juan Carlos Olivares Rojas
 
Ciber Seguridad en Redes Eléctricas Inteligentes
Ciber Seguridad en Redes Eléctricas InteligentesCiber Seguridad en Redes Eléctricas Inteligentes
Ciber Seguridad en Redes Eléctricas InteligentesJuan Carlos Olivares Rojas
 
Estudio de Vulnerabilidad de Protocolos y Redes de Comunicación para Medidore...
Estudio de Vulnerabilidad de Protocolos y Redes de Comunicación para Medidore...Estudio de Vulnerabilidad de Protocolos y Redes de Comunicación para Medidore...
Estudio de Vulnerabilidad de Protocolos y Redes de Comunicación para Medidore...Juan Carlos Olivares Rojas
 

Mais de Juan Carlos Olivares Rojas (20)

Ieee itmsb20
Ieee itmsb20Ieee itmsb20
Ieee itmsb20
 
Ropec20neural stick
Ropec20neural stickRopec20neural stick
Ropec20neural stick
 
Analítica de Datos usando Single Board Computers
Analítica de Datos usando Single Board ComputersAnalítica de Datos usando Single Board Computers
Analítica de Datos usando Single Board Computers
 
Analitica de Datos en Dispositivos de Internet de las Cosas
Analitica de Datos en Dispositivos de Internet de las CosasAnalitica de Datos en Dispositivos de Internet de las Cosas
Analitica de Datos en Dispositivos de Internet de las Cosas
 
A Comparative Assessment of Cryptography Algorithms for Data Analytic Applica...
A Comparative Assessment of Cryptography Algorithms for Data Analytic Applica...A Comparative Assessment of Cryptography Algorithms for Data Analytic Applica...
A Comparative Assessment of Cryptography Algorithms for Data Analytic Applica...
 
Propuesta de Flexibilidad Curricular en el Tecnológico Nacional de México
Propuesta de Flexibilidad Curricular en el Tecnológico Nacional de MéxicoPropuesta de Flexibilidad Curricular en el Tecnológico Nacional de México
Propuesta de Flexibilidad Curricular en el Tecnológico Nacional de México
 
Analítica de Datos en Simulador de Redes para Sistemas de Medición Inteligente
Analítica de Datos en Simulador de Redes para Sistemas de Medición InteligenteAnalítica de Datos en Simulador de Redes para Sistemas de Medición Inteligente
Analítica de Datos en Simulador de Redes para Sistemas de Medición Inteligente
 
Propuesta de Mercado Eléctrico Minorista Transactivo en México
Propuesta de Mercado Eléctrico Minorista Transactivo en MéxicoPropuesta de Mercado Eléctrico Minorista Transactivo en México
Propuesta de Mercado Eléctrico Minorista Transactivo en México
 
Cyber Security on Transactions in Smart Metering Systems usign Blockchain
Cyber Security on Transactions in Smart Metering Systems usign BlockchainCyber Security on Transactions in Smart Metering Systems usign Blockchain
Cyber Security on Transactions in Smart Metering Systems usign Blockchain
 
A Survey on Smart Metering Systems using Blockchain for E-mobility
A Survey on Smart Metering Systems using Blockchain for E-mobilityA Survey on Smart Metering Systems using Blockchain for E-mobility
A Survey on Smart Metering Systems using Blockchain for E-mobility
 
Detección de Movimiento usando Medidores Inteligentes
Detección de Movimiento usando Medidores Inteligentes Detección de Movimiento usando Medidores Inteligentes
Detección de Movimiento usando Medidores Inteligentes
 
A Survey on Smart Metering Systems using Human-Computer Interaction
A Survey on Smart Metering Systems using Human-Computer InteractionA Survey on Smart Metering Systems using Human-Computer Interaction
A Survey on Smart Metering Systems using Human-Computer Interaction
 
Machine Learnign Model for the Detection of Electricity Energy Fraud Using an...
Machine Learnign Model for the Detection of Electricity Energy Fraud Using an...Machine Learnign Model for the Detection of Electricity Energy Fraud Using an...
Machine Learnign Model for the Detection of Electricity Energy Fraud Using an...
 
Forecasting Electricity Consumption Using Weather Data in Edge-Fog-Cloud Data...
Forecasting Electricity Consumption Using Weather Data in Edge-Fog-Cloud Data...Forecasting Electricity Consumption Using Weather Data in Edge-Fog-Cloud Data...
Forecasting Electricity Consumption Using Weather Data in Edge-Fog-Cloud Data...
 
Aplicacion de Tecnicas de UX en el Desarrollo de un Portal de un Sistema de M...
Aplicacion de Tecnicas de UX en el Desarrollo de un Portal de un Sistema de M...Aplicacion de Tecnicas de UX en el Desarrollo de un Portal de un Sistema de M...
Aplicacion de Tecnicas de UX en el Desarrollo de un Portal de un Sistema de M...
 
Internet de las Cosas en Redes Eléctricas Inteligentes
Internet de las Cosas en Redes Eléctricas InteligentesInternet de las Cosas en Redes Eléctricas Inteligentes
Internet de las Cosas en Redes Eléctricas Inteligentes
 
Estrategias didacticas
Estrategias didacticasEstrategias didacticas
Estrategias didacticas
 
Optimización de la Eficiencia Energética en los Hogares utilizando una Arquit...
Optimización de la Eficiencia Energética en los Hogares utilizando una Arquit...Optimización de la Eficiencia Energética en los Hogares utilizando una Arquit...
Optimización de la Eficiencia Energética en los Hogares utilizando una Arquit...
 
Ciber Seguridad en Redes Eléctricas Inteligentes
Ciber Seguridad en Redes Eléctricas InteligentesCiber Seguridad en Redes Eléctricas Inteligentes
Ciber Seguridad en Redes Eléctricas Inteligentes
 
Estudio de Vulnerabilidad de Protocolos y Redes de Comunicación para Medidore...
Estudio de Vulnerabilidad de Protocolos y Redes de Comunicación para Medidore...Estudio de Vulnerabilidad de Protocolos y Redes de Comunicación para Medidore...
Estudio de Vulnerabilidad de Protocolos y Redes de Comunicación para Medidore...
 

Swreng

  • 1. Reingeniería del Software M.C. Juan Carlos Olivares Rojas CECyTEM, Morelia, Junio 2010
  • 2. 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
  • 3. • ¿Si su software fuera un edificio, se parecería mas a uno de la izquierda o de la derecha? Reingeniería del Software
  • 5. • 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
  • 6. • 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
  • 8. • 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
  • 10. • 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
  • 13. • 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
  • 14. • 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
  • 15. • Es correcto el siguiente modelo • ¿Se puede mejorar?¿cómo? Ejemplo de Refactoring
  • 16. • 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
  • 17. ¿Qué hay de malo en esto?
  • 20. • Algunas ideas sobre que reestructura Bad Smells BAD 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 OBJETO MÉTODO CLASES GRANDES EXTRAER CLASES EXTRAER SUBCLASES CARACTERÍSTICA DE LA “ENVIDIA” MOVER MÉTODO CLASES “PEREZOSAS” COLAPSAR JERARQUÍAS
  • 21. • 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
  • 22. • 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
  • 24. • 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
  • 25. • 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
  • 27. • 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
  • 28. • 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
  • 29. • 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
  • 30. 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
  • 31. Dudas
  • 32. • Departamento de Sistemas y Computación • Edificio I, Inst. Tec. De Morelia • jcolivar@itmorelia.edu.mx • http://antares.itmorelia.edu.mx/~jcolivar • MSN: juancarlosolivares@hotmail.com • Skype: juancarlosolivares • Twitter: @jcolivares • Facebook: Juan Carlos Olivares Rojas Datos de Contacto

Notas do Editor

  1. Si se llega a modificar su comportamiento externo formalmente no se le considera “refactorización” sino más bien una modificación.