La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación Orientada a Aspectos (AOP)

Presentaciones similares


Presentación del tema: "Programación Orientada a Aspectos (AOP)"— Transcripción de la presentación:

1 Programación Orientada a Aspectos (AOP)
Mario Rodriguez Gerente Relaciones Académicas Microsoft Cono Sur

2 Metas de esta presentación
Transmitir los conceptos fundamentales de la Programación Orientada a Aspectos Mostrar las bondades de utilizar esta forma de desarrollar aplicaciones. Mostrar Diferentes tipos de enfoques para el entretejido.

3 Asumimos Conocimientos de Programación Orientada a Objetos
Conceptos básicos temas como Seguridad de Aplicaciones, Trasabilidad, Cache, Persistencia, Transaccionalidad. Reflexion, .NET Remoting, Proxies Dinámicos. Emisión de Código usando CodeEmit

4 Agenda Límites de OOP AOP al rescate Beneficios Estado del arte

5 Ingeniería de Sistemas (revisitada)
Un sistema complejo puede verse como una implementación combinada de múltiples áreas de interés (concerns) Lógica de negocio, performance, persistencia, trazabilidad, debugging, autenticación, seguridad de hilos, chequeo de errores, etc Comprensibilidad, mantenibilidad, facilidad de evolución, etc

6 Límites de OOP Transaccionalidad Persistencia Trazabilidad
public class Banco { // declaraciones varias public double ProcesarDebito(long cuentaId, double monto) { // apertura de demarcacion transaccional try { // recupero de la cuenta // validaciones de negocio // logica de negocio asociada al débito // persistencia del nuevo estado // traceo del movimiento para auditoria // cierre exitoso de la transacción (commit) return nuevo saldo cuenta; } catch (Excepcion e) { // traceo de la excepcion para auditoría // cierre anormal de la transacción (rollback) // relanzamiento de la excepcion para las capas superiores } // declaraciones de otros métodos de negocio Transaccionalidad Persistencia Trazabilidad

7 Límites de OOP (cont.) OOP cumplió todas las promesas por las que fue concebido Modelar la aplicación dentro del esquema de objetos que colaboran entre sí Encapsular detalles de implementación detrás de interfaces El Polimorfismo proveyó una interfaz y una conducta común a conceptos relacionados La Herencia permitió que componentes más específicos cambien conductas particulares sin necesidad de acceder a la implementación de los conceptos de base

8 Límites de OOP (cont.) No obstante, OOP no se adecua lo suficiente para conducir un comportamiento repartido entre varios módulos –a menudo no relacionados entre sí-

9 Síntomas del agotamiento de OOP
Código enredado El desarrollador debe pensar en todos los intereses a la vez Código desperdigado

10 Implicancias del agotamiento de OOP
Implementación pobre de intereses Productividad baja Reusabilidad disminuida Código de calidad empobrecida Evolución difícil

11 Agenda Límites de OOP AOP al rescate Beneficios Estado del arte

12 AOP al rescate En 1997, Gregor Kiczales junto a otros científicos del laboratorio de investigación de Xerox (Palo Alto) elaboraron el documento Aspect-Oriented Programming En el mismo analizaban el límite de OOP, ofreciendo AOP como un nuevo paradigma de programación También, iniciaron el proyecto AspectJ: una implementación de AOP basada en Java y extensiones que completaban el nuevo paradigma

13 Descomposición aspectual
Separación de intereses (separation of concerns) Busca aislar aquellos intereses transversales (cross cutting concerns) Cada uno de dichos intereses se implementará en una unidad separada

14 Recomposición aspectual
Posterior a la implementación, un componente creará unidades modulares con cada aspecto y las entrelazará El producto final es similar al de OOP La diferencia en AOP es que la implementación de cada aspecto no es consciente de las restantes

15 ? Versión AOP de Banco Transaccionalidad Persistencia Trazabilidad
public class Banco { // declaraciones varias public double ProcesarDebito(long cuentaId, double monto) { // apertura de demarcacion transaccional try { // recupero de la cuenta // validaciones de negocio // logica de negocio asociada al débito // persistencia del nuevo estado // traceo del movimiento para auditoria // cierre exitoso de la transacción (commit) return nuevo saldo cuenta; } catch (Excepcion e) { // traceo de la excepcion para auditoría // cierre anormal de la transacción (rollback) // relanzamiento de la excepcion para las capas superiores } // declaraciones de otros métodos de negocio Transaccionalidad Persistencia Trazabilidad Persistencia Trazabilidad

16 Lenguajes AO Los lenguajes OO surgieron como extensiones a los lenguajes estructurados C++ amplió la gramática del Lenguaje C Visual Basic añadió objetos a BASIC Delphi a Pascal Los lenguajes AO hacen lo propio con los lenguajes OO Por ende, OO no muere: evoluciona

17 Anatomía de un lenguaje AO
Implementación de intereses Para esto sirve cualquier lenguaje OO Especificación de aspectos (aspects) y reglas de “tejido” (weaving rules) Punto de unión (join point, pointcut) Notificación (advice) Interceptor (interceptor)

18 Anatomía (cont.) public class Banco { // declaraciones varias
Transaccionalidad public class Banco { // declaraciones varias public double ProcesarDebito(long cuentaId, double monto) { // validaciones de negocio // logica de negocio asociada al débito return nuevo saldo cuenta; } // declaraciones de otros métodos de negocio Persistencia Trazabilidad

19 Agenda Límites de OOP AOP al rescate Beneficios Estado del arte

20 Beneficios Aspectos reunen el código desperdigado
Separación de intereses reduce el acoplamiento Mayor reusabilidad Sistemas más simples de evolucionar AOP permite postergar decisiones de diseño

21 Demos Versión OOP de Banco Versión AOP usando Proxys
Versión AOP usando Weaving Estático

22 Agenda Límites de OOP AOP al rescate Beneficios Estado del arte

23 AOP.NET (NAop) Declara aspectos, puntos de unión, etc en XML
Realiza weaving en forma dinámica (resuelve los aspectos en tiempo de ejecución)

24 Proyecto CAMEO Es una extensión del compilador C#
Realiza weaving en forma estática (resuelve los aspectos en tiempo de compilación)

25 Eos Es una extensión del compilador C#
Realiza weaving en forma estática

26 AspectDNG Post procesa assemblies introduciendo notificaciones (advices) Realiza weaving en forma estática Opera sobre cualquier lenguaje .NET

27 LOOM.NET Declara puntos de unión y notificaciones mediante atributos en la clase que modela el aspecto Provée weaving estático y dinámico

28 Aspect# Posée un lenguaje para definir aspectos basado en AOP Alliance
Provée weaving dinámico proxeando la clase interceptada

29 Weave.NET Apunta a cualquier lenguaje .NET
Provée weaving dinámico al momento de carga de la clase interceptada Aspectos se declaran en XML

30 AspectJ Dirigido por Kiczales, es el proyecto más antiguo y más evolucionado de AOP Extiende la sintaxis de Java Weaving estático

31 Spring Framework y Spring.NET
Incluye características AOP mediante Dynamic Proxies Las reglas de tejido se especifican en XML (weaving dinámico) Desarrollado para J2EE, aunque se está portando a .NET

32 Conclusiones OOP no impide que intereses cruzados (cross cutting concerns) se enreden (tangled code) AOP permite implementar intereses en forma aislada (separation of concerns) y definir reglas para enhebrarlos (weaving rules) hacia la ejecución Esto resulta en aplicaciones menos acopladas y de evolución más sencilla

33 Referencias Marc Clifton: Aspect Oriented Programming / Aspect Oriented Software Design Ramnivas Laddad: I want my AOP!, Part 1 Dharma Shukla: Aspect-Oriented Programming Enables Better Code Encapsulation and Reuse Andrea Bioli: The simplest AOP scenario in C# M. Devi Prasad: AOP Support for C# Gregor Kiczales: The More the Merrier (soporte para aspectos en .NET) The Server Side: Entrevista a Gregor Kiczales sobre AOP

34 Recursos Aspect-Oriented Software Development Aspect# AspectDNG Eos
LOOM.NET AspectJ Weave.NET Spring Framework AOP Alliance Naop (AOP.NET)

35 IMPORTANTE Uy, Hoy Juega Argentina vs Colombia, que hacemos acá hablando de estas cosas? ARGENTINA, ARGENTINA !!!!


Descargar ppt "Programación Orientada a Aspectos (AOP)"

Presentaciones similares


Anuncios Google