Download Programación Orientada a Aspectos (POA) - Ldc Usb

Document related concepts
no text concepts found
Transcript
Universidad Simón Bolívar.
Programación Orientada a
Aspectos (POA)
Paradigma de programación.
Presentado por:
Linda Arvelo
Sistemas Distribuidos.
La POA es un modelo de programación cuyo propósito es
permitir una adecuada modularización de las aplicaciones y
posibilitar una mejor separación de los requerimientos.
Concepto
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:
El código de un requerimiento no esta encapsulado
Código
en un único modulo, sino que esta disperso por el
Disperso programa.
Código Dentro de un mismo modulo encontramos código
Mezclado correspondiente a distintos requerimientos.
Objetivos de la Programación 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 código de una forma
más efectiva.
Objetivos
Entre los objetivos principales de la POA están:
 Separar los requerimientos para que las decisiones se
tomen en un lugar concreto y no sea diseminado por la
aplicación.
 Minimizar las dependencias entre los requerimientos para
así desacoplar los distintos elementos que intervienen en un
programa.
Características
Dentro de POA existen dos partes esenciales que son:
Componente: Pueden encapsularse claramente dentro de un
procedimiento. Un elemento es claramente encapsulado si está bien
localizado e identificado, es fácilmente accesible y resulta sencillo
componerlo.
Aspecto: Tiende a ser propiedades que afectan el rendimiento o la
semántica de los componentes en forma sistemática. Ejemplo:
sincronización, logging, distribución, 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.
Definiciones
Elementos básicos de la POA
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 diseño como en la de implementación. Un
aspecto de diseño es una unidad modular del diseño que se
entremezcla en la estructura de otras partes del diseño. Un
aspecto de programa o de código 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 sincronización de procesos concurrentes, el
manejo de errores, etc.
…Continuación
Definiciones
Punto de Unión (joinpoint):
Están definidos como una clase especial de interfaz entre los
aspectos y el código base, se podría decir que son puntos que
representa un "momento" en la ejecución de un programa. Por
ejemplo, una llamada a un método, o un constructor, o el acceso
a un miembro de una clase en particular.
Intersección o Puntos de Corte (pointcut):
Los puntos de corte en sí son una declaración de un conjunto de
puntos de unión, los cuales son parte de los aspectos e indican
en que puntos de unión se aplicará el aspecto.
Consejo o Avisos (advice):
Un aviso define el comportamiento que se quiere invocar
cuando se alcance un determinado punto de intersección o de
corte, es decir, son las acciones a tomar en esos puntos de
unión.
…Continuación
Definiciones
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.
Política de seguridad.
Transacciones.
Weaving o Tejedor:
Permite tejer los aspectos en el código base. Se clasifican en
dos tipos, definidos según el momento en el que introducen los
mecanismos para decidir sobre la aplicación de dichos
aspectos:
Estáticos
Dinámicos
Aspectos en interacción con el programa base
Implementación
Modelo de
objetos
Aspecto de
gestión de
memoria
Aspecto de
sincronización
Programa
Aspecto de
gestión de
errores
Aspecto de
distribución
…
Implementación
Implementación de los lenguajes tradicionales
Compilador
Programa
Usuario
Estructura de una implementación en los lenguajes de aspectos
Implementación
Programa de
componentes
Lenguaje
base
Compilador
Programa de
Aspectos 1
Usuario
Lenguaje de
aspectos
Programa de
Aspectos 2
Weaving
Algunas de las ventajas que presenta la POA son:
Un código menos enmarañado, más natural y más reducido.
Mayor facilidad para razonar sobre los conceptos, ya que
están separados y las dependencias entre ellos son mínimas.
Ventajas
Un código más fácil de depurar y más fácil de mantener.
Se consigue que un conjunto grande de modificaciones en la
definición de una materia tenga un impacto mínimo en las otras.
Se tiene un código más reusable y que se puede acoplar y
desacoplar cuando sea necesario.
También existen desventajas a la hora de utilizar POA, algunas
de estas son:
Desventajas
El diseño de los puntos de enlace entre los aspectos es
más complejo.
Se debe tener en cuenta el análisis de nuevas
características 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.
Ejemplo
package ejemplo;
packagepublic
ejemplo;
class HelloWorld {
public static void main(String[] args) {
public class HW {
HW H;
private H=
String
mensaje;
new
HW();
H.showMensaje();
} public HW() {
package ejemplo;
this.mensaje = “Hello World";
}
}
public aspect Aspecto {public void setMensaje(String M){
pointcut mensajesAImprimir()
: call (void
this.mensaje
= M; HW.showMensaje());
}
before(): mensajesAImprimir(){
public String getMensaje(){
System.out.println(“Hola
returna todos");
this.mensaje;
}
}
after(): mensajesAImprimir(){
public void showMensaje(){
System.out.println(“Chao
a todos");
System.out.println(this.mensaje);
}
}
} }