3. Separaci´ on de Concerns y Aspect Oriented Programming
4.2. La Posici´on y los Recursos como Parte de la Sensibilidad al Con-
4.2.2. Capa de Adaptaci´on
Identificando Concerns de Adaptaci´on
La funcionalidad principal de la aplicaci´on puede resumirse como asistir al usuario durante sus recorridos. Los concerns que identificamos en este punto son:
1. La funcionalidad principal de la aplicaci´on: asistente de turismo.
2. Concern de Visualizaci´on: afecta la forma en la que se muestr la informaci´on al usuario, por ejemplo si el dispositivo s´olo permite mostrar texto en su pantalla, se deben realizar las adaptaciones necesarias para reemplazar im´agenes por textos descriptivos. En el caso de poseer un display gr´afico, este concern nos indica que las im´agenes que deben ser mostradas escal´andolas de acuerdo a la resoluci´on y cantidad de colores soportados por el dispositivo.
3. Concern de comunicaci´on: este concern tiene que ver con la optimizaci´on del recurso de red y el soporte a interrupciones de conectividad. Las adaptaciones en este concern incluyen compresi´on de datos, caching, etc.
4. Concern de administraci´on de memoria: este concern afecta a los requests al servidor y a la informaci´on que debe ser guardada en el dispositivo. Si ´este tiene poco espacio disponible es posible informarlo al servidor para que reduzca el tama˜no de las respuestas a ciertos requests.
5. Concern espacio-temporal: este concern afecta la forma en la que se hacen los requests al servidor, dichos requests pueden ser adaptados para incluir metain- formaci´on espacio-temporal, que luego es utilizada por el servidor para brindar respuestas m´as apropiadas a los requests del usuario.
Definici´on de Aspectos para Adaptaci´on
Asumiendo que estamos trabajando con un modelo orientado a objetos de la aplicaci´on debemos decidir cuales ser´an los objetos que pertenezcan a la dimensi´on principal de la aplicaci´on e identificar a aquellosconcernsque atraviesan la aplicaci´on. Debemos adem´as, identificar los puntos de la aplicaci´on base donde el comportamiento debe ser adaptado.
Dada la naturaleza del sistema, la mayor´ıa de las actividades ser´an mapeadas a requests que resuelve alg´un servidor. De los concerns nombrados anteriormente podemos ver que los ´ultimos cuatro afectan el comportamiento del primero. Podemos entonces pensarlos como aspectos1
, que modifican el funcionamiento de la aplicaci´on base (ver Figura 4.1).
Base Application Pervasive System Memory Band width Visualization Spatio−Temporal Location Context Awareness System Module 1 System Module 3 System Module 2 Invocations Adapted Behavior Implicit
Figura 4.2. Distintos concerns que afectan a la aplicaci´on base
Cada uno de estosconcerns tendr´a como efecto alg´un tipo de adaptaci´on. Desde la perspectiva de los modelos de orientaci´on a aspectos basados en la noci´on depointcut, es necesario definir los puntos de la aplicaci´on base donde se realizar´an las adapta- ciones. En la segunda capa de la Figura 4.1 se observan los aspectos de adaptaci´on y sus relaciones con la aplicaci´on base. Las relaciones estereotipadas como ✭✭pointcut✮✮
indican que el comportamiento del objeto al final de la relaci´on es modificado por los advices definidos en cada aspecto. Para ejemplificar esta situaci´on podemos imaginar el c´odigo de un request de la aplicaci´on base como el que sigue:
Un m´etodo de la aplicaci´on (listado 4.1) genera un request XML [41] pidiendo
1
1 p u b l i c String request (){ 2 r e t u r n " < REQUEST > 3 < USER_ID >232 </ USER_ID > 4 </ REQUEST > " ; 5 6 } Listing 4.1. XML request 1 p u b l i c a s p e c t B a n d w i d t h A s p e c t { 2 String a r o u n d(): c a l l( B a s e A p p l i c a t i o n . request (..)){ 3 String request = p r o c e e d(); 4 request += " < B A N D W I D T H _ C O N S T R A I N T S > 5 < MAX_SIZE > " + context . c u r r e n t B a n d w i d t h () 6 + " </ MAXSIZE > 7 </ B A N D W I D T H _ C O N S T R A I N T S > " ; 8 r e t u r n request ; 9 } 10 } 11 }
Listing 4.2. Implementaci´on en AspectJ del aspecto Bandwitdh
alg´un tipo de informaci´on.
El aspecto que corresponde al concern de comunicaciones puede adaptar el for- mato del request para agregar informaci´on sobre el estado del ancho de banda. Esta informaci´on podr´a ser utilizada por el servidor para generar una respuesta que sea transmisible en un tiempo razonable considerando velocidad disponible de la cone- xi´on. El listado de c´odigo 4.2 presenta una posible implementaci´on (simplificada) de esta funcionalidad en AspectJ [42].
N´otese que la l´ınea 2 define el pointcut que referencia al m´etodo request() en la aplicaci´on base. Asociado a este pointcut se define unadvice donde se implementa el comportamiento adaptativo. La cl´ausula around indica que la ejecuci´on deladvice se realiza reemplazando la ejecuci´on del m´etodo original request(). En la l´ınea 3 la palabra clave proceed() realiza una invocaci´on del m´etodo original (request()). El resto del c´odigo muestra c´omo se enriquece el XML original agreg´andole una res- tricci´on de ancho de banda2
. Si existieran varios m´etodos generadores de requests, esta adaptaci´on del comportamiento podr´ıa aplicarse a todos ellos escribiendo una expresi´on de pointcut que coincida con los mismos.
2
Se trata de una simplificaci´on con el fin de ahorrar espacio y no obscurecer el c´odigo, pues deber´ıa insertarse el bloque de XML extra antes del fin del request y no concatenarse.
De esta manera las adaptaciones correspondientes a cada concern pueden ser agregadas de forma independiente. Como resultado cadaconcernpermanece encapsu- lado en un aspecto. Varias adaptaciones correspondientes al mismoconcern deber´ıan ser implementadas como diferentes advices en el mismo aspecto. Nuevos puntos de adaptaci´on deber´ıan ser definidos como pointcuts tambi´en dentro del mismo aspecto.