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

PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfalexquispenieto2
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdfCristhianZetaNima
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfDiegoMadrigal21
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralsantirangelcor
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdfFernandaGarca788912
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxbingoscarlet
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónXimenaFallaLecca1
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVSebastianPaez47
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 

Último (20)

PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdf
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
 
nom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdfnom-028-stps-2012-nom-028-stps-2012-.pdf
nom-028-stps-2012-nom-028-stps-2012-.pdf
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integral
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdf
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcción
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 

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