Open menu with table of contents Design Patterns
Logo of Stuttgart Media University for light theme Logo of Stuttgart Media University for dark theme

Design Patterns

113486

Winter 2023/24

Tobias Jordine jordine@hdm-stuttgart.de

Stuttgart Media University

1 Overview

Introduction and course organization

1.1 Who am I

  • Short CV
    • Bachelor Medieninformatik @ HdM
    • Master Computer Science and Media @ HdM
    • PhD @ University of the West of Scotland
    • "Systemlandschaftsgärtner" @ Ernst Klett Verlag GmbH
    • Now: Professor "Methodik der Softwareentwicklung" @ HdM
  • Lectures
    • 113217: Software Development 2 (Bachelor)
    • 113330: Software Development 3 (Bachelor)
    • 113423a: Aktuelle Themen der Internet-Technologien (Bachelor)
    • 113486: Design Patterns (Bachelor)
    • 143307a: Sichere Systeme (Master)
    • 113408a: Verteilte Systeme (Bachelor)
    • 143102a: Ultra Large Scale Systems (Master)
  • Topics
    • Methodology: The human factors of software development
    • Software Development
    • Software Architecture
    • Distrubted Systems
    • Security

1.2 Prerequisites

This only applies for software design patterns

  • Knowledge of object-oriented programming
  • Interest in identifying similarities‚

1.3 Objectives

Main goal: Identifying and applying patterns in different situations and contexts.

  • Getting used to patterns
  • Explore different kinds of patterns
  • Identifying patterns
  • Identifying anti patterns
  • Applying patterns
  • Communicate patterns to others

1.4 Methodology

You are responsible for presenting a pattern you have chosen!

  • You present a pattern you chose in advance to your fellow students
  • We discuss the pattern and its impacts in class

1.5 Presentation

Things you can consider for your presentation

  • Duration: ca. 15 - 20 minutes
  • Introduction of the pattern
  • What are relevant publications?
  • Why is this pattern relevant?
  • What are related patterns?
  • What are related anti patterns?
  • (Practical) examples
    • e.g. how could the pattern be applied in your previous projects?
  • (...)

Please send the slides after your presentation to me

1.6 Pattern for presenting/describing patterns

This is just a suggestion. It's okay when you have a different structure.

Based on the GoF (see E. Gamma, R. Helm, R. Johnson, J. Vlissides: Design Patterns. Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995) pattern description structure.

  1. Pattern name
  2. Goal
  3. Synonyms
  4. Motivation
  5. Applicability
  6. Structure
  7. Involved actors
  8. Participants
  9. Interactions
  10. Consequeces: Pros & cons
  11. Implementation hints
  12. Example code
  13. Practical use
  14. Related patterns

1.7 Discussion

Things you can consider for the discussion

  • Duration: ca. 30 - 40 minutes
  • Active discussion by all participants of this course is mandatory!

1.8 Grading

Presentation

  • 100% of your grade

After grading, you will get a detailed description of how your note is compiled.

1.9 Grading details: presentation

Things I will consider:

  • Structure
  • Coverage of the chosen pattern
  • Coverage of the impacts
  • Clarity
  • Examples
  • Initial questions for discussion
  • Use of sources

1.10 Schedule

Date Topic
13/10/23 Introduction and organization
20/10/23 Final submission for pattern. Session is cancled.
27/10/23 -
02/02/24
Presentations & discussions

2 Patterns

These topics are starting points. You can either chosse an pattern listed here or you can add your own one. In this case, please contact me in advance.

2.1 Pattern catalogue - Sofware design patterns

Source: E. Gamma, R. Helm, R. Johnson, J. Vlissides: Design Patterns. Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995

Creational patterns

  1. Abstract factory
  2. Builder
  3. Factory
  4. Prototype
  5. Singleton

Structural patterns

  1. Adapter
  2. Bridge
  3. Composite
  4. Decorator
  5. Facade
  6. Flyweight
  7. Proxy

Behavioral patterns

  1. Chain of responsibility
  2. Command
  3. Interpreter
  4. Iterator
  5. Mediator
  6. Memento
  7. Observer
  8. State
  9. Strategy
  10. Template method
  11. Visitor

2.2 Pattern catalogue - Sofware architecture patterns

Source: M. Richards, N. Ford: Fundamentals of Software Architecture: An Engineering Approach. A Comprehensive Guide to Patterns, Characteristics, and Best Practices

  1. Big ball of mud (ant pattern)
  2. Layered architecture
  3. Pipeline architecture
  4. Microkernel architecture
  5. Service-based architecture
  6. Event-driven architecture
  7. Space-based architecture
  8. Orchestration-driven service-oriented architecture
  9. Microservice architecture

2.3 Pattern catalogue - Non-software patterns

Source: Prof. Walter Kriha and previous semesters

  1. Model view controller
  2. Model view presenter
  3. Erzählmuster: Charakterdarstellung in Filmen und Serien
  4. Depression Pattern
  5. Trauma Pattern
  6. Patterns in Animation
  7. Patterns in Movies/Series
  8. Patterns in Storytelling - the X basic plots
  9. Gesprächsmuster / Kommunikationsmodelle (Schulz von Thun)
  10. Dependency Injection
  11. Hype Zyklus
  12. Verschwörungstheorien Pattern
  13. Erfolgsregeln bei Hollywoodfilmen
  14. Serverless
  15. K-Pop Pattern
  16. Navigation Patterns (UI)
  17. Sonatenhauptsatzform Klassik Musik
  18. Prokrastination
  19. Aufräumen mit System
  20. Narrative Patterns in Video Games
  21. Mobbing pattern
  22. RAII (Resource acquisition is initialization)
  23. Die Kunst, recht zu behalten
  24. The Blob - AntiPattern
  25. Rhetorik: Muster überzeugender Reden
  26. The Golden Ratio
  27. Sustainable Software Development Patterns
  28. Domain Driven Design Patterns

3 Things to consider

The more we mange to discuss the different patterns, the more interessting the course will be!

  • Your presentation can either be in English or German
  • You can send your basic presentation structure in advance in order to get feedback.

4 What's next?

  • Search for a suitable pattern
  • Do an initial research about this pattern
  • Optional: Discuss the topic with me
    • Remember the deadline: 20/10/2023
  • Add your topic to the schedule
  • Our first session will be at 27/10/2023

5 Questions?

If you have any questions about your topic, grading, presentation etc.: ask me anytime

Prof. Dr. Tobias Jordine

Room 322

jordine@hdm-stuttgart.de