Está en la página 1de 4

[Programacin] Introduccin a la Programacin

Orientada a Aspectos
por soci@delclub el 09/01/2012 con 0 Comentarios en Arquitectura , Paradigmas , Programacion
Este articulo nos dara un breve introduccin por el concepto de la Programacin Orientada a Aspectos, para ello empezaremos por el
principio, y eso nos lleva a la pregunta.

Que es un Aspecto?
Para la definicin correcta de que es un aspecto, describiremos el marco realizado por el creado de la Proramacin Orienta a
Aspectos Gregor Kickzales y su grupo, ellos proponian que se deben de agrupar todos los lenguajes orientados a objetos, los
procedimentales y los funcionales y crear una nueva clasificacion llamada Lenguajes de Procedimiento Generalizado, ya que los
mecanismos claves de abstraccin y composicin de estos lenguajes pueden verse agrupados bajo una misma raz. Esa raz tendra
la forma de un procedimiento generalizado. Los mtodos de diseo que han surgido para estos lenguajes tienden a dividir el sistema
en unidades de comportamiento o funciones. A este estilo se le conoce como descomposicin funcional.
En general, decimos que dos propiedades se entrecruzan, si al implementarse deben componerse de manera diferente, y an deban
ser coordinadas. Esto se debe a que tienen un comportamiento en comn. Al proveer los lenguajes de Procedimiento Generalizado
solamente un nico medio de composicin, siendo el programador quien debe realizar la tarea extra de co-componer manualmente las
propiedades que se entrecruzan, lo cual lleva a un oscurecimiento y a un aumento de la complejidad del cdigo.
Basados en el marco descrito anteriormente, se pueden diferenciar los aspectos de los dems integrantes del sistema, al momento de
implementar una propiedad, tenemos que la misma se comportara de una de las dos siguientes formas:

Componente:
Es aquel que puede encapsularse claramente dentro de un procedimiento generalizado. Un elemento es claramente encapsulado
si est bien localizado, es fcilmente accesible y resulta sencillo componerlo.

Aspecto:
Es aquel que no puede encapsularse claramente en un procedimiento generalizado. Los aspectos tienden a ser propiedades que
afectan la performance o la semntica de los componentes en forma sistemtica (Ejemplo: sincronizacin, manejo de memoria,
distribucin, etc.)
Una vez diferenciados los aspectos de los componentes de un sistema, estamos en condiciones de definir a un aspecto como un
concepto que no es posible encapsularlo claramente y que resulta diseminado por todo el cdigo. Los aspectos son la unidad bsica
de la programacin orientada a aspectos.
La definicin formal y con la que se trabaja actualmente es: Un aspecto es una unidad modular que se disemina por la estructura de otras
unidades funcionales.
Los aspectos existen tanto en la etapa de diseo como en la de implementacin.
Un aspecto de diseo es una unidad modular del diseo que se entremezcla en la estructura de otras partes del diseo.
Un aspecto de implementacin es una unidad modular del programa que aparece en otras unidades modulares del programa.

Que es la Programacin Orientada a Aspectos (POA)?


La Programacin Orientada a Aspectos (POA) es un paradigma de programacin que busca brindar un contexto al programador que
permita separar claramente componentes y aspectos, separando componentes entre s, aspectos entre s y aspectos de componentes,

a travs de mecanismos que hagan posible abstraerlos y componerlos para producir el sistema completo, permitiendo asi una
adecuada modularizacin de las aplicaciones y posibilitar una mejor separacin de incumbencias, encapsulando los diferentes
conceptos que componen una aplicacin en entidades bien definidas eliminando las dependencias entre cada uno de los mdulos
consiguiendo definir mejor los conceptos, eliminando la dispersin del cdigo y las implementaciones resultan ms comprensibles,
adaptables y reusables.
La POA nos ayuda a modificar dinmicamente nuestro modelo esttico para incluir el cdigo requerido para cumplir los requerimientos
secundarios sin tener que modificar el modelo esttico original, de echo, no necesitaremos tener el cdigo original. Mejor an,
normalmente podremos tener este cdigo adicional en una nica localizacin en vez de tenerlo repartido por el modelo existente
(POO).
El principal objetivo de la POA es la separacin de las funcionalidades dentro del sistema, en funcionalidades comunes que son las
utilizadas a lo largo de la aplicacin y en las funcionalidades propias de cada mdulo. Cada una de estas funcionalidades comunes se
encapsular en una entidad.

Trminos de la Programacin Orientada a Aspectos (POA)


La programacin Orientada a Aspectos esta compuesta por una serie de conceptos o terminos que describiremos a continuacin:

Aspect (Aspecto): es una funcionalidad transversal (cross-cutting) que se va a implementar de forma modular y separada del
resto del sistema.

Join Point (Punto de Cruce o de Unin): es un punto de ejecucin dentro del sistema donde un aspecto puede ser
conectado, como una llamada a un mtodo, el lanzamiento de una excepcin o la modificacin de un campo. El cdigo del
aspecto ser insertado en el flujo de ejecucin de la aplicacin para aadir su funcionalidad.

Advice (Consejo): es la implementacin del aspecto, es decir, contiene el cdigo que implementa la nueva funcionalidad.

Se

insertan en la aplicacin en los Puntos de Cruce.

Pointcut (Puntos de Corte): define los Consejos que se aplicarn a cada Punto de Cruce. Se especifica mediante Expresiones
Regulares o mediante patrones de nombres (clases, mtodos o campos), e incluso dinmicamente en tiempo de ejecucin segn
el valor de ciertos parmetros.

Introduction (Introduccin): permite aadir mtodos o atributos a clases ya existentes.

Target (Destinatario) es la clase aconsejada, la clase que es objeto de un consejo. Sin POA, esta clase debera contener su
lgica, adems de la lgica del aspecto.

Proxy (Resultante) es el objeto creado despus de aplicar el Consejo al Objeto Destinatario. El resto de la aplicacin nicamente
tendr que soportar al Objeto Destinatario (pre-POA) y no al Objeto Resultante (post-POA).

Weaving (Tejido) es el proceso de aplicar Aspectos a los Objetos Destinatarios para crear los nuevos Objetos Resultantes
en

los especificados Puntos de Cruce. Este proceso puede ocurrir a lo largo del ciclo de vida del Objeto Destinatario:

Aspectos en Tiempo de Compilacin, que necesita un compilador especial.


Aspectos en Tiempo de Carga, los Aspectos se implementan cuando el Objeto Destinatario es cargado. Requiere un ClassLoader
especial.
Aspectos en Tiempo de Ejecucin.

Que nos aporta la POA respecto a POO?


La Programacin Orientada a Aspectos (POA) a diferencia de la Programacin Orientada a Objetos (POO) aporta un puntito
interesante al asunto. A travs de la POO los sistemas toman la forma de un conjunto de objetos que colaboran entre s, siendo su
mayor fortaleza demostrable cuando hay que modelar conceptos comunes. Sin embargo, la POO falla al modelar los conceptos que
se entrecruzan. En cambio la POA logra este objetivo al tratar los conceptos entrecruzados como elementos de primera clase,
extrayndolos horizontalmente de la estructura vertical del rbol de herencia.

La gracia del tema est en que parece haber sido ideada ms por programadores que por arquitectos. Su ndole es de carcter
prctico, y va ms all del trazado de subdivisones, diagramas de abstracciones, o esquemas de muy alto nivel que son
muy cuestionables en su utilidad en el da a da.

Para que exista POA debe de existir POO?


No, ya que una implementacin POA puede utilizar como metodologa base cualquier paradigma de programacin, manteniendo
intactos los beneficios de ese paradigma de programacin. Se elige POO como el sistema base para obtener los beneficios de una
mejor implementacin de los conceptos comunes. Bajo esta implementacin los conceptos individuales pueden emplear tcnicas
orientadas a objetos. Esto es anlogo a la forma en que actan los lenguajes procedurales como lenguaje base a muchos lenguajes
orientados a objetos. En POA la implementacin de los conceptos son independientes. Esta independencia la distingue de las tcnicas
inherentes a la POO. En POA, el flujo de composicin va desde de los conceptos que se entrecruzan al concepto principal, mientras
que en la POO el flujo va en direccin opuesta.

Beneficios de la POA
Entre los beneficios podemos listar:

Menos costes de desarrollo.

Menos errores o fallos.

Aseguramiento de la Calidad.

Mantenible y Escalable.

En conclusin, la programacin orientada a aspectos (POA), nos proporciona un mtodo para escribir nuestras aplicaciones con un
cdigo ms limpio y manejable, en contraposicin a la tradicional programacin orientada a objetos, donde las funciones crticas como
la gestin de transacciones, excepciones, cach y concurrencia estn mezcladas habitualmente con la funcionalidad propia de la
aplicacin. Los aspectos nos facilitan el escribir cdigo ms claro y menos disperso, permitindonos el desarrollo y el mantenimiento
de aplicaciones complejas ms fcilmente. Los aspectos nos permiten, en definitiva, ser ms productivos.

La POA no sustituye a la POO solo la extiende.

También podría gustarte