Applying static analysis to software architectures

  • Gleb Naumovich
  • George S. Avrunin
  • Lori A. Clarke
  • Leon J. Osterweil
Regular Sessions Software Architecture
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1301)


In this paper we demonstrate how static concurrency analysis techniques can be used to verify application-specific properties of an architecture description. Specifically, we use two concurrency analysis tools, INCA, a flow equation based tool, and FLAVERS, a data flow analysis based tool, to detect errors or prove properties of a WRIGHT architecture description of the gas station problem. Although both these tools are research prototypes, they illustrate the potential of static analysis for verifying that architecture descriptions adhere to important properties, for detecting problems early in the lifecycle, and for helping developers understand the changes that need to be made to satisfy the properties being analyzed.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    R. Allen and D. Garlan. Formalizing architectural connection.In Proceedings of the 14th International Conference on Software Engineering, pages 71–80, May 1994.Google Scholar
  2. 2.
    R. Allen and D. Garlan. The Wright architectural specification language. Technical Report CMU-CS-96-TBD, Carnegie Mellon University, School of Computer Science, 1996.Google Scholar
  3. 3.
    B. W. Boehm. Software and Its Impact: A Qualitative Assessment. Datamation, pages 4859, May 1973.Google Scholar
  4. 4.
    J. Burch, E. Clarke, K. McMillan, D. Dill, and L. Hwang. Symbolic model checking: 1020 states and beyond. In Proceedings of the Fifth Annual IEEE Symposium on Logic in Computer Science, pages 428–439, 1990.Google Scholar
  5. 5.
    J. C. Corbett and G. S. Avrunin. Using integer programming to verify general safety and liveness properties. Formal Methods in System Design, 6:97–123, January 1995.Google Scholar
  6. 6.
    M. Dwyer and L. Clarke. Data flow analysis for verifying properties of concurrent programs. In Proceedings of the Second ACM Sigsoft Symposium on Foundations of Software Engineering, volume 19, pages 62–75, December 1994.Google Scholar
  7. 7.
    Formal Systems (Europe) Ltd., Oxford, England. Failures Divergence Refinement: User Manual and Tutorial. 1.20β, 1992.Google Scholar
  8. 8.
    P. Godefroid and P. Wolper. Using partial orders for the efficient verification of deadlock freedom and safety properties. In Proceedings of the Third Workshop on Computer Aided Verification, pages 417–428, July 1991.Google Scholar
  9. 9.
    D. Helmbold and D. Luckham. Debugging Ada tasking programs. IEEE Software, 2(2):47–57, March 1985.Google Scholar
  10. 10.
    C. A. R. Hoare. Communicating Sequential Processes. Prentice Hall, 1985.Google Scholar
  11. 11.
    G. J. Holzmann. Design and Validation of Computer Protocols. Prentice Hall Software Series, 1991.Google Scholar
  12. 12.
    M. H. Klein, T. Ralya, B. Pollak, R. Obenza, and M. Harobur. A Practitioner's Handbook for Real-Time Analysis: Guide to Rate Monotonic Analysis for Real-Time Systems. New York: Kluwer-Academic, 1993.Google Scholar
  13. 13.
    D. C. Luckham, L. M. Augustin, J. J. Kenney, J. Veera, D. Bryan, and W. Mann. Specification analysis of system architecture using Rapide. IEEE Transactions on Software Engineering, 21(4):336–355, April 1995.Google Scholar
  14. 14.
    J. Magee, N. Dulay, S. Eisenbach, and J. Kramer. Specifying distributed software architectures. In Proceedings of 5th European Software Engineering Conference, pages 137–153, September 1995.Google Scholar
  15. 15.
    J. Magee and J. Kramer. Dynamic structure in software architectures. In Proceedings of the 4th ACM SIGSOFT Symposium on the Foundations of Software Engineering, pages 3–13, October 1996.Google Scholar
  16. 16.
    S. Masticola and B. Ryder. A model of Ada programs for static deadlock detection in polynomial time. In Proceedings of the Workshop on Parallel and Distributed Debugging, pages 97–107. ACM, May 1991.Google Scholar
  17. 17.
    K. L. McMillan. Symbolic Model Checking. Kluwer Academic Publishers, Boston, 1993.Google Scholar
  18. 18.
    M. Moriconi, X. Qian, and R. A. Riemenschneider. Correct architecture refinement. IEEE Transactions on Software Engineering, 21(4):356–372, April 1995.Google Scholar
  19. 19.
    G. Naumovich, G. S. Avrunin, L. A. Clarke, and L. J. Osterweil. Applying static analysis to software architectures. Technical Report UM-CS-1997-008, University of Massachusetts/Amherst, 1997. ( Scholar
  20. 20.
    M. Shaw, R. DeLine, D. V. Klein, T. L. Ross, D. M. Young, and G. Zelesnik. Abstractions for software architecture and tools to support them. IEEE Transactions on Software Engineering, 21(4):314–335, April 1995.Google Scholar
  21. 21.
    A. Valmari. A stubborn attack on state explosion. In E. M. Clarke and R. Kurshan, editors, Computer-Aided Verification 90, pages 25–41. American Mathematical Society, Providence RI, 1991. Number 3 in DIMACS Series in Discrete Mathematics and Theoretical Computer Science.Google Scholar

Copyright information

© Springer-Verlag 1997

Authors and Affiliations

  • Gleb Naumovich
    • 1
  • George S. Avrunin
    • 1
  • Lori A. Clarke
    • 1
  • Leon J. Osterweil
    • 1
  1. 1.Laboratory for Advanced Software Engineering Research Computer Science DepartmentUniversity of MassachusettsAmherst

Personalised recommendations