Skip to main content

Modular Specification and Checking of Structural Dependencies

  • Chapter
  • 498 Accesses

Part of the book series: Lecture Notes in Computer Science ((TAOSD,volume 8400))

Abstract

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.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Shaw, M., Garlan, D.: Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, Upper Saddle River (1996)

    MATH  Google Scholar 

  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. Godfrey, M.W., Lee, E.H.S.: Secrets from the monster: Extracting mozilla’s software architecture. In: COSET (2000)

    Google Scholar 

  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. Perry, D.E., Wolf, A.L.: Foundations for the study of software architecture. SIGSOFT Softw. Eng. Notes 17(4) (1992)

    Google Scholar 

  6. Eichberg, M., Kloppenburg, S., Klose, K., Mezini, M.: Defining and continuous checking of structural program dependencies. In: ICSE (2008)

    Google Scholar 

  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. Sangal, N., Jordan, E., Sinha, V., Jackson, D.: Using dependency models to manage complex software architecture. In: OOPSLA (2005)

    Google Scholar 

  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. Herold, S.: Checking architectural compliance in component-based systems. In: SAC (2010)

    Google Scholar 

  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. Knodel, J., Muthig, D., Naab, M., Lindvall, M.: Static evaluation of software architectures. In: CSMR (2006)

    Google Scholar 

  13. Rosik, J., Le Gear, A., Buckley, J., Ali Babar, M.: An industrial case study of architecture conformance. In: ESEM (2008)

    Google Scholar 

  14. Wong, S., Cai, Y., Kim, M., Dalton, M.: Detecting software modularity violations. In: ICSE (2011)

    Google Scholar 

  15. Bauer, C., King, G.: Hibernate in Action. Manning Publications Co. (2004)

    Google Scholar 

  16. Vespucci, http://www.opal-project.de/vespucci_project

  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)

    Chapter  Google Scholar 

  18. Simon, H.A.: The architecture of complexity. In: Proceedings of the APS (1962)

    Google Scholar 

  19. Koschke, R., Simon, D.: Hierarchical reflexion models. In: WCRE (2003)

    Google Scholar 

  20. Abi-Antoun, M., Aldrich, J.: Static extraction and conformance analysis of hierarchical runtime architectural structure using annotations. In: OOPSLA (2009)

    Google Scholar 

  21. de Silva, L., Balasubramaniam, D.: Controlling software architecture erosion: A survey. Journal of Systems and Software 85(1) (2012)

    Google Scholar 

  22. Hello2Morrow Sotograph, http://www.hello2morrow.com/products/sotograph (accessed October 2012)

  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. Gasparis, E., Nicholson, J., Eden, A.H.: Lepus3: An object-oriented design description language. Diagrams (2008)

    Google Scholar 

  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. Morgan, C., De Volder, K., Wohlstadter, E.: A static aspect language for checking design rules. In: AOSD (2007)

    Google Scholar 

  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. Gamma, E., Helm, R., Johnson, R.E., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley (1995)

    Google Scholar 

  29. Siff, M., Reps, T.: Identifying modules via concept analysis. 25(6), 749–768 (1999)

    Google Scholar 

  30. Jacobson, I., Ng, P.W.: Aspect-Oriented Software Development with Use Cases. Addison-Wesley (2004)

    Google Scholar 

  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. Breivold, H., Crnkovic, I., Eriksson, P.: Analyzing software evolvability. In: COMPSAC (2008)

    Google Scholar 

  33. Aoyama, M.: Metrics and analysis of software architecture evolution with discontinuity. In: IWPSE (2002)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Mitschke, R., Eichberg, M., Mezini, M., Garcia, A., Macia, I. (2014). Modular Specification and Checking of Structural Dependencies. In: Chiba, S., Tanter, É., Bodden, E., Maoz, S., Kienzle, J. (eds) Transactions on Aspect-Oriented Software Development XI. Lecture Notes in Computer Science, vol 8400. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-55099-7_6

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-55099-7_6

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-55098-0

  • Online ISBN: 978-3-642-55099-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics