<Secci�n inform�tica/>
This page contains information about Aspect Oriented Programming, the topic of my project for Computer Engineering. Information may not be up to date, as I got the degree on 2003. Anyway, it can be use as a first introduction to AOP. There are many sites in internet where you can read about this topic. Check the links I recommend here. All the following information in spanish. Sorry for the inconveniences. |
<PROGRAMACI�N ORIENTADA A ASPECTOS/>
La Programaci�n Orientada a Aspectos fue el tema de mi proyecto final de carrera. En lugar de publicar todo el proyecto, que ser�a demasiado pesado, he creado cuatro peque�os documentos con los cap�tulos que he considerado fundamentales en mi proyecto. El contenido de cada uno de los apartados no han sido modificado, por lo que deber�s entenderlos como las partes de un todo, y no como documentos completos y consistentes. Si est�s interesado en leer el proyecto completo, ponte en contacto conmigo en mi direcci�n de correo ([email protected]). Sin embargo, no creo que pueda responder a preguntas, ya que desde que lo escrib�, no he vuelto a trabajar con el tema.
Introducci�n
a la POA.pdf 138Kb
AspectJ
en la Programaci�n Orientada a Aspectos.pdf 552Kb
HyperJ.pdf 113Kb
Los Aspectos en el dise�o.pdf
122Kb
Antes de leer estos documentos quiz�s quieras
hacerte una idea de qu� es la Programaci�n Orientada a Aspectos...
La Programaci�n Orientada a Aspectos (POA) es un paradigma de programaci�n relativamente reciente cuya intenci�n es permitir una adecuada modularizaci�n de las aplicaciones y posibilitar una mejor separaci�n de conceptos. Gracias a la POA se pueden capturar los diferentes conceptos que componen una aplicaci�n en entidades bien definidas, de manera apropiada en cada uno de los casos y eliminado las dependencias inherentes 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 adaptivos, los filtros de composici�n, la programaci�n orientada a sujetos o la separaci�n multidimensional de competencias.
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 procedural o en la 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. Por otro lado, la implementaci�n de dichas decisiones a menudo implica 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 que ello implica. En ingl�s este problema se conoce como tangled code, que podr�amos traducir como "c�digo enredado". El hecho es que hay ciertas decisiones de dise�o que son dif�ciles de capturar con las t�cnicas antes citadas, debi�ndose al hecho de que ciertos problemas no se dejan encapsular de igual forma que los que habitualmente se han resuelto con funciones u objetos. La resoluci�n de �stos supone o bien la utilizaci�n de repetidas l�neas de c�digo por diferentes componentes del sistema, o bien la superposici�n dentro de un componente de funcionalidades dispares. La programaci�n orientada a aspectos, permite, de una manera comprensible y clara, definir nuestras aplicaciones considerando estos problemas. Por aspectos se entiende dichos problemas que afectan a la aplicaci�n de manera horizontal y que la programaci�n orientada a aspectos persigue poder tenerlos de manera aislada de forma adecuada y comprensible, d�ndonos la posibilidad de poder construir el sistema componi�ndolos junto con el resto de componentes.
La programaci�n orientada a objetos (POO) supuso un gran paso en la ingenier�a del software, ya que presentaba un modelo de objetos que parec�a encajar de manera adecuada con los problemas reales. La cuesti�n era saber descomponer de la mejor manera el dominio del problema al que nos enfrent�ramos, encapsulando cada concepto en lo que se dio en llamar objetos y haci�ndoles interactuar entre ellos, habi�ndoles dotado de una serie de propiedades. Surgieron as� numerosas metodolog�as para ayudar en tal proceso de descomposici�n y aparecieron herramientas que incluso automatizaban parte del proceso. Esto no ha cambiado y se sigue haciendo en el proceso de desarrollo del software. Sin embargo, frecuentemente la relaci�n entre la complejidad de la soluci�n y el problema resuelto hace pensar en la necesidad de un nuevo cambio. As� pues, nos encontramos con muchos problemas donde la POO no es suficiente para capturar de una manera clara todas las propiedades y comportamientos de los que queremos dotar a nuestra aplicaci�n. As� mismo, la programaci�n procedural tampoco nos soluciona el problema.
Entre los objetivos que se ha propuesto la POA est�n, principalmente, el de separar conceptos y el de minimizar las dependencias entre ellos. Con el primer objetivo se persigue que cada decisi�n se tome en un lugar concreto y no diseminada por la aplicaci�n. Con el segundo, se pretende desacoplar los distintos elementos que intervienen en un programa. Su consecuci�n implicar�a las siguientes ventajas:
- Un c�digo menos enmara�ado,
m�s natural y m�s reducido.
- Mayor facilidad para razonar sobre los conceptos, ya que est�n separados
y las dependencias entre ellos son m�nimas.
- Un c�digo m�s f�cil de depurar y m�s f�cil
de mantener.
- Se consigue que un conjunto grande de modificaciones en la definici�n
de una materia tenga un impacto m�nimo en las otras.
- Se tiene un c�digo m�s reusable y que se puede acoplar y desacoplar
cuando sea necesario.
�
<Publicaciones/>
Basado en la experiencia de mi proyecto y el trabajo de investigaci�n de Antonia Reina (mi tutora de proyecto) se present� en las VIII Jornadas de Ingenier�a del Software y Bases de Datos (JISBD) celebradas en Alicante en Noviembre de 2003 un trabajo sobre reutilizaci�n de aspectos, donde entre otras cosas, se plantea la necesidad de hacer una clasificaci�n de aspectos seg�n su utilidad (aspectos de rendimiento, �tiles al desarrollo, etc) o las fases del ciclo de vida donde han de ser identificados (fase de requisitos, etc.). Se plantea que ser�a interesante hacer una caracterizaci�n de los aspectos m�s frecuentes para facilitar su identificaci�n en diversas aplicaciones y promover su reutilizaci�n. En general en las jornadas se plante� una discusi�n sobre la dificultad de identificar aspectos, y del peligro de considerar qu� casi todo se modele como aspectos, algo calificado por Miguel Pessoa Monteiro como el peligro de caer en el “aspect esquizofrenia”.
Una experiencia pr�ctica reutilizando aspectos, 84Kb (A. M. Reina, J. Torres, M. Toro, J. A. �lvarez, and Juan M. Nieto)
El sitio de AspectJ: www.aspectj.org
La p�gina de Gregor Kiczales: www2.parc.com/csl/members/gregor/
La p�gina de Mira Mezini: www.informatik.uni-siegen.de/~mira/
La p�gina de Cristina Videira Lopes: www.ics.uci.edu/~lopes/
P�gina de Karl Lieberherr: www.ccs.neu.edu/home/lieber/
P�gina del grupo Demeter: www.ccs.neu.edu/research/demeter/
Sitio para el Desarrollo de Software Orientado a Aspectos: www.aosd.net
Sitio que re�ne varios links sobre la POA: www.iturls.com/english/techhotspot/TH_e.asp
Sitio en Espa�ol sobre Aspectos y AspectJ: www.programemos.com
�
�
�
�