Sei sulla pagina 1di 10

CARACTERSTICAS Y FUNCIONALIDADES DE LA PROGRAMACIN

ORIENTADA A ASPECTOS
RESUMEN
La ingeniera del software, y en general, la informtica es una disciplina que est
en constante evolucin. Cada da surgen nuevas tcnicas y metodologas que
intentan mejorar la calidad y la eficiencia de los productos software. En los ltimos
tiempos ha surgido con fuerza una nueva forma de descomponer los sistemas: la
orientacin a aspectos. Esta investigacin analiza las caractersticas y
funcionalidades de la programacin orientada a aspectos, a travs de estudios de
casos para un desarrollo experimental de una aplicacin, mostrando una visin
general, desde sus comienzos, hasta llegar su estado actual .La Programacin
Orientada a Aspectos es una propuesta reciente que brinda un mayor grado de
abstraccin en el desarrollo de software, permitiendo realizar de manera ntida y
eficiente una clara separacin de aspectos. Esta tcnica de programacin
surgida a fines de los 90' y con importante crecimiento en los ltimos aos, busca
facilitar la modularizacin de aquellas incumbencias transversales que resultan de
la modularizacin con las tcnicas tradicionales de programacin. El presente
trabajo muestra las particularidades principales de la Programacin Orientada a
Aspectos. Basando en una breve resea histrica, la descripcin de algunos
lenguajes orientados a aspectos y las caractersticas destacables de la
implementacin y el diseo de las aplicaciones orientadas a aspectos.
Palabras claves: Programacin, aspecto, abstraccin, software.
ABSTRACT
Software engineering, and general computer science is a discipline that is
constantly evolving. Every day new techniques and methodologies that attempt to
improve the quality and efficiency of software products emerge. In recent times
there has emerged strongly a new way to break down systems: orientation
aspects. This research analyzes the features and functionality of Aspect-Oriented
Programming, through case studies for experimental development of an
application, displaying an overview, from its inception until its present state .The
"Aspect-Oriented Programming" (AOP) it is a recent proposal that provides a
greater degree of abstraction in software development, allowing to make crisp and
efficiently a clear "separation of concerns". This programming technique emerged
in the late 90 'and with significant growth in recent years, seeks to facilitate the
modularization of cross incumbencies those resulting from modularization with
traditional programming techniques. This paper shows the main features of AspectOriented Programming. Basing on a brief historical overview, the description of
some aspects oriented languages and salient features of the implementation and
application design oriented aspects.
Keywords: Programming, aspects, abstraction, software.

OBJETIVOS

General

Analizar caractersticas y funcionalidades de la programacin orientada a


aspectos, a travs de estudios de casos para un desarrollo experimental de una
aplicacin

Especficos

Recitar la evolucin de los paradigmas de programacin, a travs de libros, blogs


y artculos publicados, identificado la razn origen
Estudiar los fundamentos de la Programacin Orientada a Aspectos, a travs
literatura especializada para aprender sus caractersticas y funcionalidades
Identificar las herramientas y lenguajes a travs de una revisin bibliogrfica para
el desarrollo de una aplicacin orientada a aspectos.
Razonar el impacto de este nuevo paradigma de programacin analizando una
aplicacin de POO y POA comparando reduccin de cdigo y cantidad de
operaciones elementales.

INTRODUCCIN
Analizar caractersticas y funcionalidades de la programacin orientada a
aspectos, a travs de estudios de casos para un desarrollo experimental de una
aplicacin, dado que las tecnologas evolucionan, los paradigmas tambin lo
hacen, obteniendo mltiples tendencias para los desarrolladores (Stack Overflow
2016) objetivo general
Dado que programacin Orientada a Aspectos es un nuevo paradigma de
programacin llamado a sustituir a la programacin Orientada a Objetos (Irene
Jimnez and Oscar Combarros 2005), brinda un mayor grado de abstraccin en el
desarrollo de software, permitiendo realizar de manera clara y eficiente una clara
separacin de incumbencias
Una de las mejores prcticas de la ingeniera del software, es seguir un proceso
de desarrollo maduro. En este sentido, el proceso de desarrollo ha evolucionado
buscando mejoras para garantizar la calidad del producto de software resultante.
Sin embargo, describir y garantizar un producto de software de calidad, de
acuerdo a la madurez del proceso, es una actividad an poco clara. (Castillo,
Losavio, and Matteo 2010) planteamiento prob
La metodologa de programacin orientada a aspectos (POA) permite encapsular
o modularizar las denominadas incumbencias cruzadas no modularizables por
metodologas de programacin clsicas tales como programacin orientada a
objetos y programacin estructurada. Las incumbencias cruzadas representan
funcionalidades que se esparcen como parte de las funcionalidades de mdulos,
por ejemplo, en los mtodos de las clases de un sistema, y su naturaleza funcional
se mezcla con las funcionalidades propias del mdulo. De esta forma, las
incumbencias cruzadas representan elementos funcionales no modularizables por
metodologas de desarrollo de software tradicionales (Vidal et al. 2014)
Al observar el comportamiento dinmico de un sistema. Es decir, monitorear su
ejecucin. Existen ciertos aspectos que hacen particularmente desafiante este
enfoque, que surgen de la diferencia de abstraccin entre los conceptos
arquitectnicos y la ejecucin de cdigo. En este contexto, dado que el
comportamiento dinmico arquitectnico puede entrecruzar o atravesar distintas
partes del sistema, la utilizacin de mecanismos avanzados de modularizacin
como los propuestos en la Programacin Orientada a Aspectos comprende una
alternativa atractiva para encarar el problema descrito. (Grai 2015) metodologia
La idea central de la POA es permitir que un programa sea construido
describiendo cada concepto (o incumbencia) separadamente. El soporte para este
nuevo paradigma se logra a travs 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


(aspectos). (Campos, Maysundo, and Enriquez 2003) que se espera
FUNDAMENTACIN TERICA Y METODOLGICA
Programacin Orientada a Aspectos (AOP) es una tcnica de maduracin que
requiere una buena comprensin de qu tipos de errores los programadores
pueden hacer durante el desarrollo de aplicaciones. Por desgracia, la falta de este
conocimiento parece representar una de las razones para la adopcin prudente de
AOP en proyectos de desarrollo de software reales. (Santos et al. 2016)
La necesidad de incorporar un conjunto de nuevas herramientas que muestren de
manera clara y simple la inclusin de rutinas especiales que coadyuven a
mejorar el producto software sin entremezclar cdigo de las funcionalidades
bsicas y las funcionalidades especiales. En este nuevo enfoque se ve la
necesidad de disponer de un conjunto de herramientas que hagan posible los
resultados mencionados y se plantea la necesidad de disponer de Lenguajes de
programacin orientados a aspectos (LPOA) y lenguajes de descripcin
arquitectnica adecuados a este paradigma. Adems se considera importante
disponer de un conjunto de mtricas que valoren la calidad de los productos
obtenidos con este nuevo paradigma a fin de que los mismos cumplan con
algunas de las condiciones impuestas por los estndares existentes. (Orihuela
Sequeiros and Alcon Lpez 2015)
es un estilo de programacin cuyo principal objetivo es lograr una adecuada
modularizacin de los conceptos involucrados en una aplicacin, esto se traduce
en lograr la separacin entre los requerimientos funcionales de los no funcionales,
para obtener un mejor entendimiento de los conceptos, eliminando la dispersin
del cdigo y haciendo que las implementaciones resulten ms comprensibles,
adaptables y reutilizable. A su vez proporciona un marco de trabajo que permite al
programador separar claramente componentes y aspectos a travs de
mecanismos que hagan posible abstraerlos y componerlos para producir el
sistema global. (Iglesias n.d.)

No slo existen varios tipos de lenguajes de programacin, sino que tambin se


pueden encontrar distintas formas de programar una aplicacin. Hay diversos
paradigmas que permiten encontrar una solucin ms adecuada a los problemas.
La idea es que el programador los conozca y sepa seleccionar el adecuado para
cada situacin particular.
Algunos ejemplos de paradigmas de programacin:

El paradigma imperativo es considerado el ms comn y est representado,


por ejemplo, por el C o por BASIC.

El paradigma funcional est representado por la familia de lenguajes LISP (en


particular Scheme), ML o Haskell.

El paradigma lgico, un ejemplo es PROLOG.

El paradigma orientado a objetos. Un lenguaje completamente orientado a


objetos es Smalltalk.

Los tres principales requerimientos de la POA son:


- Un lenguaje para definir la funcionalidad bsica, conocido como lenguaje base o
componente. Podra 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 sincronizacin, RIDL, para distribucin, AspectJ, de
propsito general.)
- Un tejedor de aspectos (Weaver), que se encargar de combinar los lenguajes.
Tal proceso se puede retrasar para hacerse en tiempo de ejecucin o en tiempo de
compilacin.
Los lenguajes orientados a aspectos definen una nueva unidad de programacin
de software para encapsular aquellos conceptos que cruzan todo el cdigo.
A la hora de tejer los componentes y los aspectos para formar el sistema final, es
claro que se necesita una interaccin entre el cdigo de los componentes y el
cdigo de los aspectos. Tambin es claro que esta interaccin no es la misma
interaccin que ocurre entre los mdulos del lenguaje base, donde la
comunicacin est basada en declaraciones de tipo y llamadas a procedimientos y
funciones. La POA define entonces una nueva forma de interaccin, provista a
travs de los puntos de enlace (join points).
Los puntos de enlace brindan la interfaz entre aspectos y componentes; son
lugares dentro del cdigo donde es posible agregar el comportamiento adicional
que destaca a la POA. Dicho comportamiento adicional es especificado en los
aspectos.
An nos falta introducir el encargado principal en el proceso de la POA. Este
encargado principal conocido como tejedor debe realizar la parte final y ms
importante: tejer los diferentes mecanismos de abstraccin y composicin que
aparecen tanto en los lenguajes de aspectos como en los lenguajes de
componentes, guiado por los puntos de enlace.

Estructura general
La estructura de una implementacin basada en aspectos es anloga a la
estructura de una implementacin basada en los LPG.
Una implementacin basada en LPG consiste en:
- Un lenguaje.
- Un compilador o intrprete para ese lenguaje.
- Un programa escrito en ese lenguaje que implemente la aplicacin.

Una implementacin basada en POA consiste en:


- El lenguaje base o componente para programar la funcionalidad bsica.
- Uno o ms lenguajes de aspectos para especificar los aspectos.
- Un tejedor de aspectos para la combinacin de los lenguajes.
- El programa escrito en el lenguaje componente que implementa los
componentes.
- Uno o ms programas de aspectos que implementan los aspectos. Grficamente,
se tiene una estructura como la siguiente:

DESARROLLO ORIENTADO A ASPECTOS


Disear 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 qu
debe compartirse entre ambos lenguajes. El lenguaje componente debe proveer la
forma de implementar la funcionalidad bsica y asegurar que los programas
escritos en ese lenguaje componente 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
En general el desarrollo de una aplicacin basada en aspectos consiste de tres
pasos:
1- Descomposicin de aspectos: es descomponer los requerimientos para
distinguir aquellos que son componentes de los que son aspectos.
2- Implementacin de requerimientos: implementar cada requerimiento por
separado.
3- Recomposicin: dar las reglas de recomposicin que permitan combinar el
sistema completo.

La decisin sobre qu conceptos son base y cules deben ser manejados por
aspectos es irrelevante, ya que no afectar demasiado a la estructura del
programa, sino que la clave est en definir cules sern los tems de la
funcionalidad bsica y cmo obtener una clara separacin de responsabilidades
entre los conceptos. La primera parte se hereda de la programacin no orientada a
aspectos y tiene la misma importancia dentro de la POA ya que la misma mantiene
la funcionalidad bsica. La segunda parte es inherente a la programacin
orientada a aspectos.
Esta parte es fundamental para una descomposicin de aspectos exitosa.
Diferentes aspectos pueden contribuir a la implementacin de un mismo tem de la
funcionalidad bsica y un slo aspecto puede contribuir a la implementacin de
varios tems. Una buena separacin de responsabilidades entre los conceptos es
lo que hace esto posible, porque el comportamiento introducido por los diferentes
aspectos se enfoca en diferentes temas en cada caso, evitando gran parte de los
conflictos.
El trabajo del programador que utiliza POA es definir precisamente los tems de la
funcionalidad bsica y obtener una buena separacin de responsabilidades entre
los conceptos. Luego los aspectos le permitirn al programador separar los
conceptos en el cdigo.
Se establece que muchos de los principios centrales a la POO son ignorados
dentro del diseo orientado a aspectos, como por ejemplo el ocultamiento de
informacin, debido a que los aspectos tienen la habilidad de violar estos
principios. Para esto se propone una filosofa de diseo orientada a aspectos que
consiste de cuatro pasos:
- Un objeto es algo.
- Un aspecto no es algo. Es algo sobre algo.
- Los objetos no dependen de los aspectos.
- Los aspectos representan alguna caracterstica o propiedad de los objetos, pero
no tienen control sobre los mismos.
Un objeto es algo: un objeto existe por s mismo, es una entidad.
Un aspecto no es algo. Es algo sobre algo: un aspecto se escribe para encapsular
un concepto entrecruzado. Por definicin un aspecto entrecruza diferentes
componentes, los cuales en la POO son llamados objetos. Si un aspecto no est
asociado con ninguna clase, entonces entrecruza cero clases, y por lo tanto no
tiene sentido en este contexto. Luego, para que un aspecto tenga sentido debe
estar asociado a una o ms clases; no es una unidad funcional por s mismo.

Los objetos no dependen de los aspectos: Un aspecto no debe cambiar las


interfaces de las clases asociadas a l. Solo debe aumentar la implementacin de
dichas interfaces. Al afectar solamente la implementacin de las clases y no sus
interfaces, la encapsulacin no se rompe. Las clases mantienen su condicin
original de cajas negras, an cuando puede modificarse el interior de las cajas.
Los aspectos no tienen control sobre los objetos: Esto significa que el ocultamiento
de informacin puede ser violado en cierta forma por los aspectos porque stos
conocen detalles de un objeto que estn ocultos al resto de los objetos. Sin
embargo, no deben manipular la representacin interna del objeto ms all de lo
que sean capaz de manipular el resto de los objetos. A los aspectos se les permite
tener esta visin especial, pero debera limitarse a manipular objetos de la misma
forma que los dems objetos lo hacen, a travs de la interface

BIBLIOGRAFA
Campos, E R, E R Maysundo, and H Y S Enriquez. 2003. Programacin
Orientada a Aspectos. Seccperuorg: 117. http://seccperu.org/files/trabajoPOA.pdf.
Castillo, Isi, Francisca Losavio, and Alfredo Matteo. 2010. La Orientaci??n a
Aspectos Y El Nuevo Est??ndar Square Para Requisitos de Software.
Revista de la Facultad de Ingenieria 25(4): 1725.
Grai, Claudio Ariel. 2015. Validaci on de Arquitecturas a Trav Es de La
Programaci on Orientada a Aspectos.
Iglesias, Ing Adriana. Collecting Metrics for the Development of Aspect Oriented
Programming Recolectando Mtricas Para El Desarrollo de La Programacin
Orientada a Aspectos. 1: 3344.
Irene Jimnez, and Oscar Combarros. 2005. Programacin Orientada a Aspectos
Con AspectJ Y AJDT. solo programadores (129): 1621.
Orihuela Sequeiros, Nancy, and Rubn Alcon Lpez. 2015. Usabilidad de La
Programacin Orientada a Aspectos . Revista Investigacin y Tecnologa 3:
90102.
Santos, Adriano, Pricles Alves, Eduardo Figueiredo, and Fabiano Ferrari. 2016.
Avoiding Code Pitfalls in Aspect-Oriented Programming. Science of
Computer
Programming
119:
3150.
http://www.sciencedirect.com/science/article/pii/S0167642315004141.
Stack Overflow. 2016. Stack Overflow Developer Survey 2016 Results.
http://stackoverflow.com/research/developer-survey-2016#developer-profileprogrammers-engineers-and-developers.
Vidal, Cristian L., Sabino E. Rivero, Rodolfo F. Schmal, and Jenny D. Morales.
2014. Revisi??n de Un Enfoque Modular de Programaci??n Orientada a
Aspectos. Informacion Tecnologica 25(4): 18592.

Potrebbero piacerti anche