The ability to define, evaluate, and implement software architectures is a fundamental skill for software engineers. However, teaching software architecture can be challenging as it requires students to be involved in real-context projects with high degrees of complexity. This involves making trade-off decisions among several quality attributes. Furthermore, the academic perception of software architecture differs from the industrial viewpoint. To address this issue, a study was conducted to identify and analyze the strategies, challenges, and course experiences used for teaching software architectures. The study analyzed 56 articles reporting on teaching experiences focused specifically on software architectures or focused on software engineering in general but discussing software architecture. The main contributions of this work include identifying strategies used in educating software architecture students aligned with the needs of the software industry. These strategies include short design projects, large development projects, and projects with actual clients. Additionally, the study compared curriculum contents in software development and architecture courses and identified recurring topics such as architecture patterns, quality attributes, and architectural views. This study also recognizes the set of skills that students of software architecture should develop during training, such as leadership and negotiation. The challenges in software architecture training were discussed, such as instructors’ lack of experience in actual projects, the abstract and fuzzy nature of software architectures, and the difficulty of involving clients and industry experts. Evaluation methods commonly used in training software architects, such as surveys, pre-test/post-test, and quality metrics on architectural artifacts, were identified and described. Overall, this study guides researchers and educators in improving their software architecture courses by incorporating strategies reported by the literature review. These strategies can bring architecture courses closer to the needs and conditions of the software industry.
Read full abstract