You are on page 1of 51

Tesis de grado en Ingeniera en Informtica

Utilizacin de programacin orientada a aspectos en aplicaciones enterprise


Tesista: Nicols M. Paez Directora: Lic. Rosita Wachenchauzer
Diciembre 17, 2007

Agenda
Introduccin Programacin orientada a aspectos Aplicaciones enterprise Hacia AE con AOP
Mitos Estado del arte Incumbencias tcnicas y del negocio

Caso de estudio Conclusiones


Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Agenda
Introduccin
Programacin orientada a aspectos Aplicaciones enterprise

Hacia AE con AOP


Mitos Estado del arte Incumbencias tcnicas y del negocio Caso de estudio

Conclusiones
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Problemtica abordada
La mayor parte del desarrollo de software local est abocado a aplicaciones enteprise.
Soporte a proceso de negocio Modificaciones repentinas Atributos de calidad de dificil modularizacin

y si probamos con AOP?


Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Objetivo de la tesis
Analizar el uso de AOP en las AE Proponer una solucin AOP para AE en la plataforma .NET Desarrollar una aplicacin de referencia

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

El surgimiento de AOP
Kiczales @ XPARC 97
Cdigo disperso Cdigo mezclado CCC = Incumbencias transversales AOP (enfoque asimtrico)

Tarr & Harrison @ IBM 99


Tirana de la descomposicin dominante MSOC (enfoque simtrico)

AOSD.net
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Incumbencias transversales: caso Tomcat

Xml parsing

logging, security, optimizations

Url pattern matching


Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

La visin AOP En todo programa P, ante la condicin C ejecutar la accin A.

C: pointcut, A: advice C + A : aspecto


Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Elementos de AOP
Joinpoint Pointcut Advice Aspecto Weaving
public aspect LogAspect { pointcut printing() : call(* *.print*(..)); before(): printing(){ System.out.println("Before printing"); } } public class Foo { public static void main(String[] args) { Foo foo = new Foo(); foo.printFoo(); } public void printFoo() { System.out.println("Foo!"); }

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Herramientas AOP
De entretejido esttico
Compiladores, preprocesadores, posprocesadores Aspectj, aspectC++, aspect.NET

De entretejido dinmico
Basadas en proxies dinmicos Spring, Naspect, JBossAOP

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Estado del arte en AOP


No hay ms de 10 libros en Amazon Escaso uso en la industria y generalmente para monitoreo Lneas de investigacin
Herramientas Early aspects Aplicaciones
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Aplicaciones enterprise
Soporte a procesos de negocio Muchos usuarios Grandes volmenes de informacin Integracin con otras aplicaciones Requisitos complejos y variantes
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Aplicaciones enterprise
Atributos de calidad
Disponibilidad, desempeo, escalabilidad, mantenibilidad, reusabilidad, usabilidad, seguridad,...

Atributos tcnicos
Transaccionalidad, cach, persistencia, distribucin, monitoreo, concurrencia, ....

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Estado del arte en AE


Tecnologas
Java y .NET Base de datos relacionales Servidores de aplicaciones Frameworks y libreras

Patrones de diseo
Arquitectura en Capas Orientacin a servicios
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Arquitectura Enteprise

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Agenda
Introduccin
Programacin orientada a aspectos Aplicaciones enterprise

Hacia AE con AOP


Mitos Estado del arte Incumbencias tcnicas y del negocio Caso de estudio

Conclusiones
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

AE & AOP
Separacin de incumbencias
Incumbencias tcnicas Incumbencias del negocio

R. Johnson, J2EE without EJB R. Pawlak, AOP for J2EE AOP Alliance
Centrado en Java Descontinuado Poca adopcin
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Mitos sobre AOP


AOP Considered harmful AOP viola el encapsulamiento Depurar con AOP es difcil Los patrones de diseo reemplazan AOP AOP = AspectJ
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

La piedra en el zapato de AOP


Modelo de pointcuts basado en el cdigo base
Dificulta la evolucin

Posibles soluciones
Herramientas de desarrollo SetPoint: modelo de poincuts semnticos

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Incumbencias tcnicas
No pertenecen a la dimensin dominante Resulta dificultosa su modularizacin Pueden estan presentes en ms de una capa
Auditora Cach Manejo de excepciones

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Incumbencias tcnicas con AOP

Aplicacin

AOP

Biblioteca Enterprise

Entretejido dinmico
Permite agregar / quitar aspectos en caliente Alto desacople entre la aplicacin y la biblioteca
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Incumbencias tcnicas analizadas


Monitoreo: logging, tracing Distribucin y profiling Transaccionalidad Manejo de excepciones y Diseo por contratos Seguridad: autenticacin, autorizacin, auditora, confidencialidad Cach Concurencia y sincronizacin Persistencia
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Transaccionalidad

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Transaccionalidad con AOP

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Cach

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Cach con AOP

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Incumbencias del negocio


Lgica del dominio
Estable, comn a un conjunto de aplicaciones

Lgica del negocio (reglas)


Voltil (menos estable), especfica de cada organizacin Validaciones (precondiciones) Notificaciones (poscondiciones)

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Incumbencias del negocio con AOP


Dominio Reglas (aspectos)

Entretejido esttico
Asegura la ejecucin de las reglas (no permite que se apaguen) Pueden existir dependencias regla-dominio

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Aquitectura AOP-Compatible

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Arquitectura AOP-Compatible

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Caso de estudio Banco X

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Dominio Bancario

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Reglas del Banco X


Toda operacin que supere cierto monto deber ser notificada al Banco Central. No debe ser posible realizar operaciones sobre cuentas cuyos titulares tengan deudas con las Afip. Ante el tercer intento consecutivo de ingreso fallido al sistema por parte de un cliente, dicho cliente deber quedar bloqueado de forma permanente sin poder acceder al sistema. Existe un lmite diario del monto total por el cual un cliente puede realizar operaciones. La aplicacin debe dejar constancia de todas las acciones realizadas por el cliente.
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Solucin sin AOP

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Solucin sin AOP

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Herramientas AOP utilizadas


Spring AOP (entretejido dinmico) Aspect.NET (entretejido esttico)
cdigo fuente aspectos Aspect.NET ML Convertidor cdigo intermedio aspectos compilador cdigo fuente clases Aspect.NET weaver cdigo intermedio clases aplicacin

Aspect.NET Framework

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Solucin AOP

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Agenda
Introduccin
Programacin orientada a aspectos Aplicaciones enterprise

Hacia AE con AOP


Mitos Estado del arte Incumbencias tcnicas y del negocio Caso de estudio

Conclusiones
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Conclusiones I
Incubencias tcnicas
tienen naturaleza transversal y el uso de AOP resulta muy conveniente Facilita el foco en el negocio Permite en alto grado de reuso de aspecto

Incumbencias de negocio
AOP permite separar las reglas expecficas del negocio de los conceptos generales del dominio, facilitando la evolucin de las reglas
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Conclusiones II
Caso de estudio
Mejor separacin de incumbencias Reduccin de cdigo repetido, disperso y entremezclado

Herramientas utilizadas
Aspect.NET an le falta maduracin respecto a AspectJ Es necesaria mayor integracin con el entorno de desarrollo (asistentes, depuracin, etc)
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Conclusiones III
Conceptualmente falta la posibilidad de indicar donde NO deben aplicarse aspectos. Cuestiones abiertas
Uso de AOP en la capa de presentacin Estudio de las posibilidades de separacin de incumbencias ofrecidas por la versin 3.5 de la plataforma.NET Actividades de ingeniera orientada a aspectos
Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Fin
Nicols Paez npaez@fi.uba.ar www.fi.uba.ar/~npaez

Sitios de referencia
AspectJ: www.eclipse.org/aspectj Spring: www.springframework.net AOSD: www.aosd.org Early Aspects: www.earlyaspects.org

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Back up slides

Definiciones
Requisito: circunstancia o condicin necesaria para algo. Requirimiento: accin y efecto de requerir. Aviso, manifestacin o pregunta que se hace, generalmente bajo fe notarial, a alguien exigiendo o interesando de l que exprese y declare su actitud o su respuesta Requirement: necesidad. Choose a car that suits your requirements = Elija un coche adecuado a sus necesidades. What are your requirements? = qu necesita usted?. To meet somebody's requirements = satisfacer las necesidades de alguien. requisito. You must satisfy these requirements = debe llenar or satisfacer estos requisitos

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Alternativas con Patrones: Decorator


cd Clases CuentaBancaria Cliente 1 1..* 1 0..* + Operacion ejecutar() : void

CuentaCorriente

Caj aDeAhorro +

Transferencia ejecutar() : void +

Pago ejecutar() : void +

Decorador ejecutar() : void

Prestacion

DecoradorPago + ejecutar() : void

DecoradorTransferencia + ejecutar() : void

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Aternativas con patrones: template method


cd Clases3 Cliente 1 1..* CuentaBancaria 1 0..* + Operacion ejecutar() : void

CuentaCorriente

CajaDeAhorro + # #

Transferencia ejecutar() : void notificarT erceros() : void verificarLim ites() : void +

Pago ejecutar() : void

Prestacion TransferenciaBancoXXX + # # ejecutar() : void notificarT erceros() : void verificarLim ites() : void

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Alternativas con patrones: bridge


cd Clases2 Cliente 1 1..* CuentaBancaria 1 0..* + Operacion ejecutar() : void + OperacionImpl ejecutar() : void

CuentaCorriente

Caj aDeAhorro +

Transferencia ejecutar() : void +

Pago ejecutar() : void

TransferenciaBancoXXX + ejecutar() : void

Prestacion

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Componentes de la solucin AOP

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Aspect.NET
cdigo fuente aspectos Aspect.NET ML Convertidor cdigo intermedio aspectos compilador cdigo fuente clases Aspect.NET weaver cdigo intermedio clases aplicacin

Aspect.NET Framework

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

Spring Framework

Utilizacin de AOP en aplicaciones enterprise, Nicols M. Paez

You might also like