After completing this course successfully, the student can:
- Motivate why software architecture is important for developing high quality software.
- Apply the process for deriving the key concerns for the software architecture (concern analysis)
- Set up an architecture description and the tasks to achieve it.
- Apply the process for creating software architecture based on solution domains .
- Apply well-known architectural patterns in the design of an architecture.
- Analyze software architectures using scenario-based architecture analysis techniques.
- Apply these techniques and methods for any software design problem.
Software architecture forms the bridge between customer needs, technological constraints, and the development process. Software architecture is about the main decisions that define the working of a system and it’s fit to the environment. Architecture decisions determine the structure and style of the system, and the main guidelines for its realization. A fundamental difference between software architecture and software implementation is: within the context of software architecture, architects focus on the major concerns of the stakeholders, the fundamental patterns and structures so that an architecture fulfils various quality trade-offs (quality, style, and structure are the focus) whereas in software implementation the focus is mainly realizing the functionality of software (functionality is the focus).|
The course has some characteristics that the student should be aware of:
- The teaching method of this course adopts an interactive approach where the schedule of the lectures and project meetings are interchangeable so that the course is steered according to the performance of the students.
- The course hours can be used interchangeably for lectures, presentations, project meetings, group meetings and/or for self-study; the schedule updates will be announced at least one week before the date.
- During the course, the performance of individual students and their groups will be followed closely for the purpose of increasing the performance of students, if possible.
- The attendance is compulsory unless a permission is granted by the lecturer.
The course starts with a discussion on what software architecture is and what role it plays in the development process. After that, the analysis of the system context will addressed in stakeholder analysis, acquiring useful concerns and architecture requirements, and exploring the technological system environment. Via architecture styles and design patterns, an architecture defines the system structure and determines its intended quality. Finally, scenario-based architecture analysis techniques and an practical assessment method will be presented to evaluate the architecture and come up with improvements.