La Programación Orientada a Aspectos (AOP) es un paradigma de programación basado en la idea de separación de funcionalidad para mejorar la partición de programas en módulos .
La metodología AOP fue propuesta por un grupo de ingenieros del Centro de Investigación Xerox PARC dirigido por Gregor Kiczales. También desarrollaron una extensión orientada a aspectos para el lenguaje Java , llamada AspectJ - (2001).
Los paradigmas de programación existentes ( procedimiento , modular , programación orientada a objetos (OOP) y diseño orientado al dominio ) brindan ciertas formas de separar y resaltar la funcionalidad: funciones , módulos , clases , pero algunas funcionalidades que utilizan los métodos propuestos no se pueden separar en entidades separadas. Tal funcionalidad se denomina end-to- end (del inglés disperso - disperso o inglés enredado - entrelazado), ya que su implementación se distribuye entre varios módulos del programa. La funcionalidad de un extremo a otro conduce a un código disperso y confuso que es difícil de entender y mantener.
El registro y el manejo de excepciones son ejemplos típicos de funcionalidad transversal. Otros ejemplos: rastreo ; autenticación y verificación de los derechos de acceso ; programación de contratos (en particular, verificación de condiciones previas y posteriores). Para un programa escrito en el paradigma OOP, cualquier funcionalidad que no se haya descompuesto es de transferencia.
Sin embargo, según algunos autores [1] , AOP también se puede utilizar con éxito para resolver problemas de seguridad, multiproceso , gestión de transacciones y muchos otros.
Todos los lenguajes AOP proporcionan un medio para aislar la funcionalidad de un extremo a otro en una entidad separada. Dado que AspectJ es el antecesor de esta dirección, los conceptos utilizados en esta extensión se han extendido a la mayoría de los lenguajes AOP.
Conceptos básicos de AOP:
Desarrollo de software | |
---|---|
Proceso | |
Conceptos de alto nivel | |
Direcciones |
|
Metodologías de desarrollo | |
Modelos |
|
Figuras notables |
|