In the software engineering and programming courses of the preceding semesters of the curriculum the focus was on standard business applications with a layered architecture (Presentation, Application, Domain, Persistence). However, in the world of software engineering, a multitude of various system architectures exist and this course introduces a few. It follows a rather pattern-oriented approach, by discussing the various architectural types from a rather abstract perspective and then put it into an applied context.
This course starts by introducing the Pipes & Filters architecture for pure data processing and puts it into the context of the rendering pipeline of real-time computer graphics. What follows is Actors and the Blackboard Pattern which are put into the context of reactive concurrent systems found in Internet Of Things (IoT), Industry 4.0, Intelligent Houses and simple AI systems. This complemented by CQRS and Event Sourcing, two modern architectures used in event-driven domains. In the last part the course covers software architectures for numerical simulations in soft real-time applications and does this in the context of Game Engine Architecture.
Therefore summarising the course covers the following topics from an architectural viewpoint:
- Pipes & Filters for component-based data transformation problems such as a computer graphics rendering pipeline.
- Game Engine Architecture for organising components and their communication in soft real-time simulations with strong focus on performance.
- Actors for autonomous software entities, communicating through messaging in domains with software networks such as Internet of Things.
- Blackboard Pattern for solving problems based on a continuous inflow of information and events in decision-centric domains such as an Intelligent Houses.
- CQRS (Command Query Responsibility Segregation) for splitting up the data model of an application into a read and write part and organse the services around that separation.
- Event Sourcing for storing current application state as a series of events and rebuilding state within the system by replaying that series of events. Such events could be coming for example from reactive programs and actors and can be used in the blackboard pattern.
Although this course might touch upon, it is not explicitly an introduction into the following topics: Enterprise Architectures, Microservices, SOA, Distributed Architectures, Web Architectures, Dependency Injection.
- Pipes and Filters
- Java Streams
- Computer Graphics Pipeline
- Game Engine Architecture: Basics and History
- Game Engine Architecture: Game Loop
- Game Engine Architecture: Game Objects
- Actors: Actor Model
- Actors: Akka
- Actors: Interaction Patterns
- Reactive Architecture: Fundamentals
- Reactive Architecture: Towards Microservices
In the accompanying seminar, the topics introduced in the lecture are applied in three small coding projects:
- In Lab Exercise 1 the task is to implement a simple computer graphics pipeline using Pipes & Filters.
- In Lab Exercise 2 the task is to implement a simple 2D Billiard game using physics simulation in JavaFX with user input using an existing phyiscs engine.
- In Lab Exercise 3 the task is to implement a simple intelligent house with a Blackboard Architecture based on Actors (Java Akka).
- In Lab Exercise 4 is an exercise for CQRS and Event Sourcing, based upon ideas by external lecturer Stefan Dunst.
Note that the seminar is the only mean of assessment in this course.
- Lecture Thursday 15 Oct, 15:40 - 17:15
- Lecture Tuesday 20 Oct, 09:50 - 11:25
- Lecture Thursday 22 Oct, 14:00 - 15:35
- Lecture Tuesday 27 Oct, 09:50 - 11:25
- Lecture Thursday 29 Oct, 14:00 - 15:35
- Game Engine Architecture (Basics & History)
- Lecture Tuesday 3 Nov, 09:50 - 11:25
- Game Engine Architecture (Game Loop)
- Lecture Thursday 5 Nov, 14:00 - 15:35
- Lecture Tuesday 10 Nov, 09:50 - 11:25
- Lecture Thursday 12 Nov, 13:10 - 14:45
- Actors (Actor Model + Akka)
- Lecture Tuesday 17 Nov, 09:50 - 11:25
- Lecture Thursday 19 Nov, 14:00 - 15:35
- Reactive Architecture (Fundamentals + Towards Microservices)
- Lecture Tuesday 24 Nov, 09:50 - 11:25
- Reactive Architecture (Towards Microservices)
- External Lecturer Stefan Dunst: Introduction
- Lecture Thursday 26 Nov, 14:00 - 15:35
- External Lecturer Stefan Dunst: DDD
- Lecture Tuesday 1 Dec, 09:50 - 11:25
- External Lecturer Stefan Dunst: CQRS
- Lecture Thursday 3 Dec, 14:00 - 15:35
- External Lecturer Stefan Dunst: ES
Seminar Monday 19 Oct, 09:00 - 11:25 / 12:20 - 14:45
Seminar Monday 2 Nov, 09:00 - 11:25 / 12:20 - 14:45
Seminar Monday 9 Nov, 09:00 - 11:25 / 12:20 - 14:45
Seminar Monday 16 Nov, 09:00 - 11:25 / 12:20 - 14:45
Seminar Monday 23 Nov, 09:00 - 11:25 / 12:20 - 14:45
Seminar Monday 30 Nov, 09:00 - 11:25 / 12:20 - 14:45
Seminar Monday 7 Dec, 08:10 - 10:35 / 10:40 - 13:05
Seminar Monday 14 Dec, 08:10 - 10:35 / 10:40 - 13:05
Seminar Monday 21 Dec, 08:10 - 10:35 / 10:40 - 13:05
Seminar Monday 11 Jan, 09:00 - 11:25 / 12:20 - 14:45
NO WRITTEN EXAM
Assessment of the course is based on the seminar only. Each seminar results in a given number of points, from which a weighted sum is calculated which forms the final mark of the course.
Sources, References and Copyright
TODO add relevant references
We do not claim original authorship of these lecture notes and put emphasis on the fact that they do not contribute original work, are intended as supplementary material to students in the respective lecture and are not intended for publication or print.
These lecture notes are not a unique work of the author but are a summary and compendium of the respective topics from the following sources: , , , , , , , , , , . Whole parts of these sources have been copied, with some slightly changed and adopted to the narrative and flow of the text. We indicate in each chapter which resources are used however, we refrain from making references to each copied sentence to avoid clutter and disturbing the flow of the text. Many figures were copied as well, however we always indicate the source of figures clearly in case they are copied from other sources.
 Tomas Akenine-Möller, Eric Haines, and Naty Hoffman. 2019. Real-time rendering. Crc Press.
 Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. 2008. Pattern-oriented software architecture: A system of patterns. John Wiley & Sons.
 Bruce Powel Douglass. 2003. Real-time design patterns: Robust scalable architecture for real-time systems. Addison-Wesley Professional.
 Herbert Dowalil. 2018. Grundlagen des modularen softwareentwurfs: Der bau langlebiger mikro- und makro-architekturen wie microservices und soa 2.0. Hanser Verlag, München.
 David Eberly. 2006. 3D game engine design: A practical approach to real-time computer graphics. CRC Press.
 Jason Gregory. 2018. Game engine architecture. crc Press.
 Donald Hearn, M Pauline Baker, and others. 2004. Computer graphics with opengl. Upper Saddle River, NJ: Pearson Prentice Hall,
 Gregor Hohpe and Bobby Woolf. 2004. Enterprise integration patterns: Designing, building, and deploying messaging solutions. Addison-Wesley Professional.
 Shaw Mary and Garlan David. 1996. Software architecture: Perspectives on an emerging discipline. Prentice-Hall (1996).
 Mike McShaffry. 2014. Game coding complete. Nelson Education.
 Dave Shreiner, Graham Sellers, John Kessenich, and Bill Licea-Kane. 2013. OpenGL programming guide: The official guide to learning opengl, version 4.3. Addison-Wesley.