La Programación Orientada a Aspectos o POA (en inglés: aspect-oriented programming) es un paradigma de programación que permite una adecuada modularización de las aplicaciones y posibilita una mejor separación de responsabilidades (Obligación o correspondencia de hacer algo).
Gracias a la POA se pueden encapsular los diferentes conceptos que componen una aplicación en entidades bien definidas, eliminando las dependencias entre cada uno de los módulos. De esta forma se consigue razonar mejor sobre los conceptos, se elimina la dispersión del código y las implementaciones resultan más comprensibles, adaptables y reusables. Varias tecnologías con nombres diferentes se encaminan a la consecución de los mismos objetivos y así, el término POA es usado para referirse a varias tecnologías relacionadas como los métodos adaptativos, los filtros de composición, la programación orientada a sujetos o la separación multidimensional de competencias.
El principal objetivo de la POA es la separación de las funcionalidades dentro del sistema:
Cada funcionalidad común se encapsulará en una entidad.
Muchas veces nos encontramos, a la hora de programar, con problemas que no podemos resolver de una manera adecuada con las técnicas habituales usadas en la programación imperativa o en la programación orientada a objetos. Con éstas, nos vemos forzados a tomar decisiones de diseño que repercuten de manera importante en el desarrollo de la aplicación y que nos alejan con frecuencia de otras posibilidades.
A menudo, hace falta escribir líneas de código que están distribuidas por toda o gran parte de la aplicación, para definir la lógica de cierta propiedad o comportamiento del sistema, con las consecuentes dificultades de mantenimiento y desarrollo. En inglés este problema se conoce como scattered code, que podríamos traducir como código disperso. Otro problema que puede aparecer, es que un mismo módulo implemente múltiples comportamientos o aspectos del sistema de forma simultánea. En inglés este problema se conoce como tangled code, que podríamos traducir como código enmarañado. El hecho es que hay ciertas decisiones de diseño que son difíciles de capturar, debido a que determinados problemas no se pueden encapsular claramente de igual forma que los que habitualmente se resuelven con funciones u objetos.
AspectC++ es un compilador que permite desarrollar aspectos en C++.
AspectJ es una extensión Java del proyecto Eclipse para ayudar en el desarrollo orientado a aspectos.
Aspect, un módulo Perl disponible en CPAN para la Programación Orientada a Aspectos (en inglés).
PHP-AOP (AOP.io) es una lib que proporciona todo el paradigma de la POA en PHP.
phpAspect es una extensión PHP para implementar el paradigma de la POA, que, mediante árboles de decisión XML, realiza el weaving del software para ser ejecutado como PHP estándar.
FLOW3 es un framework MVC de PHP incluye un módulo para poder realizar Programación orientada a Aspectos en nuevos desarrollos.
AOP con SpringFramework 2.5 es un Framework de Java que permite programar en el paradigma de Aspectos utilizando Anotación Java.
Aspyct AOP es un módulo de Python que permite incluir Programación orientada a Aspectos a programas ya existentes escritos en Python o a nuevos desarrollos.
Páginas de personas involucradas en la investigación de la POA:
Escribe un comentario o lo que quieras sobre Programación orientada a aspectos (directo, no tienes que registrarte)
Comentarios
(de más nuevos a más antiguos)