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 |