Architectures and design patterns

Study for Week 6

This week we step back from technical details and Java. We will look at how to design and structure an application.

We will see how multi-tier or multi-layer architectures can be used to improve the maintainability and scalability of complex systems.

We will also look at design patterns and how they provide a framework and a language for structuring your programs.

At the end of this session, you should be able to:

  • Understand the importance and purpose of application layering and distribution into tiers
  • Understand factors relating to performance and maintainability
  • Understand multi-tiered architectures
  • Understand the purpose and structure of a design pattern
  • Formalize a design pattern using a pattern template

Layering and architectures

Design patterns

Dimensions of performance

What do the terms throughput, latency, response time, scalability, availability and reliability mean?

First, I strongly recommend reading Chapter 1 (Layering) of Martin Fowler's book, Patterns of Enterprise Application Architecture:

For information on how Java EE helps with distribution, I recommend re-reading Chapter 1 of Beginning Java EE 7:

Chapters 1 and 2 of "Java Design Patterns: a tutorial" (these chapters are very short) provide a bit more explanation about design patterns
(you may also choose to look at a few design patterns in that book)

Finally, spend some time looking over any of the design patterns that interest you here: