Está en la página 1de 8

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
Dado que las tecnologas evolucionan, los paradigmas tambin lo hacen,
obteniendo mltiples tendencias para los desarrolladores (Stack Overflow 2016).
La 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 separacin de
incumbencias. El objetivo de esta investigacin es analizar caractersticas y
funcionalidades de la programacin orientada a aspectos POA, a travs de
estudios de casos para un desarrollo experimental de una aplicacin.
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)
A travs de estudios de casos de diferentes revisiones bibliogrficas
analizaremos este paradigma de programacin, observando sus principales
caracterizas e identificar los mecanismos que este nos brinda, obteniendo ventajas
y desventajas de aplicacion en diferentes entornos de desarrollo, para poder
implementar esta metodologa en una situacin adecuada, obteniendo un
resultado ptimo y eficaz

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.)
POA clsica o tradicional si permite la eliminacin de incumbencias cruzadas en
las clases de sistemas de software orientados a objetos, gracias a la
modularizacin como aspectos de dichas incumbencias cruzadas. Sin embargo,
as como lo sealan, en POA tradicional an no es posible alcanzar una completa
modularizacin debido a la existencia de dependencias implcitas entre aspectos y
clases. Para la eliminacin de estas dependencias implcitas entre clases y
aspectos de la POA clsica, de manera de alcanzar un software con mayor
modularidad, los trabajos de presentan interfaces de puntos de unin o JPI. En
este contexto, el objetivo de este trabajo es aplicar JPI para modularizar el cdigo
y de esta forma describir las principales ventajas prcticas del uso de JPI para
lograr software orientado a aspectos modular sin la presencia de dependencias
implcitas entre clases y aspectos de la POA tradicional con AspectJ, adems de
proponer elementos para la modelacin estructural de soluciones JPI (Bodden
2011), (Inostroza, Tanter, and Bodden 2011), (Singh 2015)

Tal y como se aprecia en trabajos previos de uno de los autores, esto es, en (Vidal
et al. 2014), en Aplicacin de Modelacin Orientada a Aspectos y en Extensin y
Aplicacin de AspectZ a la Administracin de un Sistema de Fichas de Salud
Electrnicas en Chile la autentificacin de usuario as como el registro de sus
acciones son ejemplos clsicos de incumbencias cruzadas las cuales se pueden
ser modularizar como aspectos. Es importante sealar que gracias a esta
modularizacin de incumbencias cruzadas de un sistema de software orientado a
objetos, entonces las clases y sus mtodos logran respetar el principio de nica
responsabilidad (Wampler 2007), esto es, las clases y sus mtodos tienen una
funcin y propsito claros y bien definidos, y existe una consecuencia y
consistencia en el comportamiento de los mtodos de clases, es decir, ninguno de
los mtodos de una clase presenta funcionalidades no propias con el propsito
central de la clase. En resumen, el principio de nica responsabilidad establece
que una clase debera tener una nica responsabilidad, y que esa responsabilidad
debe ser completamente encapsulada por la clase.
La Ingeniera de Software tradicional carece actualmente de mecanismos
adecuados para abstraer, y encapsular conceptos que no forman parte de la
funcionalidad bsica de los sistemas, tales como debugging, sincronizacin,
distribucin, seguridad, administracin de memoria, y otros. El resultado de esta
insuficiente abstraccin es una notable disminucin de la calidad del software final.
Una de las alternativas ms prometedoras para resolver este problema es la
Programacin Orientada a Aspectos (POA). Al aplicar la POA y realizar
reingeniera de una implementacin orientada a objetos introduciendo aspectos.
Se definen mtricas para evaluar las importantes ventajas de incorporar aspectos
a la programacin tradicional. Se las aplica a un caso de estudio, y se muestra que
los resultados obtenidos confirman la eficacia, y la utilidad de la POA. Se presenta
un caso de estudio que consiste en la adaptacin considerando aspectos del
protocolo para transferir archivos Trivial File Transfer Protocol (TFTP). (Asteasuain
et al. 2003)
AspectJ es un LOA de propsito general (Foundation 2013), que extiende Java
con una nueva clase de mdulos que implementan los aspectos. Los aspectos
cortan las clases, las interfaces y a otros aspectos.
En AspectJ, un aspecto es una clase, exactamente igual que las clases Java, pero
con una particularidad, que pueden contener unos constructores de corte, que no
existen en Java. Los cortes de AspectJ capturan colecciones de eventos en la
ejecucin de un programa. Estos eventos pueden ser invocaciones de mtodos,
invocaciones de constructores, y excepciones de seales y gestin. Los cortes no
definen acciones, sino que describen eventos. En forma similar a AspectC++ (The
Home of {AspectC++} 2015), en AspectJ se definen cortes (pointcuts), avisos y
puntos de enlace. (Team n.d.)

Las aplicaciones enterprise son aplicaciones que dan soporte a los procesos de
negocio de una organizacin. Como tales, se caracterizan por manejar grandes
volmenes de informacin persistente, la cual es accedida en forma concurrente
por varios usuarios mediante diversas interfaces de usuario. Estas aplicaciones
deben evolucionar de forma rpida ante los cambios del negocio, provocando el
menor impacto posible. Al analizar la utilizacin de la programacin orientada
aspectos en las aplicaciones enterprise, se proponen soluciones basadas en
aspectos para las problemticas caractersticas de dichas aplicaciones y
mostrando su uso mediante el desarrollo de una aplicacin de referencia. (Aires
and Aires 2008)

BIBLIOGRAFA
Aires, Universidad De Buenos, and Buenos Aires. 2008. Utilizacin de
Programacin Orientada a Aspectos En Aplicaciones Enterprise. (Est): 195
211.
Asteasuain, Fernando et al. 2003. Programaci on Orientada a Aspectos :
Metodolog Ia Y Evaluaci on on. : 116071.
Bodden, Eric. 2011. Closure Joinpoints: Block Joinpoints without Surprises
Categories and Subject Descriptors. Proceeding AOSD 11 Proceedings of
the tenth international conference on Aspect-oriented software development:
11728.
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.
Foundation, The Eclipse. 2013.
http://www.eclipse.org/aspectj/.

The

AspectJ

Project.

2013(April

17).

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.
Inostroza, Milton, ric Tanter, and Eric Bodden. 2011. Join Point Interfaces for
Modular Reasoning in Aspect-Oriented Programs. Proceedings of the 19th
ACM SIGSOFT Symposium and the 13th European Conference on
Foundations
of
Software
Engineering:
50811.
http://doi.acm.org/10.1145/2025113.2025205.
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.
Singh, Munindar P. 2015. Norms as a Basis for Governing Sociotechnical
Systems. IJCAI International Joint Conference on Artificial Intelligence 2015

Janua(212): 420711.
Stack Overflow. 2016. Stack Overflow Developer Survey 2016 Results.
http://stackoverflow.com/research/developer-survey-2016#developer-profileprogrammers-engineers-and-developers.
Team,
the
AspectJ.
The
AspectJTM
Programming
http://www.eclipse.org/aspectj/doc/released/progguide/index.html.

Guide.

The Home of {AspectC++}. 2015. http://www.aspectc.org/.


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.
Wampler, Dean. 2007. Aspect-Oriented Design Principles: Lessons from ObjectOriented Design. Proc. 6th Int. Conf. on Aspect-Oriented Software
Developement.
http://scholar.google.com/scholar?
hl=en&btnG=Search&q=intitle:Aspect-Oriented+Design+Principles+:
+Lessons+from+Object-Oriented+Design#0.

También podría gustarte