Agile approaches for teaching and learning software architecture design processes and methods
Software architecture plays a vital role in the analysis, design, evaluation and evolution of large-scale projects. Successful adoption of an agile methodology in large-scale projects requires not only tailoring of the software architecture analysis, design and evaluation methods but also a fundamental understanding of these methods. In this chapter, we provide agile teaching and learning approaches for software architecture analysis, design and evaluation. In particular, we focus on agile teams in architecturally significant (quality) requirements analysis and change management for collocated and distributed agile projects, iterative and continuous architecture design delivery using story boards and collaboration platforms, and using software reference architectures to monitor and control the design and evolution of a software architecture. The methods presented in this chapter are based upon the following research methods. We have explored the literature to identify key characteristics of agile software architecture processes and roles of agile teams in software architecture. We have presented agile teaching and learning approaches with reference to the case studies conducted in classes over 2 years of software architecture courses. We have specifically focused on designing course activities that can support lean education and collaboration among the students and course instructors. We foresee that the presented approaches can be used by academics to teach software architecture design methods and processes in particular, and software engineering techniques in general. Practitioners can also take advantage of the proposed approaches to continuously educate their staff when applying agile methods for architecture design and evolution of complex software systems.