Download diseño y desarrollo de aplicaciones orientadas a

Document related concepts

Scala (lenguaje de programación) wikipedia , lookup

Racket (lenguaje de programación) wikipedia , lookup

C Sharp wikipedia , lookup

Rust (lenguaje de programación) wikipedia , lookup

Oz (lenguaje de programación) wikipedia , lookup

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