Aspect Oriented Programming Middleware

Post on 04-Jul-2015

273 views 1 download

Transcript of Aspect Oriented Programming Middleware

Aspectos en Capa Media

Lenin David Lozano ArgelDirector de Ingenieria – Avansoft S.A.Especialista en Desarrollo de Software – EAFIT

Para romper el hielo!!!

Es AOP realmente un nuevo paradigma de programación o es solo otra técnica de optimización basada en lenguajes existentes.

Como resuelve la complejidad de los lenguajes existentes?

Parece que sumando la separación de código entre el aspecto y el componente se incrementa la complejidad de todo el sistema.

AOP es una técnica de programación que apunta a lograr mejor modularización por la separación de intereses cruzados.LA OPTIMIZACIÓN NO ES SU META PRINCIPAL.AOP ayuda a resolver la complejidad del diseño del software.

Interceptor Pattern

Variante del patrón Cadena de Responsabilidad. No toda la funcionalidad de un sistema puede

ser anticipada. Permite extender el software.

Registrando nuevos servicios al sistema. Permitiendo que el sistema dispare estos servicios. Permitiendo que estos servicios accedan al estado

interno del sistema y controle su comportamiento.

Intercepting Filter

Se requiere un pre-procesamiento y un post-procesamiento de unas peticiones o respuestas de un cliente Web.

Se debería facilitar la adición o eliminación de sevicios sin afectar a los componentes existentes, para que se puedan utilizar en gran variedad de combinaciones, como

Logging y autenticación. Depuración y transformación de la salida para un cliente

específico. Descompresión y conversión del esquema de codificación de la

entrada.

Intercepting Filter

Crear filtros conectables para procesar servicios comunes de una forma estándar sin requerir cambios en el código principal del procesamiento de la petición. Los filtros interceptan las peticiones entrantes y las respuestas salientes, permitiendo un pre y post-procesamiento.

Interceptor vs AOP

Creen que AOP esta siendo mal usado en casos en los cuales un patrón Interceptor puede ser usado?

Agenda

1. Introducción a Middleware 1. Introducción a Middleware

2. Introducción a Características de Middleware Aspectual

2. Introducción a Características de Middleware Aspectual

CRI Middleware Co., Ltd.

Conceptos sobre Middleware

Término usado para referirse a los componentes de software que actúan como intermediarios entre otros componentes de software, generalmente, en el marco de la interacción cliente/servidor.

Ejemplos típicos son los programas desarrollados para ejecutar las consultas que diferentes usuarios de la red hacen a una base de datos central que está ubicada en el servidor.

Funciones del Middleware

Ocultar implementación. Ocultar Heterogeneidad. Proveer interfaces de alto nivel a los desarrolladores e

integradores. Proveer un conjunto de servicios comunes. Hacer el desarrollo de aplicaciones mas fácil y rápido.

CRI Middleware Co., Ltd.

Discusión

Que valor agregado puede dar AOP a la organización?

Como deben los desarrolladores y gerentes decidir donde adoptar AOP?

Que están haciendo las compañías con AOP?

Advertencia

Aspect Oriented PROGRAMMING no es magia.

Es “solo” una mejor forma de soportar el crosscutting code.

Término: Crosscutting

Es una relación entre representaciones de concerns.

Un concern es un problema que se

intenta resolver con software.

Problemas del crosscutting

Codigo Esparcido y Enmarañado: Trazabilidad Pobre. Productividad Mas Baja. Menor reuso del código. Pobre Calidad de Código. Evolución mas difícil.

Término: Aspecto

Un ASPECTO es una representación modular de un crosscutting concern.

Un aspecto es un MODULO para el lenguaje aspectual. Es el modulo que almacena las declaraciones que

“identifican join points” y “efectos semánticos en esos join points”.

Término: Weaving

El mecanismo por el cual se combinan los aspectos con el código base.

Puede hacerse en distintos momentos de la vida de un programa

Rango de Tiempo: Estático:

Compilación Post-compilación

Dinámico: Load Time Runtime.

Término: Join Point

Describe en que puntos principales de la aplicación los aspectos pueden ser compuestos con el resto del software.

Son puntos en la ejecución del programa, no posiciones en el código.

Elementos del lenguaje de programación con los cuales se coordinan los aspectos.

Llamada a método Ejecución de método

Término: Pointcut

Una afirmación que es cumplida por un conjunto de puntos de unión.

Representan conjuntos de join points. Puede exponer información en tiempo de

ejecución a un pedazo de advice. Mecanismo en el cual se discrimina donde y

cuando se aplicará el advice.

Término: Advice

un consejo (advice), que indica qué es lo que hay que hacer en los join points.

Existen 3 tipos: Before: Ejecuta antes de la ejecución

de un Join Point. After: Ejecuta después de la ejecución. Around: Rodea la ejecución del join

point. ¡Que se adiciona o que hacer en vez de

eso!

Código Base

Advice

AspectoCódigoBase

JoinPoint

JoinPoint

PointCut

Consideraciones

Aspectos Dinámicos: Se aplican los aspectos en compilación, o se adicionan o remueven dinámicamente? (Cuando debemos hacer el tejido?)

Genericidad: Los aspectos se refieren a elementos en el sistema en cuestión, o pueden ser reutilizados por varios sistemas?

Eficiencia (Performance) versus Expresividad (Sintaxis de Aspectos)

Correctitud y Validación: Como especificar y verificar/probar los aspectos?

Pasos en desarrollo AOP

AOP involucra tres distintos pasos en el desarrollo:Descomposición Aspectual:

Descomponer los requisitos para identificar intereses cruzados y comunes.

Implementación de los “Concerns”: Implementar cada interés separadamente.

Tejido: Componer el sistema final.

Anatomía de los lenguajes

Una implementación de AOP consta de 2 partes: una especificación del lenguaje y una implementación.

Implementación de “concerns”: Mapear un requisito individual a un código para que el

compilador lo traduzca a código ejecutable. Tejido de las reglas:

Como se compone los intereses independientemente implementados para formar el sistema final.

Implementación del lenguaje AOP.1. Combina los concerns individuales.

2. Convierte la información resultante en código ejecutable.

Evaluación de Frameworks

Como elegir un middleware o framework adecuado para tu problema?

Criterios de evaluación

Criterios de evaluación Generales

Determina la confiabilidad y la funcionalidad que cada middleware ofrece.

Información Disponible

Tipo de Licencia

Madurez

Criterios de evaluación Aspectuales

Evalúa el tratamiento aspectual que cada Middleware le da al proceso de desarrollo de software orientado a aspecto, por lo tanto los criterios descritos se componen con los conceptos de los fundamentos AOP

Modelo de tejido Modelo de programación AO Modelo de Join Point

Criterios de evaluación Desarrollo

Determinan el éxito y la facilidad de realizar un buen proceso del desarrollo del software basado en aspectos.

Soporte de Herramientas IDE

Sintaxis de los aspectos

Criterios de evaluación QoS

Determinan un conjunto de característica o atributos calidad que garantizan que un Middleware cumple con ciertos estándares preestablecidos.

QoS del Middleware

Extensibilidad/Adaptabilidad

Integración con el proceso de desarrollo

Reusabilidad de aspectos

AOP: THE REAL DEAL?

Existe algún ejemplo de aspectos aplicados a lenguajes de programación funcionales?

Jboss Boeing