Escolar Documentos
Profissional Documentos
Cultura Documentos
INTRODUCCION
que proveer los medios para implementar los aspectos deseados de una manera intuitiva,
natural y concisa.
ANTECEDENTES
Los conceptos y tecnologas reunidos bajo el nombre "programacin orientada a
aspectos" (AOP, por las siglas de Aspect-Oriented Programming) buscan resolver un
problema identificado hace tiempo en el desarrollo de software. Se trata del problema de
la separacin de incumbencias (separation of concerns). AOP no es el nico intento por
solucionar este problema, hay varias propuestas, muchas de las cuales se agrupan (junto
con AOP) en el campo de estudio denominado ASoC (Advanced Separation of
Concerns) [1].
El principio de separacin de incumbencias fue identificado en la dcada de 1970,
plantea que un problema dado involucra varias incumbencias que deben ser identificadas
y separadas. Las incumbencias son los diferentes temas o asuntos de los que es necesario
ocuparse para resolver el problema. Una de ellas es la funcin especfica que debe
realizar una aplicacin, pero tambin surgen otras como por ejemplo distribucin,
persistencia, replicacin, sincronizacin, etc. Separando las incumbencias, se disminuye
la complejidad a la hora de tratarlas y se puede cumplir con requerimientos relacionados
con la calidad como adaptabilidad, mantenibilidad, extensibilidad y reusabilidad [1].
El principio puede aplicarse de distintas maneras. Por ejemplo, separar las fases del
proceso de desarrollo puede verse como una separacin de actividades de ingeniera en
el tiempo y por su objetivo. Definir subsistemas, objetos y componentes son otras
formas de poner en prctica el principio de separacin de incumbencias. Por eso
podemos decir que se trata de un principio rector omnipresente en el proceso de
desarrollo de software [1].
Las tcnicas de modelado que se usan en la etapa de diseo de un sistema se basan en
partirlo en varios subsistemas que resuelvan parte del problema o correspondan a una
parte del dominio sobre el que trata. Estas tcnicas sufren en su mayora la llamada
dio lugar a un conjunto temprano de seguidores como tambin a varios detractores, los
cuales notaban claramente la debilidad e incompletitud de los conceptos [1].
A principios de 1998 fue liberada la primera versin (0.1) de AspectJ, como una
alternativa para POA genrica, a diferencia de los lenguajes de propsito especfico que
lo precedieron. Gracias al soporte gubernamental que recibi Kiczales el lenguaje pudo
seguir evolucionando desde este momento, convirtindose en la prueba y ejemplo de los
conceptos promovidos por POA. Hoy contamos con la versin 1.5 de AspectJ, estable y
madura, y con una comunidad de trabajo activa alrededor del lenguaje [1].
Adems de AspectJ, existen otras plataformas ms o menos maduras para iniciarse en el
tema de aspectos. Composition Filters es un trabajo previo al de Kiczales, desarrollado
por el grupo TRESE en el departamento de Ciencias de Computacin de la Universidad
de Twente, en Holanda. ste ha sido adaptado a los conceptos de aspectos y es
soportado sobre varios lenguajes tradicionales, como Java, C++ y Smalltalk y .NET.
HyperJ es un proyecto de IBM que soporta un modelo por aspectos. Otras
implementaciones son JBoss-AOP, Spring AOP, Aspecto++, PHPAspect, AspectS y
AspectXML1 [1].
La POA es un paradigma que recin est naciendo. Se estn realizando las primeras
experiencias prcticas para mostrar su aplicabilidad, y obtener datos empricos que
estimulen la investigacin en el tema. La POA est en su primera etapa, donde
constantemente surgen nuevos problemas, nuevas herramientas, nuevos contextos en los
cuales es posible aplicar aspectos. Este panorama hace pensar que la programacin
orientada a aspectos se encuentra en mismo lugar que se encontraba la POO hace veinte
aos [1].
DESARROLLO
Historia
No fue hasta 1995 cuando se public la primera definicin temprana del concepto de
aspecto, realizada tambin por el grupo Demeter, a la que se hace referencia en el
apartado siguiente [2].
Aspecto
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 programa o de
cdigo es una unidad modular del programa que aparece en otras unidades modulares
del programa [2].
De manera ms informal podemos decir que los aspectos son la unidad bsica de la
POA, y pueden definirse como las partes de una aplicacin que describen las cuestiones
claves relacionadas con la semntica esencial o el rendimiento. Tambin pueden verse
como los elementos que se diseminan por todo el cdigo y que son difciles de describir
localmente con respecto a otros componentes [2].
Declaracin del Aspecto (Aspect): permite indicar las caractersticas del aspecto. Si
permite acceder a campos privados, si extiende una clase o otro aspecto abstracto, si
implementa un interfase o si es aplicable slo para unos determinados puntos de corte
(Pointcut)[4].
Puntos de Unin(Join Point): es una posicin bien definida dentro del cdigo principal.
Un Join Point puede ser la llamada a un mtodo, la ejecucin de un constructor o la
asignacin de un miembro de un objeto [4].
Fundamentos POA
A la hora de tejer los componentes y los aspectos para formar el sistema final, es claro
que se necesita una interaccin entre el cdigo de los componentes y el cdigo de los
aspectos. Tambin es claro que esta interaccin no es la misma interaccin que ocurre
entre los mdulos del lenguaje base, donde la comunicacin est basada en
declaraciones de tipo y llamadas a procedimientos y funciones. La POA define entonces
una nueva forma de interaccin, provista a travs de los puntos de enlace (join points)
[5].
Los puntos de enlace brindan la interfaz entre aspectos y componentes; son lugares
dentro del cdigo donde es posible agregar el comportamiento adicional que destaca a la
POA. Dicho comportamiento adicional es especificado en los aspectos [5].
Para conseguir esto, tanto los aspectos como las estructuras entrelazadas se deben
modelar como objetos y deben mantenerse en el ejecutable. Dado un interfaz de
reflexin, el tejedor es capaz de aadir, adaptar y borrar aspectos de forma dinmica, si
as se desea, durante la ejecucin.
ASPECTC++
CONCLUSIONES
Una mayor facilidad para razonar sobre las materias, ya que estn separadas y tienen una
dependencia mnima.
Bibliografa
[1] Gesto, E. 2006. Mquina de Aspectos: un enfoque alternativo para la
implementacin de aspectos. < http://ficcte.unimoron.edu.ar/wicc/Trabajos/III%20%20isbd/595-Maquina_de_Aspectos.pdf>. (27/03/07)
[2] Quintero, A. 2000. Visin General de la Programacin Orientada a Aspectos
<http://www.lsi.us.es/docs/informes/aopv3.pdf>. (17/04/07)
[3] Asteasuain, F. 2005. Desarrollo orientado a Aspectos.
<http://www.programemos.com/index.php?option=com_content&task=view&id=164&I
temid=73>.(17/04/07)
[4] Lorente M. 2005 Introduccin AspectJ.
<http://www.programemos.com/index.php?option=com_content&task=view&id=12&It
emid=28>.(17/04/07)
[5] Asteasuain, F. 2005. Fundamentos POA.
<http://www.programemos.com/index.php?option=com_content&task=view&id=163&I
temid=74>. (17/04/07).