Desde sus comienzos, el desarrollo de software ha estado en constante evolución, y en las últimas décadas han surgido varios paradigmas de programación que han contribuido a hacerlo más eficiente. Cada etapa de la evolución se vio marcada por nuevos enfoques para ayudar a los desarrolladores a manejar programas cada vez más complejos. Los primeros programas se crearon mediante procesos a través de conmutadores ubicados en el panel frontal de la computadora. Este enfoque sólo era adecuado para programas pequeños. Seguidamente se inventó el lenguaje ensamblador que permitió escribir programas más largos, luego otro avance importante ocurrió en los años 50 cuando se inventó el primer lenguaje de alto nivel (FORTRAN) [9].
Con los lenguajes de alto nivel, un programador estaba capacitado para escribir programas con una longitud de varios de miles de líneas; sin embargo, este enfoque presentaba el inconveniente de tener un código ilegible y difícil de tratar que se convertía en “código espagueti”. La eliminación del “código espagueti” se consiguió con la creación de los lenguajes de programación estructurados en los años sesenta como Algol y Pascal. Con la programación estructurada se hicieron programas basados en estructuras de control bien definidas, bloques de código, la ausencia (o mínimo uso) de la instrucción GOTO, y subrutinas independientes que soportan recursividad y variables locales [9].
Aunque la programación
estructurada ha obtenido excelentes resultados cuando se aplica a programas
moderadamente complejos, nuevos enfoques que promueven la reutilización futura,
reducción de posteriores errores y futuro mantenimiento han aperturado la
evolución hacia nuevos paradigmas. A partir de este punto surge
En este contexto y en la
búsqueda de resolver múltiples dificultades presentadas durante el ciclo de
vida de desarrollo de software, han surgido durante los últimos años nuevas
propuestas entre las que se destaca, el enfoque de Desarrollo de Software
Orientado a Aspectos (DSOA) [12]; el cual extiende las técnicas tradicionales
de desarrollo y en particular las orientadas a objetos, permitiendo a los
desarrolladores encapsular en módulos separados las propiedades comunes o áreas
de interés que atraviesan el sistema.
Este nuevo paradigma orientado a aspecto surge a partir de
En
el desarrollo de sistemas de software, el modelado, el diseño y la
implementación de la funcionalidad básica, recogen aspectos que en muchos casos
no son propios al dominio de la aplicación, pero incrementan su complejidad. Estas
funcionalidades apuntan hacia el cumplimiento de requisitos no funcionales e
inciden sobre la calidad del producto final. Estas incumbencias generalmente
delimitan las condiciones en que el sistema presta servicios a los usuarios y
se especifican como seguridad, tolerancia a fallos, persistencia, eficiencia,
entre otras. En muchos casos estas incumbencias se entrecruzan a la
funcionalidad principal, este problema es referido en la bibliografía como
incumbencias transversales (“crosscutting
concerns”) [29],
dificultando el mantenimiento y evolución del sistema de software.
Bibliografía:
Córdova T., Carlos A. IMPLEMENTACIÓN
DE REQUISITOS NO FUNCIONALES A TRAVÉS DE