Abstract (Resumen)
(in Spanish)
Las arquitecturas de software son modelos de sistemas que, al poseer un alto nivel de abstracción, permiten manejar correctamente la distancia entre requerimientos e implementación. La adopción cada vez mayor del desarrollo centrado en la arquitectura se debe a que éstas exponen las principales decisiones de diseño y sus consecuencias en una etapa temprana del desarrollo de software, y al hacerlo permiten un mejor entendimiento tanto del sistema como de sus requerimientos por parte de todas las personas involucradas. Por estas razones, un buen diseño arquitectónico tiene un impacto positivo en la calidad final de los productos.
Normalmente, los desarrolladores toman la descripción arquitectónica del sistema y progresivamente la refinan hasta derivar una implementación concreta. Durante esta
actividad, también especifican las relaciones entre el modelo arquitectónico como
fue documentado y el modelo arquitectónico
como fue implementado, para asegurar cierto grado de consistencia entre los modelos. Desafortunadamente, debido a la evolución natural del sistema, es probable que la arquitectura e implementación pierdan consistencia. Una vez que el diseño arquitectónico está listo, comúnmente todos los esfuerzos se enfocan en la implementación, y ésto desactualiza progresivamente la documentación de diseño. Este fenómeno es conocido como
corrimiento arquitectura implementación o erosión arquitectónica, y si no es manejado apropiadamente, puede perjudicar los beneficios del desarrollo centrado en la arquitectura.
Actualmente, el problema ha sido tratado por medio de algunos enfoques basados en ingeniería reversa, con resultados dispares. La falta de una herramienta de soporte más adecuada para relacionar especificaciones arquitectónicas con código sigue siendo un problema para muchos proyectos de software.
En este trabajo, proponemos un enfoque materializado en una herramienta de soporte llamada
ArchSync, para asistir a los desarrolladores a conciliar la documentación arquitectónica con su implementación a medida que la segunda cambia con el tiempo. En particular, asumimos que existe alguna documentación arquitectónica previa a la codificación del sistema. Los modelos arquitectónicos son representados con use case maps (UCMs), una notación práctica para especificar tanto componentes como flujos de responsabilidades. Estas responsabilidades son materializadas por clases y métodos en el código. Cuando algo cambia en el código y viola lo que fue prescripto por la arquitectura, ArchSync es capaz de trazar esos cambios hacia la especificación arquitectónica original. Para hacerlo, debemos instrumentar el código de la aplicación y registrar información acerca de su ejecución. Para su análisis, ArchSync compara estos registros con la especificación arquitectónica, usando un conjunto de “filtros de reconstrucción”, y luego detecta qué UCMs no son consistentes con el código. Además, ArchSync puede proveer una lista de posibles reparaciones para los UCMs, que el desarrollador puede ejecutar para actualizar la arquitectura si es necesario.
Discussion
- Please feel free to discuss this article directly on this page. Constructive comments are welcomed! Please sign your TWiki name.
- See also: Vir Lib Asse 06
--
Daniel Amyot - 13 Feb 2007