What's AOP?
AOP, de la sigla Aspect Oriented Programming (Programación Orientada a Aspectos), es una tecnología que intenta resolver un viejo problema que surge en el desarrollo de software [1]. Este problema está relacionado con algo que se denomina separación de incumbencias.
Las incumbencias son asuntos o temas que se deben tener en cuenta para resolver un problema. Uno de estos asuntos está dado por el comportamiento principal de una tarea dada, pero para que esta tarea se lleve a cabo con éxito hay que tener en cuenta otros asuntos, como por ejemplo: la sincronización, la persistencia, la distribución, autenticación, etc. Estos asuntos se llaman Aspectos.
Al lograr la separación en incumbencias disminuye la complejidad de la tarea y mejoran la calidad, mantenibilidad, reusabilidad, etc.
La separación en aspectos es independiente del paradigma de programación que se esté usando para desarrollar el software. En el caso del paradigma orientado a objetos se puede ver el problema de la separación de incumbencias en algunos patrones de diseño, como por ejemplo: el Observer, el Visitor o el Mediator, donde para aplicarlos hay que adaptar a las clases involucradas este comportamiento.
Un caso típico de incumbencias son las denominadas incumbencias transversales (crosscutting concerns), donde aparecen las responsabilidades atravesando diferentes partes del sistema que son disconexas. Un ejemplo típico es el logging, el cual es requerido en varios puntos de ejecución del sistema que no están relacionados.

<< Home