Vous êtes sur la page 1sur 39

Programacin 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

En su edicin 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

10..6
10 9 8 7

Brain-Machine Interfaces: entender como trabaja el cerebro. Manejo de los derechos digitales. Biometrics: identificacin a travs de huellas digitales, retina, facciones.

Data Mining: Extraer informacin de un texto.


Transistores Flexibles: desarrollo de nuevos materiales hbridos.

5...4
5

Procesamiento del lenguaje natural: reconocimiento de voz, extraccin de informacin. Microfluidos: tcnicas especializadas para un anlisis mas veloces y precisos.

3
2

Microphotonics: cristales que reflejan ondas de luz.


Robots: aprendizaje, desenvolvimiento con el ambiente.

Nmero 1

Programacin Orientada a Aspectos!


Empecemos a ver qu es la POA

Evolucin del SW

Al principio, Codigo Spaghetti.

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

Conceptos aplicados siempre: Abstraccin, encapsulamiento & Modularidad.

Evolucin del perfil

Antes, el programador => un ermitao, programaba en el stano.


Hoy, ya es un ingeniero de SW:

Trabajo en grupo Buen manejo de relaciones interpersonales. Comunicacin

Grficamente

Antes

En la actualidad

De todas maneras.

Se encapsula correctamente la funcionalidad del sistema. Pero qu ocurre con los conceptos no funcionales .? Sincronizacin, logging, manejo de errores, profiling, etc => no se encapsulan correctamente y quedan esparcidos por todo el sistema. Se denominan conceptos entrecruzados

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

Conceptos entrecruzados
* Errores * Seguridad

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> }

Anlisis Ejemplo

Funcionalida bsica: 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

Problemas

Baja correspondencia. Menor Productividad. Menor Reuso. Baja calidad del cdigo. Evolucin dificultosa.

Tirana de la descomposicin dominante

Supongamos el siguiente modelo:

Descomponer por forma, por color, por tamao. Nos vemos obligados a elegir un modelo como principal.

Distintos Modelos

Ordenado por Forma

Ordenado por Color

Jerarqua Color-Forma

Nos vemos obligados a elegir un modelo como principal. En este caso: color, y luego forma

POA

La POA promueve la separacin de conceptos a travs 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 cdigo. Un aspecto ser la unidad que encapsular un concepto entrecruzado.

Conceptos POA

Aplicando POA se puede escribir una funcionalidad bsica pura, y especificar cada aspecto por separado. Luego, existe un proceso de combinacin que compondr el sistema final.
Los puntos de enlace brindan la interfaz entre aspectos y componentes. Son lugares dentro del cdigo donde es posible agregar comportamiento adicional. El comportamiento adicional puede agregarse en tres momentos particulares: antes, despus, en lugar de .

El encargado de la composicin es llamado Weaver. Guiado por los puntos de enlace teje el cdigo base con el cdigo de los aspectos.

Estructura

Estructura Tradicional
PROGRAMA

Lenguaje

Compilador o Intrprete

EJECUTABLE

Estructura POA
PROGRAMA DE COMPONENTES PROGRAMA DE ASPECTOS 1

Lenguaje base

Lenguaje de aspectos 1

... ...

PROGRAMA DE ASPECTOS N

Lenguaje de aspectos N

TEJEDOR (WEAVER)

EJECUTABLE

Ejemplo 2: biblioteca
Class Biblioteca { private libro [] libros ; private socio [] socios; public Biblioteca() { public void prestamo( socio S, libro L) { if controlDeAccesoValido() then{ // cdigo del mtodo } else{ generarExcepcion(); } }

Control de acceso Funcionalidad bsica


public void ingresarSocio(socio S){ if controlDeAccesoValido() then{ // cdigo del mtodo } else{ generarExcepcion(); } } // dems mtodos }

Definicin de un aspecto
Aspecto Control { Punto de enlace operacionesSeguras = llamadas a Biblioteca.prestamo & llamadas a Biblioteca.ingresarSocio& ...
antes de operacionesSeguras: { if !=(controlDeAccesoValido()) then{ generarExcepcion(); }

Ejemplo TFTP

Se implement con AspectJ el protocolo de comunicacin TFTP. Protocolo muy simple para transferir archivos entre procesos Reingeniera y Aspecto de Logging. Cdigo de logging: 31%.

Relacin POA y POO


POO: conceptos comunes

Clase A

POA: conceptos entrecruzados

Clase A1 Attb1 Attb2

Clase A2 Attb 3 Mtodo 1

Mtodo 1

Mtodo 2

De donde venimos?

El grupo de PA en Boston, quera hacer cdigo segn 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 versin de AspectJ, implementado dos lenguajes de Cristina.

Historia en Imgenes

POA y los dems paradigmas


Mayormente, se utiliza en relacin a la POO. Sin embargo, existen aplicaciones de POA a otros paradigmas tambin. Imperativo: Desarrollos y extensiones a C para implementacin de SO.

Lgicos: aspectos al estilo ?envio (X,Y). Estilo declarativo, consultas.

Herramientas OA
Lenguajes para programar Aspectos: AspectJ: Extensin a Java para aplicar aspectos. La ms popular. AspectC++,AspectS, CAESAR. En .NET: Weave.NET, Source Weave. SetPoint: Framework en .NET. Basado en la semntica y no en la sintaxis.

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 diseo. Extensiones Generales y Especficas.

Verificacin, Formalizacin &Model Checking OA

Antes y despus de Aspectos

Bibliografa & Ms Info

www.aosd.net

dependex.dc.uba.ar

dependex.dc.uba.ar/~ferto/ www.angelfire.com/ri2/aspectos

Comunidad de Aspectos

Diseo OA

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

Extensiones al metamodelo

Extensiones Especficas

Se maneja con los mecanismos propios de extensin de UML: estereotipos, restricciones, y valores etiquetados.
Ejemplo para aspecto de distribucin

Conclusiones

Contribuciones principales de: AORE Arquitectura OA Diseo OA

AORE

= Trato para los req. funcionales y no. Reconocer que los req. se entrecruzan e influyen entre s. Fundamental contar con slidos mecanismos de composicin

Arquitectura OA

Pequesimas aproximaciones y Herramientas. El rea ms tmida de desarrollo hoy da. Mostr til y viable un lenguaje de arquitectura OA. Creciente consenso en la comunidad para separar las vistas.

Diseo OA

Medios para modelar explcitamente los aspectos. Razonar sobre los concerns por separado. Manejo de combinacin & composicin. Resolver conflictos y especificar cooperacin.

Vous aimerez peut-être aussi