Вы находитесь на странице: 1из 3

PROGRAMACIN ORIENTADA A ASPECTOS

La Programacin Orientada a Aspectos (POA): es un paradigma de


programacin relativamente reciente cuya intencin es permitir una adecuada
modularizacin de las aplicaciones y posibilitar una mejor separacin de
conceptos. Gracias a la POA se pueden capturar los diferentes conceptos que
componen una aplicacin en entidades bien definidas, de manera apropiada en
cada uno de los casos y eliminando las dependencias inherentes 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
adaptivos, los filtros de composicin, la programacin orientada a sujetos o la
separacin multidimensional de competencias.
La programacin orientada a objetos (POO) supuso un gran paso en la
ingeniera del software, ya que presentaba un modelo de objetos que pareca
encajar de manera adecuada con los problemas reales. La cuestin era saber
descomponer de la mejor manera el dominio del problema al que nos
enfrentramos, encapsulando cada concepto en lo que se dicen llamar objetos
y hacindoles interactuar entre ellos, habindoles dotado de una serie de
propiedades. Surgieron as numerosas metodologas para ayudar en tal proceso
de descomposicin 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 relacin entre la
complejidad de la solucin 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 lo que queremos dotar nuestra aplicacin.
As mismo, la programacin procedural tampoco nos soluciona el problema. Por
lo que ante tales problemas, se utiliza la POA.
Los conceptos y tecnologas reunidos bajo el nombre "programacin orientada
a aspectos" (AOP, por las siglas de Aspect-OrientedProgramming; o AOSD, por
Aspect-Oriented Software Development) 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, del que se habla a continuacin: hay
varias propuestas, muchas de las cuales se agrupan (junto con AOP) en el
campo de estudio denominado ASoC (Advanced Separationof Concerns).

La programacin orientada a aspectos (POA) es una nueva metodologa de


programacin que aspira a soportar la separacin de competencias para los
aspectos antes mencionados. 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.

Principio Separacin de Incumbencias


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.
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.
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 "tirana de la descomposicin dominante" que
consiste en guiarse al modelar, implcita o explcitamente, por una visin
jerrquica determinada de la organizacin del sistema. La desventaja de estas
particiones es que muchas de las incumbencias a tener en cuenta para cumplir
con los requerimientos (en particular, habitualmente, las incumbencias no
funcionales) no suelen adaptarse bien a esa descomposicin, como veremos
ms adelante.
Las construcciones provistas por los lenguajes de programacin, que fueron
creados para implementar los modelos generados por las tcnicas de diseo
existentes, reproducen las jerarquas y, por lo tanto, comparten el defecto
explicado en el prrafo anterior. En el paradigma de programacin imperativa,
la descomposicin consiste en identificar procedimientos que resuelvan parte
del problema, y la jerarqua se da en el rbol de ejecucin, segn el cual los
procedimientos se invocan unos a otros. En el caso de la programacin

orientada a objetos, la jerarqua generada en la etapa de diseo suele


plasmarse en las relaciones de herencia o de composicin entre objetos. Por
ejemplo, algunos patrones de diseo de uso habitual como observador
(observer), visitante (visitor) y mediador (mediator) exhiben estos problemas,
ya que para aplicarlos es necesario adaptar a ellos ms de una clase.

Fundamentos de la Programacin Orientada a Aspectos


Para tener un programa orientado a aspectos necesitamos definir los siguientes
elementos:

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.
El lenguaje de aspectos define la forma de los aspectos por ejemplo,
los aspectos de AspectJ se programan de forma muy parecida a las
clases.
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.

Caracteristicas de POA
De la consecucin de estos objetivos se pueden obtener las siguientes
ventajas:

Un cdigo menos enmaraado, ms natural y ms reducido.


Una mayor facilidad para razonar sobre las materias, ya que estn
separadas y tienen una dependencia mnima.
Ms facilidad para depurar y hacer modificaciones en el cdigo.
Se consigue que un conjunto grande de modificaciones en la definicin
de una materia tenga un impacto mnimo en las otras.
Se tiene un cdigo ms reusable y que se puede acoplar y desacoplar
cuando sea necesario.

Вам также может понравиться