Refactoring de aplicaciones legacy Alejandra Garrido CONICET – LIFIA UNLP – CAETI UAI Proyecto CAETI: “El refactoring como práctica fundamental para la.

Slides:



Advertisements
Presentaciones similares
Archivo de Publicaciones Periódicas Electrónicas.
Advertisements

Refactoring – Visual Studio 2005 Hector Minaya, mcsd.net MR2 Solutions
Metodologías ágiles.
Acercándonos a las Pruebas en Google
Desarrollo de un entorno de programación para Máquinas de Turing
Pruebas de Unidad y Refactorización
Rosemary Torrico Bascopé
Desarrollo para Entorno Web
¿Donde debo Localizar los Centros de servicios? A partir de un mapa con velocidades (o tiempo) y un demanda estimada o real, esta herramienta ubica automáticamente.
Understanding SOA Design Patterns
Evolutionary Prototyping VS Throwaway Prototyping
Proyecto de Ingeniería de Software 2008
Versión 2004 Enrique Bañuelos Gómez
Clase V [nombre instructor][nombre instructor] [fecha][fecha]
Calidad en entornos ágiles Juan Gabardini Administración y Control de Proyectos Informáticos II Facultad de Ingeniería - UBA.
HERRAMIENTAS CASE.
Evaluación y gestión de los riesgos de los sistemas de información en el Ministerio de Economía y Hacienda.
Reingeniería del Software
Reunión NAME Valencia, 4 de Octubre de Quienes somos ? Tissat es una empresa de Consultoría Tecnológica Diversas áreas de actuación: Comunidades.
Propuesta de una metodología para el desarrollo de proyectos informáticos empleando la herramienta para el diseño automatizado GeneXus Autor: Dipl.-Ing.
Test Driven Development
Ciclos de vida ágiles.  Es una metodología ágil que plantea: ◦ Iteraciones cortas ◦ Entregables periódicos ◦ Colaboración con el cliente full time ◦
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA
 Tema del proyecto  Integrantes y roles del equipo  Objetivos del proyecto  Alcance.
Introducción al Proceso de Desarrollo de Software Patricio Letelier Departamento de Sistemas Informáticos y Computación Universidad.
Managing the Development of Large Software Systems Adrián Ducet – 271/99 David Alejandro Gonzalez Marquez - 286/03 Martín Sigal - 95/00 Matías Alejandro.
DATA WAREHOUSE Equipo 9.
Reestructuración del Código M.C. Juan Carlos Olivares Rojas Marzo 2010.
ASEGURANDO LA CALIDAD DEL CODIGO REFACTORING. Refactorizar (o Refactoring) es realizar una transformación al software preservando su comportamiento, modificando.
EVOLUCION DE SISTEMAS DE SOPORTE DE DECISIÓN. La evolución  1960: creación de aplicaciones individuales- Fortran, COBOL – Tarjetas perforadas.  Cintas.
Mock objects Rosemary Torrico Bascopé. Introducción Las Pruebas de unidad han sido aceptadas como la “mejor práctica” para el desarrollo de software.
3.- Introducción a Patrones de Diseño
Herramientas de uso libre para el manejo de los datos
Programación Extrema Leonardo Ramírez Z.. Contenido Motivación ¿Qué es Programación Extrema? La filosofía detrás de la Programación Extrema El proceso.
Eva Lleonart Martín Asunción García-Menacho Rovira
Modelo-Vista-Controlador Este patrón fue descrito por primera vez por Trygve Reenskaug en 1979, y la implementación original fue realizada en Smalltalk.
Arquitectura de Software
Ingeniería de Software en la Robótica Educativa Gabriela Arévalo, Ph.D. CAETI- UAI, LIFIA-UNLP, CONICET
Unidad ll Equipo 2 Juan Carlos Martínez Ramos Erik Iván Mancilla Romero Cristian Suarez Luis Ángel Santiago Alex Joshua Serrano.
1 Ingeniería del Software Curso German Rigau Ingeniería Técnica en Informática de Sistemas.
Buenas prácticas en el desarrollo de Software
MATLAB Adriana Ruiz Martínez. Mario Cesar Taracena Contreras.
Trabajo Final Econometría. Universidad del CEMA2 Aspectos Formales  Fecha límite de entrega: Fecha Examen final  Entregas parciales: Elección y presentación.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
1 Ingeniería del Software Curso German Rigau Ingeniería Técnica en Informática de Sistemas.
Reestructuración de Código M.C. Juan Carlos Olivares Rojas
Unidad 3 MODELO DE ANALISIS.
Test Driven Development. ¿Que es Test Driven Development?
GENERACION DE WINDOWS PROFESOR: Fernando Mejía. ALUMNO: Luis Eduardo Valenzuela Hidalgo.
ADN2 Diseño ágil de noticias Historia de un trabajo profesional.
La reingenieria del software Integrantes: Marcela Avila Beltran Anderson Hortua Cruz Michael Mendoza Gomez.
Dumar-calapsu-cano Cet chicala Diseñoweb. es una suite ofimática gratuita que destaca por su elevada compatibilidad. Está desarrollada bajo el proyecto.
Test Driven Development
SISTEMAS DE GESTIÓN DE CURSOS DE DISTRIBUCIÓN LIBRE
1 Ingeniería del Software Curso German Rigau Ingeniería Técnica en Informática de Sistemas.
EI, Profesor Ramón Castro Liceaga IV. AREAS DE EVALUACIÓN DE LA AUDITORIA EN INFORMÁTICA. UNIVERSIDAD LATINA (UNILA)
Título de la Presentación Estado del arte sobre el testeo de software en las Pymes de Aragón 12 de Noviembre de 2015.
1 ESTIMACIÓN basada en PUNTOS de FUNCIÓN. 2 Agenda de la presentación 4 Técnicas de estimación. 4 Puntos de Función. (En general) 4 Puntos de Función.
Conveniencias entre comprar o desarrollar un software a medida.
Autor: Reinozo Cuesta Christian Marcelo
MAESTRÍA EN PLANIFICACIÓN Y DIRECCIÓN ESTRATÉGICA
Sistemas de Información Ing. Maribel Valenzuela Beltrán.
TALLER DE PROGRAMACIÓN ORIENTADA A OBJETOS I Docentes: Alejandra Garrido Federico Balaguer
Febrero 2016 FRAMEWORKS DE DESARROLLO/LENGUAJES DE PROGRAMACIÓN AREA DE ARQUITECTURAS Dirección de Ingeniería, Soporte a Gestión de Aplicaciones y Centros.
Práctica Profesional Supervisada Sistema de Información para la Gestión del proceso de Admisión de Pacientes (SISGAD) Integrantes: Carol Hidalgo Artavia.
ALUMNO ALUMNO: DIEGO URES LEGAJO LEGAJO: La prueba unitaria es la herramienta para la Calidad Presentación Trabajo Final de Grado.
SYMFONY Información del Framework. Síntesis de Symfony  Es un framework diseñado para optimizar el desarrollo de aplicaciones web creado con PHP5. 
Universidad de Palermo - Facultad de Ingeniería. Licenciatura en redes y comunicaciones de datos. Autor: Alumno Martín R. Payero Legajo Nº Trabajo.
Transcripción de la presentación:

Refactoring de aplicaciones legacy Alejandra Garrido CONICET – LIFIA UNLP – CAETI UAI Proyecto CAETI: “El refactoring como práctica fundamental para la comprensión, restructuración, y actualización de aplicaciones legacy”

Alejandra Garrido - CIITI VIII - Rosario Big Ball of Mud Querríamos tener arquitecturas de software elegantes, diseños que usen patrones y código flexible y reusable. En realidad tenemos toneladas de “spaghetti code”, con poca estructura, ilegible, intocable. Es una pesadilla, pero sin embargo subsiste. ¿Por qué? “Big Ball of Mud”. Brian Foote and Joe Yoder. Pattern Languages of Programs 4. Addison-Wesley 2000.

Alejandra Garrido - CIITI VIII - Rosario Patrones del Big Ball of Mud Comienza siendo “Throwaway code” que se instala y persiste, simplemente porque funciona Cambios de requerimientos y agregado de funcionalidad como un “Piecemeal growth” continuo corroe las mejoras arquitecturas Dejamos un Façade alrededor de lo que no queremos mostrar o tocar, “Sweeping it under the rug”

Alejandra Garrido - CIITI VIII - Rosario Aplicaciones Legacy Desarrolladas durante años Muchos programadores involucrados Costosas Imprescindibles Escaso mantenimiento Sin tests de unidad [Feathers]

Alejandra Garrido - CIITI VIII - Rosario Fortran Fortran I→ II→ IV→ 66→ 77→ 90→ 95→ 2003→ 2008 Nueva versión para finales de este año Algunos usuarios en Inglaterra:  Meteorological Office  Ministry of Defence  universidades, laboratorios de investigación  instituciones científicas  industria financiera Se estima que hay varias miles de organizaciones en Europa usando aplicaciones Fortran. Fuente: “Fortran - a language with a past and a future”

Alejandra Garrido - CIITI VIII - Rosario ¿Cómo manejar el cambio? Un mal diseño no es grave, hasta que hay que hacer cambios No podemos prevenir los cambios El problema no es el cambio sino nuestra incapacidad de manejarlo

Alejandra Garrido - CIITI VIII - Rosario Refactoring Univ. of Illinois at Urbana-Champaign (UIUC)  Bill Opdyke, "Refactoring Object-Oriented Frameworks". PhD Thesis  Surge la 1ra. herramienta de refactoring: Refactoring Browser para Smalltalk. Transformación que preserva el comportamiento

Alejandra Garrido - CIITI VIII - Rosario Refactoring by Fowler Proceso de cambiar la estructura interna del software mejorando la organización, legibilidad, adaptabilidad y mantenibilidad del código luego que ha sido escrito  que NO altera el comportamiento externo del sistema,  que mejora su estructura interna Catálogo de refactorings Proceso manual

Alejandra Garrido - CIITI VIII - Rosario Proceso de Refactoring Implica  Eliminar duplicaciones  Simplificar lógicas complejas  Clarificar códigos A través de cambios pequeños  Hacer muchos cambios pequeños es mas fácil y más seguro que un gran cambio  Cada pequeño cambio pone en evidencia otros cambios necesarios Testear después de cada cambio

Alejandra Garrido - CIITI VIII - Rosario Automatización del Refactoring Refactoring manual es muy costoso Refactorings automáticos deben ser:  lo suficientemente potentes para manejar mejoras en el diseño  lo suficientemente restrictivos de manera de preservar el comportamiento

Alejandra Garrido - CIITI VIII - Rosario Seguridad y utilidad Seguridad en la preservación del comportamiento brinda confianza Un refactoring “seguro” para un programa puede no mejorar su diseño Incluso aplicar refactorings arbitrariamente puede corromper el diseño Una herramienta de refactoring debe asegurar que preserva el comportamiento pero no puede asegurar utilidad (mejoras en el diseño)

Alejandra Garrido - CIITI VIII - Rosario Photran – IDE para Fortran Fortran 77 a 2003 Open source Syntax highlighting Outline view Interactive debugger CVS support Refactoring engine

Alejandra Garrido - CIITI VIII - Rosario Extract Procedure Refactoring Mueve sentencias a una nueva subrutina y reemplaza las sentencias por una llamada a la subrutina, pasando las variables locales como parámetro. Seleccionar sentencias Elegir del menú Refactor -> Extract Procedure Ingresar el nombre

Alejandra Garrido - CIITI VIII - Rosario Abordaje del BBoM Los refactorings se hacen en pequeños pasos, pero en un BBoM los cambios necesarios son enormes Diferente granularidad de refactorings Orden de aplicación de refactorings Orden generalizable? Relación con el testing

Alejandra Garrido - CIITI VIII - Rosario Catalogar, sugerir Catálogo de refactorings para código legacy  C refactoring [Garrido 2000]  Incorporar herramientas para sugerir refactorings:  ¿Qué métricas pueden ayudar a sugerir?  ¿Es práctico incorporar herramientas de ánalisis?  ¿Son útiles las herramientas gráficas?

Alejandra Garrido - CIITI VIII - Rosario Conclusiones Resulta interesante estudiar cómo se puede adecuar la técnica de refactoring para permitir la actualización de una aplicación legacy, de manera de poder ingresarla posteriormente a un proceso ágil de continuo mantenimiento Tener una herramienta que provee la infraestructura necesaria para el refactoring automático es un gran beneficio Página del proyecto:

Alejandra Garrido - CIITI VIII - Rosario Referencias Brian Foote and Joseph Yoder. “Big Ball of Mud”. Pattern Languages of Program Design 4. Addison-Wesley, William Opdyke. “Refactoring Object-Oriented Frameworks". PhD Thesis. UIUC Alejandra Garrido. “Software Refactoring Applied to C Programming Language”. MS Thesis. UIUC Martin Fowler. “Refactoring. Improving the design of existing code”. Addison-Wesley, Joshua Kerievsky. “Refactoring to Patterns”. Addison Wesley, Michael Feathers. “Working Effectively with Legacy Code”. Prentice Hall

Muchas gracias! Alejandra Garrido