Redactado por:
Godinez Piña Mario Alberto
López González Fco. Alberto
Abstract
Security applications - Aspect-Oriented Programming
The aspects oriented programming is a field of investigation in the software’s engineering, that’s why currently there are much more interest in schools and institutes as in business. The current interest is because of the goal of seeing the informatics systems in a very new way, keeping and developing applications in a simple way, going up developer’s productivity. The AOP is developing its vision of responsibilities much better than the programming oriented to objects, growing up the level of encapsulation, and then getting new designs more comprehensives, cleaner and easier to keep.
The AOP with the concept of security is a mean point because of the fast growing of the internet, new applications and reds as the e-mail or the e-commerce. The possibility of attacks has increased dramatically.
Nowadays practically any system has to incorporate security manners in order to defend their selves from malicious attacks. The developer is not longer just concentrating in the users and their necessities, at the same time has to worries about possible attacks. This has motivated dramatic changes and important in the design’s process and the development of software to incorporate new securities measures inside of the system’s critics requirements.
Resúmen
Seguridad en aplicaciones – Programacion Orientada a Aspectos
La Programación Orientada a Aspectos es un campo de investigación dentro de la ingeniería de software, por tal motivo ésto conlleva mucho interés en la actualidad, tanto en instituciones educativas como en el ambito empresarial. Así mismo, la razón de lograr ésto es debido a que se propone un nuevo modo de ver las cosas en los sistemas informáticos, lo que promete que el desarrollo y el mantenimiento en las aplicaciones se simplificará notablemente, aumentando la productividad del desarrollador. La POA mejora su esquema de responsabilidades mejor aún que la programación orientada a objetos, aumentando el nivel de encapsulamiento, por lo tanto, permitiendo diseños más comprensibles, limpios y fáciles de mantener.
La POA aunada al concepto de seguridad es un punto vital, debido al crecimiento de internet, otras aplicaciones de redes, como el correo electrónico o el mismo comercio electrónico, la posibilidad de ataques se ha incrementado exponencialmente.
Hoy en día prácticamente cualquier sistema debe de incorporar cuestiones de seguridad para defenderse de ataques maliciosos. El desarrollador ya no sólo debe concentrarse únicamente en los usuarios y sus requerimientos, sino también en los posibles atacantes. Ésto ha motivado cambios drásticos e importantes en el proceso del diseño y desarrollo de software para incorporar éstas medidas de seguridad dentro de los requerimientos críticos del sistema.
Introducción
Debido al auge de las nuevas tecnologías, las aplicaciones informáticas han ido creciendo a un ritmo abrumador, ésto conlleva a crear sistemas cada vez más seguros para evitar posibles ataques. Estos cambios son los primeros pasos en la concientización de los ingenieros de software acerca de la importancia de obtener un software seguro. Como todo gran cambio, no se logra de un día para otro, sino que es un proceso gradual que requiere tiempo y maduración. Todavía la Ingeniería de Software no ha dado una respuesta eficaz, coherente y aplicable que satisfaga plenamente a la comunidad informática, sino que las aproximaciones actuales están plagadas de enormes fallas y debilidades fruto de que todavía es un proceso que se encuentra en su infancia.
En este sentido, la POA nos permitirá encapsular requerimientos como la seguridad, y se convierte en una herramienta atractiva para el desarrollo de software funcional y seguro. La POA al encapsular éstas políticas de seguridad de forma separada y totálmente independiente del resto del sistema, logrará consecuentes ventajas como son:
- Mayor reusabilidad.
- Mejoras en cuanto al mantenimiento y modificaciones.
- Menor complejidad del sistema.
Vemos que si bien la POA no agrega por si misma seguridad a sus aplicaciones,
nos brinda un entorno ideal para incorporar el concepto de seguridad de forma
coherente y natural en el desarrollo de software.
Nuestro artículo apunta entonces a investigar la aplicabilidad de la POA a la
seguridad en software, al considerarlo como la alternativa más viable y prometedora en
pro de lograr software seguro.
Desarrollo
Ciertamente hay muy pocas cosas que se puedan hacer con AOP que no hayamos estado haciendo ya con la OOP tradicional. Debemos esperar un cambio en la forma de resolver los problemas, no en ámbito de éstos.
La programación orientada a Aspectos complementa la programación orientada a objetos, introduciendo nuevos conceptos que representan comportamientos que queremos asociar a determinados momentos de la ejecución de un programa, pero que no encajan en el modelado estático para el que tan buenos resultados proporcionan las clases tradicionales.
El soporte para este nuevo paradigma se logra a través de una clase especial
de lenguajes, llamados lenguajes orientados a aspectos (LOA), los cuales brindan
mecanismos y constructores para capturar aquellos elementos que se diseminan por
todo el sistema. A estos elementos se les da el nombre de aspectos.
Una definición para tales lenguajes sería: Los LOA son aquellos lenguajes que permiten separar la
definición de la funcionalidad pura de la definición de los diferentes aspectos.
Podemos enunciar como meta principal de la POA brindar un contexto al programador que permita separar claramente componentes y aspectos, separando componentes entre sí, aspectos entre sí, y aspectos de componentes, a través de mecanismos que hagan posible abstraerlos y componerlos para producir el sistema completo.
Es importante destacar que la novedad y la ventaja de la POA no está en el qué, sino en el cómo, pues permite diseños mucho más limpios y fáciles de representar y comunicar que por tanto dan lugar a aplicaciones mejor construídas y más fáciles de implementar y mantener.
Podemos afirmar entonces que las técnicas tradicionales no soportan de una
manera adecuada la separación de las propiedades de aspectos distintos a la
funcionalidad básica, y que esta situación tiene un impacto negativo en la calidad del
software.
Como respuesta a este problema nace la Programación Orientada a Aspectos. La
POA permite a los programadores escribir, ver y editar un aspecto diseminado por todo
el sistema como una entidad por separado, de una manera inteligente, eficiente e
intuitiva. La POA es una nueva metodología de programación que aspira a soportar la
separación de las propiedades para los aspectos antes mencionados. Esto implica separar
la funcionalidad básica y los aspectos, y los aspectos entre sí, a través de mecanismos
que permitan abstraerlos y componerlos para formar todo el sistema.
La idea central que persigue la POA es permitir que un programa sea construido
describiendo cada concepto separadamente.
Se define entonces a un aspecto como un concepto que no es posible
encapsularlo claramente, y que resulta diseminado por todo el código. Los aspectos son
la unidad básica de la programación orientada a aspectos.
Los tres principales requerimientos de la POA son:
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 (del inglés 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.
Vamos a seguir oyendo hablar sobre la AOP. La prueba de ello es el interés que han mostrado en la idea empresas com IBM, que lo manifestó abiertamente en la última Aspect Oriented Software Development Conference (AOSD), Bea, que recientemente ha comenzado su patrocinio del proyecto AspectWerkz, o JBoss, que basa la próxima versión 4.0 de su servidor de aplicaciones en aplicar Aspectos sobre los componentes del desarrollador que les proporcionen los servicios definidos por la especificación J2EE.
Puede sin embargo que la adopción de la AOP sea desigual, al menos la adopción directa. Parece que donde primero veremos aparecer implementaciones estables basadas en Aspectos es en los servidores de aplicaciones, que de esta forma podrán proveer de distintos servicios a los componentes desplegados en su interior de una forma mucho menos intrusiva que hasta ahora. Pronto veremos contenedores que no necesitarán que implementemos interfaces extrañas para proporcionarnos servicios de persistencia, gestión de transacciones o seguridad.
Impacto de la POA en la seguridad
La POA nos permite encapsular y abstraer el concepto de seguridad. Con esto se logra:
- Bajo costo de mantenimiento: al tener todo el código relativo a la seguridad en una única unidad se simplifica la introducción de cambios.
- Mayor flexibilidad: al estar la seguridad implementada de forma independiente, es mucho más sencillo realizar cambios en las políticas de seguridad
- Mayor especialización: los desarrolladores pueden implementar la funcionalidad básica, mientras que un experto en seguridad puede especificar las propiedades de seguridad.
- Independencia de tres niveles:
i. la seguridad es independiente de la funcionalidad básica
ii. la seguridad es independiente de los implementadores
iii. la seguridad es independiente del momento en que se la genera.
Ventajas POA
Ayuda a superar los problemas causados por el Código Mezclado y Código Diseminado (citados previamente en este trabajo).
Implementación modularizada: POA logra separar cada concepto con mínimo acoplamiento, resultando en implementaciones modularizadas aún en la presencia de conceptos que se entrecruzan. Esto lleva a un código más limpio, menos duplicado, más fácil de entender y de mantener.
- Mayor evolucionabilidad: La separación de conceptos permite agregar nuevos aspectos, modificar y / o remover aspectos existentes fácilmente.
- Uno puede retrasar las decisiones de diseño sobre requerimientos actuales o que surjan en el futuro, ya que permite, luego, implementarlos separadamente, e incluirlos automáticamente en el sistema; resolviendo el dilema del arquitecto: ¿Cuántos recursos invertir en el diseño? ¿Cuándo es “demasiado diseño”?
Conclusiones
Nuestro análisis nos permite observar también que los lenguajes orientados a
aspectos actuales no cuentan con mecanismos lingüísticos suficientemente poderosos
para respetar por completo todos los principios de diseño, como por ejemplo, el
encapsulamiento.
Es por tanto que la POA es un paradigma que recién está naciendo. Todavía queda mucho por
hacer e investigar, como por ejemplo: obtener métricas formales que sirvan para
cuantificar la utilidad de la POA; analizar cómo aplicar aspectos en las otras etapas
del ciclo de vida del software: en el análisis, en el diseño 4 , en el testing y en la
documentación; investigar sobre la formalización de los aspectos 5 ; observar cómo es
la integración de los aspectos con las aproximaciones, métodos, herramientas y
procesos de desarrollo existentes; desarrollar herramientas orientadas a aspectos que
respeten los principios de diseño; entre otras áreas de investigación.
Estamos en el comienzo de un nuevo paradigma, descubriendo su
potencialidad, sus problemas, y las posibles soluciones. A medida que se logre
avanzar en la investigación se irán obteniendo conceptos cada vez más sólidos. De
esta manera, la POA irá creciendo, madurando como paradigma, y enfrentándose a
las debilidades que surjan.
Los resultados encontrados en la bibliografia y los que hemos obtenido en
este trabajo son más que prometedores y nos hacen pensar que la POA es una de las
ramas con mayor futuro dentro de la ingeniería de software.
En el resto de esta última sección se compara el paradigma de aspectos con
su “predecesor”, el paradigma de objetos y se analiza la relación entre ellos. También
se menciona algunas áreas de investigación relacionadas con el paradigma teniendo
en cuenta que sus avances influirán en el futuro de la POA. Por último, se enuncian
lo que según nuestro análisis son las mayores ventajas y desventajas de la POA.
Bibliografía
STALLINGS, William. Cryptography And Network Security. 3ra Ed. México, Prentice Hall, 2003.
RAMOS Alvarez, Benjamín. Avances En Criptología Y Seguridad De La Información. México, Ediciones Diaz De Santos.
LUCAS WESLEY ROMO . PARADIGMAS DE NUEVA SEGURIDAD. México, Ed. Trimann
Colyer, Adrian, Andy Clement, George Harley, Matthew Webster, 1. Eclipse AspectJ : Aspect-Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools, Addison-Wesley.
Laddad, Ramnivas, 2. AspectJ in Action: Practical Aspect-Oriented Programming, Manning.
Walls, Craig, Ryan Breidenbach, Spring in Action, Manning.
Muy Interesante N.167 Programación Orientada Pag 13-15
Conozca Mas N.186 Seguridad En Aplicaciones Pag 19-20
Ciencia Y Tecnologia N.21 Tipos De Programacion Pag 10-12
Mit Technology Review N.21 Top 10 Emerging Areas Of Technology Pag 10-16
lunes, 29 de septiembre de 2008
Suscribirse a:
Entradas (Atom)
