1. Aspectos en Capa Media
Lenin David Lozano Argel
Director de Ingenieria – Avansoft S.A.
Especialista en Desarrollo de Software – EAFIT
2. 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.
3. 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.
4. 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.
5. 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.
6. Interceptor vs AOP
Creen que AOP esta siendo mal usado en
casos en los cuales un patrón Interceptor
puede ser usado?
7. Agenda
1. Introducción a Middleware
1. Introducción a Middleware
2. Introducción a Características de
2. Introducción a Características de
Middleware Aspectual
Middleware Aspectual
10. 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.
11. 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.
12. 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?
13.
14. Advertencia
Aspect Oriented PROGRAMMING no es
magia.
Es “solo” una mejor forma de soportar el
crosscutting code.
15. Término: Crosscutting
Es una relación entre representaciones de
concerns.
Un concern es un
problema que se
intenta resolver con
software.
16. 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.
17. 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”.
18. 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.
19. 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
20. 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.
21. Término: Advice
un consejo (advice), que indica qué es lo
que hay que hacer en los join points.
Advice
Existen 3 tipos: JoinPoint
Código
Before: Ejecuta antes de la ejecución
Base
de un Join Point.
After: Ejecuta después de la ejecución.
Aspecto
Código
Around: Rodea la ejecución del join Base JoinPoint
point.
¡Que se adiciona o que hacer en vez de
eso!
PointCut
22. 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?
23. 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.
24. 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.
27. Criterios de evaluación Generales
Determina la confiabilidad y
la funcionalidad que cada
middleware ofrece.
Información Disponible
Tipo de Licencia
Madurez
28. 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
29. 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
30. 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
31. AOP: THE REAL DEAL?
Existe algún ejemplo de aspectos
aplicados a lenguajes de programación
funcionales?
Jboss
Boeing
Editor's Notes
Poor traceability: Modules in a software system may simultaneously interact with several requirements. I Lower productivity: Related implementations spread over many modules. I Less code reuse: A module implements multiple concerns, other systems requiring similar functionality may not be able to readily use the module, further lowering productivity. I Poor code quality: By targeting too many concerns at once, one or more of those concerns will not receive enough attention. I More difficult evolution: Addressing future requirements often requires reworking the implementation.
El mecanismo por el cual se combinan los aspectos con el código base se llama entretejido ( weaving ), y puede hacerse en distintos momentos de la vida de un programa. Una posibilidad es llevar a cabo el entretejido en una etapa de precompilación: se toma el código base y los aspectos, y se produce nuevo código fuente con el resultado del entretejido, insertando los consejos en los puntos de unión correspondiente. También se puede hacer durante la compilación, generando código objeto que cumpla la funcionalidad base más la de los aspectos. Y otra alternativa es el llamado entretejido dinámico, por el cual se controla la ejecución del programa y, cada vez que se llega a un punto de unión incluido en un pointcut de un aspecto, se ejecuta el consejo asociado.
Donde la ejecución del programa alcanza unos de los join points descritos en el pointcut, una pieza asociada con el pointcut se ejecuta. Esto permite a los programadores describir donde y cunado el código adicional debe ser ejecutado adicionalmente al comportamiento definido como base.
.. at Jboss JBoss is leveraging the usage of dynamic AOP in the upcoming 4.* version. All EJB specific services (container managed persistence, acidity, security, fail-over, etc.) will be implemented as aspects, woven at run-time using the AOP support provided by the Jboss micro-kernel. In addition to these services, users (or sites) may provide their own service implementations. Thanks to the Jboss framework for AOP, these new services will become immediately usable in various business applications. ..at ABB Industrial IT is ABB 's solution to integrate diverse automation and information technologies in real time and thus provide better business decision support. The problem is that while a plant is running, it is difficult to instantly access current facts about people, computers and applications scattered throughout the organization. To support this fast adaptability, ABB has developed the Aspect Object (TM) technology. This technology uses Aspect-Orientation concepts to allow different people (such as technicians, engineers) to zoom in at run-time in the functionality of plant and process objects (such as motors and valves) and concentrate on the particular functionality they are interested in. ..at Boeing Boeing is developing real-time embedded systems. Such systems must be customized for particular mission needs. Additionally, global rules (constraints) must be enforced on all parts of a system. Because a system is scattered through many computers and components, it is very costly to maintain and re-adapt the system for each change. Their goal is to deal with such adaptations in a uniform way, and, not surprisingly, they have decided to use aspect oriented techniques. The PCES Project is exploring AOP techniques in this context.