You are on page 1of 6

Ing.

Francisco Ruiz Hidalgo Tcnicas Orientada a

Programacin Orientada a Aspectos


Olortegui Gonzales Mayra
Ortiz Arce Jordy
Rios Garcia Andy Pool
Universidad Nacional de la Amazona Peruana

ingeniera del software para construir


sistemas complejos utilizando el
principio de descomposicin, ya que
el modelo de objetos subyacente se
ajusta mejor a los problemas del
dominio real que la descomposicin
funcional. La ventaja que tiene es
que es fcil la integracin de nuevos
datos, aunque tambin quedan las
funciones esparcidas por todo el
cdigo, y tiene los inconvenientes de
que, con frecuencia, para realizar la
integracin de nuevas funciones hay
que modificar varios objetos, y de
que se produce un enmaraamiento
de los objetos en funciones de alto
nivel que involucran a varias clases. .
[2]

RESUMEN: La Programacin Orientada a


Aspectos o POA (en ingls: aspect-oriented
programming) es un paradigma de programacin
relativamente reciente cuya intencin es permitir
una adecuada modularizacin de las aplicaciones
y
posibilitar
una
mejor
separacin
de
incumbencias. Gracias a la POA se pueden
encapsular
los
diferentes conceptos que
componen una aplicacin en entidades bien
definidas, eliminando las dependencias entre cada
uno de los mdulos. De esta forma se consigue
razonar mejor sobre los conceptos, se elimina la
dispersin del cdigo y las implementaciones
resultan ms comprensibles, adaptables y
reusables. Varias tecnologas con nombres
diferentes se encaminan a la consecucin de los
mismos objetivos y as, el trmino POA es usado
para referirse a varias tecnologas relacionadas
como los mtodos adaptativos, los filtros de
composicin, la programacin orientada a sujetos
o la separacin multidimensional de competencias.
[1]

2 Planteamiento del Problema


Las tcnicas de implementacin
actuales tienden a implementar los
requerimientos usando metodologas
de una sola dimensin, forzando a
que todos los requerimientos sean
expresados en esa nica dimensin.
Esta dimensin resulta adecuada
para la funcionalidad bsica, pero no
para los otros requerimientos, los
cuales quedan diseminados a lo largo
de la dimensin dominante. Es decir,
que
mientras
el
espacio
de
requerimientos es de n-dimensiones,
el espacio de la implementacin es
de una sola dimensin. Dicha
diferencia
produce
un
mapeo
deficiente de los requerimientos a
sus respectivas implementaciones.

1 INTRODUCCIN
La ingeniera del software, ha
evolucionado, gracias a la aplicacin
de
uno
de
los
principios
fundamentales a la hora de resolver
cualquier problema, incluso de la
vida cotidiana, la descomposicin de
un sistema complejo en partes que
sean ms fciles de manejar, es
decir, gracias a la aplicacin del
dicho popular conocido como divide
y vencers.
La programacin orientada a objetos
(POO)
ha supuesto uno de los avances ms
importantes de los ltimos aos en la
1

Ing. Francisco Ruiz Hidalgo Tcnicas Orientada a

Los dos sntomas ms significativos


de este problema son el Cdigo
Mezclado (Code Tangling) y el Cdigo
Diseminado (Code Scattering). El
Cdigo Mezclado se presenta cuando
en un mismo mdulo de un sistema
de
software
convive
simultneamente
ms
de
un
requerimiento.
Esto hace que en el modelo existan
elementos de implementacin de
ms de un requerimiento. El Cdigo
Diseminado se produce cuando un
requerimiento esta esparcido sobre
varios mdulos. Por lo tanto, la
implementacin
de
dicho
requerimiento
tambin
queda
diseminada sobre esos mdulos.
La combinacin de estos sntomas
afecta tanto al diseo como a la
implementacin de
Software.
La
implementacin
simultnea de varios conceptos tiene
dos efectos negativos.
El
primero
es
una
baja
correspondencia entre un concepto y
su implementacin. El
Segundo es una menor productividad
de los desarrolladores, ya que se
distraen del concepto principal. Por
otro lado, la implementacin de
varios conceptos en un mismo
modulo lleva a un cdigo poco
reusable, de baja calidad, y propenso
a errores. Esto se debe a que alguno
de los tantos conceptos puede ser
subestimado. Por ltimo, la evolucin
es ms dificultosa debido a la
insuficiente
modularizacin.
Los
futuros cambios en un requerimiento
implican
revisar y modificar cada uno de los
mdulos donde est presente ese
requerimiento. [3]

La
programacin
orientada
a
aspectos (POA) es una nueva
metodologa de programacin que
aspira a soportar la separacin. Es
decir, que intenta separar los
componentes y los aspectos unos de
otros, proporcionando mecanismos
que hagan posible abstraerlos y
componerlos para formar todo el
sistema. En definitiva, lo que se
persigue
es
implementar
una
aplicacin de forma eficiente y fcil
de entender.
Qu es un aspecto?
El
nuevo
paradigma
de
la
programacin orientada a aspectos
es soportado por los llamados
lenguajes
de
aspectos,
que
proporcionan
constructores
para
capturar los
elementos que se diseminan por todo
el sistema. Estos elementos se
llaman aspectos.
Una de las primeras definiciones que
aparecieron del concepto de aspecto
fue
publicada en 1995, y se describa de
la siguiente manera: Un aspecto es
una unidad
que se define en trminos de
informacin
parcial
de
otras
unidades.
La
definicin
de
aspecto
ha
evolucionado a lo largo del tiempo,
pero
con la
que se trabaja
actualmente es la siguiente: 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

3 PLANTEAMIENTO DE LA SOLUCIN

Ing. Francisco Ruiz Hidalgo Tcnicas Orientada a

que aparece en otras unidades


modulares del programa
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.
Se puede diferenciar entre un
componente y un aspecto viendo al
primero como aquella propiedad que
se puede encapsular claramente en
un procedimiento, mientras que un
aspecto no se puede encapsular en
un procedimiento con los lenguajes
tradicionales

tradicional con la que muestra un


programa orientado a aspectos.
Esta equiparacin se puede apreciar
en la Figura 2, en la que se
confrontan la estructura
de un programa tradicional (parte
izquierda) con la de uno orientado a
aspectos (parte
derecha).

Figura 2

POA es un desarrollo que sigue al


paradigma de la orientacin a
objetos, y como tal, soporta la
descomposicin orientada a objetos,
adems de la procedimental y la
descomposicin funcional. Pero, a
pesar de esto, POA no se puede
considerar como una extensin de la
POO, ya que puede utilizarse con los
diferentes estilos de programacin ya
mencionados.

En la Figura 1, se muestra un
programa como un todo formado por
un conjunto de aspectos ms un
modelo de objetos. Con el modelo de
objetos se objetos se recoge la
funcionalidad bsica, mientras que el
resto
de
aspectos
recogen
caractersticas de rendimiento y
otras
no
relacionadas
con
la
funcionalidad esencial del mismo.

4 FUNDAMENTOS
PROGRAMACIN
ASPECTOS

DE
LA
ORIENTADA
A

Los lenguajes orientados a aspectos


definen una nueva unidad de
programacin de software para
encapsular las funcionalidades que
cruzan todo el cdigo. Adems, estos
lenguajes
deben
soportar
la
separacin de aspectos como la
sincronizacin, la distribucin, el
manejo de errores, la optimizacin de

Figura 1

Teniendo esto en cuenta, podemos


realizar una comparativa de la
apariencia que presenta un programa
3

Ing. Francisco Ruiz Hidalgo Tcnicas Orientada a

memoria, la gestin de seguridad, la


persistencia. De todas formas, estos
conceptos
no
son
totalmente
independientes, y est claro que hay
una relacin entre los componentes y
los aspectos, y que por lo tanto, el
cdigo de los componentes y de
estas
nuevas
unidades
de
programacin tiene que interactuar
de alguna manera. Para que ambos
(aspectos y componentes) se puedan
mezclar, deben tener algunos puntos
comunes, que son los que se
conocen como puntos de enlace, y
debe
haber
algn
modo
de
mezclarlos.
Los puntos de enlace son una clase
especial de interfaz entre los
aspectos y los mdulos del lenguaje
de componentes. Son los lugares del
cdigo en los que ste se puede
aumentar
con
comportamientos
adicionales. Estos comportamientos
se especifican en los aspectos. El
encargado de realizar este proceso
de mezcla se conoce como tejedor
(del trmino ingls weaver). El
tejedor se encarga de mezclar los
diferentes
mecanismos
de
abstraccin y composicin que
aparecen en los lenguajes de
aspectos y componentes ayudndose
de los puntos de enlace.
Para tener un programa orientado a
aspectos necesitamos definir los
siguientes elementos:

define la forma de los aspectos


por ejemplo, los aspectos de
AspectJ se programan de forma
muy parecida a las clases.
Un tejedor de aspectos. El tejedor
se encargar de combinar los
lenguajes. El proceso de mezcla
se puede retrasar para hacerse
en tiempo de ejecucin, o
hacerse
en
tiempo
de
compilacin.
En la Figura 3 se aprecia la forma en
la que se trabaja con las aplicaciones
tradicionales, y cmo ser esta forma
de
operar
en
una
aplicacin
orientada a aspectos en la Figura 4.

Figura 3

En las aplicaciones tradicionales,


bastaba con un compilador o
intrprete que tradujera nuestro
programa escrito en un lenguaje de
alto nivel a un cdigo directamente
entendible por la mquina.
En las aplicaciones orientadas a
aspectos, sin embargo, adems del
compilador, hemos de tener el
tejedor, que nos combine el cdigo
que implementa la funcionalidad
bsica, con los distintos mdulos que
implementan los aspectos, pudiendo
estar cada aspecto codificado con un
lenguaje distinto.

Un lenguaje para definir la


funcionalidad
bsica.
Este
lenguaje
se
conoce
como
lenguaje base. Suele ser un
lenguaje de propsito general, tal
como C++ o Java. En general, se
podran utilizar tambin lenguajes
no imperativos.
Uno o varios lenguajes de
aspectos. El lenguaje de aspectos
4

Ing. Francisco Ruiz Hidalgo Tcnicas Orientada a

programen utilizando el lenguaje


diseado para este fin y evitar as
interferencias entre ambos. Se quiere
evitar que los aspectos se programen
en ambos lenguajes lo cual podra
conducir a un conflicto. Como
ejemplos de lenguajes de dominio
especfico estn COOL, que trata el
aspecto de sincronizacin, y RIDL,
para el aspecto de distribucin.
Los lenguajes de aspectos de
propsito general se disearon para
ser utilizados con cualquier clase de
aspecto, no solamente con aspectos
especficos. Por lo tanto, no pueden
imponer restricciones en el lenguaje
base. Principalmente soportan la
definicin separada de los aspectos
proporcionando
unidades
de
aspectos. Normalmente tienen el
mismo nivel de abstraccin que el
lenguaje base y tambin el mismo
conjunto de instrucciones, ya que
debera
ser
posible
expresar
cualquier cdigo en las unidades de
aspectos. Un ejemplo de este tipo de
lenguajes es AspectJ, que utiliza Java
como base, y las instrucciones de los
aspectos tambin se escriben en
Java.

Figura 4

5 ESTADO DEL ARTE EN EL DISEO


DE LENGUAJES DE ASPECTOS.
En este apartado se comentan las
distintas tendencias que se siguen en
los lenguajes de aspectos.
Hasta ahora se han distinguido dos
enfoques diferentes en el diseo de
los lenguajes de aspectos: los
lenguajes de aspectos de dominio
especfico y los lenguajes de
aspectos de propsito general.
Lenguajes de Aspectos de Propsito
General vs. Dominio Especfico.

Los lenguajes de aspectos de


dominio especfico soportan uno o
ms de estos sistemas de aspectos
que se han ido mencionando en las
secciones anteriores
(Distribucin, coordinacin, manejo
de errores,...), pero no pueden
soportar otros aspectos distintos de
aquellos
para
los
que fueron
diseados. Los lenguajes de aspectos
de dominio especfico normalmente
tienen un nivel de abstraccin mayor
que el lenguaje base y, por tanto,
expresan los conceptos del dominio
especfico del aspecto en un nivel de
representacin ms alto.

Si contrastamos estos dos enfoques,


propsito general versus propsito
especfico, se tiene que los lenguajes
de aspectos de propsito general no
pueden cubrir completamente las
necesidades. Tienen
un
severo
inconveniente:
Permiten
la
separacin del cdigo, pero no
garantizan
la
separacin
de
funcionalidades, es decir, que la
unidad de aspecto solamente se
utiliza para programar el aspecto. Sin
embargo, esta es la idea central de la
programacin orientada a aspectos.

Estos
lenguajes
normalmente
imponen
restricciones
en
la
utilizacin del lenguaje base. Esto se
hace para garantizar que los
conceptos del dominio del aspecto se
5

Ing. Francisco Ruiz Hidalgo Tcnicas Orientada a

En comparacin con los lenguajes de


aspectos de propsito general, los
lenguajes de aspectos de dominio
especfico fuerzan la separacin de
funcionalidades.
Un lenguaje
AspectJ

de

propsito

http://es.wikipedia.org/wiki/Programaci
%C3%B3n_orientada_a_aspectos
[2] Marta, German, Edward El desarrollo de software
orientado a aspectos: Un caso practico para un sistema de
ayuda en lnea - 2008

[3]Fernando Asteasuain, Bernardo E. Contreras,Elsa Est


evez, Pablo R. Fillottrani. Programacion Orientada a
Aspectos: Metodologa y Evaluacin pp12 Argentina
- 2003

general:

[4] Antonia M Reina Quintero , Visin General de la


Programacin Orientada a Aspectos, pp. 42 - 2000

AspectJ es una extensin a Java TM


orientada a aspectos y de propsito
general AspectJ extiende Java con
una nueva clase de mdulos llamado
aspecto. Los aspectos cortan las
clases, las interfaces y a otros
aspectos. Los aspectos mejoran la
separacin
de
competencias
haciendo posible localizar de forma
limpia los conceptos de Diseo del
corte.
En AspectJ, un aspecto es una clase,
exactamente igual que las clases
Java, pero con una particularidad,
que
pueden
contener
unos
constructores de corte, que no
existen en Java. Los cortes de AspectJ
capturan colecciones de eventos en
la ejecucin de un programa. Estos
eventos pueden ser invocaciones de
mtodos,
invocaciones
de
constructores, y excepciones de
seales y gestin. Los cortes no
definen acciones, sino que describen
eventos.[4]

6 REFERENCIAS
[1] Programacin Orientada a Aspectos - Wikipedia.

You might also like