Programación Orientada a Aspectos (AOP)

Slides:



Advertisements
Presentaciones similares
MODELOS ORIENTADOS A OBJETOS
Advertisements

U.M.L A/Gx. Diego Gutiérrez Application Analysis and Design.
METODOLOGÍA ORIENTADA A OBJETOS CARACTERISTICAS DEL PROCESO
Framework de.Net Infraestructura sobre la que se reúne todo un conjunto de lenguajes y servicios que simplifican el desarrollo de aplicaciones Entorno.
Red Social: “Un millón de Amigos”.
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Lenguaje Unificado de Modelado
Enfoques de desarrollo
Lenguaje de programación Java
Pruebas Orientadas a Objeto
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Arquitectura CLARO-TECNOTREE
INSTITUTO TECNOLOGICO DE MINATITLAN
Introducción a la Orientación a Objetos
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Introducción a la programación orientada a aspectos.
Programación Orientada a Objetos
Spring Framework v2.5.
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
Java 2 Platform Enterprise Edition
Presentación del estado del arte
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
JAVA FX Es un paquete de software que te permitirá desarrollar aplicaciones web para diferentes plataformas, desde un ordenador ordinario hasta teléfonos.
PROGRAMACION ORIENTADA
DIAGRAMA DE COMPONENTES INTEGRANTES Córdova Vásquez Giovanny Escobar Alvares Calixto Gomez Quinteros Adelaida Pinto Flores Yarmila.
BASES DE DATOS ORIENTADAS A OBJETO
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
Abstracción de los datos y Orientación a Objeto Clase 13.
Material Original de Microsoft para desarrolladores adaptado por Jorge Miguel PERALTA para clases de Informática Aplicada (Haga clic para adelantar/atrasar.
Contexto: Aplicación gráfica.  Siempre que se piensa en separar la funcionalidad de una aplicación de su interacción con el usuario, bien sea una aplicación.
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
Invocación dinámica de servicios web orientada a aspectos
Ingeniería de Software
Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos
Introducción a la POO • ¿Qué es la programación orientada a objets (POO)? – Un “paradigma” de programación – Una forma de pensar acerca de los problemas.
DISEÑO DE SOFTWARE 1ª. Parte
Fundamentos de programación
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Lenguajes de programación Web
Haga clic para modificar el estilo de subtítulo del patrón 28/04/09 Por ARLEDY SARRIA MOLINA NAZLY DIAZ ARIZA JHOANNA MARQUELLA DESARROLLO DE SOFTWARE.
INSTITUTO TECNOLOGICO DE MINATITLAN ASIGNATURA: FUNDAMENTOS DE PROGRAMACION DOCENTE: JOSE ANGEL TOLEDO ALVAREZ ALUMNA: ALEJANDRA OSORIO ARVISU SEMESTRE:
Importancia en la efectividad del:
¿Qué es? Ambiente de desarrollo rápido montado sobre PHP Cubre distintos aspectos del desarrollo de una aplicación empresarial, desde la administración.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Facultad de Ingeniería
Programación Orientada a Objeto
Cristian Fonnegra Marin
Programación orientada a objetos (OPP)
Alexander Aristizabal Ángelo flores herrera
Introducción a UML Departamento de Informática Universidad de Rancagua
FACULTAD: CIENCIAS ECONÓMICAS Y EMPRESARIALES ASIGNATURA: GESTIÓN DE CONTENIDO ELECTRÓNICO TÍTULO: TINFOPATH - VENTAJAS Y USO. AUTORA: MARIA DANIELA TOMALÁ.
III. DESARROLLO DE SISTEMAS.. Podemos definir el desarrollo de sistemas informáticos como el proceso mediante el cual el conocimiento humano y el uso.
POO U1: INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
UML.
Guadalupe Andrade Mociño.  Significa Modelo Vista Controlador  Es un patrón de diseño  Esta compuesto por tres grandes capas: modelo, vista y controlador.
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
Unified Modeling Language (Lenguaje de Modelamiento unificado)
FUNDAMENTOS DE PROGRAMACION
Programación Java y Desarrollo de Aplicaciones Modulo 1 Arquitectura de ordenadores Tema 3 Programas.
DISEÑO DE COMPONENTES Y DESARROLLO BASADO EN COMPONENTES
Programación Orientada a Objetos: CLASES Y OBJETOS
La Programación Orientado a Objetos
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Integrantes Miguel Betancourt Alexis Tacuri.  Activiti es una plataforma para la formación de flujos de trabajo y procesos empresariales dentro del.
Herencias Conceptos básicos i
Diccionario/Directorio de Datos
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
1 Introducción a la Programación Orientada a Objetos Programación Orientada a Objetos Departamento de Sistemas Universidad del Cauca 2006.
ALUMNO ALUMNO: DIEGO URES LEGAJO LEGAJO: La prueba unitaria es la herramienta para la Calidad Presentación Trabajo Final de Grado.
Transcripción de la presentación:

Programación Orientada a Aspectos (AOP) Mario Rodriguez Gerente Relaciones Académicas Microsoft Cono Sur (mariorm@microsoft.com)

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 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

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

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

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

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

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

? 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

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

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)

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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