Está en la página 1de 13

Programacin Orientada a Aspectos (POA)

Paradigma de programacin.

La POA es un modelo de programacin cuyo propsito es permitir una adecuada modularizacin de las aplicaciones y posibilitar una mejor separacin de los requerimientos. Con el desarrollo de los sistemas han surgido nuevos problemas a la hora de programar. Dos de los principales inconvenientes que se tienen usando POO:

Concepto

Cdigo en un nico modulo, sino que esta disperso por el Disperso programa.

El cdigo de un requerimiento no esta encapsulado

Cdigo Dentro de un mismo modulo encontramos cdigo Mezclado correspondiente a distintos requerimientos.

Objetivos de la Programacin Orientada a Aspectos La POA esta orientada a mejorar la calidad del software, a entender e implementar de una manera separada cada uno de los requerimientos, para poder reutilizar el cdigo de una forma ms efectiva. Entre los objetivos principales de la POA estn:

Objetivos

Separar los requerimientos para que las decisiones se tomen en un lugar concreto y no sea diseminado por la aplicacin. Minimizar las dependencias entre los requerimientos para as desacoplar los distintos elementos que intervienen en un programa.

Dentro de POA existen dos partes esenciales que son:

Caractersticas

Componente: Pueden encapsularse claramente dentro de un procedimiento. Un elemento es claramente encapsulado si est bien localizado e identificado, es fcilmente accesible y resulta sencillo componerlo. Aspecto: Tiende a ser propiedades que afectan el rendimiento o la semntica de los componentes en forma sistemtica. Ejemplo:

sincronizacin, logging, distribucin, etc.)

La diferencia entre un componente y un aspecto es que el primero se puede encapsular claramente en un procedimiento, mientras que un aspecto no se puede encapsular en un procedimiento con los lenguajes tradicionales.

Elementos bsicos de la POA

Definiciones

Aspecto: Un aspecto es una unidad modular que se dispersa 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 que aparece en otras unidades modulares del programa. Algunos ejemplos de aspectos son, los patrones de acceso a memoria, la sincronizacin de procesos concurrentes, el manejo de errores, etc.

Continuacin

Punto de Unin (joinpoint): Estn definidos como una clase especial de interfaz entre los aspectos y el cdigo base, se podra decir que son puntos que representa un "momento" en la ejecucin de un programa. Por ejemplo, una llamada a un mtodo, o un constructor, o el acceso a un miembro de una clase en particular.

Definiciones

Interseccin o Puntos de Corte (pointcut): Los puntos de corte en s son una declaracin de un conjunto de puntos de unin, los cuales son parte de los aspectos e indican en que puntos de unin se aplicar el aspecto. Consejo o Avisos (advice): Un aviso define el comportamiento que se quiere invocar cuando se alcance un determinado punto de interseccin o de corte, es decir, son las acciones a tomar en esos puntos de unin.

Continuacin Concern: Es una funcionalidad a implementar en el sistema. Cross-Cutting Concerns: Se refieren determinadas funcionalidades que afectan al conjunto de sistema, ejemplos: Trazas o logging. Poltica de seguridad. Transacciones. Weaving o Tejedor: Permite tejer los aspectos en el cdigo base. Se clasifican en dos tipos, definidos segn el momento en el que introducen los mecanismos para decidir sobre la aplicacin de dichos aspectos: Estticos Dinmicos

Definiciones

Aspectos en interaccin con el programa base


Modelo de objetos

Implementacin

Aspecto de gestin de memoria

Aspecto de sincronizacin

Programa

Aspecto de distribucin

Aspecto de gestin de errores

Implementacin de los lenguajes tradicionales

Implementacin

Compilador

Programa

Usuario

Estructura de una implementacin en los lenguajes de aspectos

Programa de componentes

Implementacin

Lenguaje base

Compilador

Programa de Aspectos 1 Lenguaje de aspectos

Usuario

Programa de Aspectos 2

Weaving

Algunas de las ventajas que presenta la POA son:

Un cdigo menos enmaraado, ms natural y ms reducido. Mayor facilidad para razonar sobre los conceptos, ya que estn separados y las dependencias entre ellos son mnimas. Un cdigo ms fcil de depurar y ms fcil de mantener.

Ventajas

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.

Tambin existen desventajas a la hora de utilizar POA, algunas de estas son: El diseo de los puntos de enlace entre los aspectos es ms complejo.

Desventajas

S e debe tener en cuenta el anlisis de nuevas caractersticas dentro del desarrollo de sistemas. Surgen nuevos problemas de choque entre el lenguaje base y el lenguaje funcional. Pueden existir problemas de herencia de un aspecto a otro.

package ejemplo; packagepublic class HelloWorld { ejemplo; public static void main(String[] args) { public class HW { HW H; private H= new HW(); String mensaje; H.showMensaje(); } public HW() { package ejemplo; this.mensaje = Hello World"; } } public aspect Aspecto {public void setMensaje(String M){ pointcut mensajesAImprimir() : call (void HW.showMensaje()); this.mensaje = M; } before(): mensajesAImprimir(){ public String getMensaje(){ System.out.println(Hola a this.mensaje; return todos"); } } after(): mensajesAImprimir(){ public void showMensaje(){ System.out.println(Chao a todos"); System.out.println(this.mensaje); } } } }

Ejemplo

También podría gustarte