Está en la página 1de 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

Biometrics: identificacin a travs de


huellas digitales, retina, facciones.

Data Mining: Extraer informacin de un


texto.

Transistores Flexibles: desarrollo de


nuevos materiales hbridos.

Brain-Machine Interfaces: entender


como trabaja el cerebro.
Manejo de los derechos digitales.

5...4
5

Procesamiento del lenguaje natural:


reconocimiento de voz, extraccin de
informacin.

Microfluidos: tcnicas especializadas


para un anlisis mas veloces y precisos.

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>

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

Conceptos entrecruzados
* Errores
* Seguridad

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

Estructura POA

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

Clase A1
Attb1

POA: conceptos entrecruzados

Clase A2
Attb 3

Attb2
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.

También podría gustarte