Hide menu

TDDE45 Software Design and Construction

Literature

The course literature consists of online resources and scientific papers, as well as a reference textbook on Design Patterns:

Design Patterns: Elements of Reusable Object-Oriented Software
by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (the authors and/or the book are often referred to as the Gang of Four or GoF)

Hardcover: 395 pages
Publisher: Addison-Wesley Professional; 1st edition (January 15, 1995)
Language: English
ISBN: 0201633612

An alternative is:

  • Head First Design Patterns by Freeman and Freeman, ISBN: 9780596007126, O'Reilly. This book is more verbose and less scientific; it is slightly easier to comprehend.

Below is a list of literature from the previous course TDDB84 (which had more focus on design patterns) and includes papers not necessary to pass this course; it is still interesting to read them if you want to know more details. During the course you may also need to search for additional research papers on your own. For this you could use the online search engines of LiU , Google Scholar or other search tools for scientific papers that you are familiar with.

Understanding design patterns

Mainly the course book, see above.

Also, related to the history of design patterns:

Design Patterns and Software Qualities

SOLID is an acronym for a set of design principles in object-oriented design of software. The Wikipedia description of SOLID is good, but you might also need to find examples of violations of these principles, in order to understand how they are to be applied.

Design patterns and software quality:

Software metrics

Design patterns, paradigms and languages

Some design patterns in different languages. For example Proxy:

Programming paradigms and design patterns:

Design patterns and application frameworks

Some design patterns are implemented using more or less standardized components or techniques. Here is a list to external resources for some of them. More references are in the lecture material and will be moved here for easier reference.

  • Abstract Factory, implemented using Dependency Injection (Inversion of Control) frameworks:
  • Observer:
    • In Java, all classes in the standard library called something with Listener are typically observers. To implement your very own, with no no connection to existing event sources, you would probably start with the class Observable
    • In C#, you typically observe events in sequences of items, and implement IObservable

Various topics

Below you will find topics which might not nessacarily concern a specific seminar.

Critique and reflections

These are some of the critiques usually found against the (over-)use of design patterns in software.

Design Patterns in specific domains


Page responsible: Adrian Pop
Last updated: 2022-08-13