Download Introducción a la programación orientada a aspectos.

Document related concepts

Scala (lenguaje de programación) wikipedia , lookup

Oz (lenguaje de programación) wikipedia , lookup

Dylan (lenguaje de programación) wikipedia , lookup

Programación funcional wikipedia , lookup

Clausura (informática) wikipedia , lookup

Transcript
Introducción a la
programación orientada a
aspectos.
Universidad del Azuay
Maestría en Telemática
Sesión 3
Desventajas:
• Unidades de descomposición no tratan aspectos
como:
• No se considera gestión de memoria
• Coordinación
• Distribución
• Ejecución en tiempo real.
Desventajas:





Sincronización
Distribución
Manejo de errores
Optimización de memoria
Gestión de la seguridad
Consecuencia:

Nos encontramos con problemas de
programación en los cuales ni las
técnicas funcionales, ni las orientadas a
objeto son suficientes para capturar
todas las decisiones de diseño que el
programa debe implementar.
Consecuencias:

Las técnicas tradicionales no soportan
bien la separación de competencias
para aspectos distintos de la
funcionalidad básica de un sistema, y
esta situación claramente tiene un
impacto negativo en la calidad del
software.
P.O.A.


La programación orientada a aspectos (POA) es
una nueva metodología de programación que
aspira a soportar la separación de
competencias para los aspectos antes
mencionados.
Intenta separar los componentes y los aspectos
unos de otros, proporcionando mecanismos que
hagan posible abstraerlos y componerlos para
formar todo el sistema.
P.O.A. (2)



Lo que se persigue es implementar una aplicación
de forma eficiente y fácil de entender.
POA es un desarrollo que sigue al paradigma de
la orientación a objetos, soporta la
descomposición orientada a objetos, además de
la procedimental y la descomposición funcional.
A pesar de esto, POA no se puede considerar
como una extensión de la POO, ya que puede
utilizarse con los diferentes estilos de
programación antes mencionados.
P.O.A.(3)

El estado actual de la investigación en
POA es análogo al que había hace
veinte años en la programación
orientada a objetos.
Historia



1991. Equipo Demeter. Programación
adaptativa. C ristina Lopes propuso
sincronización e invocación remota como
nuevos bloques.
1995. Equipo Demeter introduce el
término.
P.O.A. presentado por Gregor Kiczales y
su grupo & Cristina Lopes.
Objetivos:

Separar conceptos:


cada decisión se tome en un lugar concreto.
Minimizar las dependencias entre ellos:

pérdida del acoplamiento entre los distintos
elementos.
Ventajas de la P.O.A.





Un código menos enmarañado, más natural y más
reducido.
Una mayor facilidad para razonar sobre las materias, ya
que están separadas y tienen una dependencia mínima.
Más facilidad para depurar y hacer modificaciones en el
código.
Se consigue que un conjunto grande de modificaciones
en la definición de una materia tenga un impacto mínimo
en las otras.
Se tiene un código más reutilizable y que se puede
acoplar y desacoplar cuando sea necesario.
¿Qué es un aspecto?

Un aspecto es una unidad modular que se
disemina 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. Un aspecto de
programa o de código es una unidad modular
del programa que aparece en otras unidades
modulares del programa (G. Kiczales).
¿Qué es un aspecto?


De manera más informal podemos decir que los
aspectos son la unidad básica de la POA, y
pueden definirse como las partes de una
aplicación que describen las cuestiones claves
relacionadas con la semántica esencial o el
rendimiento.
También pueden verse como los elementos que
se diseminan por todo el código y que son
difíciles de describir localmente con respecto a
otros componentes.
Diferencia entre componente y
aspecto

Se puede diferenciar entre un
componente y un aspecto viendo al
primero como aquella propiedad que se
puede encapsular claramente en un
procedimiento, mientras que un aspecto
no se puede encapsular en un
procedimiento con los lenguajes
tradicionales.
Justificación

Las técnicas orientadas a objetos y las
técnicas procedimentales de
programación no son suficientes para
capturar con claridad importantes
desiciones de diseño que debe
implementar el programa.
Justificación


Las decisiones que difícilmente son
capturadas por las OOP y POP se
denominan aspectos.
La técnica de P.O.A. Permite especificar
claramente aspectos tales como
asilamiento, composición y reutilización
del código.
Fundamentos

El proceso del diseño del software:




Dividir un sistema en partes pequeñas.
Los lenguajes permiten definir abstracciones de
las subunidades del sistema.
La composición de abstracción permite construir
el sistema en su totalidad.
La abstracción y composición debe soportar con
claridad las unidades de diseño del sistema.
Fundamentos

Lenguajes procedimentales generales
(GP).


Descomposición Funcional: Dividen el
sistema en unidades de comportamiento o
función.
Muchas de estas funciones pueden no ser
del todo funcionales.
Programación Orientada a
Aspectos

Se evalúan tres implementaciones:




Fácil de entender pero ineficiente
Eficiente pero difícil de entender
POA: fácil y eficiente.
Procesamiento de imágenes en blanco y
negro.
Procesamiento de imágenes
en blanco y negro.





Imágenes pasan por filtros para
producir una salida.
Fácil de desarrollar y mantener
Uso eficiente de memoria
Formal: para ampliar libre de errores en
el programa.
Eficiente: optimizar almacenamiento de
memoria y direccionamiento.
Bibliografía

Antonia Mª Reina Quintero, Visión General
de la Programación Orientada a Aspectos.
Departamento de Lenguajes y Sistemas
Informáticos. Facultad de Informática y
Estadística Universidad de Sevilla. (2000).