SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
Replayable Refactorings
Juan Cruz Gardey
¿Qué permite hacer la herramienta?
Capturar y exportar refactorings realizados en una
imagen para poder re-ejecutarlos en otras.
Motivación
➔ Las aplicaciones se desarrollan reutilizando componentes (frameworks,
librerías, etc.).
➔ El código de estos componentes suele cambiar con mucha frecuencia.
◆ los cambios muchas veces “rompen” el código de las aplicaciones.
◆ Los usuarios se ven obligados a modificar su código para poder usar la
última versión de un componente.
Motivación (2)
➔ Para no tener problemas de compatibilidad, se dejan de realizar algunas
modificaciones.
◆ Ejemplo: eliminación de métodos “deprecated”.
◆ Mayor costo de mantenimiento.
Solución propuesta
➔ Realizar modificaciones por medio de refactorings.
➔ Exportar estos refactorings y volver a ejecutarlos en otras imágenes.
➔ Imagen origen (entorno de desarrollo de un componente):
◆ Los refactorings actualizan el código del componente.
➔ Imagenes destino (aplicaciones que utilizan ese componente):
◆ los refactorings actualizan el componente y también las aplicaciones
clientes.
Beneficios
➔ Desarrolladores de componentes pueden realizar modificaciones libremente.
➔ Usuarios actualizan sus aplicaciones automáticamente.
Menor costo de mantenimiento para ambos
Grabado de refactorings
➔ Capturar cada refactoring ni bien es aplicado en el código.
➔ Guardar todos sus datos para poder recrearlos en otro entorno.
➔ Exportación
◆ Archivos: Portabilidad.
Grabado de refactorings (2)
➔ El usuario puede elegir cuándo iniciar y finalizar una sesión de grabado.
◆ Visualizar los refactorings capturados hasta el momento.
◆ Cuando decide terminar se genera un archivo con todos sus
refactorings.
➔ Las ediciones manuales de código no se exportan. Únicamente los
refactorings.
Re-ejecución de refactorings
➔ Validez de los refactorings.
◆ Pueden ser válidos en una imagen y en otras no…
◆ Ejemplo: Una clase definida con el mismo nombre.
◆ Realizar chequeos para mostrarle al usuario cuáles no pueden ser
aplicados.
◆ Darle la posibilidad de corregir su código para poder realizarlos.
➔ Permitir aplicar solamente aquellos que resultaron válidos.
Re-ejecución de refactorings (2)
➔ El usuario debe poder elegir cuáles refactorings re-ejecutar.
◆ Ventaja: Flexibilidad, puede descartar aquellas modificaciones que no le
convengan…
◆ Problema: Algunos refactorings son aplicados sobre el resultado de otro
anterior
● DEPENDENCIAS ENTRE REFACTORINGS.
Re-ejecución de refactorings (3)
DEPENDENCIA ENTRE REFACTORINGS: La ejecución de un refactoring habilita la
aplicación de otro.
R1 = AddClass (Monolith).
R2 = AddMethod (Monolith, #bar).
R2 no puede ejecutarse sin R1.
➔ Necesidad de identificar estas dependencias.
Re-ejecución de refactorings (4)
Identificación de dependencias:
➔ Si se decide ejecutar un refactoring, también deben realizarse aquellos de los
cuales depende.
➔ Si no se hace un refactoring, tampoco pueden hacerse los que necesitan la
ejecución de este.
Re-ejecución de refactorings (5)
Identificación de dependencias:
➔ Asegurar que cualquier conjunto de refactorings elegidos por el
usuario se realiza de manera exitosa…
➔ Definición de postcondiciones de los refactorings.
Limitaciones de la herramienta
➔ Todos los cambios deben hacerse por medio de refactorings
◆ Hay algunas modificaciones que pueden ser hechas más rápidamente de forma
manual.
● Agregar una variable de instancia.
➔ No se puede asegurar que los refactorings elegidos por el usuario
conservan la funcionalidad de la aplicación.
Conclusiones
➔ Se construyó una herramienta que permite re-ejecutar refactorings en
una imagen del código cliente.
➔ Se calculan las precondiciones nuevamente en la imagen destino antes
de la ejecución.
➔ El desarrollador puede decidir no aplicar algún refactoring (ej: Remove
Method).
➔ La herramienta está disponible en SmalltalkHub con nombre
“ReplayableRefactorings”.
Funcionamiento
Replayable Refactorings by Juan Cruz Gardey
Replayable Refactorings by Juan Cruz Gardey
Replayable Refactorings by Juan Cruz Gardey
Replayable Refactorings by Juan Cruz Gardey
Replayable Refactorings by Juan Cruz Gardey

Weitere ähnliche Inhalte

Ähnlich wie Replayable Refactorings by Juan Cruz Gardey

Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software'Jorge Martinez
 
Modelo de desarrollo de software
Modelo de desarrollo de softwareModelo de desarrollo de software
Modelo de desarrollo de softwareSaul mendoza valdez
 
Introduccion a java script
Introduccion a java scriptIntroduccion a java script
Introduccion a java scriptLuis Aceituno
 
Modelo de cascadaa
Modelo de cascadaaModelo de cascadaa
Modelo de cascadaamendez45
 
PHP Unit y TDD
PHP Unit y TDDPHP Unit y TDD
PHP Unit y TDDEmergya
 
Resumen para Estudiar
Resumen para EstudiarResumen para Estudiar
Resumen para Estudiargregoryj733
 
La programación extrema
La programación extremaLa programación extrema
La programación extremaingridleona
 
Un Framework de Triggers Rock Solid en Salesforce
Un Framework de Triggers Rock Solid en SalesforceUn Framework de Triggers Rock Solid en Salesforce
Un Framework de Triggers Rock Solid en SalesforceEsteve Graells
 
Mahikel s peñuelag_ensayo
Mahikel s peñuelag_ensayoMahikel s peñuelag_ensayo
Mahikel s peñuelag_ensayoMahikel Peñuela
 
Topicos Selectos de Xamarin
Topicos Selectos de XamarinTopicos Selectos de Xamarin
Topicos Selectos de XamarinLuis Beltran
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephpbetabeers
 
Introducción a la Programación
Introducción a la ProgramaciónIntroducción a la Programación
Introducción a la ProgramaciónPablo Parola
 

Ähnlich wie Replayable Refactorings by Juan Cruz Gardey (20)

Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Tipos de ciclo de vida
Tipos de ciclo de vidaTipos de ciclo de vida
Tipos de ciclo de vida
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software
 
Modelo de desarrollo de software
Modelo de desarrollo de softwareModelo de desarrollo de software
Modelo de desarrollo de software
 
mapa conceptual prototipos.docx
mapa conceptual prototipos.docxmapa conceptual prototipos.docx
mapa conceptual prototipos.docx
 
prueva
pruevaprueva
prueva
 
Introduccion a java script
Introduccion a java scriptIntroduccion a java script
Introduccion a java script
 
Modelo de cascadaa
Modelo de cascadaaModelo de cascadaa
Modelo de cascadaa
 
PHP Unit y TDD
PHP Unit y TDDPHP Unit y TDD
PHP Unit y TDD
 
Resumen para Estudiar
Resumen para EstudiarResumen para Estudiar
Resumen para Estudiar
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
 
Apuntes
ApuntesApuntes
Apuntes
 
Modelos
ModelosModelos
Modelos
 
La programación extrema
La programación extremaLa programación extrema
La programación extrema
 
Un Framework de Triggers Rock Solid en Salesforce
Un Framework de Triggers Rock Solid en SalesforceUn Framework de Triggers Rock Solid en Salesforce
Un Framework de Triggers Rock Solid en Salesforce
 
Mahikel s peñuelag_ensayo
Mahikel s peñuelag_ensayoMahikel s peñuelag_ensayo
Mahikel s peñuelag_ensayo
 
Topicos Selectos de Xamarin
Topicos Selectos de XamarinTopicos Selectos de Xamarin
Topicos Selectos de Xamarin
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Introducción a la Programación
Introducción a la ProgramaciónIntroducción a la Programación
Introducción a la Programación
 

Mehr von FAST

Threads, Critical Sections, and Termination
Threads, Critical Sections, and TerminationThreads, Critical Sections, and Termination
Threads, Critical Sections, and TerminationFAST
 
OOP with Smalltalk
OOP with SmalltalkOOP with Smalltalk
OOP with SmalltalkFAST
 
Powerlang: a Vehicle for Lively Implementing Programming Languages
Powerlang: a Vehicle for Lively Implementing Programming LanguagesPowerlang: a Vehicle for Lively Implementing Programming Languages
Powerlang: a Vehicle for Lively Implementing Programming LanguagesFAST
 
Constructing 3D scenes with Woden Engine
Constructing 3D scenes with Woden EngineConstructing 3D scenes with Woden Engine
Constructing 3D scenes with Woden EngineFAST
 
Demystifying the creation of coding tools
Demystifying the creation of coding toolsDemystifying the creation of coding tools
Demystifying the creation of coding toolsFAST
 
Application Starter: the entry point for your application
Application Starter: the entry point for your applicationApplication Starter: the entry point for your application
Application Starter: the entry point for your applicationFAST
 
Improving the Pharo VM
Improving the Pharo VMImproving the Pharo VM
Improving the Pharo VMFAST
 
What is (not) Pharo 8?
What is (not) Pharo 8?What is (not) Pharo 8?
What is (not) Pharo 8?FAST
 
Stargate: an interstellar journey to RESTful APIs
Stargate: an interstellar journey to RESTful APIsStargate: an interstellar journey to RESTful APIs
Stargate: an interstellar journey to RESTful APIsFAST
 
Opening Smalltalks 2019
Opening Smalltalks 2019Opening Smalltalks 2019
Opening Smalltalks 2019FAST
 
Smalltalk Computers, Past and Future by Jecel Mattos de Assumpção Jr
Smalltalk Computers, Past and Future by Jecel Mattos de Assumpção JrSmalltalk Computers, Past and Future by Jecel Mattos de Assumpção Jr
Smalltalk Computers, Past and Future by Jecel Mattos de Assumpção JrFAST
 
Adaptive Compilation by Jecel Mattos de Assumpção Jr
Adaptive Compilation by Jecel Mattos de Assumpção JrAdaptive Compilation by Jecel Mattos de Assumpção Jr
Adaptive Compilation by Jecel Mattos de Assumpção JrFAST
 
Choosing where to run our objects: the S8 Smalltalk approach by Description:F...
Choosing where to run our objects: the S8 Smalltalk approach by Description:F...Choosing where to run our objects: the S8 Smalltalk approach by Description:F...
Choosing where to run our objects: the S8 Smalltalk approach by Description:F...FAST
 
Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...
Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...
Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...FAST
 
Improving VASmalltalk deployment, availability and scalability with Docker by...
Improving VASmalltalk deployment, availability and scalability with Docker by...Improving VASmalltalk deployment, availability and scalability with Docker by...
Improving VASmalltalk deployment, availability and scalability with Docker by...FAST
 
VASmalltalk and Raspberry Pi powering the largest MIDI instrument of the world
VASmalltalk and Raspberry Pi powering the largest MIDI instrument of the worldVASmalltalk and Raspberry Pi powering the largest MIDI instrument of the world
VASmalltalk and Raspberry Pi powering the largest MIDI instrument of the worldFAST
 
Hands-on Raspberry Pi and VA Smalltalk - Starting Workshop
Hands-on Raspberry Pi and VA Smalltalk - Starting WorkshopHands-on Raspberry Pi and VA Smalltalk - Starting Workshop
Hands-on Raspberry Pi and VA Smalltalk - Starting WorkshopFAST
 
Live typing: Update and what's next by Hernan Wilkinson
Live typing: Update and what's next by Hernan WilkinsonLive typing: Update and what's next by Hernan Wilkinson
Live typing: Update and what's next by Hernan WilkinsonFAST
 
Enhanced Email Protocol Framework for VAST by Seth Berman
Enhanced Email Protocol Framework for VAST by Seth BermanEnhanced Email Protocol Framework for VAST by Seth Berman
Enhanced Email Protocol Framework for VAST by Seth BermanFAST
 
VA Smalltalk Product Update by Seth Berman
VA Smalltalk Product Update by Seth BermanVA Smalltalk Product Update by Seth Berman
VA Smalltalk Product Update by Seth BermanFAST
 

Mehr von FAST (20)

Threads, Critical Sections, and Termination
Threads, Critical Sections, and TerminationThreads, Critical Sections, and Termination
Threads, Critical Sections, and Termination
 
OOP with Smalltalk
OOP with SmalltalkOOP with Smalltalk
OOP with Smalltalk
 
Powerlang: a Vehicle for Lively Implementing Programming Languages
Powerlang: a Vehicle for Lively Implementing Programming LanguagesPowerlang: a Vehicle for Lively Implementing Programming Languages
Powerlang: a Vehicle for Lively Implementing Programming Languages
 
Constructing 3D scenes with Woden Engine
Constructing 3D scenes with Woden EngineConstructing 3D scenes with Woden Engine
Constructing 3D scenes with Woden Engine
 
Demystifying the creation of coding tools
Demystifying the creation of coding toolsDemystifying the creation of coding tools
Demystifying the creation of coding tools
 
Application Starter: the entry point for your application
Application Starter: the entry point for your applicationApplication Starter: the entry point for your application
Application Starter: the entry point for your application
 
Improving the Pharo VM
Improving the Pharo VMImproving the Pharo VM
Improving the Pharo VM
 
What is (not) Pharo 8?
What is (not) Pharo 8?What is (not) Pharo 8?
What is (not) Pharo 8?
 
Stargate: an interstellar journey to RESTful APIs
Stargate: an interstellar journey to RESTful APIsStargate: an interstellar journey to RESTful APIs
Stargate: an interstellar journey to RESTful APIs
 
Opening Smalltalks 2019
Opening Smalltalks 2019Opening Smalltalks 2019
Opening Smalltalks 2019
 
Smalltalk Computers, Past and Future by Jecel Mattos de Assumpção Jr
Smalltalk Computers, Past and Future by Jecel Mattos de Assumpção JrSmalltalk Computers, Past and Future by Jecel Mattos de Assumpção Jr
Smalltalk Computers, Past and Future by Jecel Mattos de Assumpção Jr
 
Adaptive Compilation by Jecel Mattos de Assumpção Jr
Adaptive Compilation by Jecel Mattos de Assumpção JrAdaptive Compilation by Jecel Mattos de Assumpção Jr
Adaptive Compilation by Jecel Mattos de Assumpção Jr
 
Choosing where to run our objects: the S8 Smalltalk approach by Description:F...
Choosing where to run our objects: the S8 Smalltalk approach by Description:F...Choosing where to run our objects: the S8 Smalltalk approach by Description:F...
Choosing where to run our objects: the S8 Smalltalk approach by Description:F...
 
Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...
Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...
Using 128 GPU cores, Tensorflow and VASmalltalk to detect Kolsh beers with ES...
 
Improving VASmalltalk deployment, availability and scalability with Docker by...
Improving VASmalltalk deployment, availability and scalability with Docker by...Improving VASmalltalk deployment, availability and scalability with Docker by...
Improving VASmalltalk deployment, availability and scalability with Docker by...
 
VASmalltalk and Raspberry Pi powering the largest MIDI instrument of the world
VASmalltalk and Raspberry Pi powering the largest MIDI instrument of the worldVASmalltalk and Raspberry Pi powering the largest MIDI instrument of the world
VASmalltalk and Raspberry Pi powering the largest MIDI instrument of the world
 
Hands-on Raspberry Pi and VA Smalltalk - Starting Workshop
Hands-on Raspberry Pi and VA Smalltalk - Starting WorkshopHands-on Raspberry Pi and VA Smalltalk - Starting Workshop
Hands-on Raspberry Pi and VA Smalltalk - Starting Workshop
 
Live typing: Update and what's next by Hernan Wilkinson
Live typing: Update and what's next by Hernan WilkinsonLive typing: Update and what's next by Hernan Wilkinson
Live typing: Update and what's next by Hernan Wilkinson
 
Enhanced Email Protocol Framework for VAST by Seth Berman
Enhanced Email Protocol Framework for VAST by Seth BermanEnhanced Email Protocol Framework for VAST by Seth Berman
Enhanced Email Protocol Framework for VAST by Seth Berman
 
VA Smalltalk Product Update by Seth Berman
VA Smalltalk Product Update by Seth BermanVA Smalltalk Product Update by Seth Berman
VA Smalltalk Product Update by Seth Berman
 

Kürzlich hochgeladen

AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 

Kürzlich hochgeladen (20)

AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 

Replayable Refactorings by Juan Cruz Gardey

  • 2. ¿Qué permite hacer la herramienta? Capturar y exportar refactorings realizados en una imagen para poder re-ejecutarlos en otras.
  • 3. Motivación ➔ Las aplicaciones se desarrollan reutilizando componentes (frameworks, librerías, etc.). ➔ El código de estos componentes suele cambiar con mucha frecuencia. ◆ los cambios muchas veces “rompen” el código de las aplicaciones. ◆ Los usuarios se ven obligados a modificar su código para poder usar la última versión de un componente.
  • 4. Motivación (2) ➔ Para no tener problemas de compatibilidad, se dejan de realizar algunas modificaciones. ◆ Ejemplo: eliminación de métodos “deprecated”. ◆ Mayor costo de mantenimiento.
  • 5. Solución propuesta ➔ Realizar modificaciones por medio de refactorings. ➔ Exportar estos refactorings y volver a ejecutarlos en otras imágenes. ➔ Imagen origen (entorno de desarrollo de un componente): ◆ Los refactorings actualizan el código del componente. ➔ Imagenes destino (aplicaciones que utilizan ese componente): ◆ los refactorings actualizan el componente y también las aplicaciones clientes.
  • 6. Beneficios ➔ Desarrolladores de componentes pueden realizar modificaciones libremente. ➔ Usuarios actualizan sus aplicaciones automáticamente. Menor costo de mantenimiento para ambos
  • 7. Grabado de refactorings ➔ Capturar cada refactoring ni bien es aplicado en el código. ➔ Guardar todos sus datos para poder recrearlos en otro entorno. ➔ Exportación ◆ Archivos: Portabilidad.
  • 8. Grabado de refactorings (2) ➔ El usuario puede elegir cuándo iniciar y finalizar una sesión de grabado. ◆ Visualizar los refactorings capturados hasta el momento. ◆ Cuando decide terminar se genera un archivo con todos sus refactorings. ➔ Las ediciones manuales de código no se exportan. Únicamente los refactorings.
  • 9.
  • 10. Re-ejecución de refactorings ➔ Validez de los refactorings. ◆ Pueden ser válidos en una imagen y en otras no… ◆ Ejemplo: Una clase definida con el mismo nombre. ◆ Realizar chequeos para mostrarle al usuario cuáles no pueden ser aplicados. ◆ Darle la posibilidad de corregir su código para poder realizarlos. ➔ Permitir aplicar solamente aquellos que resultaron válidos.
  • 11.
  • 12. Re-ejecución de refactorings (2) ➔ El usuario debe poder elegir cuáles refactorings re-ejecutar. ◆ Ventaja: Flexibilidad, puede descartar aquellas modificaciones que no le convengan… ◆ Problema: Algunos refactorings son aplicados sobre el resultado de otro anterior ● DEPENDENCIAS ENTRE REFACTORINGS.
  • 13. Re-ejecución de refactorings (3) DEPENDENCIA ENTRE REFACTORINGS: La ejecución de un refactoring habilita la aplicación de otro. R1 = AddClass (Monolith). R2 = AddMethod (Monolith, #bar). R2 no puede ejecutarse sin R1. ➔ Necesidad de identificar estas dependencias.
  • 14. Re-ejecución de refactorings (4) Identificación de dependencias: ➔ Si se decide ejecutar un refactoring, también deben realizarse aquellos de los cuales depende. ➔ Si no se hace un refactoring, tampoco pueden hacerse los que necesitan la ejecución de este.
  • 15.
  • 16. Re-ejecución de refactorings (5) Identificación de dependencias: ➔ Asegurar que cualquier conjunto de refactorings elegidos por el usuario se realiza de manera exitosa… ➔ Definición de postcondiciones de los refactorings.
  • 17. Limitaciones de la herramienta ➔ Todos los cambios deben hacerse por medio de refactorings ◆ Hay algunas modificaciones que pueden ser hechas más rápidamente de forma manual. ● Agregar una variable de instancia. ➔ No se puede asegurar que los refactorings elegidos por el usuario conservan la funcionalidad de la aplicación.
  • 18. Conclusiones ➔ Se construyó una herramienta que permite re-ejecutar refactorings en una imagen del código cliente. ➔ Se calculan las precondiciones nuevamente en la imagen destino antes de la ejecución. ➔ El desarrollador puede decidir no aplicar algún refactoring (ej: Remove Method). ➔ La herramienta está disponible en SmalltalkHub con nombre “ReplayableRefactorings”.