On successful completion of the module, students will be able to independently design, develop and critically evaluate the architecture of large-scale software systems. They will be able to decompose software into components and connectors, select and evaluate appropriate frameworks, and logically organise functionalities and workflows. Students will be able to plan and design parallel and concurrent processes and integrate them into architectures tailored to different application domains. In addition, they will have developed their technical, social and personal skills, as well as their communication and self-management skills, and will be able to apply them effectively in the context of large-scale software projects.
Students learn to write web based applications using differenz concepts:
All solutions will be based on modern frameworks or libraries like AngularJS or Vaadin.
Online problem description, based on a selection of industrial topics. The literature is presented in each semester depending on the exercises.
Supported teamwork in the laboratory. Self study, oral exam and presentation
The "Software Architectures" course provides advanced knowledge and skills in the development and analysis of modern software architectures.
In the first part of the lecture, relevant process models are reviewed, and approaches for agile architecture development are introduced. Students explore and compare various view models, deepen their understanding of modeling techniques for components and connectors, and expand their knowledge of design methods. The course emphasizes the use of scenarios for describing and evaluating non-functional requirements.
The second part focuses on fundamental architectural patterns, such as layered architecture, hexagonal architecture, onion architecture, blackboard, pipes-and-filters, and event-driven architecture. Students learn to identify, understand, and apply these patterns while exploring their role in typical middleware concepts. The lecture demonstrates how these architectural templates provide pathways to organizing flexible and evolutionary systems.
The third part addresses architecture at the module level. Using practical scenarios and examples, the application of patterns for the business layer is presented and analyzed in context. The course aims to equip students with a comprehensive understanding of designing and evaluating modular software architectures.
The lecture will take the form of seminars with exercises and presentations.