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.
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
Agenda
Límites de OOP
AOP al rescate
Beneficios
Estado del arte
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
Límites de OOP
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
}
(Gp:) Transaccionalidad
(Gp:) Persistencia
(Gp:) Trazabilidad
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
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í-
Síntomas del agotamiento de OOP
Código enredado
El desarrollador debe pensar en todos los intereses a la vez
Código desperdigado
Implicancias del agotamiento de OOP
Implementación pobre de intereses
Productividad baja
Reusabilidad disminuida
Código de calidad empobrecida
Evolución difícil
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
Página siguiente |