orientada a aspectos programación - github...
TRANSCRIPT
![Page 1: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/1.jpg)
Programación Orientada a Aspectos
Vladimir Vargas Diaz
David José León
![Page 2: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/2.jpg)
Índice
Un poco de historia
Filosofía del paradigma
Conceptos clave
Ventajas y Desventajas
Lenguajes de programación
Ejemplos
Aplicaciones
Conclusiones
Referencias
![Page 3: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/3.jpg)
Un poco de historiaEn 1995 se publicó la primera definición temprana del concepto de
aspecto y en colaboración de Cristina Lopes y Karl J. Lieberherr con
Gregor Kiczales se introdujo el concepto de POA.
![Page 4: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/4.jpg)
Un poco de historia
Aproximadamente en los años 60 se veían implementaciones de if anidados.
Sobre los años 60 se crea el primer lenguaje de programación funcional.
A mediados de los años 80 se convirtió en el estilo de programación dominante.
Código Spaghetti Programación funcional Programación Orientada a Objetos
Spaghetti funcional POO
Hasta 1995 se publicó la primera definición de aspecto.
Programación Orientada a Aspectos
POA
![Page 5: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/5.jpg)
Filosofía del paradigma
![Page 6: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/6.jpg)
¿Que es un aspecto?
“Un aspecto es una unidad modular que se disemina por la estructura de otras
unidades funcionales. Los aspectos existen tanto en la etapa de diseño como en la de implementación. Un
aspecto de diseño es unaunidad modular del diseño que se
entremezcla en la estructura de otras partes del diseño. Un aspecto de
programa o de código es una unidad modular del programa que aparece en
otras unidades modulares del programa (G. Kiczales)”
![Page 7: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/7.jpg)
Filosofía del paradigma
![Page 8: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/8.jpg)
Filosofía del paradigma
![Page 9: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/9.jpg)
Filosofía del paradigma
![Page 10: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/10.jpg)
Filosofía del paradigma
![Page 11: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/11.jpg)
Conceptos clave para entender lenguajes orientado a aspectos
● Aspecto ● Punto de Cruce o de Unión● Consejo ● Puntos de Corte● Introducción● Destinatario ● Resultante● Tejido
![Page 12: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/12.jpg)
VENTAJAS
Implementación modularizada
Estructura general de la implementación de un módulo.
![Page 13: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/13.jpg)
VENTAJAS
Mayor evolucionabilidad
![Page 14: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/14.jpg)
VENTAJAS
Creación de programas más rápida
![Page 15: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/15.jpg)
VENTAJAS
Evita posibles retrasos de diseño.
Al ser un código limpio y modularizado, se podrán realizar implementaciones separadas para luego incorporarlas a un sistema.
![Page 16: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/16.jpg)
VENTAJAS
Reusabilidad
![Page 17: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/17.jpg)
VENTAJAS
Mínimo acoplamiento y máxima cohesión
![Page 18: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/18.jpg)
VENTAJAS
Dilema del arquitecto de software.
Ayuda de manera evidente al arquitecto de software al tomar decisiones con respecto a tiempo, costos y recursos al tener implementaciones separadas.
![Page 19: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/19.jpg)
VENTAJAS
Divide y vencerás
![Page 20: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/20.jpg)
VENTAJAS
Ayuda a solucionar codigo mezclado o diseminado.
Mezclado que existen soluciones a varios requerimientos conjuntas.
Diseminado que existen soluciones a un solo requerimiento dispersas.
![Page 21: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/21.jpg)
DESVENTAJAS
Choques entre código
funcional y aspectos
Funcional
Aspectos
![Page 22: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/22.jpg)
VENTAJAS
Choques entre aspectos
![Page 23: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/23.jpg)
DESVENTAJAS
Problemas propios del desarrollo
Al ser un paradigma relativamente nuevo, permite que sea ambiguo la forma de implementarlo.
![Page 24: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/24.jpg)
DESVENTAJAS
Choques entre aspectos y mecanismos del lenguaje
![Page 25: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/25.jpg)
Lenguajes de programación
Los lenguajes de programación que permiten la separación de la definición de la funcionalidad
“principal” de los diferentes aspectos son los Lenguajes Orientados a Aspectos (LOA):
● Debe ser claramente identificable.● Debe auto contenerse.● Debe ser ser fácilmente modificable.● No deben interferir entre ellos● No deben interferir con los mecanismos usados para definir o mejorar la funcionalidad
principal como la herencia
![Page 26: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/26.jpg)
Clasificación de los LOA
Los Lenguajes Orientados a Aspectos (LOA) están clasificados en dos tipos:
● Dominio Específico● Propósito General
![Page 27: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/27.jpg)
Lenguajes de programaciónLOA
COOL RIDL
Spring Python
AspectC AspectC ++
AspectJAspectS MALAJ
HyperJ Aspect(PERL)Spring
![Page 28: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/28.jpg)
Ejemplos
Para los ejemplos se utilizará COOL y AspecJ. Ambos lenguajes se implementan en java.
COOL: COOL es un lenguaje de dominio específico creado por Xerox cuya finalidad es la sincronización de hilos concurrentes.
AspectJ: Es una extensión de java de propósito general orientada a aspectos.
![Page 29: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/29.jpg)
Ejemplos
Implementación de una cola circular en java sin sincronización.
![Page 30: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/30.jpg)
Impmentación sincronizada
![Page 31: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/31.jpg)
Solución COOL
![Page 32: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/32.jpg)
Solución en aspectJ
![Page 33: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/33.jpg)
![Page 34: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/34.jpg)
Aplicaciones
Transacciones
![Page 35: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/35.jpg)
Aplicaciones
Sincronización
![Page 36: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/36.jpg)
Aplicaciones
Software
![Page 37: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/37.jpg)
Conclusiones
● Diseño, codificación y ejecutable deben ser refinados para ser una mejor alternativa.
● Está limitado debido a las restricciones que tienen los lenguajes en los que se implementa
● Es un paradigma que le falta maduración
![Page 38: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/38.jpg)
Referencias
● http://ferestrepoca.github.io/paradigmas-de-programacion/poa/poa_teoria● https://codingornot.com/que-es-la-programacion-orientada-a-aspectos-aop● https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_aspectos● https://www.ecured.cu/Programaci%C3%B3n_orientada_a_aspectos● https://dosideas.com/noticias/actualidad/487-los-lenguajes-especificos-de-dominio● Vision_General_de_la_Programacion_Orientada_a_Aspe.pdf
![Page 39: Orientada a Aspectos Programación - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...“principal” de los diferentes aspectos son los Lenguajes Orientados a](https://reader034.vdocuments.site/reader034/viewer/2022051805/5ff6aa4f6d40521aa561ac94/html5/thumbnails/39.jpg)
¡Gracias!