Programa Estrategias para mejorar la separación de concerns

Objetivos:

El presente curso optativo de estrategias para mejorar la separación de concerns tiene como objetivo introducir al alumno en la problemática del mantenimiento y evolución de sistemas

Metodología de la Enseñanza:

Para alcanzar los objetivos propuestos se describen tanto en las clases teóricas con en las clases prácticas, fundamentalmente la carencia de mecanismos y estrategias que permitan modularizar todos los concerns de un sistema produciendo que los mismos se encuentres diseminados y entrelazados en las componentes del mismo. Esto produce problemas durante el mantenimiento y evolución de los sistemas debido a los constantes cambios ya sea durante del desarrollo como en el mantenimiento. Adicionalmente, los costos de mantenimiento de estos sistemas para satisfacer su evolución son muy grandes. Una alternativa para poder resolver los problemas planteados es proveyendo técnicas o herramientas que no solo permitan una buena separación de concerns sino proveyendo estrategias que analicen los costos de realizar ciertas refactorizaciones del sistema. La orientación a aspectos es una de las técnicas que facilitan la separación de concerns, por medio de aspectos es posible modularizar en una sola componente, denominada aspectos, a aquellos concerns que se encuentran diseminados en el resto de los componentes. Por esta razón, se presentan y describen los conceptos básicos de la orientación a aspectos.

Durante las clases prácticas se presentan y utilizan herramientas existentes que intentan solucionar los problemas planteados en las clases teóricas, teniendo el alumno una vivencia concreta con la problemática planteada.

1. Evolución y Mantenimiento de Sistemas de Software

  • Objetivos: Introducir los conceptos básicos del mantenimiento y evolución de los sistemas de software.

  • Contenidos: Definición de evolución de software. Definición de mantenimiento de software. Mantenimiento adaptativo, perfectivo, correctivo, evolutivo. Proceso de mantenimiento de software. Concepto de refactorización de código. Proceso de refactorización de código.

2. Aspect-Oriented Programming

  • Objetivos: Introducir los conceptos básicos del paradigma de aspectos. Conocer el paradigma de Aspect-Oriented Programming como técnica para mejorar el mantenmiento y evolución de sistemas.

  • Contenidos: Conceptos de aspecto, weaving, join-points y cross-cutting. Aspect-Oriented Programming: dominios de aplicación, características. Enfoques lingüísticos y reflexivos: ventajas y desventajas. AspectJ. Weaving estático y weaving dinámico. Conflictos entre aspectos. Clasificación de conflictos. Conflictos en las diferentes etapas del ciclo de vida.

3. Separación de concerns en las etapas del ciclo de vida

  • Objetivos: Identificar los beneficios y problemas que conlleva la identificación de concerns en las diferentes etapas del ciclo de vida de un sistema.

  • Contenidos: Definición de requerimientos. Técnicas para licitar requerimientos. Concepto de early aspects. Técnicas de identificación de crosscutting concerns. Conceptos de conflictos. Identificación y resolución de conflictos en las diferentes etapas del ciclo de vida.


4. Refactorización de sistemas para mejorar la separación de concerns

  • Objetivos: Reestructurar sistemas legados con el objetivo de mejorar la separación de concerns para facilitar el mantenimiento y evolución de los sistemas.

    Contenidos: Conceptos de ingeniería reversa, re ingeniería, refactoring, Niveles de refactorings. Técnicas de refactoring orientadas a objetos. Mecanismos para reestructurar programas. Técnicas para mejorar el proceso de refactorización.

Comments