Programación Orientada a Aspectos (AOP , Aspect-Oriented Programming)

Que es Programación Orientada a Aspectos o Aspect-Oriented Programming (AOP)?
La Programación Orientada a Aspectos o Aspect-Oriented Programming (AOP) es un paradigma de programación que ayuda a conseguir una modularización de las aplicaciones y una separación de los conceptos de un sistema mucho más óptimas.


La Programación Orientada a Aspectos o Aspect-Oriented Programming encapsula los diferentes conceptos de la aplicación en entidades que, funcionalmente, se solapan lo mínimo posible entre sí y por lo tanto eliminando al máximo las dependencias entre módulos.

Por ende, se abre un abanico de posibilidades para:
  • Un mejor análisis y diseño de los conceptos por separado del sistema.
  • Se centraliza la implementación de los conceptos, separando su implementación y utilización del resto del código.
  • Obtenemos una modularización óptima del sistema, lo que mejora la capacidad de reutilización.
  • Los sistemas son más escalables y más fácilmente mantenibles, agilizando los nuevos desarrollos.
Conceptos Fundamentales de AOP
  • Aspect (Aspecto): Es la funcionalidad que se atraviesa a lo largo de la aplicación (cross-cutting) que se va a implementar de forma modular y separada del resto del sistema. El ejemplo más común y simple de un aspecto es el login al sistema, ya que necesariamente afecta a todos los accesos al sistema por cuestión de seguridad.
  • Jointpoint (Punto de Cruce): Es un punto de ejecución dentro del sistema donde un aspecto puede ser conectado. Por ej: una llamada a un método, el lanzamiento de una excepción o la modificación de un campo. El código del aspecto será insertado en el flujo de ejecución de la aplicación para añadir su funcionalidad.
  • Advice (Consejo): Es la implementación del aspecto, es decir, contiene el código que implementa la nueva funcionalidad. Se insertan en la aplicación en los jointpoints.
  • Pointcut (Puntos de Corte): Define los advices que se aplicarán a cada pointcut. Se especifica mediante Expresiones Regulares o mediante patrones de nombres (de clases, métodos o campos), e incluso dinámicamente en tiempo de ejecución según el valor de ciertos parámetros.
  • Introduction (Introducción): Permite añadir métodos o atributos a clases ya existentes. Un ejemplo en el que resultaría útil es la incerción de un atributo para auditoría que mantenga la fecha de la última modificación de un objeto, mediante una variable y un método setUltimaModificacion(fecha), que podrían ser introducidos en todas las clases (o sólo en algunas) para proporcionarlas esta nueva funcionalidad.
  • Target (Destinatario): Es la clase aconsejada, la clase que es objeto de un advice. Sin AOP, esta clase debería de contener su lógica y además la lógica del aspecto.
  • Proxy (Resultante): Es el objeto creado después de aplicar el advice al Objeto target. El resto de la aplicación únicamente tendrá que soportar al Objeto target (pre-AOP) y no al Objeto proxy (post-AOP).
  • Weaving: Es el proceso de aplicar Aspectos a los Objetos target para crear los nuevos Objetos proxy en los especificados jointpoint. Este proceso puede ocurrir a lo largo del ciclo de vida del Objeto target:
    • Aspectos en Tiempo de Compilación, que necesita un compilador especial.
    • Aspectos en Tiempo de Carga, los Aspectos se implementan cuando el Objeto target es cargado en la JVM. Requiere un ClassLoader especial.
    • Aspectos en Tiempo de Ejecución.

Con que objeto leíste hasta el final del articulo? Porque te interesaste?
Contanos tus necesidades para poder investigar y ayudarte.

No hay comentarios:

Publicar un comentario en la entrada