Programación Orientada a Aspectos

Anuncio
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. Mediante la Programación Orientada a Aspectos se pueden
encapsular los diferentes conceptos que componen una aplicación en
entidades bien definidas, eliminando las dependencias entre cada uno de los
módulos.
Actualmente, los paradigmas de programación nos proveen de ciertas
abstracciones (como procedimientos, clases, métodos, etc.) que nos permiten
separar las incumbencias de un sistema en partes lo más cohesivas y menos
acopladas posibles, con el objetivo de incrementar factores determinantes en la
calidad del software (como la extensibilidad, mantenibilidad, reusabilidad, etc.).
Sin embargo, a medida que la complejidad de los programas fue creciendo, se
observó que hay ciertas incumbencias que no quedan correctamente
separados en los paradigmas actuales, sino que se diseminan de manera
transversal por todo el sistema. Es decir, no se pueden separar claramente
mediante las abstracciones que nos proveen los paradigmas de programación
actuales, ni siquiera en la programación orientada a objetos.
Ejemplos patentes de esto, son aspectos como la sincronización, distribución,
manejo de transacciones, gestión de seguridad, manejo de logs, etc. que todo
programa medianamente complejo tiene, y que, como pueden ver, todos los
componentes del sistema usan, dado que pertenecen a la infraestructura del
software y no a la funcionalidad del mismo.
El paradigma orientado a aspectos, nos permite, básicamente, aislar los
aspectos (o crosscutting concerns) de los demás componentes del sistema.
Esta separación, implementada correctamente, nos provee de una mayor
modularidad, y nos brinda muchos beneficios. Imagínense, cada lógica de
negocio, sólo contendría lógica de negocio, nada de código de sincronización,
transacciones, generación de logs, etc. El desarrollador podría ocuparse sólo
de la lógica de negocio de la aplicación (abstrayéndose de los demás aspectos)
o bien al revés, podría ocuparse de los aspectos sin tener que tocar la lógica de
negocio.
El principal objetivo de la POA es la separación de las funcionalidades dentro
del sistema. Hoy en día existe escasa bibliografía sobre este paradigma de
programación.
<< historia del POA >>
Problemas de otros paradigmas [editar]
Muchas veces nos vemos forzados a tomar decisiones de diseño que
repercuten de manera importante en el desarrollo de la aplicación y que no son
de fácil resolución con programación estructurada ni con orientación a objetos.
A menudo, hace falta 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. En inglés este problema se conoce como scattered
code, que podríamos traducir como código disperso. Otro problema que puede
aparecer, es que un mismo módulo implemente múltiples comportamientos o
aspectos del sistema de forma simultánea. En inglés este problema se conoce
como tangled code, que podríamos traducir como código enmarañado. El
hecho es que hay ciertas decisiones de diseño que son difíciles de capturar,
debido a que determinados problemas no se pueden encapsular claramente de
igual forma que los que habitualmente se resuelven con funciones u objetos.
AspectJ es una extensión Java del proyecto Eclipse para ayudar en el
desarrollo orientado a aspectos.
Aspect, un módulo Perl disponible en CPAN para la Programación Orientada a
Aspectos (en inglés).
phpAspect es una extensión PHP para implementar el paradigma de la POA,
que, mediante árboles de decisión XML, realiza el weaving del software para
ser ejecutado como PHP estándar.
AOP con SpringFramework 2.5 es un Framework de Java que permite
programar en el paradigma de Aspectos utilizando Anotación Java
Aspyct AOP es un módulo de Python que permite incluir Programación
orientada a Aspectos a programas ya existentes escritos en Python o a nuevos
desarrollos.
Primero que nada, hay que aclarar que la programación orientada a aspectos,
no anula a la programación orientada a objetos. Sino que se integran como
vamos a ver en un momento.
Estos son los elementos que intervienen en el paradigma orientado a aspectos:



Un lenguaje base (para la funcionalidad básica) como ser C++ o Java.
Uno o más lenguajes orientados a aspectos (como vamos a ver en un rato).
Un weaver (o tejedor) que se encarga de “tejer” o integrar, los componentes
con los aspectos.
Fuente:
http://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectos
http://sherekan.com.ar/2009/07/08/poa-1/
http://74.125.113.132/search?q=cache:r8NmNgfipvQJ:www.inmensia.com/blog/200902
20/programacion_orientada_a_aspectos.html+Programacion+orientada+a+aspectos&cd
=5&hl=es&ct=clnk&gl=ar
Descargar