SlideShare une entreprise Scribd logo
1  sur  50
Estudio sobre Refactoring de
Aplicaciones con Paradigma
Orientado a Objetos hacia
Paradigma Orientado a Aspectos
M.C. Juan Carlos Olivares Rojas
UMSNH, FIE, Morelia, Mayo 2010
• Marco Teórico
• Resultados Obtenidos
• Conclusiones/Trabajos Futuros
Agenda
Planteamiento del Problema
Planteamiento del Problema
• Un tipo de refactoring aplicado con mucha frecuencia
consiste en migrar aplicaciones desarrolladas en un
paradigma de programación hacia otro.
• En el Instituto Tecnológico de Morelia se imparte dentro
de la especialidad de Ingeniería de software la materia de
“Reestructuración de Códigos” [Refactoring].
Planteamiento del Problema
• En dicha materia se pretende que el alumno aplique
mejores prácticas en la codificación así como tratar nuevas
metodologías y paradigmas de programación.
• El objetivo de este trabajo es ver en que grado las
aplicaciones orientadas a objetos pueden mejorarse a través
del uso del paradigma orientado a objetos. En una
primera instancia se ha aplicado a programas “escolares”.
• Planteamiento del Problema
• Resultados Obtenidos
• Conclusiones/Trabajos Futuros
Agenda
Marco Teórico
• ¿Si su software fuera un edificio, se parecería mas a uno de
la izquierda o de la derecha?
Refactoring
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
La gran foto
• 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]
Definición
• 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
• Análisis de Inventario
• Reestructuración de Documentos
• Ingeniería Inversa
• Reestructuración de Códigos
• Reestructuración de Datos
• Ingeniería directa
Reingeniería
• Aplicaciones como el edificio de la derecha padecen de
malas prácticas en el desarrollo de software como:
• “Código mutante”
• “Diseño roto”
• El código es antiguo y muy grande
• Falta de planeación y documentación
• ¿El softwre sufre degeneración?
• Sí
Uso de Refactoring
• 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
• 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
• Par Problema-Solución. Mejores prácticas.
• Patrón Singletón
• Problema: se admite exactamente una instancia de una
clase. Los objetos necesitan un único punto de acceso
global.
• Solución: Defina un método estático de la clase que
devuelva el Singleton
Patrón de Diseño
Singleton
public class Singleton {
private static Singleton INSTANCE = null;
private Singleton() {}
private synchronized static void
createInstance() {
if (INSTANCE == null){
INSTANCE = new Singleton();
}
}
Singleton
Patrón de Diseño de un Menú
¿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
Patrón MVC
Aspectos
• AOP fue creado por Gregor Kickzales en Palo Alto
Research Center en 1996.
• “An Aspect is a modular unit that is spreand in another
functional units. The aspects exist in the design stage as in
the implementación stage…”
• Un aspecto es un ladrillo de software tal como en su
momento fueron las subrutinas, objetos, servicios, etc.
Aspectos
• Encapsulan ”cross-cutting concern”
• Promueven la separación de elementos entre mezclados
para el reuso.
• En general los objetos permiten el reuso con mecanismos
como la herencia. El detalle es que se da un todo o nada.
Si una clase sólo ocupa una funcionalidad de otra clase
tendría que heredar todo.
Problema del POO
Estructura de un Programa
Comiplación de Aspectos
...
Lenguaje
base
Lenguaje de
aspectos 1
Lenguaje de
aspectos N...
TEJEDOR (WEAVER)
EJECUTABLE
PROGRAMA DE
ASPECTOS N
PROGRAMA DE
ASPECTOS 1
PROGRAMA DE
COMPONENTES
Ejemplo
class Book {
…..
<all things about book>
<error handling>
…
}
class Partner {
…..
<all things about Partner>
<error handling>
<access controlling>
}
class Rent {…..
<all things about Rent>
<error handling>
<access controlling>
}
class BookStore {
private Book [] books ;
private Partner [] partners;
public BookStore() {
…
public void load( Partner p, Book b) {
if validControlAccess() then{
// code of the method
}
else{
throwException();
}
}
public void addPartner(Partner p){
if validContolAccess() then{
// code of the method
}
else{
throwException();
}
}
// the rest of the class methods
}
Access ControlAccess Control
Ejemplo
Definición de Aspectos
Aspect Control {
JoinPoint
securityOperations = call s BookStore.loan &
calls BookStore.addPartner& ...
Before securityOperations: {
if !=(validControlAcces()) then{
throwsExcepcion();
}
}
Herramientas
• Lenguajes para porgramar aspectos
• AspectJ
• AspectC++
• AspectS
• CAESAR.
• Weave.NET
• AspectC
Hello World con Aspectos
package mx.edu.itmorelia.aspects;
public class HW {
private String message;
public HW() {
this.message = “Hello World";
}
public void setMessge(String M){
this.menssage = M;
}
public String getMessage(){
return this.message;
}
public void showMessage(){
System.out.println(this.message);
}
}
package mx.edu.itmorelia.aspects;
public class HelloWorld {
public static void main(String[] args) {
HW H;
H= new HW();
H.showMenssage();
}
}
Hello World con Aspectos
package mx.edu.itmorelia.aspects;
public aspect Aspect {
pointcut messagesToPrint() : call (void
HW.showMessage());
before(): messagesToPrint(){
System.out.println(“Hi everybody!");
}
after(): messagesToPrint(){
System.out.println(“Chao everybody!");
} }
Hello World con Aspects
37
Tipos de Advices
• ¿Qué hace el siguiente código?
• pointcut setXY(FigureElement fe, int x, int y):
call(void FigureElement.setXY(int, int))
&& target(fe)
&& args(x, y);
• after(FigureElement fe, int x, int y) returning: setXY(fe, x, y) {
System.out.println(fe + " moved to (" + x + ", " + y + ").");
}
Problema a Resolver
HistoryUpdating
Display
*
2Point
getX()
getY()
setX(int)
setY(int)
moveBy(int, int)
Line
getP1()
getP2()
setP1(Point)
setP2(Point)
moveBy(int, int)
Figure
makePoint(..)
makeLine(..)
FigureElement
moveBy(int, int)
• ¿Qué otros aspectos encontramos?
Interfaz vs Clase Abstracta
Identificación de Aspectos
Uso de Tarjetas CRC
• Planteamiento del Problema
• Resultados Obtenidos
• Conclusiones/Trabajos Futuros
Agenda
Marco Teórico
• Planteamiento del Problema
• Marco Teórico
• Conclusiones/Trabajos Futuros
Agenda
Resultados Obtenidos
Resultados
• Se escogió una muestra de 17 alumnos cada uno de ellos
con 5 programas de por lo menos 250 LOC (85
programas en total) diferentes.
• Sólo 14 programas rebasaron la barrera de los 1,000
LOC.
• Se observó que 31 programas como tal no tenían manejo
de aspectos pero que podrían ser aspectizables con nuevos
comportamientos.
Resultados
• De los 54 programas aspectizables se encontraron que 47
manejaban logging, 29 manejo de errores, 22 manejo de
sesiones, 15 persistencia.
• Aspectos como manejo de memoria y seguridad fueron
poco manejados 4 y 2.
• La identificación de aspectos no fue realmente difícil pero sí
su conversión ya que en promedio por cada aspecto se
invirtieron en promedio 1:55 por cada aspecto encontrado.
• Planteamiento del Problema
• Marco Teórico
• Resultados Obtenidos
Agenda
Conclusiones/Trabajos Futuros
Conclusiones
• Realmente nuestras aplicaciones están mal diseñadas. Se
utiliza POO pero sin sus ventajas.
• Los aspectos no son realmente algo nuevo bajo el sol y
para cuestiones repetitivas pueden ayudar bastante.
• Los aspectos sólo sirven para determinado tipos de
elementos entre cruzados.
Trabajo Futuro
• Realización de un estudio amplio de aplicaciones a nivel
profesional. Ya que a nivel estudiantil son aplicaciones
muy controladas.
• Determinar tiempos promedios de análisis y de refactoring
hacia aspectos de cada aplicación.
• Hasta el momento sólo empresas grandes manejan
aspectos en proyectos
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
• Sanchez, M., (2009), Material del Curso de
Reestructuración de Códigos, Instituto Tecnológico de
Morelia.
• Vidal S., et al. (2009), Santiago Proceso Iterativo para
la Refactorización de Aspectos, Cuarto Congreso
Colombiano de Computación 2009
• Mejía, P. (2008), Programación
Orientada a Aspectos, CINVESTAV,
México.
Referencias
Dudas

Contenu connexe

Tendances

Diseno de la Interfaz de Usuario
Diseno de la Interfaz de UsuarioDiseno de la Interfaz de Usuario
Diseno de la Interfaz de UsuarioUTPL
 
Modelos de Procesos del Software
Modelos de Procesos del SoftwareModelos de Procesos del Software
Modelos de Procesos del SoftwareJaneth Jimenez
 
Formación 'user stories' biko - mayo 2011
Formación 'user stories'   biko - mayo 2011Formación 'user stories'   biko - mayo 2011
Formación 'user stories' biko - mayo 2011Jose Ramón Díaz
 
Node.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontendsNode.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontendsEugene Fidelin
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to MicroservicesMahmoudZidan41
 
Modelos de proceso de desarrollo de software
Modelos de proceso de desarrollo de softwareModelos de proceso de desarrollo de software
Modelos de proceso de desarrollo de softwareUriel Ramos
 
Software requirement and specification
Software requirement and specificationSoftware requirement and specification
Software requirement and specificationAman Adhikari
 
Software Maintenance and Evolution
Software Maintenance and EvolutionSoftware Maintenance and Evolution
Software Maintenance and Evolutionkim.mens
 
Scrum trainer clase 7 y 8
Scrum trainer clase 7 y 8Scrum trainer clase 7 y 8
Scrum trainer clase 7 y 8S
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Elaine Cecília Gatto
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Softwaremarthahuback
 
Validación de Requerimientos
Validación de RequerimientosValidación de Requerimientos
Validación de RequerimientosUTPL UTPL
 
IW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería WebIW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería WebFranklin Parrales Bravo
 

Tendances (20)

Azure dev ops
Azure dev opsAzure dev ops
Azure dev ops
 
Diseno de la Interfaz de Usuario
Diseno de la Interfaz de UsuarioDiseno de la Interfaz de Usuario
Diseno de la Interfaz de Usuario
 
Modelos de Procesos del Software
Modelos de Procesos del SoftwareModelos de Procesos del Software
Modelos de Procesos del Software
 
Formación 'user stories' biko - mayo 2011
Formación 'user stories'   biko - mayo 2011Formación 'user stories'   biko - mayo 2011
Formación 'user stories' biko - mayo 2011
 
Node.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontendsNode.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontends
 
¿Que son los microservicios?
¿Que son los microservicios?¿Que son los microservicios?
¿Que son los microservicios?
 
The Waterfall Model
The Waterfall ModelThe Waterfall Model
The Waterfall Model
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Modelos de proceso de desarrollo de software
Modelos de proceso de desarrollo de softwareModelos de proceso de desarrollo de software
Modelos de proceso de desarrollo de software
 
Software requirement and specification
Software requirement and specificationSoftware requirement and specification
Software requirement and specification
 
Software Maintenance and Evolution
Software Maintenance and EvolutionSoftware Maintenance and Evolution
Software Maintenance and Evolution
 
Scrum trainer clase 7 y 8
Scrum trainer clase 7 y 8Scrum trainer clase 7 y 8
Scrum trainer clase 7 y 8
 
Microservicios
MicroserviciosMicroservicios
Microservicios
 
DevOps for beginners
DevOps for beginnersDevOps for beginners
DevOps for beginners
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1
 
Azure DevOps Complete CI/CD Pipeline
Azure DevOps Complete CI/CD PipelineAzure DevOps Complete CI/CD Pipeline
Azure DevOps Complete CI/CD Pipeline
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Software
 
Tdd and bdd
Tdd and bddTdd and bdd
Tdd and bdd
 
Validación de Requerimientos
Validación de RequerimientosValidación de Requerimientos
Validación de Requerimientos
 
IW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería WebIW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería Web
 

En vedette

Presentación tesis
Presentación tesisPresentación tesis
Presentación tesiseducant
 
E- Marketing y Comercio Electrónico
E- Marketing y Comercio ElectrónicoE- Marketing y Comercio Electrónico
E- Marketing y Comercio Electrónicomayitas24
 
Presentacionemarketing
PresentacionemarketingPresentacionemarketing
Presentacionemarketingmayitas24
 
Pandoraaa
PandoraaaPandoraaa
PandoraaaNolita
 
Video Players Ergonomie Effects
Video Players Ergonomie EffectsVideo Players Ergonomie Effects
Video Players Ergonomie Effectstest test
 
Svn git-gestion-de-version
Svn git-gestion-de-versionSvn git-gestion-de-version
Svn git-gestion-de-versionzaghir
 
08 le-boeuf-reproducteur
08 le-boeuf-reproducteur08 le-boeuf-reproducteur
08 le-boeuf-reproducteurlyago
 
Inserir objectes al blog
Inserir objectes al blogInserir objectes al blog
Inserir objectes al blogTeresa Torné
 
Lettreduneblonde
LettreduneblondeLettreduneblonde
Lettreduneblondelyago
 
Jeunesse, pratiques et territoire : réflexions à partir des cahiers de l'acti...
Jeunesse, pratiques et territoire : réflexions à partir des cahiers de l'acti...Jeunesse, pratiques et territoire : réflexions à partir des cahiers de l'acti...
Jeunesse, pratiques et territoire : réflexions à partir des cahiers de l'acti...Nathalie Caclard
 
Le fédéralisme fiscal et le système de péréquation au Canada : Des leçons pou...
Le fédéralisme fiscal et le système de péréquation au Canada : Des leçons pou...Le fédéralisme fiscal et le système de péréquation au Canada : Des leçons pou...
Le fédéralisme fiscal et le système de péréquation au Canada : Des leçons pou...David Péloquin
 
Trésors gastronomiques - France
Trésors gastronomiques - FranceTrésors gastronomiques - France
Trésors gastronomiques - Francecomenius-monistrol
 
La vida es dura
La vida es duraLa vida es dura
La vida es duradjcani
 
Présentation Programme ID
Présentation Programme IDPrésentation Programme ID
Présentation Programme IDMélanie Ciussi
 
Clase 2 estructura electronica
Clase 2 estructura electronicaClase 2 estructura electronica
Clase 2 estructura electronicajorge garcia
 

En vedette (20)

Presentación tesis
Presentación tesisPresentación tesis
Presentación tesis
 
Journée ADBS Web 2.0 Angers
Journée ADBS Web 2.0 AngersJournée ADBS Web 2.0 Angers
Journée ADBS Web 2.0 Angers
 
E- Marketing y Comercio Electrónico
E- Marketing y Comercio ElectrónicoE- Marketing y Comercio Electrónico
E- Marketing y Comercio Electrónico
 
Presentacionemarketing
PresentacionemarketingPresentacionemarketing
Presentacionemarketing
 
Pandoraaa
PandoraaaPandoraaa
Pandoraaa
 
Video Players Ergonomie Effects
Video Players Ergonomie EffectsVideo Players Ergonomie Effects
Video Players Ergonomie Effects
 
Svn git-gestion-de-version
Svn git-gestion-de-versionSvn git-gestion-de-version
Svn git-gestion-de-version
 
Fascination
FascinationFascination
Fascination
 
08 le-boeuf-reproducteur
08 le-boeuf-reproducteur08 le-boeuf-reproducteur
08 le-boeuf-reproducteur
 
Inserir objectes al blog
Inserir objectes al blogInserir objectes al blog
Inserir objectes al blog
 
Rapport stage
Rapport stageRapport stage
Rapport stage
 
Lettreduneblonde
LettreduneblondeLettreduneblonde
Lettreduneblonde
 
Jeunesse, pratiques et territoire : réflexions à partir des cahiers de l'acti...
Jeunesse, pratiques et territoire : réflexions à partir des cahiers de l'acti...Jeunesse, pratiques et territoire : réflexions à partir des cahiers de l'acti...
Jeunesse, pratiques et territoire : réflexions à partir des cahiers de l'acti...
 
Le fédéralisme fiscal et le système de péréquation au Canada : Des leçons pou...
Le fédéralisme fiscal et le système de péréquation au Canada : Des leçons pou...Le fédéralisme fiscal et le système de péréquation au Canada : Des leçons pou...
Le fédéralisme fiscal et le système de péréquation au Canada : Des leçons pou...
 
Trésors gastronomiques - France
Trésors gastronomiques - FranceTrésors gastronomiques - France
Trésors gastronomiques - France
 
prueba
pruebaprueba
prueba
 
La vida es dura
La vida es duraLa vida es dura
La vida es dura
 
Présentation Programme ID
Présentation Programme IDPrésentation Programme ID
Présentation Programme ID
 
Clase 2 estructura electronica
Clase 2 estructura electronicaClase 2 estructura electronica
Clase 2 estructura electronica
 
recommendation letters
recommendation lettersrecommendation letters
recommendation letters
 

Similaire à Refactorización de Aplicaciones Orientadas a Objetos a Aspectos

Modelos del ciclo de vida del software
Modelos del ciclo de vida del softwareModelos del ciclo de vida del software
Modelos del ciclo de vida del softwareAbner Torres
 
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
 
Lp II clase01 - Desarrollo de software con RUP
Lp II   clase01 - Desarrollo de software con RUPLp II   clase01 - Desarrollo de software con RUP
Lp II clase01 - Desarrollo de software con RUPAngelDX
 
Calendarización de proyectos de software
Calendarización de proyectos de softwareCalendarización de proyectos de software
Calendarización de proyectos de softwareTensor
 
Calendarización de Proyectos de Software
Calendarización de Proyectos de SoftwareCalendarización de Proyectos de Software
Calendarización de Proyectos de SoftwareJavier Capa
 
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.pptELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.pptMarko Zapata
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaremat3matik
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryynelly
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16Ramon
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de softwareMarilupe
 
Ingen de software
Ingen de softwareIngen de software
Ingen de softwareerikapoh
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaresamantha
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software142918
 
Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3Marco Guerrero
 

Similaire à Refactorización de Aplicaciones Orientadas a Objetos a Aspectos (20)

Esto es ingeniería inversa
Esto es ingeniería inversaEsto es ingeniería inversa
Esto es ingeniería inversa
 
Swreng
SwrengSwreng
Swreng
 
Modelos del ciclo de vida del software
Modelos del ciclo de vida del softwareModelos del ciclo de vida del software
Modelos del ciclo de vida del software
 
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
 
Lp II clase01 - Desarrollo de software con RUP
Lp II   clase01 - Desarrollo de software con RUPLp II   clase01 - Desarrollo de software con RUP
Lp II clase01 - Desarrollo de software con RUP
 
Calendarización de proyectos de software
Calendarización de proyectos de softwareCalendarización de proyectos de software
Calendarización de proyectos de software
 
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
 
Calendarización de Proyectos de Software
Calendarización de Proyectos de SoftwareCalendarización de Proyectos de Software
Calendarización de Proyectos de Software
 
Clase 11
Clase 11Clase 11
Clase 11
 
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.pptELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
ELEMENTOS DE LA CONFIGURACION DE SOFTWARE.ppt
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryy
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de software
 
Ingen de software
Ingen de softwareIngen de software
Ingen de software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Clase 11
Clase 11Clase 11
Clase 11
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Rup
RupRup
Rup
 
Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3
 

Plus 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
 

Plus 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...
 

Refactorización de Aplicaciones Orientadas a Objetos a Aspectos

  • 1. Estudio sobre Refactoring de Aplicaciones con Paradigma Orientado a Objetos hacia Paradigma Orientado a Aspectos M.C. Juan Carlos Olivares Rojas UMSNH, FIE, Morelia, Mayo 2010
  • 2. • Marco Teórico • Resultados Obtenidos • Conclusiones/Trabajos Futuros Agenda Planteamiento del Problema
  • 3. Planteamiento del Problema • Un tipo de refactoring aplicado con mucha frecuencia consiste en migrar aplicaciones desarrolladas en un paradigma de programación hacia otro. • En el Instituto Tecnológico de Morelia se imparte dentro de la especialidad de Ingeniería de software la materia de “Reestructuración de Códigos” [Refactoring].
  • 4. Planteamiento del Problema • En dicha materia se pretende que el alumno aplique mejores prácticas en la codificación así como tratar nuevas metodologías y paradigmas de programación. • El objetivo de este trabajo es ver en que grado las aplicaciones orientadas a objetos pueden mejorarse a través del uso del paradigma orientado a objetos. En una primera instancia se ha aplicado a programas “escolares”.
  • 5. • Planteamiento del Problema • Resultados Obtenidos • Conclusiones/Trabajos Futuros Agenda Marco Teórico
  • 6. • ¿Si su software fuera un edificio, se parecería mas a uno de la izquierda o de la derecha? Refactoring
  • 7. 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
  • 9. • 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] Definición
  • 10. • 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
  • 11. • Análisis de Inventario • Reestructuración de Documentos • Ingeniería Inversa • Reestructuración de Códigos • Reestructuración de Datos • Ingeniería directa Reingeniería
  • 12. • Aplicaciones como el edificio de la derecha padecen de malas prácticas en el desarrollo de software como: • “Código mutante” • “Diseño roto” • El código es antiguo y muy grande • Falta de planeación y documentación • ¿El softwre sufre degeneración? • Sí Uso de Refactoring
  • 13. • Es correcto el siguiente modelo • ¿Se puede mejorar?¿cómo? Ejemplo de Refactoring
  • 14. • 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
  • 15. • 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
  • 16. • Par Problema-Solución. Mejores prácticas. • Patrón Singletón • Problema: se admite exactamente una instancia de una clase. Los objetos necesitan un único punto de acceso global. • Solución: Defina un método estático de la clase que devuelva el Singleton Patrón de Diseño
  • 18. public class Singleton { private static Singleton INSTANCE = null; private Singleton() {} private synchronized static void createInstance() { if (INSTANCE == null){ INSTANCE = new Singleton(); } } Singleton
  • 19. Patrón de Diseño de un Menú
  • 20. ¿Qué hay de malo en esto?
  • 23. • 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
  • 25. Aspectos • AOP fue creado por Gregor Kickzales en Palo Alto Research Center en 1996. • “An Aspect is a modular unit that is spreand in another functional units. The aspects exist in the design stage as in the implementación stage…” • Un aspecto es un ladrillo de software tal como en su momento fueron las subrutinas, objetos, servicios, etc.
  • 26. Aspectos • Encapsulan ”cross-cutting concern” • Promueven la separación de elementos entre mezclados para el reuso. • En general los objetos permiten el reuso con mecanismos como la herencia. El detalle es que se da un todo o nada. Si una clase sólo ocupa una funcionalidad de otra clase tendría que heredar todo.
  • 28. Estructura de un Programa
  • 29. Comiplación de Aspectos ... Lenguaje base Lenguaje de aspectos 1 Lenguaje de aspectos N... TEJEDOR (WEAVER) EJECUTABLE PROGRAMA DE ASPECTOS N PROGRAMA DE ASPECTOS 1 PROGRAMA DE COMPONENTES
  • 30. Ejemplo class Book { ….. <all things about book> <error handling> … } class Partner { ….. <all things about Partner> <error handling> <access controlling> } class Rent {….. <all things about Rent> <error handling> <access controlling> }
  • 31. class BookStore { private Book [] books ; private Partner [] partners; public BookStore() { … public void load( Partner p, Book b) { if validControlAccess() then{ // code of the method } else{ throwException(); } } public void addPartner(Partner p){ if validContolAccess() then{ // code of the method } else{ throwException(); } } // the rest of the class methods } Access ControlAccess Control Ejemplo
  • 32. Definición de Aspectos Aspect Control { JoinPoint securityOperations = call s BookStore.loan & calls BookStore.addPartner& ... Before securityOperations: { if !=(validControlAcces()) then{ throwsExcepcion(); } }
  • 33. Herramientas • Lenguajes para porgramar aspectos • AspectJ • AspectC++ • AspectS • CAESAR. • Weave.NET • AspectC
  • 34. Hello World con Aspectos package mx.edu.itmorelia.aspects; public class HW { private String message; public HW() { this.message = “Hello World"; } public void setMessge(String M){ this.menssage = M; } public String getMessage(){ return this.message; } public void showMessage(){ System.out.println(this.message); } }
  • 35. package mx.edu.itmorelia.aspects; public class HelloWorld { public static void main(String[] args) { HW H; H= new HW(); H.showMenssage(); } } Hello World con Aspectos
  • 36. package mx.edu.itmorelia.aspects; public aspect Aspect { pointcut messagesToPrint() : call (void HW.showMessage()); before(): messagesToPrint(){ System.out.println(“Hi everybody!"); } after(): messagesToPrint(){ System.out.println(“Chao everybody!"); } } Hello World con Aspects
  • 37. 37 Tipos de Advices • ¿Qué hace el siguiente código? • pointcut setXY(FigureElement fe, int x, int y): call(void FigureElement.setXY(int, int)) && target(fe) && args(x, y); • after(FigureElement fe, int x, int y) returning: setXY(fe, x, y) { System.out.println(fe + " moved to (" + x + ", " + y + ")."); }
  • 38. Problema a Resolver HistoryUpdating Display * 2Point getX() getY() setX(int) setY(int) moveBy(int, int) Line getP1() getP2() setP1(Point) setP2(Point) moveBy(int, int) Figure makePoint(..) makeLine(..) FigureElement moveBy(int, int)
  • 39. • ¿Qué otros aspectos encontramos? Interfaz vs Clase Abstracta
  • 41. • Planteamiento del Problema • Resultados Obtenidos • Conclusiones/Trabajos Futuros Agenda Marco Teórico
  • 42. • Planteamiento del Problema • Marco Teórico • Conclusiones/Trabajos Futuros Agenda Resultados Obtenidos
  • 43. Resultados • Se escogió una muestra de 17 alumnos cada uno de ellos con 5 programas de por lo menos 250 LOC (85 programas en total) diferentes. • Sólo 14 programas rebasaron la barrera de los 1,000 LOC. • Se observó que 31 programas como tal no tenían manejo de aspectos pero que podrían ser aspectizables con nuevos comportamientos.
  • 44. Resultados • De los 54 programas aspectizables se encontraron que 47 manejaban logging, 29 manejo de errores, 22 manejo de sesiones, 15 persistencia. • Aspectos como manejo de memoria y seguridad fueron poco manejados 4 y 2. • La identificación de aspectos no fue realmente difícil pero sí su conversión ya que en promedio por cada aspecto se invirtieron en promedio 1:55 por cada aspecto encontrado.
  • 45. • Planteamiento del Problema • Marco Teórico • Resultados Obtenidos Agenda Conclusiones/Trabajos Futuros
  • 46. Conclusiones • Realmente nuestras aplicaciones están mal diseñadas. Se utiliza POO pero sin sus ventajas. • Los aspectos no son realmente algo nuevo bajo el sol y para cuestiones repetitivas pueden ayudar bastante. • Los aspectos sólo sirven para determinado tipos de elementos entre cruzados.
  • 47. Trabajo Futuro • Realización de un estudio amplio de aplicaciones a nivel profesional. Ya que a nivel estudiantil son aplicaciones muy controladas. • Determinar tiempos promedios de análisis y de refactoring hacia aspectos de cada aplicación. • Hasta el momento sólo empresas grandes manejan aspectos en proyectos
  • 48. 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
  • 49. • Sanchez, M., (2009), Material del Curso de Reestructuración de Códigos, Instituto Tecnológico de Morelia. • Vidal S., et al. (2009), Santiago Proceso Iterativo para la Refactorización de Aspectos, Cuarto Congreso Colombiano de Computación 2009 • Mejía, P. (2008), Programación Orientada a Aspectos, CINVESTAV, México. Referencias
  • 50. Dudas

Notes de l'éditeur

  1. Métricas para Refactoring Aspectos
  2. Si se llega a modificar su comportamiento externo formalmente no se le considera “refactorización” sino más bien una modificación.
  3. Si bien al principio todo era programar, los conceptos AOP se trasladaron a todo el proceso de Software. AORE: Aspect Oriented Requirement Engineering. AOD: Aspect Oriented Design. Extensiones a UML para soportar el manejo de aspectos en la etapa de diseño. Extensiones Generales y Específicas. Verificación, Formalización &amp;Model Checking OA