SlideShare una empresa de Scribd logo
Tecnologías Orientadas
 a Aspectos en .NET




                     Cristóbal Costa – Abril 2005
Aproximaciones AOP
     AspectJ y Hyper/J (Java)
     CLAW y AOP# (Primeras aproximaciones para .NET)
     AOP.NET (Proyecto Siemens, modificación del código en ejecución)
     AOPdotNetAddin
     AspectC#
     JAsCo.NET
     Loom.NET y Rapier-Loom.NET
     SetPoint!
  •   ASPECT.NET (Prototipo de Microsoft)
     EOS
  •   Weave.NET
       –   (Grupo de AspectC#, AOSD Case Studies, SourceWeave.NET, Theme)
  • Otros:
             – AspectDNG, DotNetAOP, AOPNet, ContextBoundModel, Spring.NET (muy recientes)




                                                                            2
Precedentes
 • AspectJ (http://eclipse.org/aspectj/)
     – A partir del código fuente y las definiciones de aspectos, realiza el Weaving o “entretejido” de código entre ambos
     – JoinPoint: Instante de la ejecución de un programa susceptible de ser interceptado por un aspecto
     – PointCut: Define un conjunto de joinpoints a los cuales se les aplicará un aspecto
     – Advice: Define el código que se ejecutará en los joinpoints y cómo se debe combinar (After, Before o Around).
     – Aspect: Es la estructura sintáctica que encapsula varios crosscutting concerns.




                                                                                                      3
Precedentes
 • Hyper/J (http://www.research.ibm.com/hyperspace/index.htm/)
     – Enfoca los aspectos en dimensiones, de forma que cada dimensión se encarga de un concern concreto
     – HyperSpace: Es el conjunto de todas las unidades susceptibles de ser combinadas (paquetes, clases, interfaces, …)
     – HyperSlice: Conjunto de unidades declarativamente completas que definen un concern
     – HyperModules: Composición de HyperSlices




                                                                                                            4
AspectC#                                          http://www.dsg.cs.tcd.ie/index.php?category_id=169


 • Funcionalidad aportada:
   – Separa el código base y los aspectos
   – No extiende el lenguaje

 • Inconvenientes:
   –   Prototipo no actualizado desde 2002
   –   El parser no admite anidaciones de clases, estructuras, delegados, eventos, atributos y expresiones en métodos en el código de los aspectos
   –   No ha sido probado en aplicaciones de envergadura
   –   Los aspectos se añaden en tiempo de compilación




                                                                                                                           5
AspectC# - Compilador
  – Se compila el codigo y se genera un nuevo fichero .CS
  – Problema: se limita la expresividad original del código sino se
    implementa todo, como p.ej. la situación de las llaves




                                                               6
AspectC# - Ejemplo (I)
              Código BASEAspect Descriptor
                              Código de un Aspecto




                                       7
AspectC# - Ejemplo (II)

                          Fichero resultante




                                  8
JAsCo.NET                                                     http://ssel.vub.ac.be/jasco/jascodotnet.php

 • Funcionalidad aportada:
   –   Extiende el lenguaje con ASPECTOS y CONECTORES
   –   Orientado a los Componentes
   –   Los aspectos son reusables en tiempo de ejecución y pueden ser incorporados dinámicamente en el sistema
   –   Los aspectos se pueden combinar entre sí
   –   No afecta a los COTS

   – Los Aspectos proporcionan:
        • Agrupación de Concerns (Hooks)
        • Cuándo y Cómo se activarán (before, after o replace)
        • Permiten Herencia de aspectos, Abstracción, Transiciones de estados




                                                                                                                 9
JAsCo.NET
 • Funcionalidad aportada (II):

   – Los Conectores proporcionan:
       • Enlace con métodos mediante comodines
       • Enlace con métodos, instancias, o clases
       • Definición de relaciones de precedencia y encadenamientos




                                                                     10
JAsCo.NET
 • Funcionalidad aportada (III):




                                   11
JAsCo.NET
 • Modelo de Componentes




                           12
JAsCo.NET
 • Ventajas:
   –   Incorporación de aspectos en tiempo de ejecución
   –   No necesita el código fuente de los componentes
   –   Reutilización de aspectos y conectores
   –   Capacidad expresiva

 • Inconvenientes:
   – El registro de conectores no se realiza por código
   – La versión para .NET es aún prematura. Por ejemplo, el compilador de aspectos y conectores falla con los comentarios y con nombres de clases y métodos que utilicen el símbolo ‘_’
   – No se indica qué funcionalidad de la versión de Java (la más completa) ha sido implementada.




                                                                                                                                                          13
JAsCo.NET - Ejemplo (I)
                                 Ejemplo de
               Ejemplo de Conector1
                                  Aspecto




                            Ejemplo de
                            Conector2




                                         14
JAsCo.NET - Ejemplo (II)
 El Introspector es la aplicación que engancha/desengancha
 dinámicamente los conectores a la aplicación




                                                        15
Loom.NET                                                    http://www.dcl.hpi.uni-potsdam.de/cms/research/loom/

• Consta de dos proyectos:
   – Loom.NET  “Compilador” estático de aspectos
   – Rapier-Loom.NET  Compilador dinámico

• Loom.NET:
   – Los aspectos son reutilizables: se definen mediante plantillas
   – Los aspectos se unen al código mediante proxys. Se encapsula el código base y se crean unos componentes intermedios que deben ser llamados por la parte cliente.
   – Sólo puede enlazar un aspecto por clase
   – No permite conexión dinámica de aspectos




                                                                                                                                              16
Loom.NET - Ejemplo
                                  Weaver estático




                                      Ejemplo de Plantilla




                     Definición de los aspectos en XML
                                       17
Rapier-Loom.NET
 •   No extiende el lenguaje. Los aspectos derivan de la clase Aspect, y la configuración se realiza mediante atributos.
 •   Instanciación dinámica de aspectos a través del operador Weave.CreateInstance que crea el aspecto unido a la clase destino.
 •   Características:
      – Permite asociar aspectos a Clases o Métodos
      – Enfatiza el uso de interfaces (permite extender la interfaz de la clase destino con la proporcionada por el aspecto, o enlazarse con métodos que implementen una determinada interfaz)
      – Operadores típicos: Before, After, Instead, After Returning (después de retornar de un método), After Throwing (después de lanzarse una excepción)




                                                                                                                                                                                 18
Rapier-Loom.NET
     – Pueden engancharse varios aspectos a una misma clase
     – Acceso al contexto de la clase objetivo
     – Permite la comunicación entre aspectos, gracias al acceso al Contexto



 • Inconvenientes:
      No es posible desenganchar aspectos dinámicamente (pero se puede finalizar la instancia del objeto que lo tenía asociado)
      No define la coreografía de llamadas para varios aspectos (aunque siguen el orden de creación)
      Sólo se puede enlazar con métodos virtuales o definidos por una interfaz




                                                                                                                                   19
Rapier-Loom.NET - Ejemplo
                                 Aspecto Distribución
                         Código del Aspecto
                 Unión de CódigoBase + Aspectos




                                      20
SetPoint!                                                                       http://www.dc.uba.ar/people/proyinv/setpoint/

 •   Basado en la idea de la Web Semántica, introduce el concepto de Descriptor Semántico (SetPoints):
      – Marca que permite asignar una característica particular al código
          (o componente)
      – Los JoinPoints pasan a ser predicados lógicos sobre dichos descriptores
      –   Ejemplo: asignamos la etiqueta [PROCESO_CRITICO] a un conjunto de métodos, podremos hacer:
             “ Asociar el [aspecto_AltaPrioridad] a todos los métodos etiquetados como [Proceso_Critico] “



 •   Se consigue mayor independencia para establecer los JoinPoints
      – En las otras aproximaciones, los JoinPoints se declaran en base al nombre del método a enlazar (dependencia sintáctica):
      –   Ejemplo: [Loom.ConnectionPoint.Include(“Critico*”)]




                                                                                                                                   21
SetPoint!

 • Para dotarlos de mayor contenido semántico, se deberán utilizar ontologías para modelarlos adecuadamente (bien en la fase de diseño o
    en la fase de codificación)


 • Proyecto en fase muy temprana. Se encuentran en la etapa de definir la sintaxis. No existe documentación.
 • Existe un prototipo desarrollado en SmallTalk, que se ejecuta sobre Squeak!, una máquina virtual.




                                                                                                           22
SetPoint! – Squeak!




                      23
EOS                                                      http://www.cs.virginia.edu/~eos/


 •   Aporta la posibilidad de enlazar aspectos a nivel de instancias (instance-level aspects)
      – Para ello, implementa el patrón Mediator mediante el uso de eventos
      – Weaving dinámico
 •   Los Pointcuts son definidos en los aspectos
 •   Permite la herencia de aspectos y asociar roles
 •   Acceso al contexto de ejecución, mediante mecanismos de reflexión:
         thisJoinPoint.{ getThis | getTarget | getReturnValue | getArgs }
 •   Requiere el código fuente de aspectos y código base (no soporta COTS)




                                                                                                24
Comparativa
                      Alta        Weaving    Unión inclusiva
                                                                      Innovaciones
                  reutilización   dinámico    de aspectos

AspectC#                                         
                                                               Separación clara de código
SourceWeave.NET                                             base y aspectos
                                                               Weavings definidos en un
Weave.NET                                                   fichero XML

AspectDNG                                        
                                                               Definición de aspectos con
Loom.NET                                                    plantillas y expr. regulares

                                                               Unión de aspectos al
Rapier-Loom.NET                                             instanciarse el cód. base

                                                               Weavings definidos con
SetPoint!                                                   predicados lógicos


EOS                                                         Aspectos a nivel de instancias


                                                               Lenguaje muy expresivo
JAsCo.NET                                                   Relaciones entre aspectos
                                                                     25

Más contenido relacionado

Destacado

Hoja de ruta_plataforma
Hoja de ruta_plataformaHoja de ruta_plataforma
Hoja de ruta_plataforma
FATIMAMI
 
Per CMS Websites problemlos pflegen
Per CMS Websites problemlos pflegenPer CMS Websites problemlos pflegen
Per CMS Websites problemlos pflegen
msoeth
 
Programa electoral de María Gámez (PSOE) para las Elecciones Municipales 20...
Programa electoral de María Gámez (PSOE) para las Elecciones Municipales 20...Programa electoral de María Gámez (PSOE) para las Elecciones Municipales 20...
Programa electoral de María Gámez (PSOE) para las Elecciones Municipales 20...
PSOEMalaga PSOE de Málaga
 
el cortejo de dioniso
el cortejo de dionisoel cortejo de dioniso
el cortejo de dioniso
arantxasua
 

Destacado (20)

Hoja de ruta_plataforma
Hoja de ruta_plataformaHoja de ruta_plataforma
Hoja de ruta_plataforma
 
Why choose acumatica white paper
Why choose acumatica white paperWhy choose acumatica white paper
Why choose acumatica white paper
 
El pèsol Negre. Nº 24. Octubre-Novembre 2005
El pèsol Negre. Nº 24. Octubre-Novembre 2005El pèsol Negre. Nº 24. Octubre-Novembre 2005
El pèsol Negre. Nº 24. Octubre-Novembre 2005
 
Weiterbildung 2009
Weiterbildung 2009Weiterbildung 2009
Weiterbildung 2009
 
Medición de Audiencias Digitales
Medición de Audiencias DigitalesMedición de Audiencias Digitales
Medición de Audiencias Digitales
 
La transformación digital: su importancia en el relanzamiento de económico de...
La transformación digital: su importancia en el relanzamiento de económico de...La transformación digital: su importancia en el relanzamiento de económico de...
La transformación digital: su importancia en el relanzamiento de económico de...
 
Bosque modelo john mario rodriguez
Bosque modelo  john mario rodriguezBosque modelo  john mario rodriguez
Bosque modelo john mario rodriguez
 
Per CMS Websites problemlos pflegen
Per CMS Websites problemlos pflegenPer CMS Websites problemlos pflegen
Per CMS Websites problemlos pflegen
 
Trabajo del trapecio en diapositivas
Trabajo del trapecio en diapositivas Trabajo del trapecio en diapositivas
Trabajo del trapecio en diapositivas
 
Gpc 01prest salu asma 01
Gpc 01prest salu asma 01Gpc 01prest salu asma 01
Gpc 01prest salu asma 01
 
el equilibrio
el equilibrioel equilibrio
el equilibrio
 
Articulo autocaravanas gms premium
Articulo autocaravanas gms premiumArticulo autocaravanas gms premium
Articulo autocaravanas gms premium
 
Geosense Geoportal
Geosense GeoportalGeosense Geoportal
Geosense Geoportal
 
Syllabus periodo 2014 d comprensión y producción de textos (1)
Syllabus periodo 2014 d comprensión y producción de textos (1)Syllabus periodo 2014 d comprensión y producción de textos (1)
Syllabus periodo 2014 d comprensión y producción de textos (1)
 
Programa electoral de María Gámez (PSOE) para las Elecciones Municipales 20...
Programa electoral de María Gámez (PSOE) para las Elecciones Municipales 20...Programa electoral de María Gámez (PSOE) para las Elecciones Municipales 20...
Programa electoral de María Gámez (PSOE) para las Elecciones Municipales 20...
 
el cortejo de dioniso
el cortejo de dionisoel cortejo de dioniso
el cortejo de dioniso
 
Rehabilitación del suelo pélvico masculino. Fisioterapia.
Rehabilitación del suelo pélvico masculino. Fisioterapia.Rehabilitación del suelo pélvico masculino. Fisioterapia.
Rehabilitación del suelo pélvico masculino. Fisioterapia.
 
Yuscaran informe pdf
Yuscaran informe pdfYuscaran informe pdf
Yuscaran informe pdf
 
Jornada asesores 2012
Jornada asesores 2012Jornada asesores 2012
Jornada asesores 2012
 
Tesis politica csutcb 1983
Tesis politica csutcb 1983Tesis politica csutcb 1983
Tesis politica csutcb 1983
 

Similar a Tecnologias orientadas a aspectos en .NET 1.1

SpringFramework Overview
SpringFramework OverviewSpringFramework Overview
SpringFramework Overview
zerovirus23
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
Domingo Suarez Torres
 
Conceptos de programación orientada a objeto
Conceptos de programación orientada a objetoConceptos de programación orientada a objeto
Conceptos de programación orientada a objeto
JJ
 
Arquitectura multicapa
Arquitectura multicapaArquitectura multicapa
Arquitectura multicapa
Hugo Herrera
 

Similar a Tecnologias orientadas a aspectos en .NET 1.1 (20)

Programación basada en componentes para Programadores Python
Programación basada en componentes para Programadores PythonProgramación basada en componentes para Programadores Python
Programación basada en componentes para Programadores Python
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 
SpringFramework Overview
SpringFramework OverviewSpringFramework Overview
SpringFramework Overview
 
Arquitectura de Software Capitulo 7.pptx
Arquitectura de Software Capitulo 7.pptxArquitectura de Software Capitulo 7.pptx
Arquitectura de Software Capitulo 7.pptx
 
Hora 12
Hora 12Hora 12
Hora 12
 
Visual studio.net
Visual studio.netVisual studio.net
Visual studio.net
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación Java
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Sp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycleSp fx connecting to share point & react lifecycle
Sp fx connecting to share point & react lifecycle
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Frameworks J2EE
Frameworks J2EEFrameworks J2EE
Frameworks J2EE
 
1127082.ppt
1127082.ppt1127082.ppt
1127082.ppt
 
Conceptos de programación orientada a objeto
Conceptos de programación orientada a objetoConceptos de programación orientada a objeto
Conceptos de programación orientada a objeto
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Arquitectura multicapa
Arquitectura multicapaArquitectura multicapa
Arquitectura multicapa
 
Lenguaje java
Lenguaje javaLenguaje java
Lenguaje java
 
Construcción de Software (Patrones)
Construcción de Software (Patrones)Construcción de Software (Patrones)
Construcción de Software (Patrones)
 

Último

proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
encinasm992
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 

Último (20)

HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometria
 

Tecnologias orientadas a aspectos en .NET 1.1

  • 1. Tecnologías Orientadas a Aspectos en .NET Cristóbal Costa – Abril 2005
  • 2. Aproximaciones AOP  AspectJ y Hyper/J (Java)  CLAW y AOP# (Primeras aproximaciones para .NET)  AOP.NET (Proyecto Siemens, modificación del código en ejecución)  AOPdotNetAddin  AspectC#  JAsCo.NET  Loom.NET y Rapier-Loom.NET  SetPoint! • ASPECT.NET (Prototipo de Microsoft)  EOS • Weave.NET – (Grupo de AspectC#, AOSD Case Studies, SourceWeave.NET, Theme) • Otros: – AspectDNG, DotNetAOP, AOPNet, ContextBoundModel, Spring.NET (muy recientes) 2
  • 3. Precedentes • AspectJ (http://eclipse.org/aspectj/) – A partir del código fuente y las definiciones de aspectos, realiza el Weaving o “entretejido” de código entre ambos – JoinPoint: Instante de la ejecución de un programa susceptible de ser interceptado por un aspecto – PointCut: Define un conjunto de joinpoints a los cuales se les aplicará un aspecto – Advice: Define el código que se ejecutará en los joinpoints y cómo se debe combinar (After, Before o Around). – Aspect: Es la estructura sintáctica que encapsula varios crosscutting concerns. 3
  • 4. Precedentes • Hyper/J (http://www.research.ibm.com/hyperspace/index.htm/) – Enfoca los aspectos en dimensiones, de forma que cada dimensión se encarga de un concern concreto – HyperSpace: Es el conjunto de todas las unidades susceptibles de ser combinadas (paquetes, clases, interfaces, …) – HyperSlice: Conjunto de unidades declarativamente completas que definen un concern – HyperModules: Composición de HyperSlices 4
  • 5. AspectC# http://www.dsg.cs.tcd.ie/index.php?category_id=169 • Funcionalidad aportada: – Separa el código base y los aspectos – No extiende el lenguaje • Inconvenientes: – Prototipo no actualizado desde 2002 – El parser no admite anidaciones de clases, estructuras, delegados, eventos, atributos y expresiones en métodos en el código de los aspectos – No ha sido probado en aplicaciones de envergadura – Los aspectos se añaden en tiempo de compilación 5
  • 6. AspectC# - Compilador – Se compila el codigo y se genera un nuevo fichero .CS – Problema: se limita la expresividad original del código sino se implementa todo, como p.ej. la situación de las llaves 6
  • 7. AspectC# - Ejemplo (I) Código BASEAspect Descriptor Código de un Aspecto 7
  • 8. AspectC# - Ejemplo (II) Fichero resultante 8
  • 9. JAsCo.NET http://ssel.vub.ac.be/jasco/jascodotnet.php • Funcionalidad aportada: – Extiende el lenguaje con ASPECTOS y CONECTORES – Orientado a los Componentes – Los aspectos son reusables en tiempo de ejecución y pueden ser incorporados dinámicamente en el sistema – Los aspectos se pueden combinar entre sí – No afecta a los COTS – Los Aspectos proporcionan: • Agrupación de Concerns (Hooks) • Cuándo y Cómo se activarán (before, after o replace) • Permiten Herencia de aspectos, Abstracción, Transiciones de estados 9
  • 10. JAsCo.NET • Funcionalidad aportada (II): – Los Conectores proporcionan: • Enlace con métodos mediante comodines • Enlace con métodos, instancias, o clases • Definición de relaciones de precedencia y encadenamientos 10
  • 11. JAsCo.NET • Funcionalidad aportada (III): 11
  • 12. JAsCo.NET • Modelo de Componentes 12
  • 13. JAsCo.NET • Ventajas: – Incorporación de aspectos en tiempo de ejecución – No necesita el código fuente de los componentes – Reutilización de aspectos y conectores – Capacidad expresiva • Inconvenientes: – El registro de conectores no se realiza por código – La versión para .NET es aún prematura. Por ejemplo, el compilador de aspectos y conectores falla con los comentarios y con nombres de clases y métodos que utilicen el símbolo ‘_’ – No se indica qué funcionalidad de la versión de Java (la más completa) ha sido implementada. 13
  • 14. JAsCo.NET - Ejemplo (I) Ejemplo de Ejemplo de Conector1 Aspecto Ejemplo de Conector2 14
  • 15. JAsCo.NET - Ejemplo (II) El Introspector es la aplicación que engancha/desengancha dinámicamente los conectores a la aplicación 15
  • 16. Loom.NET http://www.dcl.hpi.uni-potsdam.de/cms/research/loom/ • Consta de dos proyectos: – Loom.NET  “Compilador” estático de aspectos – Rapier-Loom.NET  Compilador dinámico • Loom.NET: – Los aspectos son reutilizables: se definen mediante plantillas – Los aspectos se unen al código mediante proxys. Se encapsula el código base y se crean unos componentes intermedios que deben ser llamados por la parte cliente. – Sólo puede enlazar un aspecto por clase – No permite conexión dinámica de aspectos 16
  • 17. Loom.NET - Ejemplo Weaver estático Ejemplo de Plantilla Definición de los aspectos en XML 17
  • 18. Rapier-Loom.NET • No extiende el lenguaje. Los aspectos derivan de la clase Aspect, y la configuración se realiza mediante atributos. • Instanciación dinámica de aspectos a través del operador Weave.CreateInstance que crea el aspecto unido a la clase destino. • Características: – Permite asociar aspectos a Clases o Métodos – Enfatiza el uso de interfaces (permite extender la interfaz de la clase destino con la proporcionada por el aspecto, o enlazarse con métodos que implementen una determinada interfaz) – Operadores típicos: Before, After, Instead, After Returning (después de retornar de un método), After Throwing (después de lanzarse una excepción) 18
  • 19. Rapier-Loom.NET – Pueden engancharse varios aspectos a una misma clase – Acceso al contexto de la clase objetivo – Permite la comunicación entre aspectos, gracias al acceso al Contexto • Inconvenientes:  No es posible desenganchar aspectos dinámicamente (pero se puede finalizar la instancia del objeto que lo tenía asociado)  No define la coreografía de llamadas para varios aspectos (aunque siguen el orden de creación)  Sólo se puede enlazar con métodos virtuales o definidos por una interfaz 19
  • 20. Rapier-Loom.NET - Ejemplo Aspecto Distribución Código del Aspecto Unión de CódigoBase + Aspectos 20
  • 21. SetPoint! http://www.dc.uba.ar/people/proyinv/setpoint/ • Basado en la idea de la Web Semántica, introduce el concepto de Descriptor Semántico (SetPoints): – Marca que permite asignar una característica particular al código (o componente) – Los JoinPoints pasan a ser predicados lógicos sobre dichos descriptores – Ejemplo: asignamos la etiqueta [PROCESO_CRITICO] a un conjunto de métodos, podremos hacer: “ Asociar el [aspecto_AltaPrioridad] a todos los métodos etiquetados como [Proceso_Critico] “ • Se consigue mayor independencia para establecer los JoinPoints – En las otras aproximaciones, los JoinPoints se declaran en base al nombre del método a enlazar (dependencia sintáctica): – Ejemplo: [Loom.ConnectionPoint.Include(“Critico*”)] 21
  • 22. SetPoint! • Para dotarlos de mayor contenido semántico, se deberán utilizar ontologías para modelarlos adecuadamente (bien en la fase de diseño o en la fase de codificación) • Proyecto en fase muy temprana. Se encuentran en la etapa de definir la sintaxis. No existe documentación. • Existe un prototipo desarrollado en SmallTalk, que se ejecuta sobre Squeak!, una máquina virtual. 22
  • 24. EOS http://www.cs.virginia.edu/~eos/ • Aporta la posibilidad de enlazar aspectos a nivel de instancias (instance-level aspects) – Para ello, implementa el patrón Mediator mediante el uso de eventos – Weaving dinámico • Los Pointcuts son definidos en los aspectos • Permite la herencia de aspectos y asociar roles • Acceso al contexto de ejecución, mediante mecanismos de reflexión: thisJoinPoint.{ getThis | getTarget | getReturnValue | getArgs } • Requiere el código fuente de aspectos y código base (no soporta COTS) 24
  • 25. Comparativa Alta Weaving Unión inclusiva Innovaciones reutilización dinámico de aspectos AspectC#    Separación clara de código SourceWeave.NET    base y aspectos Weavings definidos en un Weave.NET    fichero XML AspectDNG    Definición de aspectos con Loom.NET    plantillas y expr. regulares Unión de aspectos al Rapier-Loom.NET    instanciarse el cód. base Weavings definidos con SetPoint!    predicados lógicos EOS    Aspectos a nivel de instancias Lenguaje muy expresivo JAsCo.NET    Relaciones entre aspectos 25