Friday, April 23, 2010

Programación Orientada a Aspectos con AspectJ


Cada día más, la Programación Orientada a Aspectos (AOP) adquiere más importancia para el desarrollo de aplicaciones empresariales.
Aquellos que utilizan Spring como base para sus aplicaciones, conocen el uso que ese marco de trabajo hace de AOP para resolver problemas complejos, siendo la administración de transacciones la más vista. Sin embargo, otros muchos aspectos (y valga la redundancia) no son resueltos de una manera sencilla conociendo solamente el modelo que Spring sigue para ese estilo de diseño y programación. Es necesario conocer y dominar el lenguaje AspectJ para aprovechar al máximo la integración de éste con Spring.

A continuación describo el contenido del curso de AspectJ que BestS2S ofrece, bien como curso cerrado a empresas o abierto al público. Bienvenido los interesados.

Curso de Programación orientada a aspectos con AspectJ
  • Instructor: Dr. Bárbaro Jorge Ferro Castro
  • BestS2S Software Solutions, S.A. de C.V
  • México, D.F.
  • Duración del curso
  • 24 horas en sesiones de cuatro, seis u ocho horas
  • Informes
  • informes@bests2s.com


Objetivo del curso

Este curso tiene el objetivo de lograr que los participantes adquieran los conocimientos necesarios para aplicar el lenguaje AspectJ en el diseño y construcción de aplicaciones empresariales. El curso, siendo en esencia un curso práctico con múltiples ejemplos, aborda también conceptos importantes de la programación orientada a aspectos, que de alguna manera complementan conceptos importantes de diseño y programación y en particular de la programación orientada a objetos.

Beneficios para el desarrollador de software

Si bien el área del desarrollo de software y de la programación orientada a aspectos (AOSD y AOP) es desconocida en muchas empresas dedicadas a la producción de software, su presencia en muchas aplicaciones y marcos de trabajo es cada día más significativa, y ha dejado de ser un campo meramente académico, para convertirse en una técnica práctica que contribuye al diseño correcto de aplicaciones empresariales, donde la modularización de los concerns se convierte en una de las metas principales para el diseño arquitectónico de esas aplicaciones.

En ese terreno de la modularización, AOSD y AOP son técnicas de diseño y programación imprescindibles para llevar a vías de hecho las mejores prácticas, y AspectJ en particular se adecua a la tecnología de Java con una curva de aprendizaje poco inclinada que le permite al conocedor de Java convertirse en conocedor de AspectJ en poco tiempo.

Con este curso, los participantes adquirirán los conocimientos que necesitan para explotar las bondades de AOP y mejorar sustancialmente el diseño arquitectónico de las aplicaciones que construyen. También, incrementarán su dominio de las técnicas orientadas a objetos que “salen a la luz” al sumergirse en la búsqueda de soluciones con AOP para evitar diseños y códigos dispersos y mezclados que atentan contra muchos de los principios del diseño de aplicaciones.

Los beneficios de cada tópico particular de AOP se describen más adelante para cada Tema del contenido del curso.

Contenido del curso

1. Introducción a la Programación Orientada a Aspectos (AOP)
  • Fundamentos de la programación orientada a aspectos
  • La anatomía de un lenguaje de aspectos
  • Los conceptos fundamentales de AOP
  • Analogía de AOP con otras tecnologías
  • Introducción rápida a AspectJ
  • Los aspectos en un programa con AspectJ: primer ejemplo
Competencias adquiridas con el Tema 1
  • Entender el significado de “crosscutting concerns”
  • Encapsular en módulos los “crosscutting concerns”
  • Responder con precisión las siguientes preguntas:
  • ¿Dónde están los aspectos en un programa que no usa AOP?
  • ¿Cómo puedo crear módulos con los aspectos de un programa?
  • ¿Cuántas implementaciones de AOP existen?
  • ¿Para qué aprender AspectJ si ya conozco Spring AOP?
  • ¿Si Groovy brinda AOP (¿será cierto?), por qué no lo brinda Java?
  • ¿Para qué aprender AOP si algunos consideran que su uso es limitado?
2. Introducción a AspectJ

  • Dominando los conceptos principales con un ejemplo (learning by example)
  • Disección del código ejemplo
  • Construyendo la aplicación con líneas de comando y con Eclipse.
  • Las “cosas” para expresar “crosscuttings” en AspectJ: puntos de unión, cortes y aspectos
  • Las “cosas” para diseñar y construir “crosscuttings dinámicos”: los avisos
  • Las “cosas” para diseñar y construir “crosscuttings estáticos”: las introducciones y declaraciones en tiempo de “tejido”
  • El uso de anotaciones para una sintaxis alternativa
  • Entendiendo los mecanismos de tejido
  • La integración inevitable de AspectJ en Spring

Competencias adquiridas con el Tema 2
  • Programar aspectos con AspectJ
  • Distinguir lo estático de lo dinámic
  • Conocer lo que Spring ofrece de AspectJ
  • Responder con precisión las siguientes preguntas:
  • ¿Qué valor me brinda conocer las “tripas” del mecanismo de tejido de AspectJ?
  • ¿Para qué usar línea de comandos si dispongo de Eclipse u otro IDE?
  • ¿Para qué tantos puntos de unión si quizá baste con las llamadas a métodos?
  • ¿Qué ventajas tiene modificar el modelo de objetos de un diseño con las introducciones de AspectJ?
3. Puntos de unión, cortes, avisos, introducciones y aspectos con detalle
  • Dominando los conceptos con un ejemplo (learning by example)
  • El modelo de puntos de unión en AspectJ
  • Categorización de los puntos de unión
  • El lenguaje de expresión y los patrones de firmas para los cortes
  • Los avisos para la construcción de crosscuttings dinámicos
  • Clasificación de los avisos de AspectJ
  • Avisos y métodos: similitudes y diferencias
  • El contexto de los puntos de unión. Exposición del contexto a los avisos
  • Acceso al contexto mediante técnicas de reflexión
  • Las declaraciones inter-tipos de AspectJ
  • Los patrones de diseño de GOF programados con introducciones de AspectJ

Competencias adquiridas con el Tema 3
  • Dominar el modelo de puntos de unión
  • Expresar los cortes usando las dos sintaxis disponibles
  • Diseñar patrones de diseño con AspectJ
  • Utilización del contexto de los puntos de unión en los avisos de los aspectos
  • Determinar las necesidades de cortes dinámicos y estáticos
  • Modificar la estructura de las clases y objetos mediante declaraciones inter-tipos
  • Responder con precisión las siguientes preguntas:
  • ¿Cuáles son las ventajas de un modelo rico de puntos de unión?
  • ¿Qué ventajas tiene el uso de AOP en la programación de patrones de diseño?
  • ¿En qué contextos es importante la precedencia de aspectos?
  • ¿Cómo presentar un modelo de diseño que se programa con aspectos?
  • ¿Qué técnicas pueden usarse para modelar aspectos con UML?
  • ¿Cómo tener acceso al contexto de ejecución de un programa con aspectos?

4. La integración de AspectJ con el marco de trabajo Spring

  • Las limitaciones de AOP en Spring
  • Los detalles de Spring AOP
  • Programación orientada a aspectos basada en proxies dinámicos
  • El soporte para @AspectJ en Spring
  • La inyección de dependencias para la configuración de aspectos
  • La selección del sistema AOP adecuado para aplicaciones con Spring

Competencias adquiridas con el Tema 4
  • Programar aspectos con las facilidades de Spring AOP
  • Justificar las limitaciones de Spring AOP
  • Describir las diferencias entre tejido de código y proxies dinámicos para la implementación de los aspectos
  • Describir la función de DI en la configuración de aspectos
  • Responder con precisión las siguientes preguntas:
  • ¿Qué ventajas y desventajas tiene la técnica de proxies dinámicos?
  • ¿Qué tanto debe usarse de AspectJ en una aplicación con Spring?
  • ¿Para qué tantos puntos de unión si quizá baste con las llamadas a métodos?


5. Aplicaciones de AspectJ con Spring

  • Técnicas de monitoreo
  • Cumplimiento del código con las políticas y decisiones del diseño
  • Patrones de diseño
  • Control de la concurrencia
  • Administración de las transacciones de la aplicación
  • Implementación de la seguridad de la aplicación
  • Mejoras significativas con aspectos a la lógica de negocio de la aplicación

Competencias adquiridas con el Tema 5

La más importante que se espera del curso: APLICAR AOP PARA RESOLVER PROBLEMAS REALES EN APLICACIONES REALES


La empresa Bests2s

Fundada en 2009 por un grupo de doctores reconocidos en las áreas de Computación, Informática e Inteligencia Artificial, “Bests2s Soluciones y Servicios de Software, Desarrollo Académico y Capacitación” es un equipo formado por profesionales del software altamente capacitados en soluciones basadas en tecnología de Java, Inteligencia de Negocios y en Sistemas Inteligentes así como también en el desarrollo académico y la capacitación en estas tecnologías.

Con un promedio de 20 años de experiencia en Consultoría, Docencia, Desarrollo Académico y Capacitación, la fortaleza de Bests2s reside en su gente. Este experimentado equipo de trabajo provee liderazgo técnico, liderazgo académico, experiencia en las mejores prácticas, mejores principios y mejores procesos, en el manejo de proyectos y en el desarrollo de sistemas de software.

No comments: