Académique Documents
Professionnel Documents
Culture Documents
UNIVERSIDAD AUTONOMA
DE ASUNCIN
Junio 2.005
UAA MSI
1. Introduccin
Los autores del artculo presentado (Yan, Aldrich, Garlan, Kazman, Schmerl, 2004)
describen una tcnica que construye una vista arquitectnica de sistemas,
automticamente generada, a partir de observaciones realizadas sobre el mismo en tiempo
de ejecucin. Un desafo importante de los desarrolladores de software consiste en
garantizar que un sistema est construdo consistentemente en base a su diseo
arquitectnico (Arquitectura del Software). Nos definen a la Arquitectura del Software de
la siguiente manera:
Para la mayora de los sistemas complejos, es crucial tener una arquitectura
bien definida. Tal definicin provee una vista de alto nivel del sistema en
trminos de sus componentes de ejecucin principales (clientes, servidores, bases
de datos), sus interacciones (llamada a procedimientos remotos), y sus
propiedades. Como representacin abstracta de un sistema, una arquitectura
permite muchas formas de inspeccin y anlisis de alto nivel (Yan y
colaboradores, 2004).
Otras definiciones interesantes sobre Arquitectura del Software son las siguientes:
La Arquitectura Software de un programa o un sistema computacional es la
estructura o estructuras del sistema, el cual abarca los elementos del software,
UAA MSI
UAA MSI
2. Desafos Tcnicos
Cualquier tcnica que descubra dinmicamente la arquitectura de un sistema, debe
sortear los siguientes desafos:
a. Observar el comportamiento del sistema en ejecucin.
b. Expresar el comportamiento antes sealado, en trminos de eventos
arquitectnicamente significativos.
c. Representar la arquitectura de software resultante.
El trabajo analizado se enfoca en el segundo punto tratando de construir un puente
entre las observaciones del comportamiento del sistema y las acciones arquitectnicas de
generadas a partir de dichos comportamientos.
Algunos aspectos que dificultan la implementacin de este modelo son los siguientes:
a. El mapeo entre las observaciones de bajo nivel del sistema y la traduccin de los
mismos a eventos arquitectnicos significativos, no siempre es uno-a-uno.
Muchos eventos de bajo nivel son irrelevantes. Un evento arquitectnico
importante puede estar compuesto de varias actividades de bajo nivel en tiempo
de ejecucin. Y a la inversa un comportamiento de bajo nivel puede tener que
traducirse en varios eventos arquitectnicos. Este desafo implica que la tcnica
en cuestin no debe perder informacin sobre comportamientos intermedios.
b. Ciertas acciones relevantes desde el punto de vista arquitectnico se interpolan al
momento de la ejecucin del sistema, por lo que la tcnica debe ser capaz de
reconocer estados intermedios concurrentes del sistema.
c. No existen patrones estndar para indicar qu modelos de implementaciones
representan eventos arquitectnicos especficos. Diferentes implementaciones
pueden seleccionar diferentes tcnicas para la creacin de los mismos elementos
abstractos de la arquitectura. Tampoco se pueden utilizar los mismos patrones o
estilos arquitectnicos para todos los sistemas. Por lo tanto se requiere de
UAA MSI
UAA MSI
3. Implementacin de DiscoTect
DiscoTect resuelve los tres problemas planteadas en la seccin de Desafos Tcnicos
de la siguiente manera:
a. Observar el comportamiento del sistema en ejecucin (Monitoreo o
Monitoring): El Trace Engine resuelve este problema. El mismo utiliza el JPDA
(Java Platform Debugger Architecture) que permite capturar eventos del sistema
en ejecucin. Esto lo puede hacer ya que el JPDA provee un canal de
comunicacin entre el depurador y el sistema objeto de estudio. El depurador
puede enviar requisitorias al sistema en ejecucin preguntando por ciertos tipos de
eventos. El Trace Engine acta en el rol del depurador enviando requisitorias al
sistema preguntando por tres tipos de eventos principales: instanciaciones de
objetos; llamadas a mtodos; y modificaciones de atributos de objetos. Cuando el
Trace Engine detecta y recibe un evento en tiempo de ejecucin lo clasifica como
eventos Init, Call o Modify y los pone en la pila para ser procesados por el State
Machine
b. Expresar el comportamiento antes sealado, en trminos de eventos
arquitectnicamente significativos (Mapeo o Mapping): este problema es
resuelto por el State Engine que primero inicializa el estado de los eventos
activndolos, luego controla y recibe los eventos enviados por el Trace Engine y
cuando detecta cambios en los estados de ejecucin de los mismos, se
desencadenan las acciones arquitectnicas asociadas a los eventos.
c. Representar la arquitectura de software resultante (Construccin de la
Arquitectura o Architecture Building). Se utiliza el lenguaje de descripcin de
arquitecturas ACME (Garlan, Monroe, Wile, 2000).
UAA MSI
4. Casos de Estudio
Se presentan dos casos de estudio para ilustrar como trabaja DiscoTect y como puede
ser aplicado a sistemas del mundo real.
a. Caso de Estudio de Adaptive Architectures for Mobile Systems (AAMS)
AAMS es un programa de simulacin para experimentar con decisiones de diseo
arquitectnico de sistemas mviles (Kazman, Asundi, Kim, Sethananda, 2003).
Permite definir recursos del sistema, tareas, estrategias de tiempo y simular la
ejecucin del sistema mvil. Se eligi esta herramienta por la cantidad de lneas
de cdigo del mismo (25 KLOC o miles de lneas de cdigo) y la arquitectura del
sistema est bien documentada. La arquitectura generada por DiscoTect tiene
varias discrepancias con el modelo original, tales como: aislados y extraos
componentes y conectores; conexiones adicionales entre componentes; un
esquema de I/O de archivos diferente; y componentes y conectores no
encontrados. Al analizar los resultados de DiscoTect, los autores de AAMS
afirmaron que este modelo era mejor que el original.
b. Caso de Estudio de EJB (Enterprise Java Beans)
Este caso de estudio permiti determinar la arquitectura de una aplicacin
denominada Dukes Bank Application, una aplicacin muy simple creada por Sun
Microsystems con Enterprise Java Beans (EJB) como demostracin de las
funcionalidades de este producto. Esta aplicacin permite a los clientes de un
banco, acceder a informacin de sus cuentas y hacer transferencias entre ellas.
Tiene adems una interface para administrar cuentas y clientes. Esta aplicacin
est convenientemente documentada en el tutorial de J2EE (Java2 Platform
Enterprise Edition) (Sun, 2004) que permite comparar la arquitectura
documentada con la descubierta por DiscoTect.
5. Conclusiones y Comentarios
Los autores proponen un modelo para descubrir la arquitectura de sistemas a partir de
la ejecucin del mismo que permite comparar las discrepancias entre el modelo
arquitectnico propuesto incialmente y el generado por DiscoTect. Al detectar las
discrepancias, se pueden realizar las modificaciones en los modelos de manera a lograr la
consistencia deseada entre ellos. En principio se puede evaluar cualquier sistema en
ejecucin. En el proyecto, los autores han hecho pruebas, utilizando Java, sobre sistemas
en ejecucin presentadas en los casos de estudio con resultados positivos, y han
agregado experiencias en lenguajes C y C++. Otro aspecto importante se refiere a que
haciendo cambios en el mapeo de los eventos en la Mquina de Estados se pueden ajustar
distintas convenciones o modelos de implementacin a diferentes modelos o estilos
arquitectnicos.
UAA MSI
6. Referencias
Aldrich, J., Chambers, C., Notkin, D. (2002). ArchJava: Connecting Software
Architecture to Implementation, 187-197. Proceedings of the International
Conference on Software Engineering. Orlando, FL, May 19-25, 2002. New York,
NY: Association for Computing Machinery, 2002.
ANSI/IEEE Std 1471-2000, Recommended Practice for Architectural Description of
Software-Intensive Systems.
Bass, L., Clements, P., Kazman, R. (2003). Software Architecture in Practice 2/E.
Addison-Wesley Professional.
Garlan, D., Monroe, R. T., Wile, D. (2000). Acme: Architectural Description of
Component-Based Systems, 47-68. Foundations of Component-Based Systems
(Edited by Gary T. Leavens & Murali Sitaraman). New York, NY: Cambridge
University Press.
Kazman, R., Asundi, J., Kim, J. S., Sethananda, B. (2003). A Simulation Testbed for
Mobile Adaptive Architectures. Computer Standards and Interfaces 25, 3 (June
2003): 291-298.
UAA MSI
Sun
Second
Edition.
Yan, H., Aldrich, J., Garlan, D., Kazman, R., Schmerl, B. (2004). Discovering
Architectures from Running Systems: Lessons Learned. Descargado en Junio 15,
2005, de Carnegie Mellon University, Software Engineering Institute. Sitio Web:
http://www.sei.cmu.edu/publications/documents/04.reports/04tr016.html
Zachman, J.A. (1987). A framework for information systems architecture. IBM Systems
Journal, 26, 3, Reprint (1999), Vol.38, Nos.2-3, 454-454. Descargado en Junio 15,
2005, de http://www.research.ibm.com/journal/sj/382/zachman.pdf.