Module Software Architectures, Computer Science (Master) (ER 6)

English language
Compact font

Color scheme

Module summary

Software Architectures

INFM210SE

Prof. Dr. Thomas Fuchß

/

All semesters

none

none

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.

Individual exams
Course Parallel Programming

INFM212SE

Laboratory

Dipl.-Ing. Christian Meder

German

3/2

90 hours in total, including 30 hours of contact study.

Exercise 1 Semester (not graded)

The "Parallel Programming Lab" provides practical knowledge of concurrent programming and its application across various modern technologies and systems.


In the first part of the course, students revisit and deepen their understanding of the fundamentals of concurrent programming. Through hands-on exercises using Java and the Java Development Kit (JDK), they learn how to efficiently design concurrent processes and address challenges such as race conditions and deadlocks.


In the second part, the course explores practical applications of concurrent programming through concise introductions to various technologies and platforms, including:

  • Concurrency in operating systems, e.g., Linux
  • Concurrency on mobile platforms, e.g., Android
  • Map/Reduce and the Hadoop ecosystem
  • Concurrency in web applications
  • Concurrency in modern programming languages like Go and Rust
  • Reactive Extensions (Rx) and their use cases
  • Cloud, cluster, and distributed systems
  • Microservice architectures
  • Deep learning and concurrency


By combining theoretical insights with practical exercises, students gain the skills to understand, implement, and advance concurrent programming in diverse technical contexts.

  • Brian Goetz, "Java Concurrency in Practice"
  • Online Tutorials

The literature for the second part changes every semester.

Passing the lab will be assessed by completing the exercises independently. In the second part of the lab, various new methods and concepts will be presented and discussed.

Course Software Architectures

INFM211SE

Lecture

Prof. Dr. Thomas Fuchß

German

2/2

60 hours in total, including 30 hours of contact study.

Verbal Exam 20 Min. (graded)

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.

  • Avgeriou, P; et. al (editors): Relating Software Requirements and Architectures. Springer, 2011.
  • Clements, P.; Bass, L. and Kazman, R.: Software Architecture in Practice, 2. ed. Addison-Wesley, 2003.
  • Fowler, M.: Patterns of Enterprise Application Architecture. Addison-Wesley, 2003.
  • Goll, J. und Dausmann, M.:Architektur- und Entwurfsmuster der Softwaretechnik. Springer Vieweg, 2013.
  • Gorton, Ian: Essential Software Architecture, 2. ed. Springer, 2011.
  • Larman, Craig: Applying UML and Patterns : An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3. ed. Prentice Hall, 2004.
  • Lilienthal, Carola: Sustainable software architecture: analyze and reduce technical debt. dpunkt.verlag, 2019.
  • Buschmann, Frank: A System of Patterns (POSA V.1). John Wiley & Sons. 1996
  • Schmidt, Douglas C.: Patterns for Concurrent and Networked Objects (POSA V.2). John Wiley & Sons, 2000.
  • Sommerville, Ian: Software Engineering, 9. Auflage. Pearson Studium, 2012.
  • Vogel, O.; Arnold, I.; Chughtai, A. and Kehrer, T.: Software Architecture: A Comprehensive Framework and Guide for Practitioners. Springer, 2011.
  • Vogel, O.; et. al: Software-Architektur: Grundlagen – Konzepte – Praxis, 2. Auflage. Spektrum, 2009.

The lecture will take the form of seminars with exercises and presentations.

Course Software Architectures Laboratory

INFM213SE

Laboratory

M.Sc. Aladdin Özenir

German

2/2

60 hours in total, including 30 hours of contact study.

Exercise 1 Semester (not graded)