Skip to main content

A Better Way to Teach Software Architecture

  • 119 Accesses


Software architecture education is a weak spot in many undergraduate programs in computer science and software engineering. While the concepts and practices used by software architects in industry are rich and varied, transferring this expertise into a university classroom has proved problematic. Bridging the gap between industry and academia requires ongoing, often heroic, effort. This is a “chicken and egg” problem: Because there is a lack of good teaching materials, architecture is seldom taught, and because it is seldom taught, there has been little incentive to create good materials. We would like to change that. Our goal is to establish guidelines for how software architecture practices should be taught—both technical and non-technical topics—and to suggest appropriate teaching methods to best prepare students to be software architects in practice.

This is a preview of subscription content, access via your institution.

Buying options

USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
USD   39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   49.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


  1. Bærbak Christensen, H.: Teaching microservice architecture using devops—an experience report. In: European Conference on Software Architecture, pp. 117–130. Springer, Berlin (2022)

    Google Scholar 

  2. Bass, L., Clements, P., Kazman, R.: Software Architecture in Practice, 4 edn. Addison-Wesley, Reading (2021)

    Google Scholar 

  3. Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M.: Pattern-Oriented Software Architecture Volume 1: A System of Patterns. Wiley, New York (1996)

    Google Scholar 

  4. Cai, Y., Kazman, R., Jaspan, C., Aldrich, J.: Introducing tool-supported architecture review into software design education. In: Proceedings of the Conference on Software Engineering Education and Training (CSEE&T) (2013)

    Google Scholar 

  5. Capilla, R., Zimmermann, O., Carrillo, C., Astudillo, H.: Teaching students software architecture decision making. In: European Conference on Software Architecture, pp. 231–246. Springer, Berlin (2020)

    Google Scholar 

  6. Cervantes, H., Haziyev, S., Hrytsay, O., Kazman, R.: Smart decisions: an architectural design game. In: Proceedings of the International Conference on Software Engineering (ICSE) (2016)

    Google Scholar 

  7. Dayaratna, A.: Quantifying the worldwide shortage of full-time developers. In: IDC Market perspective (2021)

    Google Scholar 

  8. Fairbanks, G.: Just Enough Software Architecture: A Risk Driven Approach. Marshall and Brainerd, New York (2010)

    Google Scholar 

  9. Galster, M., Angelov, S.: What makes teaching software architecture difficult? In: 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C), pp. 356–359 (2016)

    Google Scholar 

  10. Hazzan, O.: The reflective practitioner perspective in software engineering education. J. Syst. Softw. 63(3), 161–171 (2002)

    CrossRef  Google Scholar 

  11. Keeling, M.: Design It! From Programmer to Software Architect. Pragmatic Bookshelf, New York (2017)

    Google Scholar 

  12. Lago, P., Van Vliet, H.: Teaching a course on software architecture. In: Proceedings of the 18th Conference on Software Engineering Education and Training (CSEET’05), pp. 35–42. IEEE, New York (2005)

    Google Scholar 

  13. Neward, T.: Architectural katas (2012).

  14. Pautasso, C.: Software Architecture: Visual Lecture Notes. LeanPub, New York (2020)

    Google Scholar 

  15. Taylor, R.N., Nenad Medvidovic, E.D.: Software Architecture: Foundations, Theory, and Practice. Wiley, New York (2009)

    Google Scholar 

  16. Rozanski, N., Woods, E.: Software systems architecture: working with stakeholders using viewpoints and perspectives. Addison-Wesley, Reading (2011)

    Google Scholar 

  17. Rupakheti, C.R., Chenoweth, S.V.: Teaching software architecture to undergraduate students: an experience report. In: 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, vol. 2, pp. 445–454. IEEE, New York (2015)

    Google Scholar 

  18. Van Deursen, A., Aniche, M., Aué, J., Slag, R., De Jong, M., Nederlof, A., Bouwers, E.: A collaborative approach to teaching software architecture. In: Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education, pp. 591–596 (2017)

    Google Scholar 

Download references

Author information

Authors and Affiliations


Corresponding author

Correspondence to Rick Kazman .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and Permissions

Copyright information

© 2023 The Author(s), under exclusive license to Springer Nature Switzerland AG

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Kazman, R., Cai, Y., Godfrey, M.W., Pautasso, C., Liu, A. (2023). A Better Way to Teach Software Architecture. In: Pelliccione, P., Kazman, R., Weber, I., Liu, A. (eds) Software Architecture. Springer, Cham.

Download citation

  • DOI:

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-031-36846-2

  • Online ISBN: 978-3-031-36847-9

  • eBook Packages: Computer ScienceComputer Science (R0)