Course overview
Appreciate various software system architectures and how to access services provided by the architectures including capturing architectural concerns; design, documenting and analysing software architectures, applying software architecture in projects.
Building on foundational knowledge in system design, this course delves into understanding various software system architectures. Students will not only learn to appreciate different architectural paradigms but also gain proficiency in accessing services offered by these architectures while capturing critical architectural concerns. Through various activities students will develop skills in designing, documenting, and analyzing software architectures, equipping them with the expertise needed to select, justify, and apply software architecture effectively in real-world projects.
- Foundations of Software Architecture
- Architectural Styles and Patterns
- Architectural Design and Decision Making
Course learning outcomes
- Analyse the components, structures, and quality attributes of software architectures, including architectural concerns and stakeholder requirements.
- Compare and evaluate software architecture styles and patterns in relation to functional and non-functional requirements, including security, scalability, safety, and performance.
- Design and document a software architecture using appropriate representations, incorporating architectural decisions and trade-offs.
- Justify and apply an appropriate software architecture to a given problem context, demonstrating reasoning about trade-offs, constraints, and implementation considerations.