2. ¿Qué es POA?
Nuevo paradigma de programación
Enfoque estructurado: procedimientos o acciones
Enfoque orientado a objetos: datos encapsulados en clases
Existen funciones que son más difíciles de modularizar que otras, generando un
problema conocido como código diseminado.
La principal razón de que el código diseminado se presente es debida a las
diferentes formas que un servicio este disponible y la forma en que este es usado.
El código diseminado en una aplicación retrasa el
desarrollo, mantenimiento y evolución de un programa.
3. ¿Por qué POA?
Existen conceptos que no pueden encapsularse
dentro de una unidad funcional, debido a que
atraviesan todo el sistema o varias partes de él,
como lo son la sincronización, el manejo de
memoria, el manejo de errores, perfiles,
seguridad o redes
4. Cronología Histórica
Primera generación: código spaghetti
Segunda y tercera generación: descomposición
funcional
Cuarta generación: descomposición en objetos
Quinta generación: descomposición en
aspectos
5. El Desarrollo
Orientado a Aspectos
Requiere de tres elementos básicos:
Un lenguaje para definir la funcionalidad b·sica, conocido como
lenguaje base o componente. Podría ser un lenguaje como C#, C++,
Java o Lisp.
Uno o varios lenguajes de aspectos, para especificar el
comportamiento de los aspectos. Como podrían ser COOL para
sincronización o RIDL para distribución.
Un tejedor de aspectos (aspect weaver) que produce una aplicación
que integra las funcionalidades de las clases y los aspectos. Tal
proceso se puede llevar acabo en tiempo de ejecución o en tiempo de
compilación.
6. Diferenciación
En una primera impresión, la programación orientada a aspectos y
la programación orientada a objetos pareciera que son en realidad
el mismo paradigma, no obstante, esta noción es errónea.
En la programación orientada a objetos los sistemas se modelan
como un conjunto de objetos que interactúan entre sÌ, sin embargo,
falla al modelar los conceptos que se entrecruzan.
La diferencia radica en que mientras la programación orientada a
aspectos se enfoca en los conceptos que se entrecruzan, la
programación orientada a objetos se enfoca en los conceptos
comunes.
sigue ->
8. ...hablemos mal de POA
Posibles choques entre el código funcional (expresado en el lenguaje base) y
el código de aspectos (expresados en los lenguajes de aspectos).
Posibles choques entre el código de aspectos y los mecanismos del lenguaje,
uno de los ejemplos más conocidos de este problema es la anomalía de
herencia.
Posibles choques entre los aspectos, un ejemplo clásico es tener dos aspectos
que trabajan perfectamente por separado pero al aplicarlos conjuntamente
resultan en un comportamiento anormal.
Los lenguajes orientados a aspectos actuales no cuentan con mecanismos
lingüísticos suficientemente poderosos para respetar por completo todos los
principios de diseño, como por ejemplo, el encapsulamiento.
9. Ventajas
Permite una implementación modularizada reduciendo el acoplamiento
entre sus partes.
El código es más limpio, menos duplicado, más fácil de entender y de
mantener.
Elimina los problemas causados por el código mezclado y el código
diseminado.
Mayor reutilización, los aspectos tienen mayores probabilidades de ser
reutilizados en otros sistemas con requerimientos similares.
Los sistemas son más adaptables a cambios, la separación de conceptos
permite agregar nuevos aspectos, modificarlos o removerlos fácilmente.
10. Conclusiones
La programación orientada a aspectos es un nuevo paradigma que
adolece de madurez y formalidad, necesita ser desarrollada más
exhaustivamente aun para consolidar sus conceptos.
La programación orientada a aspectos es el comienzo de un nuevo
paradigma, apenas se esta descubriendo su potencialidad, sus
problemas, y sus posibles soluciones, lo que nos hace pensar que es
una de las ramas con mayor futuro dentro de la ingeniería de
software.
Los lenguajes orientados a aspectos actuales, no cuentan con
mecanismos lingüísticos suficientemente poderosos para respetar por
completo todos los principios de diseño.