Recovering and checking software architectural properties based on execution tree analysis

  • Thiago H. Braga UFMG
  • Marcelo de A. Maia UFU
  • Roberto da S. Bigonha UFMG


The specification of the software architecture is an important artifact produced during software design. However, traditional specification techniques do not provide support for guaranteeing that architectural properties of the specification are valid for the implemented software. We propose an approach to recover and specify architectural properties based on execution constraints. The proposed approach is based on specifying constraints as queries in execution trees of software systems. The constraints are generated as annotations and verified against the implementation with a dynamic verifier. We have implemented a tool for Java systems and we argue that our approach presents some benefits over similar ones.


Aldrich, J., Chambers, C., and Notkin, D. (2002). Archjava: connecting software architecture to implementation. In Proc. of ICSE ’02, pages 187–197.

Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers, J., Little, R., Nord, R., and Stafford, J. (2002). Documenting Software Architectures: Views and Beyond. Addison-Wesley, 1st ed.

Feijis, L., Krikhaar, R., and Ommering, R. V. (1998). A relational approach to support software architecture analysis. Software – Practice and Experience, 28(4):371–400.

Garlan, D., Monroe, R. T., and Wile, D. (2000). Acme: Architectural description of component-based systems. In Foundations of Component-Based Systems, pages 47–68. Cambridge.

Gorton, I. and Zhu, L. (2005). Tool support for just-in-time architecture reconstruction and evaluation: An experience report. In ICSE Intl. Conf. on Software Engineering.

Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., and Griswold, W. G. (2001). An overview of AspectJ. In ECOOP ’01.

Safyallah, H. and Sartipi, K. (2006). Dynamic analysis of software systems using execution pattern mining. In Proceedings of the 14th IEEE Intl. Conf. on Program Comprehension (ICPC’06).

Vasconcelos, A. and Werner, C. (2005). Um conjunto de heurísticas de agrupamento de classes para apoiar a recuperação da arquitetura de software. In Proc. of WMSWM’2005, pp. 34–49.

Xiao, C. and Tzerpos, V. (2005). Software clustering based on dynamic dependencies. In Proc. of the 9th European Conference on Software Maintenance and Reengineering (CSMR’05).

Yan, H., Garlan, D., Schmerl, B., Aldrich, J., and Kazman, R. (2004). Discotect: A system for discovering architectures from running systems. In Proc. of ICSE ’04, pages 470–479.
BRAGA, Thiago H.; MAIA, Marcelo de A.; BIGONHA, Roberto da S.. Recovering and checking software architectural properties based on execution tree analysis. In: SIMPÓSIO BRASILEIRO DE COMPONENTES, ARQUITETURAS E REUTILIZAÇÃO DE SOFTWARE (SBCARS), 2. , 2008, Porto Alegre/RS. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2008 . p. 10-23. DOI: