orientada a aspectos programación · programación orientada a objetos spaghetti funcional poo...
TRANSCRIPT
![Page 1: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/1.jpg)
Programación Orientada a Aspectos
Vladimir Vargas Diaz
David José León
![Page 2: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/5.jpg)
Filosofía del paradigma
![Page 6: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/7.jpg)
Filosofía del paradigma
![Page 8: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/8.jpg)
Filosofía del paradigma
![Page 9: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/9.jpg)
Filosofía del paradigma
![Page 10: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/10.jpg)
Filosofía del paradigma
![Page 11: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/13.jpg)
VENTAJAS
Mayor evolucionabilidad
![Page 14: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/14.jpg)
VENTAJAS
Creación de programas más rápida
![Page 15: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/16.jpg)
VENTAJAS
Reusabilidad
![Page 17: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/17.jpg)
VENTAJAS
Mínimo acoplamiento y máxima cohesión
![Page 18: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/19.jpg)
VENTAJAS
Divide y vencerás
![Page 20: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/21.jpg)
DESVENTAJAS
Choques entre código
funcional y aspectos
Funcional
Aspectos
![Page 22: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/22.jpg)
VENTAJAS
Choques entre aspectos
![Page 23: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/24.jpg)
DESVENTAJAS
Choques entre aspectos y mecanismos del lenguaje
![Page 25: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/29.jpg)
Ejemplos
Implementación de una cola circular en java sin sincronización.
![Page 30: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/30.jpg)
Impmentación sincronizada
![Page 31: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/31.jpg)
Solución COOL
![Page 32: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/32.jpg)
Solución en aspectJ
![Page 33: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/33.jpg)
![Page 34: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/34.jpg)
Aplicaciones
Transacciones
![Page 35: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/35.jpg)
Aplicaciones
Sincronización
![Page 36: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/36.jpg)
Aplicaciones
Software
![Page 37: Orientada a Aspectos Programación · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/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 · Programación Orientada a Objetos Spaghetti funcional POO Hasta 1995 se publicó la primera definición de aspecto. Programación Orientada](https://reader035.vdocuments.site/reader035/viewer/2022062403/5fd8c84451769d334e346344/html5/thumbnails/39.jpg)
¡Gracias!