SlideShare una empresa de Scribd logo
1 de 6
Programación Orientada a Aspectos y Declarativa
Programación Orientada a Aspectos y Declarativa
Poveda D.*; Herrera F.**; Quilachamin A.***
*Escuela Politécnica Nacional, Facultad de Ingeniería Eléctrica y Electrónica, Quito, Ecuador
e-mail: darwin.poveda@epn.edu.ec
** Escuela Politécnica Nacional, Facultad de Ingeniería Eléctrica y Electrónica, Quito, Ecuador
e-mail: fherrera0206@gmail.com
*** Escuela Politécnica Nacional, Facultad de Ingeniería Eléctrica y Electrónica, Quito, Ecuador
e-mail: alexfer.qm@gmail.com
Objetivo: Este documento tiene como objetivo dar una breve descripción sobre el paradigma de
la Programación Orientada a Aspectos (POA) y la Programación Declarativa.
1. INTRODUCCION
2. MÉTODO
2.1. Programación Orientada a Aspectos
INTRODUCCION
La Programación Orientada a Objetos introdujo un avance importante mediante el uso de
entidades las cuales capturan funcionalidad, comportamiento y estructura interna dicha
entidad es llamada clase.
En la actualidad existen requerimientos de una y de n-dimensiones, mientras que los
métodos de implementación únicamente son de una dimensión, lo cual produce un mapeo
de requerimientos deficiente a sus respectivas implementaciones, cuyos principales
síntomas son el Código Cruzado en el que varios requerimientos son atendidos por el
mismo código, y el Código Diseminado en el que un requerimiento es atendido por varios
módulos.
El uso de varios conceptos enun mismo modulo lleva a producir un código poco reusable,
de baja calidad y propenso a errores.
Es por esto que nace la Programación Orientada a Aspectos(POA),el mismo que permite
a los desarrolladores escribir, ver y editar un aspectodiseminado por todo elsistema como
una entidad por separado, para lograr atender todos los requerimientos del sistema.
2.1.1. Que es un Aspecto?
Un aspecto es una unidad que se encarga de diseminar por la estructura de una unidad
funcional, los aspectos se desarrollan en la etapa de implementación al igual que en la
etapa de diseño.
Para poder comparar un programa de lenguaje tradicional con un programa orientado a
aspectos vamos a tener en cuenta la siguiente figura en la que un programa tradicional
está formado por varias tramas horizontales las mismas que representan una
funcionalidad distinta repartidas por todo el sistema, en cambio una programación
orientada a aspectos está formada por 3 bloques compactos los mismos que representan
un aspecto.
Programación Orientada a Aspectos y Declarativa
Figura 1. Comparación entre Programación tradicional con una orientada a aspectos
2.1.2. Estructura de implementacion
En las aplicaciones tradicionales orientadas a objetos se usaba un compilador para que
nos tradujera un programa escrito en un lenguaje de alto nivel a uno que sea entendible
por la maquina.
Figura 2. Estructura en una implementación en lenguajes de aspectos.
En cambio en la aplicaciones orientadas a aspectos se tiene el compilador pero extra se
dispone de un tejedor que nos permite implementar las funcionalidades basicas con todos
y cada uno de los modulos que implementan los aspectos, los mismos que pueden estar
codificados con un lenguaje diferente.
2.1.3. Conceptos asociados
Punto de Enlace o de Unión (Join point):es un lugar dentro delcódigo donde un aspecto
puede ser conectado, mediante los diferentes comportamientos que se hayan declarado
Programación Orientada a Aspectos y Declarativa
previamente, como una llamada a un método, el lanzamiento de una excepción o la
modificación de un campo.
Consejo (Advice): es la implementación del aspecto, es decir, contiene el código que
implementa la nueva funcionalidad. Se insertan en la aplicación en los Puntos de Enlace.
Puntos de Corte (Pointcut): describen los eventos que se van a aplicar en cada Punto de
Enlace. No definen acciones. Se especifican mediante expresiones regulares.
Introducción (Introduction): se utilizan para añadir métodos o atributos a clases ya
existentes.
Destinatario (Target): este define a la clase que va a ser objeto de un consejo.
Resultante (Proxy): es el objeto que se crea luego de aplicar el Consejo al Objeto
Destinatario. El resto de la aplicación solamente tendrá que soportar al Objeto
Destinatario (pre-POA) y no al Objeto Resultante (post-POA).
Tejido (Weaving): es el proceso de aplicar Aspectos a los Objetos Destinatarios para
crear los nuevos Objetos Resultantes en los especificados Puntos de Enlace.
2.1.4. Principales requerimientos
 Un lenguaje para definir la funcionalidad básica, conocido como lenguaje base o
componente. Podría ser un lenguaje imperativo, o un lenguaje no imperativo
(C++, Java, Lisp, ML).
 Uno o varios lenguajes de aspectos, para especificar el comportamiento de los
aspectos. (COOL, para sincronización, RIDL, para distribución, AspectJ, de
propósito general.)
 Un tejedor de aspectos(Weaver), que se encargará de combinar los lenguajes. Tal
proceso se puede retrasar para hacerse en tiempo de ejecución o en tiempo de
compilación.
2.1.5. Tipos
 De dominio específico, se los han sido diseñados para dar soporte a un tipo
particular de Aspectos, que pueden ser: concurrencia, sincronización o
distribución. Este tipo de lenguajes suelen tener un nivel de abstracción
mayor que el lenguaje base, y permiten representar los conceptos específicos
del aspecto aun nivel de representación más elevado. Algunos de estos
lenguajes pueden poner restricciones en el lenguaje base, para evitar
inconsistencias y garantizar que las tareas realizadas por los aspectos no
sufran alteración alguna.
 De propósitos generales, han sido diseñados para brindar soporte a cualquier
tipo de Aspectos. Estos lenguajes no pueden imponer restricciones en el
lenguaje base. Tienen el mismo nivel de abstracción que el lenguaje base, y
soportan las mismas instrucciones, ejemplo: AspectJ.
2.1.6. Ventajas
Programación Orientada a Aspectos y Declarativa
 Provee un mecanismo que permite separar cada uno de los módulos de la
aplicación y poder realizar las respectivas llamadas entre ellos de una manera más
limpia.
 Evita que haya la duplicidad de código.
 El mantenimiento del código es flexible
2.2. Programación Declarativa
La programación declarativa es un paradigma de programación, que está basado en el
desarrollo de programas especificando o "declarando" un conjunto de condiciones,
proposiciones, afirmaciones, restricciones, ecuacioneso transformaciones que describen
el problema.
2.2.1.Características
 El objetivo fundamental de los lenguajes de programación declarativa es
suministrar un alto nivel de abstracción, de tal forma que solo con la
especificación del problema sea un programa capaz de resolver el problema.
 El programador no debe escribir detallamente todas las acciones que se debe
realizar, es decir el algoritmo de la solución del problema, como es tradicional
en los lenguajes imperativos.
 En la programación declarativa, en general, los programas son más breves y
sencillos de mantener.
 Un lenguaje con una clara correspondencia con la lógica matemática
 El programa describe lo que se debe calcular y no cómo calcular.
2.2.2.Ventajas
 Descripciones compactas y muy expresivas. Es posible describir universos de
problemas con muy pocas líneas de código del lenguaje que permitan la
solución de un gran número de problemas.
 Desarrollo del programa no tan orientado a la solución de un único problema.
Con una programación adecuada,basta haberdescrito un dominio de problemas
de forma correcta y saber formular nuestro problema como una simple consulta
en dicho dominio. La variedad de preguntas que se pueden responder con una
única descripción del dominio de problemas concreto suele ser muy elevada.
 No hay necesidad de emplear esfuerzo en diseñar un algoritmo que resuelva el
problema.
 Los lenguajes declarativos tienen la ventaja de serrazonados matemáticamente,
lo que permite el uso de mecanismos matemáticos para optimizar el
rendimiento de los programas.
2.2.3.Tipos
Existen varios tipos, pero vamos a mencionar algunos:
 Programación funcional
 Programación lógica.
 Programación algebraica
 Programación basada en restricciones.
2.2.3.1. La programación lógica utiliza el predicado lógico como concepto
descriptivo básico. Nuestro programa consistirá en una serie de predicados
que describirán un mundo en el que los objetos se relacionan según las
reglas de la lógica de predicados. Ejemplo: Prolog, ML, Lisp, Curry, F-
Prolog.
Programación Orientada a Aspectos y Declarativa
Declaraciones: Resolución:
Figura 3. Programa en Prolog de relaciones de descendencia.
2.2.3.2. La programación funcional utiliza la función como concepto
descriptivo básico. Esto quiere decir que en nuestro programa describiremos
funciones y que estas funciones se pueden combinar unas con otras para
generar nuevas funciones. Ejemplo: Haskell, (Programación funcional)
Declaraciones: Resolución:
Figura 4. Programa en Haskell: Comprobación de que un número es natural
2.2.3.3. Lenguajes algebraicos.
Ejemplo: Maude, SQL
2.2.4.Aplicaciones
Este estilo de programación encuentra numerosas aplicaciones industriales en
campos como: las bases de datos, ingeniería del software, procesadores de
lenguajes, lenguaje natural, investigación operativa, seguridad de redes, etc.
3. CONCLUSIONES
- La utilización de la POA nos va a permitir tener aplicaciones con mejor mantenibilidad
y modularidad, aunque el nivel de abstracción sea grande, la cantidad de prestaciones que
presenta, este supone un gran avance en lo que a lenguajes de programación concierne.
- Al igual que sucedió en un principio con la programación orientada a objetos, el POA
todavía no es muy aceptado dado su gran nivel de abstracción necesaria,sin embargo con
la investigación adecuada en unos cuantos años este tipo de programación puede llegar a
ser uno de los más usados.
4. BIBLIOGRAFÍA
Programación Orientada a Aspectos y Declarativa
 Fernández, A.J.(2005). PROGRAMACIÓNDECLARATIVACONRESTRICCIONES
Inteligencia Artificial. Revista Iberoamericana de Inteligencia Artificial, otoño, año/vol.
9, número 027 Asociación Española para la Inteligencia Artificial Valencia,
España. Inteligencia Artificial, Revista Iberoamericana de Inteligencia Artificial, 9(27),
73-100.
 Moreno, G., & Pascual, V. (2006). Programando con igualdad similar estricta. Una
Perspectiva de la Inteligencia Artificial en su 50 Aniversario, 600.
 "Programación declarativa vs. Procedural". [En línea]. Disponible en:
ftp://altea.dlsi.ua.es/people/antonio/ayudaProlog.pdf/.
 “Programacion Declarativa”. [En línea]. Disponible en: http://titan.inf-
cr.uclm.es/www/pjulian/teaching/sl_apPD.pdf

Más contenido relacionado

La actualidad más candente

Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmasyiyi153
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmascritina26
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmasdianis22
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmasCAMINSUASTY
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmascritina26
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmasmauro38
 
Programac io n pdf
Programac io n pdfProgramac io n pdf
Programac io n pdfjose peralta
 
lenguaje de programacion
lenguaje de programacionlenguaje de programacion
lenguaje de programacionjuliana0396
 
Intro ProgramacióN
Intro ProgramacióNIntro ProgramacióN
Intro ProgramacióNAlfonso
 

La actualidad más candente (10)

Sesion 2
Sesion 2Sesion 2
Sesion 2
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmas
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmas
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmas
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmas
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmas
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmas
 
Programac io n pdf
Programac io n pdfProgramac io n pdf
Programac io n pdf
 
lenguaje de programacion
lenguaje de programacionlenguaje de programacion
lenguaje de programacion
 
Intro ProgramacióN
Intro ProgramacióNIntro ProgramacióN
Intro ProgramacióN
 

Similar a Herrera poveda quilachamin_paper

Similar a Herrera poveda quilachamin_paper (20)

Programación Orientada a Aspectos - Fernando Córdoba
Programación Orientada a Aspectos - Fernando CórdobaProgramación Orientada a Aspectos - Fernando Córdoba
Programación Orientada a Aspectos - Fernando Córdoba
 
Introduccion a la programación I Parte
Introduccion a la programación I Parte Introduccion a la programación I Parte
Introduccion a la programación I Parte
 
Aspect Oriented Programming introduction
Aspect Oriented Programming introductionAspect Oriented Programming introduction
Aspect Oriented Programming introduction
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Estructura de casos de uso
Estructura de casos de usoEstructura de casos de uso
Estructura de casos de uso
 
Progra
PrograProgra
Progra
 
Int a la computacion
Int a la computacionInt a la computacion
Int a la computacion
 
Lenguaje de programacion de c++
Lenguaje de programacion de c++Lenguaje de programacion de c++
Lenguaje de programacion de c++
 
Estructura de casos de uso
Estructura de casos de usoEstructura de casos de uso
Estructura de casos de uso
 
Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)
 
Programacion visual
Programacion visualProgramacion visual
Programacion visual
 
Programación
ProgramaciónProgramación
Programación
 
Informe lpi
Informe lpiInforme lpi
Informe lpi
 
Programación modular
Programación modularProgramación modular
Programación modular
 
Lenguaje c ibeth lozada
Lenguaje c ibeth lozadaLenguaje c ibeth lozada
Lenguaje c ibeth lozada
 
1 conceptos generales de_programacion
1 conceptos generales de_programacion1 conceptos generales de_programacion
1 conceptos generales de_programacion
 
Principios programacion
Principios programacionPrincipios programacion
Principios programacion
 
Computacion alejandro
Computacion alejandroComputacion alejandro
Computacion alejandro
 
tecnologia 1.pdf
tecnologia 1.pdftecnologia 1.pdf
tecnologia 1.pdf
 
tecnologia 1.pdf
tecnologia 1.pdftecnologia 1.pdf
tecnologia 1.pdf
 

Último

Introduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdfIntroduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdfjhorbycoralsanchez
 
Sistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosSistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosfranchescamassielmor
 
LICENCIA DE CONSTRUCCION, Y EDIFICACIONES RESPECTO A LA LEY 29090.pptx
LICENCIA DE CONSTRUCCION, Y EDIFICACIONES RESPECTO A LA LEY 29090.pptxLICENCIA DE CONSTRUCCION, Y EDIFICACIONES RESPECTO A LA LEY 29090.pptx
LICENCIA DE CONSTRUCCION, Y EDIFICACIONES RESPECTO A LA LEY 29090.pptxLucindaMy
 
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdfMETROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdfesparzadaniela548
 
Procedimientos constructivos superestructura, columnas
Procedimientos constructivos superestructura, columnasProcedimientos constructivos superestructura, columnas
Procedimientos constructivos superestructura, columnasAhmedMontaoSnchez1
 
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEfrain Yungan
 
electricidad básica, ejemplos prácticos y ejercicios
electricidad básica, ejemplos prácticos y ejercicioselectricidad básica, ejemplos prácticos y ejercicios
electricidad básica, ejemplos prácticos y ejerciciosEfrain Yungan
 
Estudio de materiales asfalticos para utilizar en obras viales
Estudio de materiales asfalticos para utilizar en obras vialesEstudio de materiales asfalticos para utilizar en obras viales
Estudio de materiales asfalticos para utilizar en obras vialesRamonCortez4
 
Sistema de Base de Datos para renta de trajes
Sistema de Base de Datos para renta de trajesSistema de Base de Datos para renta de trajes
Sistema de Base de Datos para renta de trajesjohannyrmnatejeda
 
JimyPomalaza vivienda rural huancavelica .pdf
JimyPomalaza vivienda rural huancavelica .pdfJimyPomalaza vivienda rural huancavelica .pdf
JimyPomalaza vivienda rural huancavelica .pdfJimyPomalaza
 
209530529 Licuacion-de-Suelos-en-Arequipa.pdf
209530529 Licuacion-de-Suelos-en-Arequipa.pdf209530529 Licuacion-de-Suelos-en-Arequipa.pdf
209530529 Licuacion-de-Suelos-en-Arequipa.pdfnurix_15
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptxJOSLUISCALLATAENRIQU
 
LABORATORIO CALIFICADO 01 CONTENIDO DE HUMEDAD MÉTODO DE SECADO AL HORNO.pdf
LABORATORIO CALIFICADO 01 CONTENIDO DE HUMEDAD MÉTODO DE SECADO AL HORNO.pdfLABORATORIO CALIFICADO 01 CONTENIDO DE HUMEDAD MÉTODO DE SECADO AL HORNO.pdf
LABORATORIO CALIFICADO 01 CONTENIDO DE HUMEDAD MÉTODO DE SECADO AL HORNO.pdfPeraltaFrank
 
01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx
01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx
01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptxluiscisnerosayala23
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidasNelsonQuispeQuispitu
 
La mineralogia y minerales, clasificacion
La mineralogia y minerales, clasificacionLa mineralogia y minerales, clasificacion
La mineralogia y minerales, clasificacionnewspotify528
 
Esmerling de la Cruz (Proyecto de Programación)
Esmerling de la Cruz (Proyecto de Programación)Esmerling de la Cruz (Proyecto de Programación)
Esmerling de la Cruz (Proyecto de Programación)esmerling14
 
Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)dianamateo1513
 

Último (20)

Introduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdfIntroduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdf
 
Sistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosSistema de gestión de turnos para negocios
Sistema de gestión de turnos para negocios
 
LICENCIA DE CONSTRUCCION, Y EDIFICACIONES RESPECTO A LA LEY 29090.pptx
LICENCIA DE CONSTRUCCION, Y EDIFICACIONES RESPECTO A LA LEY 29090.pptxLICENCIA DE CONSTRUCCION, Y EDIFICACIONES RESPECTO A LA LEY 29090.pptx
LICENCIA DE CONSTRUCCION, Y EDIFICACIONES RESPECTO A LA LEY 29090.pptx
 
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdfMETROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
 
Procedimientos constructivos superestructura, columnas
Procedimientos constructivos superestructura, columnasProcedimientos constructivos superestructura, columnas
Procedimientos constructivos superestructura, columnas
 
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
 
electricidad básica, ejemplos prácticos y ejercicios
electricidad básica, ejemplos prácticos y ejercicioselectricidad básica, ejemplos prácticos y ejercicios
electricidad básica, ejemplos prácticos y ejercicios
 
Estudio de materiales asfalticos para utilizar en obras viales
Estudio de materiales asfalticos para utilizar en obras vialesEstudio de materiales asfalticos para utilizar en obras viales
Estudio de materiales asfalticos para utilizar en obras viales
 
Sistema de Base de Datos para renta de trajes
Sistema de Base de Datos para renta de trajesSistema de Base de Datos para renta de trajes
Sistema de Base de Datos para renta de trajes
 
JimyPomalaza vivienda rural huancavelica .pdf
JimyPomalaza vivienda rural huancavelica .pdfJimyPomalaza vivienda rural huancavelica .pdf
JimyPomalaza vivienda rural huancavelica .pdf
 
209530529 Licuacion-de-Suelos-en-Arequipa.pdf
209530529 Licuacion-de-Suelos-en-Arequipa.pdf209530529 Licuacion-de-Suelos-en-Arequipa.pdf
209530529 Licuacion-de-Suelos-en-Arequipa.pdf
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
 
LABORATORIO CALIFICADO 01 CONTENIDO DE HUMEDAD MÉTODO DE SECADO AL HORNO.pdf
LABORATORIO CALIFICADO 01 CONTENIDO DE HUMEDAD MÉTODO DE SECADO AL HORNO.pdfLABORATORIO CALIFICADO 01 CONTENIDO DE HUMEDAD MÉTODO DE SECADO AL HORNO.pdf
LABORATORIO CALIFICADO 01 CONTENIDO DE HUMEDAD MÉTODO DE SECADO AL HORNO.pdf
 
01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx
01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx
01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidas
 
La mineralogia y minerales, clasificacion
La mineralogia y minerales, clasificacionLa mineralogia y minerales, clasificacion
La mineralogia y minerales, clasificacion
 
Esmerling de la Cruz (Proyecto de Programación)
Esmerling de la Cruz (Proyecto de Programación)Esmerling de la Cruz (Proyecto de Programación)
Esmerling de la Cruz (Proyecto de Programación)
 
Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)
 

Herrera poveda quilachamin_paper

  • 1. Programación Orientada a Aspectos y Declarativa Programación Orientada a Aspectos y Declarativa Poveda D.*; Herrera F.**; Quilachamin A.*** *Escuela Politécnica Nacional, Facultad de Ingeniería Eléctrica y Electrónica, Quito, Ecuador e-mail: darwin.poveda@epn.edu.ec ** Escuela Politécnica Nacional, Facultad de Ingeniería Eléctrica y Electrónica, Quito, Ecuador e-mail: fherrera0206@gmail.com *** Escuela Politécnica Nacional, Facultad de Ingeniería Eléctrica y Electrónica, Quito, Ecuador e-mail: alexfer.qm@gmail.com Objetivo: Este documento tiene como objetivo dar una breve descripción sobre el paradigma de la Programación Orientada a Aspectos (POA) y la Programación Declarativa. 1. INTRODUCCION 2. MÉTODO 2.1. Programación Orientada a Aspectos INTRODUCCION La Programación Orientada a Objetos introdujo un avance importante mediante el uso de entidades las cuales capturan funcionalidad, comportamiento y estructura interna dicha entidad es llamada clase. En la actualidad existen requerimientos de una y de n-dimensiones, mientras que los métodos de implementación únicamente son de una dimensión, lo cual produce un mapeo de requerimientos deficiente a sus respectivas implementaciones, cuyos principales síntomas son el Código Cruzado en el que varios requerimientos son atendidos por el mismo código, y el Código Diseminado en el que un requerimiento es atendido por varios módulos. El uso de varios conceptos enun mismo modulo lleva a producir un código poco reusable, de baja calidad y propenso a errores. Es por esto que nace la Programación Orientada a Aspectos(POA),el mismo que permite a los desarrolladores escribir, ver y editar un aspectodiseminado por todo elsistema como una entidad por separado, para lograr atender todos los requerimientos del sistema. 2.1.1. Que es un Aspecto? Un aspecto es una unidad que se encarga de diseminar por la estructura de una unidad funcional, los aspectos se desarrollan en la etapa de implementación al igual que en la etapa de diseño. Para poder comparar un programa de lenguaje tradicional con un programa orientado a aspectos vamos a tener en cuenta la siguiente figura en la que un programa tradicional está formado por varias tramas horizontales las mismas que representan una funcionalidad distinta repartidas por todo el sistema, en cambio una programación orientada a aspectos está formada por 3 bloques compactos los mismos que representan un aspecto.
  • 2. Programación Orientada a Aspectos y Declarativa Figura 1. Comparación entre Programación tradicional con una orientada a aspectos 2.1.2. Estructura de implementacion En las aplicaciones tradicionales orientadas a objetos se usaba un compilador para que nos tradujera un programa escrito en un lenguaje de alto nivel a uno que sea entendible por la maquina. Figura 2. Estructura en una implementación en lenguajes de aspectos. En cambio en la aplicaciones orientadas a aspectos se tiene el compilador pero extra se dispone de un tejedor que nos permite implementar las funcionalidades basicas con todos y cada uno de los modulos que implementan los aspectos, los mismos que pueden estar codificados con un lenguaje diferente. 2.1.3. Conceptos asociados Punto de Enlace o de Unión (Join point):es un lugar dentro delcódigo donde un aspecto puede ser conectado, mediante los diferentes comportamientos que se hayan declarado
  • 3. Programación Orientada a Aspectos y Declarativa previamente, como una llamada a un método, el lanzamiento de una excepción o la modificación de un campo. Consejo (Advice): es la implementación del aspecto, es decir, contiene el código que implementa la nueva funcionalidad. Se insertan en la aplicación en los Puntos de Enlace. Puntos de Corte (Pointcut): describen los eventos que se van a aplicar en cada Punto de Enlace. No definen acciones. Se especifican mediante expresiones regulares. Introducción (Introduction): se utilizan para añadir métodos o atributos a clases ya existentes. Destinatario (Target): este define a la clase que va a ser objeto de un consejo. Resultante (Proxy): es el objeto que se crea luego de aplicar el Consejo al Objeto Destinatario. El resto de la aplicación solamente tendrá que soportar al Objeto Destinatario (pre-POA) y no al Objeto Resultante (post-POA). Tejido (Weaving): es el proceso de aplicar Aspectos a los Objetos Destinatarios para crear los nuevos Objetos Resultantes en los especificados Puntos de Enlace. 2.1.4. Principales requerimientos  Un lenguaje para definir la funcionalidad básica, conocido como lenguaje base o componente. Podría ser un lenguaje imperativo, o un lenguaje no imperativo (C++, Java, Lisp, ML).  Uno o varios lenguajes de aspectos, para especificar el comportamiento de los aspectos. (COOL, para sincronización, RIDL, para distribución, AspectJ, de propósito general.)  Un tejedor de aspectos(Weaver), que se encargará de combinar los lenguajes. Tal proceso se puede retrasar para hacerse en tiempo de ejecución o en tiempo de compilación. 2.1.5. Tipos  De dominio específico, se los han sido diseñados para dar soporte a un tipo particular de Aspectos, que pueden ser: concurrencia, sincronización o distribución. Este tipo de lenguajes suelen tener un nivel de abstracción mayor que el lenguaje base, y permiten representar los conceptos específicos del aspecto aun nivel de representación más elevado. Algunos de estos lenguajes pueden poner restricciones en el lenguaje base, para evitar inconsistencias y garantizar que las tareas realizadas por los aspectos no sufran alteración alguna.  De propósitos generales, han sido diseñados para brindar soporte a cualquier tipo de Aspectos. Estos lenguajes no pueden imponer restricciones en el lenguaje base. Tienen el mismo nivel de abstracción que el lenguaje base, y soportan las mismas instrucciones, ejemplo: AspectJ. 2.1.6. Ventajas
  • 4. Programación Orientada a Aspectos y Declarativa  Provee un mecanismo que permite separar cada uno de los módulos de la aplicación y poder realizar las respectivas llamadas entre ellos de una manera más limpia.  Evita que haya la duplicidad de código.  El mantenimiento del código es flexible 2.2. Programación Declarativa La programación declarativa es un paradigma de programación, que está basado en el desarrollo de programas especificando o "declarando" un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuacioneso transformaciones que describen el problema. 2.2.1.Características  El objetivo fundamental de los lenguajes de programación declarativa es suministrar un alto nivel de abstracción, de tal forma que solo con la especificación del problema sea un programa capaz de resolver el problema.  El programador no debe escribir detallamente todas las acciones que se debe realizar, es decir el algoritmo de la solución del problema, como es tradicional en los lenguajes imperativos.  En la programación declarativa, en general, los programas son más breves y sencillos de mantener.  Un lenguaje con una clara correspondencia con la lógica matemática  El programa describe lo que se debe calcular y no cómo calcular. 2.2.2.Ventajas  Descripciones compactas y muy expresivas. Es posible describir universos de problemas con muy pocas líneas de código del lenguaje que permitan la solución de un gran número de problemas.  Desarrollo del programa no tan orientado a la solución de un único problema. Con una programación adecuada,basta haberdescrito un dominio de problemas de forma correcta y saber formular nuestro problema como una simple consulta en dicho dominio. La variedad de preguntas que se pueden responder con una única descripción del dominio de problemas concreto suele ser muy elevada.  No hay necesidad de emplear esfuerzo en diseñar un algoritmo que resuelva el problema.  Los lenguajes declarativos tienen la ventaja de serrazonados matemáticamente, lo que permite el uso de mecanismos matemáticos para optimizar el rendimiento de los programas. 2.2.3.Tipos Existen varios tipos, pero vamos a mencionar algunos:  Programación funcional  Programación lógica.  Programación algebraica  Programación basada en restricciones. 2.2.3.1. La programación lógica utiliza el predicado lógico como concepto descriptivo básico. Nuestro programa consistirá en una serie de predicados que describirán un mundo en el que los objetos se relacionan según las reglas de la lógica de predicados. Ejemplo: Prolog, ML, Lisp, Curry, F- Prolog.
  • 5. Programación Orientada a Aspectos y Declarativa Declaraciones: Resolución: Figura 3. Programa en Prolog de relaciones de descendencia. 2.2.3.2. La programación funcional utiliza la función como concepto descriptivo básico. Esto quiere decir que en nuestro programa describiremos funciones y que estas funciones se pueden combinar unas con otras para generar nuevas funciones. Ejemplo: Haskell, (Programación funcional) Declaraciones: Resolución: Figura 4. Programa en Haskell: Comprobación de que un número es natural 2.2.3.3. Lenguajes algebraicos. Ejemplo: Maude, SQL 2.2.4.Aplicaciones Este estilo de programación encuentra numerosas aplicaciones industriales en campos como: las bases de datos, ingeniería del software, procesadores de lenguajes, lenguaje natural, investigación operativa, seguridad de redes, etc. 3. CONCLUSIONES - La utilización de la POA nos va a permitir tener aplicaciones con mejor mantenibilidad y modularidad, aunque el nivel de abstracción sea grande, la cantidad de prestaciones que presenta, este supone un gran avance en lo que a lenguajes de programación concierne. - Al igual que sucedió en un principio con la programación orientada a objetos, el POA todavía no es muy aceptado dado su gran nivel de abstracción necesaria,sin embargo con la investigación adecuada en unos cuantos años este tipo de programación puede llegar a ser uno de los más usados. 4. BIBLIOGRAFÍA
  • 6. Programación Orientada a Aspectos y Declarativa  Fernández, A.J.(2005). PROGRAMACIÓNDECLARATIVACONRESTRICCIONES Inteligencia Artificial. Revista Iberoamericana de Inteligencia Artificial, otoño, año/vol. 9, número 027 Asociación Española para la Inteligencia Artificial Valencia, España. Inteligencia Artificial, Revista Iberoamericana de Inteligencia Artificial, 9(27), 73-100.  Moreno, G., & Pascual, V. (2006). Programando con igualdad similar estricta. Una Perspectiva de la Inteligencia Artificial en su 50 Aniversario, 600.  "Programación declarativa vs. Procedural". [En línea]. Disponible en: ftp://altea.dlsi.ua.es/people/antonio/ayudaProlog.pdf/.  “Programacion Declarativa”. [En línea]. Disponible en: http://titan.inf- cr.uclm.es/www/pjulian/teaching/sl_apPD.pdf