An Overview of Software Architecture Education
Resumo
Software architecture comprises the most relevant structure of a software system and is a factor to enable systems to achieve qualities that are crucial to the system's goals. In this sense, teaching software architecture to students and professionals remains a very important task. However, it is still a challenging matter for teachers and learners on different levels and contexts. We also lack an updated overview on how such a challenge has been addressed. This paper presents an overview of software architecture education experiences and initiatives. For this, we systematically examined the most relevant studies addressing software architecture education. After analyzing a total of 50 studies, we discuss how software architecture has been taught, the topic mostly taught, the learning objectives, and the learning methods. Based on our findings, we also present open issues that still remain to be further investigated, aiming to mature software architecture education.
Referências
Angelov, S. and Beer, P. (2017). Designing and applying an approach to software architecting in agile projects in education. Journal of Systems and Software, 127:78–90.
Bass, L., Clements, P., and Kazman, R. (2003). Software Architecture in Practice. Addison-Wesley, 2nd edition.
Bass, L., Clements, P., and Kazman, R. (2021). Software Architecture in Practice. Addison-Wesley Professional, 4th edition.
Bloom, B., Engelhart, M., Furst, E., Hill, W., and Krathwohl, D. (1956). Taxonomy of Educational Objectives: The Classification of Educational Goals: Handbook I Cognitive Domain. David McKay Company, Inc.
Cervantes, H., Haziyev, S., Hrytsay, O., and Kazman, R. (2016). Smart Decisions: An Architectural Design Game. In 38th International Conference on Software Engineering (ICSE), pages 327–335.
Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers, J., Little, R., Merson, P., Nord, R., and Stafford, J. (2010). Documenting Software Architectures: Views and Beyond. Addison-Wesley Professional.
Deursen, A., Aniche, M., Aue, J., Slag, R., de Jong, M., Nederlof, A., and Bouwers, E. (2017). A Collaborative Approach to Teaching Software Architecture. In ACM Technical Symposium on Computer Science Education (SIGCSE), pages 69–80.
Galster, M. and Angelov, S. (2016). What makes teaching software architecture difficult? In 38th International Conference on Software Engineering (ICSE), pages 356–359.
Garlan, D., Shaw, M., Okasaki, C., Scott, C., and Swonger, R. (1992). Experience with a course on architectures for software systems. In 6th SEI Conference on Software Engineering Education, pages 23–43.
Lago, P., Cai, J., De Boer, R., Kruchten, P., and Verdecchia, R. (2019). DecidArch: Playing cards as software architects. In 52nd Hawaii International Conference on System Sciences (HICCS), pages 7815–7824.
Lago, P. and Vliet, H. (2005). Teaching a course on software architecture. In 18th Conference on Software Engineering Education and Training (CSEE&T), pages 35–42.
Mannisto, T., Savolainen, J., and Myllarniemi, V. (2008). Teaching Software Architecture Design. In 7th Working IEEE/IFIP Conference on Software Architecture (WICSA), pages 117–124.
Petersen, K., Vakkalanka, S., and Kuzniarz, L. (2015). Guidelines for conducting systematic mapping studies in software engineering: An update. Information and Software Technology, 64:1–18.
Rodrigues, C. and Werner, C. (2009). Software architecture teaching: A systematic review. In 9th IFIP World Conference on Computers in Education (WCCE), pages 1–10.
Rozanski, N. and Woods, E. (2011). Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives. Pearson Education.
Rupakheti, C. and Chenoweth, S. (2015). Teaching software architecture to undergraduate students: An experience report. In 37th International Conference on Software Engineering (ICSE), pages 445–454.
Shaw, M. and Clements, P. (2006). The Golden Age of Software Architecture: A Comprehensive Survey. Technical Report CMU-ISRI-06-101, Institute for Software Research International.
Shaw, M. and Garlan, D. (1996). Software Architecture - Perspectives on an Emerging Discipline. Prentice Hall.
Van Vliet, H. (2008). Software engineering: principles and practice, volume 13. John Wiley & Sons Hoboken, NJ.
Wohlin, C. (2014). Guidelines for snowballing in systematic literature studies and a Replication in software engineering. In 18th International Conference on Evaluation and Assessment in Software Engineering (EASE), pages 1–10.
Wohlin, C., Runeson, P., Höst, M., Ohlsson, M., Regnell, B., and Wesslén, A. (2012). Experimentation in Software Engineering. Springer Berlin Heidelberg.