Teaching Software Architecture to Undergraduate Students: An Experience Report

Software architecture lies at the heart of system thinking skills for software. Teaching software architecture requires contending with the problem of how to make the learning realistic -- most systems which students can learn quickly are too simple for them to express architectural issues. We address here the ten years' history of teaching an undergraduate software architecture course, as a part of a bachelor's program in software engineering. Included are descriptions of what we perceive the realistic goals to be, of teaching software architecture at this level. We go on to analyze the successes and issues of various approaches we have taken over the years. We finish with recommendations for others who teach this same subject, either as a standalone undergraduate course or integrated into a software engineering course.

[1]  W. Royce,et al.  Employing UNAS technology for software architecture education at the University of Southern California , 1994, WADAS '94.

[2]  James E. Tomayko,et al.  Key considerations in teaching software architecture , 2004, 17th Conference on Software Engineering Education and Training, 2004. Proceedings..

[3]  Rad Alrifai A project approach for teaching software architecture and web services in a software engineering course , 2008 .

[4]  樊希强,et al.  Cooperative Learning , 2020, Teaching High School Physics.

[5]  G. Pólya,et al.  How to Solve It. A New Aspect of Mathematical Method. , 1945 .

[6]  P. Campbell How to Solve It: A New Aspect of Mathematical Method , 2005 .

[7]  Rebecca Brent,et al.  Cooperative Learning in Technical Courses: Procedures, Pitfalls, and Payoffs. , 1994 .

[8]  Mary Shaw,et al.  Software Architecture Education Session Report , 2005, 5th Working IEEE/IFIP Conference on Software Architecture (WICSA'05).

[9]  Ewan Tempero Experiences in teaching quality attribute scenarios , 2009, ACE '09.

[10]  S. Siegel,et al.  Nonparametric Statistics for the Behavioral Sciences , 2022, The SAGE Encyclopedia of Research Design.

[11]  Craig Larman,et al.  Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition) , 1997 .

[12]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[13]  Jennifer Pérez,et al.  Teaching software architectures and aspect-oriented software development using open-source projects , 2009, ITiCSE '09.

[14]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[15]  Henrik Bærbak Christensen,et al.  Lectures abandoned: active learning by active seminars , 2012, ITiCSE '12.

[16]  James Jaccard,et al.  Statistics for the Behavioral Sciences , 1983 .

[17]  Alf Inge Wang Post-mortem analysis of student game projects in a software architecture course , 2009, 2009 International IEEE Consumer Electronics Society's Games Innovations Conference.

[18]  Myriam Herrera,et al.  Applying a distributed CSCL activity for teaching software architecture , 2011, International Conference on Information Society (i-Society 2011).

[19]  O. Karam,et al.  A model for SWE course "software architecture and design" , 2004, 34th Annual Frontiers in Education, 2004. FIE 2004..

[20]  Craig Larman,et al.  "Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development”, Third Edition, Pearson Education, 2005. , 2015 .

[21]  Craig Larman,et al.  Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process , 2001 .

[22]  Vasudeva Varma,et al.  An effective learning environment for teaching problem solving in software architecture , 2009, ISEC '09.