charla 2005 09 16
TRANSCRIPT
![Page 1: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/1.jpg)
Programación Orientada a AspectosLa verdad desnuda
Lic. Fernando Asteasuain16 Septiembre 2005Charla de borrachos
![Page 2: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/2.jpg)
¿Porqué se me dio por la POA? Rankings 101 de E!
![Page 3: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/3.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/4.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/5.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/6.jpg)
Número 1
Programación Orientada a Aspectos!
Empecemos a ver qué es la POA
![Page 7: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/7.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/8.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/9.jpg)
Gráficamente Antes En la actualidad
![Page 10: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/10.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/11.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/12.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/13.jpg)
Problemas
Baja correspondencia. Menor Productividad. Menor Reuso. Baja calidad del código. Evolución dificultosa.
![Page 14: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/14.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/15.jpg)
Distintos Modelos
Ordenado por Forma
Ordenado por Color
![Page 16: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/16.jpg)
Jerarquía Color-Forma Nos vemos obligados a elegir un modelo como principal. En este caso:
color, y luego forma
![Page 17: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/17.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/18.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/19.jpg)
Estructura
Estructura Tradicional
Lenguaje
Compilador o Intérprete
EJECUTABLE
PROGRAMA
![Page 20: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/20.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/21.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/22.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/23.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/24.jpg)
![Page 25: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/25.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/26.jpg)
¿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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/27.jpg)
Historia en Imágenes
![Page 28: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/28.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/29.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/30.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/31.jpg)
Antes y después de Aspectos
![Page 32: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/32.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/33.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/34.jpg)
Extensiones al metamodelo
![Page 35: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/35.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/36.jpg)
Conclusiones
Contribuciones principales de: AORE Arquitectura OA Diseño OA
![Page 37: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/37.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/38.jpg)
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: Charla 2005 09 16](https://reader033.vdocument.in/reader033/viewer/2022052910/559cdc2b1a28ab9a408b46cc/html5/thumbnails/39.jpg)
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.