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