+ All Categories
Home > Documents > Programación Orientada a Aspectos La verdad desnuda

Programación Orientada a Aspectos La verdad desnuda

Date post: 02-Feb-2016
Category:
Upload: fynn
View: 47 times
Download: 0 times
Share this document with a friend
Description:
Programación Orientada a Aspectos La verdad desnuda. Lic. Fernando Asteasuain 16 Septiembre 2005 Charla de borrachos. ¿Porqué se me dio por la POA?. Rankings. 101 de E!. Ranking MIT Top Ten. - PowerPoint PPT Presentation
Popular Tags:
39
Programación Orientada a Aspectos La verdad desnuda Lic. Fernando Asteasuain 16 Septiembre 2005 Charla de borrachos
Transcript
Page 1: Programación Orientada a Aspectos La verdad desnuda

Programación Orientada a AspectosLa verdad desnuda

Lic. Fernando Asteasuain16 Septiembre 2005Charla de borrachos

Page 2: Programación Orientada a Aspectos La verdad desnuda

¿Porqué se me dio por la POA? Rankings 101 de E!

Page 3: Programación Orientada a Aspectos La verdad desnuda

Ranking MIT Top Ten

En su edición especial del nuevo milenio, (en febrero 2001), la revista MIT Technology Review, lanza su top ten.

“10 emerging areas of technology that will soon have a profound impact on the economy and how we live and work in the new millennium”

Page 4: Programación Orientada a Aspectos La verdad desnuda

10..6 Brain-Machine Interfaces: entender

como trabaja el cerebro.

Transistores Flexibles: desarrollo de nuevos materiales híbridos.

Data Mining: Extraer información de un texto.

Manejo de los derechos digitales.

Biometrics: identificación a través de huellas digitales, retina, facciones.

10

9

8

7

6

Page 5: Programación Orientada a Aspectos La verdad desnuda

5...4 Procesamiento del lenguaje natural:

reconocimiento de voz, extracción de información.

Microphotonics: cristales que reflejan ondas de luz.

Robots: aprendizaje, desenvolvimiento con el ambiente.

Microfluidos: técnicas especializadas para un análisis mas veloces y precisos.

5

4

3

2

Page 6: Programación Orientada a Aspectos La verdad desnuda

Número 1

Programación Orientada a Aspectos!

Empecemos a ver qué es la POA

Page 7: Programación Orientada a Aspectos La verdad desnuda

Evolución del SW

Al principio, Codigo Spaghetti.

Tipos, bloques, procedimientos. Tipos de datos abstractos… Objetos: datos + comportamiento.

Conceptos aplicados siempre: Abstracción, encapsulamiento & Modularidad.

Page 8: Programación Orientada a Aspectos La verdad desnuda

Evolución del perfil

Antes, el programador => un ermitaño, programaba en el sótano.

Hoy, ya es un ingeniero de SW:

Trabajo en grupo Buen manejo de relaciones interpersonales. Comunicación

Page 9: Programación Orientada a Aspectos La verdad desnuda

Gráficamente Antes En la actualidad

Page 10: Programación Orientada a Aspectos La verdad desnuda

De todas maneras….

Se encapsula correctamente la funcionalidad del sistema.

¿Pero qué ocurre con los conceptos no funcionales ….?

Sincronización, logging, manejo de errores, profiling, etc => no se encapsulan correctamente y quedan esparcidos por todo el sistema.

Se denominan conceptos entrecruzados

Page 11: Programación Orientada a Aspectos La verdad desnuda

Ejemplo 1

Conceptos entrecruzados

Clase Libro {…..<todas las cosas de libro><manejo de errores>…}

Clase Socio {…..<todas las cosas de socio><manejo de errores><controles de acceso>}

Clase Alquiler {…..

<todas las cosas de alquiler><manejo de errores><controles de acceso>

}

* Errores

* Seguridad

Page 12: Programación Orientada a Aspectos La verdad desnuda

Análisis Ejemplo

Funcionalida básica: OK. Libros, Socios, Alquileres.

¿Qué pasa con el manejo de errores y de seguridad?

Se esparcen por todo el sistema, creando dos problemas:

Code Tangling & Code Scaterring

Page 13: Programación Orientada a Aspectos La verdad desnuda

Problemas

Baja correspondencia. Menor Productividad. Menor Reuso. Baja calidad del código. Evolución dificultosa.

Page 14: Programación Orientada a Aspectos La verdad desnuda

Tiranía de la descomposición dominante Supongamos el siguiente modelo:

Descomponer por forma, por color, por tamaño. Nos vemos obligados a elegir un modelo como principal.

Page 15: Programación Orientada a Aspectos La verdad desnuda

Distintos Modelos

Ordenado por Forma

Ordenado por Color

Page 16: Programación Orientada a Aspectos La verdad desnuda

Jerarquía Color-Forma Nos vemos obligados a elegir un modelo como principal. En este caso: color, y luego

forma

Page 17: Programación Orientada a Aspectos La verdad desnuda

POA

La POA promueve la separación de conceptos a través de mecanismos, que permiten abstraer y

componer estos conceptos a lo largo del sistema.

Un aspecto es un concepto que no es posible encapsularlo claramente, y que resulta diseminado por todo el código.

Un aspecto será la unidad que encapsulará un concepto entrecruzado.

Page 18: Programación Orientada a Aspectos La verdad desnuda

Conceptos POA Aplicando POA se puede escribir una funcionalidad básica “pura”,

y especificar cada aspecto por separado. Luego, existe un proceso de combinación que compondrá el sistema final.

Los puntos de enlace brindan la interfaz entre aspectos y componentes. Son lugares dentro del código donde es posible agregar comportamiento adicional.

El comportamiento adicional puede agregarse en tres momentos particulares: antes, después, en lugar de .

El encargado de la composición es llamado Weaver. Guiado por los puntos de enlace teje el código base con el código de los aspectos.

Page 19: Programación Orientada a Aspectos La verdad desnuda

Estructura

Estructura Tradicional

Lenguaje

Compilador o Intérprete

EJECUTABLE

PROGRAMA

Page 20: Programación Orientada a Aspectos La verdad desnuda

Estructura POA

... Lenguaje base

Lenguaje de aspectos 1

Lenguaje de aspectos N

... TEJEDOR (WEAVER)

EJECUTABLE

PROGRAMA DE ASPECTOS N

PROGRAMA DE ASPECTOS 1

PROGRAMA DE COMPONENTES

Page 21: Programación Orientada a Aspectos La verdad desnuda

Ejemplo 2: biblioteca

Class Biblioteca { private libro [] libros ; private socio [] socios;  public Biblioteca() { … public void prestamo( socio S, libro L) { if controlDeAccesoValido() then{ // código del método } else{ generarExcepcion(); } }

public void ingresarSocio(socio S){ if controlDeAccesoValido() then{ // código del método } else{ generarExcepcion(); } }// demás métodos…}

Control de accesoControl de acceso

Funcionalidad básicaFuncionalidad básica

Page 22: Programación Orientada a Aspectos La verdad desnuda

Definición de un aspecto

Aspecto Control {

Punto de enlace operacionesSeguras = llamadas a Biblioteca.prestamo & llamadas a Biblioteca.ingresarSocio& ...

antes de operacionesSeguras: {if !=(controlDeAccesoValido()) then{ generarExcepcion(); }

}

Page 23: Programación Orientada a Aspectos La verdad desnuda

Ejemplo TFTP

Se implementó con AspectJ el protocolo de comunicación TFTP.

Protocolo muy simple para transferir archivos entre procesos

Reingeniería y Aspecto de Logging. Código de logging: 31%.

Page 24: Programación Orientada a Aspectos La verdad desnuda
Page 25: Programación Orientada a Aspectos La verdad desnuda

Relación POA y POO

Clase A

Clase A1

Attb1

Attb2

Método 1

Clase A2

Attb 3

Método 1

Método 2

POO: conceptos comunes

POA: conceptos entrecruzados

Page 26: Programación Orientada a Aspectos La verdad desnuda

¿De donde venimos?

El grupo de PA en Boston, quería hacer código según la ley de demeter.

Cristina Videira Lopes miembro Ph.D introduce “Separations of Concerns”.

En 1995 Cristina se une en Xerox Park, con Gregor Kiczales. En noviembre nace la sigla AOP.

En 1998 sale la 1º versión de AspectJ, implementado dos lenguajes de Cristina.

Page 27: Programación Orientada a Aspectos La verdad desnuda

Historia en Imágenes

Page 28: Programación Orientada a Aspectos La verdad desnuda

POA y los demás paradigmas

Mayormente, se utiliza en relación a la POO.

Sin embargo, existen aplicaciones de POA a otros paradigmas también. Imperativo: Desarrollos y extensiones a

C para implementación de SO.

Lógicos: aspectos al estilo ?envio (X,Y). Estilo declarativo, consultas.

Page 29: Programación Orientada a Aspectos La verdad desnuda

Herramientas OA Lenguajes para programar Aspectos: AspectJ: Extensión a Java para aplicar

aspectos. La más popular. AspectC++,AspectS, CAESAR. En .NET: Weave.NET, Source Weave. SetPoint: Framework en .NET. Basado en

la semántica y no en la sintaxis.

Page 30: Programación Orientada a Aspectos La verdad desnuda

Todo el ciclo de desarrollo Si bien al principio todo era programar, los conceptos

AOP se trasladaron a todo el proceso de Software. por lo tanto:

AORE: Aspect Oriented Requirement Engineering.

Arquitectura OA

AOD: Aspect Oriented Design. Extensiones a UML para soportar el manejo de aspectos en la etapa de diseño. Extensiones Generales y Específicas.

Verificación, Formalización &Model Checking OA

Page 31: Programación Orientada a Aspectos La verdad desnuda

Antes y después de Aspectos

Page 32: Programación Orientada a Aspectos La verdad desnuda

Bibliografía & Más Info

www.aosd.net

dependex.dc.uba.ar

www.angelfire.com/ri2/aspectos

Comunidad de Aspectos

dependex.dc.uba.ar/~ferto/

Page 33: Programación Orientada a Aspectos La verdad desnuda

Diseño OA

No se banca bien los aspectos. Se extiende UML para tal fin. Extensiones al metamodelo. Extensiones con mecanismos propios. OCL para restricciones: joinpoints.

Page 34: Programación Orientada a Aspectos La verdad desnuda

Extensiones al metamodelo

Page 35: Programación Orientada a Aspectos La verdad desnuda

Extensiones Específicas

Se maneja con los mecanismos propios de extensión de UML: estereotipos, restricciones, y valores etiquetados.

Ejemplo para aspecto de distribución

Page 36: Programación Orientada a Aspectos La verdad desnuda

Conclusiones

Contribuciones principales de: AORE Arquitectura OA Diseño OA

Page 37: Programación Orientada a Aspectos La verdad desnuda

AORE

= Trato para los req. funcionales y no. Reconocer que los req. se entrecruzan e

influyen entre sí. Fundamental contar con sólidos

mecanismos de composición

Page 38: Programación Orientada a Aspectos La verdad desnuda

Arquitectura OA

Pequeñísimas aproximaciones y Herramientas.

El área más tímida de desarrollo hoy día. Mostró útil y viable un lenguaje de

arquitectura OA. Creciente consenso en la comunidad

para separar las vistas.

Page 39: Programación Orientada a Aspectos La verdad desnuda

Diseño OA

Medios para modelar explícitamente los aspectos.

Razonar sobre los concerns por separado.

Manejo de combinación & composición. Resolver conflictos y especificar

cooperación.


Recommended