Download diseño y desarrollo de aplicaciones orientadas a
Document related concepts
Transcript
PROGRAMACIÓN ORIENTADA A ASPECTOS (POA) Juan Paúl Jiménez Gaona jpjimenezxx@utpl.edu.ec jpauljgaona@hotmail.com Palabras Claves: Aspecto.- Funcionalidad que quieres aplicar a otras partes del Código. Hay que tener presente que la POA no sustituye a la POO sino la complementa. ASPECTO [1] RESUMEN En este presente trabajo observamos una breve introducción de lo que es la Programación Orientada a Aspectos con la finalidad de ir dando una mejor comprensión a un tema tan abstracto. Un aspecto es una unidad modular que se dispersa 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 una unidad modular del diseño que se entremezcla en la estructura de otras partes del diseño. Introducción Con la POA (Programación Orientada a Aspectos), se busca la separación de las funcionalidades dentro del sistema. La intención de la POA es permitir una adecuada modularización de las aplicaciones y facilitar una mejor separación de conceptos. Gracias a la POA se pueden encapsular los diferentes conceptos que componen una aplicación en entidades bien definidas, eliminando las dependencias entre cada uno de los módulos. De esta forma se consigue razonar mejor sobre los conceptos, se elimina la dispersión del código y las implementaciones resultan más comprensibles, adaptables y reusables. Un aspecto de implementación es una unidad modular del programa que aparece en otras unidades modulares del programa.” HISTORIA [1] El primero en usar ideas orientadas a aspectos fue el grupo Demeter. Su trabajo se centraba en la programación adaptativa, que en la actualidad se considera una versión inicial de la POA. El grupo Xerox Palo Reserach Center, dirigido por Gregor Kiczales, con las colaboraciones del grupo Demeter, han sido los contribuidores más importantes al desarrollo de este nuevo paradigma. 1 En la actualidad la POA se encuentra en su fase de desarrollo y constantemente surgen nuevas herramientas orientadas a aspectos, nuevos ámbitos donde aplicar los aspectos. Por lo tanto no la POA esta en la fase de investigación por lo cual no se puede hablar con exactitud de una metodología bien cimentada pero si se puede hablar de sus principales objetivos a conseguir. FUNDAMENTOS DE LA POA [1] Para establecer las bases de la POA, Gregor Kiczales consideró que los lenguajes OO, los lenguajes procedurales y los funcionales formaban parte de una misma familia de lenguajes, los lenguajes de procedimiento generalizado (generalizad-procedure languages), ya que sus mecanismos de abstracción y composición tienen una raíz común en forma de un procedimiento generalizado. Un aspecto no puede encapsularse claramente en un procedimiento generalizado. Suelen ser propiedades que afectan al rendimiento o a la semántica de los componentes. Por lo tanto los objetivos principales de la POA es: “Proporcionar un marco de trabajo que permita al programador separar claramente componentes y aspectos a través de mecanismos que hagan posible abstraerlos y componerlos para producir el sistema global.” IMPLEMENTACIÓN DE ASPECTOS [2] Los lenguajes orientados a aspectos definen una nueva unidad de programación de software para encapsular las funcionalidades diseminadas por todo el código (los aspectos). Sin embargo, componentes y aspectos deben interactuar. En la ejecución del programa, finalmente, los aspectos deberán estar insertados dentro de los componentes. Para ello será necesario definir claramente como será ésta estrategia de inserción. En la terminología de POA, este proceso se denomina “entretejido”, ya que puede pensarse que aspectos y componentes deben“entretejerse” para formar finalmente un código ejecutable. Para poder realizar este entretejido entre aspectos y componentes, es necesario definir o declarar ciertos “puntos de enlace”. Los puntos de enlace son una clase especial de interfaz entre los aspectos y los módulos del lenguaje de componentes. Son los lugares del código en los que éste se debe modificar, incorporando los comportamientos adicionales especificados en los aspectos. DISEÑO Y DESARROLLO DE APLICACIONES ORIENTADAS A ASPECTOS [1] No hace mucho tiempo, la orientación a aspectos se centró principalmente en la implementación y codificación (desarrollo), pero en la actualidad cada vez surgen más trabajos para llevar la separación de incumbencias a nivel de diseño. Realizar un sistema basado en aspectos requiere entender qué se debe incluir en el lenguaje base, qué se debe incluir dentro de los lenguajes de aspectos y 2 qué debe compartirse entre ambos lenguajes. El lenguaje de los componentes debe proveer la forma de implementar la funcionalidad principal y asegurar que los programas escritos en ese lenguaje no interfieran con los aspectos. Los lenguajes de aspectos tienen que proveer los medios para implementar los aspectos deseados de una manera intuitiva, natural y concisa. Los aspectos no deben interferir entre ellos. Los aspectos no deben interferir con los mecanismos usados para definir y evolucionar la funcionalidad principal, como la herencia. Se necesita de 3 pasos para poder desarrollar una aplicación orientada a aspectos: 1. Descomposición de aspectos y componentes: Descomponer los requerimientos para distinguir aquellos que son componentes de los que son aspectos. 2. Implementación de las incumbencias: Implementar cada incumbencia por separado (aspectos y componentes). 3. Recomposición: Definir las reglas que permitan combinar los aspectos con los componentes Los LOA de dominio específico han sido diseñados para soportar algún tipo particular de Aspectos, como por ejemplo la 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 a un nivel de representación mas elevado. LENGUAJES ORIENTADOS A ASPECTOS [2] La idea central de la POA es permitir que un programa sea construido describiendo cada concepto (o incumbencia) separadamente. El soporte para este nuevo modelo se logra a través de una nueva clase de lenguajes, llamados lenguajes orientados a aspectos (LOA), los cuales brindan mecanismos para capturar y declarar aquellos elementos que se diseminan por todo el sistema. Los LOA deben satisfacer varias propiedades que son: Cada aspecto debe ser claramente identificable. Cada aspecto debe auto contenerse. Los aspectos deben ser fácilmente modificables. Se distinguen dos enfoques: De dominio específico. De domino general. Algunos de Los LOA de propósitos generales han sido diseñados para soportar cualquier tipo de Aspectos. Este tipo de lenguajes no pueden imponer restricciones en el lenguaje base. Los LOA de propósitos general tienen la clara ventaja de ser, tal como su nombre indica, generales, y por lo tanto, capaces de ser utilizados para desarrollar con ellos cualquier tipo de aspecto. Sin embargo, tienen también una desventaja. No garantizan la separación de funcionalidades. Al no poder restringir las instrucciones o primitivas en la programación de los componentes, no puede garantizarse que las tareas que deberían programarse como aspectos no sean programados dentro de los componentes. Ente los lenguajes orientados a aspectos tenemos: 3 COOL. RIDL. MALAJ. AspectC. AspectC++. AspectJ. CONCLUSIONES En conclusión, es importante desde el momento de nacimiento de nuestro proyecto de software, ya que nos permitirá: Obtener un código más simple y fácil de desarrollar y de mantener y de la misma forma que tenga más potencialidad para la reutilización del código. BIBLIOGRAFÍA. 1. [1] Programación Orientada a Aspectos Salvador Manzanares smg3@alu.um.es Guillén Jesús J. García Molina jmolina@um.es Departamento de Informática y Sistemas de la Facultad de Informática de la Universidad de Murcia. 2. [2]Programación Orientada a Aspectos Ing. José Joskowicz MSDN – Microsoft http://iie.fing.edu.uy/~josej/docs/Pro gramacion%20Orientada%20Aspect os%20-%20Jose%20Joskowicz.pdf 4