Preface

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.

Accompanying Seminar

In the accompanying seminar, the topics introduced in the lecture are applied in three small coding projects:

  1. In Lab Exercise 1 the task is to implement a simple computer graphics pipeline using Pipes & Filters.
  2. 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.
  3. In Lab Exercise 3 the task is to implement a simple intelligent house with a Blackboard Architecture based on Actors (Java Akka).
  4. 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.

Timeline

Lectures

  1. Lecture Thursday 15 Oct, 15:40 - 17:15
  2. Lecture Tuesday 20 Oct, 09:50 - 11:25
  3. Lecture Thursday 22 Oct, 14:00 - 15:35
  4. Lecture Tuesday 27 Oct, 09:50 - 11:25
  5. Lecture Thursday 29 Oct, 14:00 - 15:35
  6. Lecture Tuesday 3 Nov, 09:50 - 11:25
  7. Lecture Thursday 5 Nov, 14:00 - 15:35
  8. Lecture Tuesday 10 Nov, 09:50 - 11:25
  9. Lecture Thursday 12 Nov, 13:10 - 14:45
  10. Lecture Tuesday 17 Nov, 09:50 - 11:25
  11. Lecture Thursday 19 Nov, 14:00 - 15:35
  12. Lecture Tuesday 24 Nov, 09:50 - 11:25
  13. Lecture Thursday 26 Nov, 14:00 - 15:35
    • External Lecturer Stefan Dunst: DDD
  14. Lecture Tuesday 1 Dec, 09:50 - 11:25
    • External Lecturer Stefan Dunst: CQRS
  15. Lecture Thursday 3 Dec, 14:00 - 15:35
    • External Lecturer Stefan Dunst: ES

Seminars

  1. Seminar Monday 19 Oct, 09:00 - 11:25 / 12:20 - 14:45

  2. Seminar Monday 2 Nov, 09:00 - 11:25 / 12:20 - 14:45

  3. Seminar Monday 9 Nov, 09:00 - 11:25 / 12:20 - 14:45

  4. Seminar Monday 16 Nov, 09:00 - 11:25 / 12:20 - 14:45

  5. Seminar Monday 23 Nov, 09:00 - 11:25 / 12:20 - 14:45

  6. Seminar Monday 30 Nov, 09:00 - 11:25 / 12:20 - 14:45

  7. Seminar Monday 7 Dec, 08:10 - 10:35 / 10:40 - 13:05

  8. Seminar Monday 14 Dec, 08:10 - 10:35 / 10:40 - 13:05

  9. Seminar Monday 21 Dec, 08:10 - 10:35 / 10:40 - 13:05

  10. Seminar Monday 11 Jan, 09:00 - 11:25 / 12:20 - 14:45


NO WRITTEN EXAM


Assessment

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.

References

[2] Tomas Akenine-Möller, Eric Haines, and Naty Hoffman. 2019. Real-time rendering. Crc Press.

[5] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. 2008. Pattern-oriented software architecture: A system of patterns. John Wiley & Sons.

[7] Bruce Powel Douglass. 2003. Real-time design patterns: Robust scalable architecture for real-time systems. Addison-Wesley Professional.

[8] Herbert Dowalil. 2018. Grundlagen des modularen softwareentwurfs: Der bau langlebiger mikro- und makro-architekturen wie microservices und soa 2.0. Hanser Verlag, München.

[9] David Eberly. 2006. 3D game engine design: A practical approach to real-time computer graphics. CRC Press.

[13] Jason Gregory. 2018. Game engine architecture. crc Press.

[15] Donald Hearn, M Pauline Baker, and others. 2004. Computer graphics with opengl. Upper Saddle River, NJ: Pearson Prentice Hall,

[20] Gregor Hohpe and Bobby Woolf. 2004. Enterprise integration patterns: Designing, building, and deploying messaging solutions. Addison-Wesley Professional.

[21] Shaw Mary and Garlan David. 1996. Software architecture: Perspectives on an emerging discipline. Prentice-Hall (1996).

[22] Mike McShaffry. 2014. Game coding complete. Nelson Education.

[27] 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.