Programación Orientada a Aspectos y Declarativa
Programación Orientada a Aspectos y Declarativa
Poveda D.*; Herrera F.**; ...
Programación Orientada a Aspectos y Declarativa
Figura 1. Comparación entre Programación tradicional con una orientada a a...
Programación Orientada a Aspectos y Declarativa
previamente, como una llamada a un método, el lanzamiento de una excepción...
Programación Orientada a Aspectos y Declarativa
 Provee un mecanismo que permite separar cada uno de los módulos de la
ap...
Programación Orientada a Aspectos y Declarativa
Declaraciones: Resolución:
Figura 3. Programa en Prolog de relaciones de d...
Programación Orientada a Aspectos y Declarativa
 Fernández, A.J.(2005). PROGRAMACIÓNDECLARATIVACONRESTRICCIONES
Inteligen...
Próxima SlideShare
Cargando en…5
×

Herrera poveda quilachamin_paper

148 visualizaciones

Publicado el

Programación Orientada a Aspecto y Declarativa

Publicado en: Ingeniería
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
148
En SlideShare
0
De insertados
0
Número de insertados
3
Acciones
Compartido
0
Descargas
0
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Herrera poveda quilachamin_paper

  1. 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. 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. 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. 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. 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. 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

×