A case-based approach for software architecture education and training - Oliveira, Brauner Roberto do Nascimento (2024)
Context: Software architecture education remains challenging for instructors, students, and software industry professionals. Several initiatives have been proposed to mitigate the inherent challenges, including games, supporting tools, collaborative courses, and hands-on projects. In addition to such initiatives, case-based approaches have been introduced for software architecture education and training, and its benefits are recognized. However, it is challenging to find, select, evaluate, and adapt cases to design instructions that are capable of achieving meaningful learning. Objective: In this sense, the main goal of this thesis is to provide the knowledge and means necessary to facilitate the employment of real cases for software architecture education and maximize the positive effects of such approach on students learning. Method: For that purpose, we employed a series of methods that comprises a literature review to understand and characterize the methods and approaches commonly employed to teach software architecture, and characterize the use of cases and real cases to support software architecture education, a mix of qualitative and quantitative methods to assess the perspective of students on the use of real cases in different ways and occasions, a mix of qualitative methods to develop a conceptual model, and action research to iteratively develop a case-based approach for software architecture education. Results: Besides providing a broad view of software architecture education, our results highlight the use of real cases as an important resource when teaching and learning software architecture concepts. The conceptual model in combination with our approach can support instructors in delivering a better overall experience with real cases. Conclusion: Using real cases to teach software architecture can be rewarding in several ways, both from the point of view of students and instructors. However, developing effective instruction based on such cases may require careful design and extra effort to achieve the desired learning objectives. In this sense, the use of a systematic approach is key to leverage the use of cases in software architecture education.