Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Tarea Grupal Unidad 3

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

INGENIERÍA DE SOFTWARE (EL DESARROLLO DE

SOFTWARE ORIENTADO A ASPECTOS)

SAMUEL GARCES HERNANDEZ

INGENIERÍA DE SOFTWARE

ELIANA CRUZ MERCADO

UNIVERSIDAD DE CARTAGENA

ING. DE SISTEMAS IX SEMESTRE

FACULTAD DE INGENIERIA

LORICA CORDOBA

2020
EL DESARROLLO DE SOFTWARE ORIENTADO A ASPECTOS

Es un paradigma de programación relativamente reciente cuya intención es


permitir una adecuada modularización de las aplicaciones y posibilitar una mejor
separación de conceptos. Gracias a la POA se pueden capturar los diferentes
conceptos que componen una aplicación en entidades bien definidas, de manera
apropiada en cada uno de los casos y eliminando las dependencias inherentes
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. Varias tecnologías con nombres diferentes se encaminan
a la consecución de los mismos objetivos y así, el término POA es usado para
referirse a varias tecnologías relacionadas como los métodos adaptivos, los filtros
de composición, la programación orientada a sujetos o la separación
multidimensional de competencias.

El enfoque orientado a aspectos define un mecanismo que ayuda a resolver


problemas de codificación en los requisitos, los cuales son un código disperso
(scattered) y diseminado (tangled), que no se resuelven fácilmente usando el
enfoque orientado a objetos. Este mecanismo se enfoca principalmente en la
separación de intereses (separation of concerns) de un sistema para obtener una
mejor modularización.

El desarrollo de software orientado a aspectos (DSOA) se enfoca en crear una


mejor abstracción modular del sistema. Incluye las siguientes fases:

 Captura de requisitos
 Análisis
 Diseño
 Implementación
 Pruebas
CONOSCAMOS UN POCO DE HISTORIA

La programación orientada a objetos (POO) supuso un gran paso en la ingeniería


del software, ya que presentaba un modelo de objetos que parecía encajar de
manera adecuada con los problemas reales. La cuestión era saber descomponer
de la mejor manera el dominio del problema al que nos enfrentáramos,
encapsulando cada concepto en lo que se dicen llamar objetos y haciéndoles
interactuar entre ellos, habiéndoles dotado de una serie de propiedades. Surgieron
así numerosas metodologías para ayudar en tal proceso de descomposición y
aparecieron herramientas que incluso automatizaban parte del proceso. Esto no
ha cambiado y se sigue haciendo en el proceso de desarrollo del software. Sin
embargo, frecuentemente la relación entre la complejidad de la solución y el
problema resuelto hace pensar en la necesidad de un nuevo cambio. Así pues,
nos encontramos con muchos problemas donde la POO no es suficiente para
capturar de una manera clara todas las propiedades y comportamientos de lo que
queremos dotar nuestra aplicación. Así mismo, la programación procedural
tampoco nos soluciona el problema. Por lo que ante tales problemas, se utiliza la
POA.

Los conceptos y tecnologías reunidos bajo el nombre "programación orientada a


aspectos" buscan resolver un problema identificado hace tiempo en el desarrollo
de software. Se trata del problema de la separación de incumbencias. AOP no es
el único intento por solucionar este problema, del que se habla a continuación: hay
varias propuestas, muchas de las cuales se agrupan en el campo de estudio
denominado ASoC.

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. Es decir, que intenta separar los componentes y los
aspectos unos de otros, proporcionando mecanismos que hagan posible
abstraerlos y componerlos para formar todo el sistema. En definitiva, 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, y como
tal, soporta la descomposición orientada a objetos, además de la procedimental y
la descomposición funcional. Pero, 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 ya mencionados.

PRINCIPALES CARACTERISTICAS DE LA POA

 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 reusable y que se puede acoplar y desacoplar


cuando sea necesario.

CONCEPTOS BASICOS

 Aspecto (en inglés Aspect) es una funcionalidad transversal (cross-cutting)


que se va a implementar de forma modular y separada del resto del
sistema. El ejemplo más común y simple de un aspecto es el logging
(registro de sucesos) dentro del sistema, ya que necesariamente afecta a
todas las partes del sistema que generan un suceso.
 Punto de Cruce o de Unión (en inglés Join point) es un punto de ejecución
dentro del sistema donde un aspecto puede ser conectado, como una
llamada a un método, el lanzamiento de una excepción o la modificación de
un campo. El código del aspecto será insertado en el flujo de ejecución de
la aplicación para añadir su funcionalidad.

 Consejo (en inglés Advice) es la implementación del aspecto, es decir,


contiene el código que implementa la nueva funcionalidad. Se insertan en la
aplicación en los Puntos de Cruce.

 Puntos de Corte (en inglés Pointcut) define los Consejos que se aplicarán a


cada Punto de Cruce. Se especifica mediante Expresiones Regulares o
mediante patrones de nombres (de clases, métodos o campos), e incluso
dinámicamente en tiempo de ejecución según el valor de ciertos
parámetros.

 Introducción (en inglés Introduction) permite añadir métodos o atributos a


clases ya existentes. Un ejemplo en el que resultaría útil es la creación de
un Consejo de Auditoría que mantenga la fecha de la última modificación de
un objeto, mediante una variable y un método setUltimaModificacion
(fecha), que podrían ser introducidos en todas las clases (o sólo en
algunas) para proporcionarles esta nueva funcionalidad.

 Destinatario (en inglés Target) es la clase aconsejada, la clase que es


objeto de un consejo. Sin AOP, esta clase debería contener su lógica,
además de la lógica del aspecto.

 Resultante (en inglés Proxy) es el objeto creado después de aplicar el


Consejo al Objeto Destinatario. El resto de la aplicación únicamente tendrá
que soportar al Objeto Destinatario (pre-AOP) y no al Objeto Resultante
(post-AOP).
VENTAJAS Y DESVENTAJAS DE LA PROGRAMACION ORIENTADA A
ASPECTOS

 VENTAJAS

- Ayuda a superar los problemas causados por: Código


Mezclado(Code Tangling) y Código Diseminado(Code Scattering)
- Implementación modularizada
- Mayor evolucionabilidad
- Capacidad de retrasar las decisiones de diseño
- Resuelve el dilema del arquitecto
- Mayor reusabilidad
- Divide y vencerás
- N-dimensiones
- Mínimo acoplamiento y máxima cohesión

 DESVENTAJAS

- Posibles choques entre el código funcional (expresado en el lenguaje


componente) y el código de aspectos (expresados en los lenguajes
de aspectos)
- Posibles choques entre los aspectos
- Problemas propios del desarrollo
- Posibles choques entre el código de aspectos y los mecanismos del
lenguaje

También podría gustarte