Modular Specification and Checking of Structural Dependencies

  • Ralf Mitschke
  • Michael Eichberg
  • Mira Mezini
  • Alessandro Garcia
  • Isela Macia
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8400)


Checking a software’s structural dependencies is a line of research on methods and tools for analyzing, modeling, and checking the conformance of source code w.r.t. specifications of its intended static structure. Existing approaches have focused on the correctness of the specification, the impact of the approaches on software quality and the expressiveness of the modeling languages. However, large specifications become unmaintainable in the event of evolution without the means to modularize such specifications. We present Vespucci, a novel approach and tool that partitions a specification of the expected and allowed dependencies into a set of cohesive slices. This facilitates modular reasoning and helps individual maintenance of each slice. Our approach is suited for modeling high-level as well as detailed low-level decisions related to the static structure and combines both in a single modeling formalism. To evaluate our approach, we conducted an extensive study spanning 9 years of the evolution of the architecture of the object-relational mapping framework Hibernate.


Software Architectures Modularity Scalability Structural Dependency Constraints Static Analysis 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Shaw, M., Garlan, D.: Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, Upper Saddle River (1996)zbMATHGoogle Scholar
  2. 2.
    Eick, S.G., Graves, T.L., Karr, A.F., Marron, J.S., Mockus, A.: Does code decay? assessing the evidence from change management data. IEEE Trans. Softw. Eng. 27(1) (2001)Google Scholar
  3. 3.
    Godfrey, M.W., Lee, E.H.S.: Secrets from the monster: Extracting mozilla’s software architecture. In: COSET (2000)Google Scholar
  4. 4.
    MacCormack, A., Rusnak, J., Baldwin, C.Y.: Exploring the structure of complex software designs: An empirical study of open source and proprietary code. Manage. Sci. 52 (2006)Google Scholar
  5. 5.
    Perry, D.E., Wolf, A.L.: Foundations for the study of software architecture. SIGSOFT Softw. Eng. Notes 17(4) (1992)Google Scholar
  6. 6.
    Eichberg, M., Kloppenburg, S., Klose, K., Mezini, M.: Defining and continuous checking of structural program dependencies. In: ICSE (2008)Google Scholar
  7. 7.
    Murphy, G.C., Notkin, D., Sullivan, K.: Software reflexion models: bridging the gap between source and high-level models. SIGSOFT Softw. Eng. Notes 20 (1995)Google Scholar
  8. 8.
    Sangal, N., Jordan, E., Sinha, V., Jackson, D.: Using dependency models to manage complex software architecture. In: OOPSLA (2005)Google Scholar
  9. 9.
    Terra, R., Valente, M.T.: A dependency constraint language to manage object-oriented software architectures. Softw.: Practice and Experience 39(12) (2009)Google Scholar
  10. 10.
    Herold, S.: Checking architectural compliance in component-based systems. In: SAC (2010)Google Scholar
  11. 11.
    Knodel, J., Muthig, D., Haury, U., Meier, G.: Architecture compliance checking - experiences from successful technology transfer to industry. In: CSMR (2008)Google Scholar
  12. 12.
    Knodel, J., Muthig, D., Naab, M., Lindvall, M.: Static evaluation of software architectures. In: CSMR (2006)Google Scholar
  13. 13.
    Rosik, J., Le Gear, A., Buckley, J., Ali Babar, M.: An industrial case study of architecture conformance. In: ESEM (2008)Google Scholar
  14. 14.
    Wong, S., Cai, Y., Kim, M., Dalton, M.: Detecting software modularity violations. In: ICSE (2011)Google Scholar
  15. 15.
    Bauer, C., King, G.: Hibernate in Action. Manning Publications Co. (2004)Google Scholar
  16. 16.
  17. 17.
    Eichberg, M., Kahl, M., Saha, D., Mezini, M., Ostermann, K.: Automatic incrementalization of prolog based static analyses. In: Hanus, M. (ed.) PADL 2007. LNCS, vol. 4354, pp. 109–123. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  18. 18.
    Simon, H.A.: The architecture of complexity. In: Proceedings of the APS (1962)Google Scholar
  19. 19.
    Koschke, R., Simon, D.: Hierarchical reflexion models. In: WCRE (2003)Google Scholar
  20. 20.
    Abi-Antoun, M., Aldrich, J.: Static extraction and conformance analysis of hierarchical runtime architectural structure using annotations. In: OOPSLA (2009)Google Scholar
  21. 21.
    de Silva, L., Balasubramaniam, D.: Controlling software architecture erosion: A survey. Journal of Systems and Software 85(1) (2012)Google Scholar
  22. 22.
    Hello2Morrow Sotograph, (accessed October 2012)
  23. 23.
    Hou, D., Hoover, H.J.: Using scl to specify and check design intent in source code. IEEE Trans. Softw. Eng. 32(6) (2006)Google Scholar
  24. 24.
    Gasparis, E., Nicholson, J., Eden, A.H.: Lepus3: An object-oriented design description language. Diagrams (2008)Google Scholar
  25. 25.
    Mens, K., Kellens, A., Pluquet, F., Wuyts, R.: Co-evolving code and design with intensional views. Comput. Lang. Syst. Struct. 32(2-3) (2006)Google Scholar
  26. 26.
    Morgan, C., De Volder, K., Wohlstadter, E.: A static aspect language for checking design rules. In: AOSD (2007)Google Scholar
  27. 27.
    de Moor, O., Sereni, D., Verbaere, M., Hajiyev, E., Avgustinov, P., Ekman, T., Ongkingco, N., Tibble, J.: .QL: Object-Oriented Queries Made Easy. In: Lämmel, R., Visser, J., Saraiva, J. (eds.) GTTSE 2007. LNCS, vol. 5235, pp. 78–133. Springer, Heidelberg (2008)Google Scholar
  28. 28.
    Gamma, E., Helm, R., Johnson, R.E., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley (1995)Google Scholar
  29. 29.
    Siff, M., Reps, T.: Identifying modules via concept analysis. 25(6), 749–768 (1999)Google Scholar
  30. 30.
    Jacobson, I., Ng, P.W.: Aspect-Oriented Software Development with Use Cases. Addison-Wesley (2004)Google Scholar
  31. 31.
    Garlan, D., Barnes, J., Schmerl, B., Celiku, O.: Evolution styles: Foundations and tool support for software architecture evolution. In: WICSA/ECSA (2009)Google Scholar
  32. 32.
    Breivold, H., Crnkovic, I., Eriksson, P.: Analyzing software evolvability. In: COMPSAC (2008)Google Scholar
  33. 33.
    Aoyama, M.: Metrics and analysis of software architecture evolution with discontinuity. In: IWPSE (2002)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2014

Authors and Affiliations

  • Ralf Mitschke
    • 1
  • Michael Eichberg
    • 1
  • Mira Mezini
    • 1
  • Alessandro Garcia
    • 2
  • Isela Macia
    • 2
  1. 1.Technische Universität DarmstadtGermany
  2. 2.Pontifical Catholic University of Rio de JaneiroBrazil

Personalised recommendations