Patterns·Field Guide
DARK
SE322 · Software Design & Architecture · Chapter 04

Architecture styles,
cataloged into patterns.

A style is the blueprint's big picture — like "this house is a bungalow." A pattern is the tested recipe you drop inside it — like "put the kitchen island here." This chapter is the catalogue architects use so nobody has to invent the wheel twice.

Style vs. Pattern
4-stop history timeline
5 system classifications
Midterm-tested
ARCHITECTURAL STYLE PATTERN recipe DATA FLOW DIST. INTER. HIER.
§ 01 — THE CORE DISTINCTION

Architectural Style vs. Architectural Pattern

This one distinction is asked about constantly — get it locked in before anything else.

🏠
Memory hook
"Style is the house shape. Pattern is the furniture arrangement."
A style sets the big picture (Layered, Data-Centered…). A pattern is the specific, reusable recipe that fills it in (MVC inside a Layered style).
Architectural Style

The high-level template

Defines the overall structure of the system — the system-wide skeleton. Example: Layered, Data-Centered, Distributed. Buschmann's framing: it specifies system-wide structural properties and impacts every subsystem's architecture.

Architectural Pattern

The specific, reusable solution inside it

A concrete, tested recipe for a common problem that lives inside that structure. Example: MVC living inside a Layered style, or Pipes-and-Filters living inside a Data Flow style.

Worked example — "calculate the average": the style is Data Flow (input → processing → output). The pattern filling it is Pipes-and-Filters — each step (define list → find total → calculate average) is a filter that transforms data and passes it on. Same pattern, reusable for student scores or weekly temperatures.
Why bother reusing at all?
📦
"Quietly Copy Everything"
Quality (best practices, more robust) · Consistency (uniform, easier to maintain) · Efficiency (faster design & implementation)
Buschmann's exact framing
Architectural patterns specify system-wide structural properties and affect the architecture of every subsystem.

Design patterns are medium-scale — applying one has no effect on the system's fundamental structure, only on a subsystem's internal architecture.
§ 02 — HISTORY

Four names, four decades, one idea getting refined

🕰️
Order-of-events mnemonic
"Alexander Started, Styles Scaled, Gang Grouped, Buschmann Bridged"
1977 Alexander → 1990s Styles (SE community) → 1994 GoF Design Patterns → 1996 Buschmann's Architectural Patterns
1977 — Christopher Alexander

Gave the world "the language of patterns" — for buildings

Catalogued 253 patterns for physical architecture, each documenting a picture, its context, the problem it solves, evidence of validity, and related patterns. Example: "Light on Two Sides of Every Room" — give every room windows on two sides for better natural light.

Focus: documenting problems + solutions + context, for buildings.
1990s — Software Engineering Community

Introduced Architectural Styles

Researchers found recurring high-level problem solutions in terms of elements and their relationships — originally called architectural styles. Goal: "use a solution a million times over, without ever doing it the same way twice." Example: Client–Server — reused everywhere, implemented differently each time (Gmail's client is a browser; a banking app's client is a mobile app).

Focus: solution reuse at the whole-system level.
1994 — Gang of Four (Gamma, Helm, Johnson, Vlissides)

Published 23 object-oriented Design Patterns

A finer-grained set of OO detailed-design solutions, directly influenced by Alexander's work, each described in a strict specification format.

Focus: problem–solution reuse at class/object scale.
1996 — Buschmann, Meunier, Rohnert, Sommerlad, Stal

Unified styles + patterns into "Architectural Patterns"

Gave well-known architectural styles a pattern-like (context–problem–solution) treatment, and explicitly distinguished Architectural Patterns (system-wide) from Design Patterns (subsystem-level).

Focus: context–problem–solution, applied at the system level.
§ 03 — CLASSIFICATION

Five families of architectural patterns

Patterns are grouped by the type of system they suit. Big systems often combine more than one family at once.

🗂️
Memory hook
"Dad Drives Dan's Ice-cream Home"
Data-Centered · Data Flow · Distributed · Interactive · Hierarchical
🗄️

Data-Centered

Centralized data repository — clients access & work on shared data.

🌊

Data Flow

Oriented around transporting / transforming a stream of data.

🌐

Distributed

Independent processing units interacting over a network.

🖱️

Interactive

User-centric systems built around heavy user ↔ system interaction.

🏗️

Hierarchical

Components structured in layers/levels of abstraction and responsibility.

§ 04 — DATA-CENTERED SYSTEMS

Everything orbits one shared store

Data-Centered

central repository

A centralized repository holds the data, while clients access and perform work on it. Clients don't talk to each other directly — the repository is the intermediary.

Patterns
BlackboardRepository
Used in: DBMS, library information systems, CORBA interface repositories, compilers & CASE tools, speech/image recognition, security systems, business resource management.
How to picture it

Several Client S/W boxes all point arrows inward/outward to one central Data store cylinder — no client-to-client arrows at all.

§ 05 — DATA FLOW SYSTEMS

Data moves through a chain, changing shape

Data Flow

transport & transform a stream

Systems oriented around transporting and/or transforming a stream of data — think video streaming, signal processing.

Pattern
Pipes-and-Filters

A chain: Data Source → Filter1 → Filter2 → Filter3 → Data Sink. Each filter processes its input and produces output, passed along a pipe to the next filter.

Worked example
Calculating an average: define listfind totalcalculate average. Each step is a filter transforming the data. Reusable for student scores, weekly temperatures, anything with the same shape.
§ 06 — DISTRIBUTED SYSTEMS

Independent units, talking over a network

Distributed

networked processing units

Interaction between several independent processing units connected via a network — e.g. web applications.

Patterns
Client-ServerBroker
Client-Server Decentralized — clients request, one central server responds. E.g. a web server serving pages to browsers.
Broker A mediator component routes requests, translates messages, and often handles security/scalability. E.g. SOA — services interacting through a messaging system.
Decision rules to memorize
Interactive vs. Distributed (mobile apps):
Works offline only (calculator, offline dictionary) → Interactive.
Needs server communication (WhatsApp, Gmail, banking app) → Distributed.
DBMS has two valid views:
As a Repository (Data-Centered) → all apps share one central database.
As part of a Client-Server system (Distributed) → clients send SQL queries, server processes them.
§ 07 — INTERACTIVE SYSTEMS

Built around the user, running locally

Interactive

user-centric, local

Systems that serve users and require heavy interaction between the user and the system — everything runs on one machine.

Typical flow

User Interface → Application Logic → Data Management → Local Database — all on the same machine.

Example: a desktop calculator app, an offline dictionary, an offline game.
Interactive vs. Distributed, side by side
Interactive (local) Runs fully on one machine, works offline, single user.
Distributed (networked) Split across client + server, needs internet, supports many users.
§ 08 — HIERARCHICAL SYSTEMS

Layers of abstraction and responsibility

Hierarchical

levels, vertical or horizontal

Components structured as a hierarchy — vertically (layers) and/or horizontally (modules) — to reflect different levels of abstraction and responsibility.

How to picture it

Top Level Module → branches into Intermediate Modules → branches into Low Level Modules. Highest layer = most abstract; lowest layer = closest to hardware/base operations.

Examples
Control systems in manufacturing, robotics, and vehicles (sensors/actuators reporting up, tasks/goals flowing down). Also: an OS, where low layers handle hardware and high layers handle the UI.
§ 09 — CHEAT SHEET

Classification → Pattern → Example, in one table

Classification Pattern(s) Example
Data-Centered Blackboard, Repository DBMS, compilers, CASE tools
Data Flow Pipes-and-Filters Video processing, average-calculation pipelines
Distributed Client-Server, Broker Web apps, SOA messaging systems
Interactive Offline calculator, offline game
Hierarchical Operating systems, manufacturing/robotics control
§ 10 — PRACTICE LAB

Match the requirement to the pattern

Straight from a graded exam — same shape of question, worth drilling until it's automatic. Options given: Blackboard, Pipe-Filter, Client-Server, Broker Client-Server.

1. A video processing application that sequentially performs a set of operations on video files — decoding, applying filters (brightness, contrast), then encoding the output.
→ Pipe-and-Filter
Why: sequential stages, each transforming the data before passing it on — the definition of Data Flow.
2. An online banking system that lets customers perform transactions, manage accounts, and reach customer service through web, mobile, and desktop interfaces.
→ Client-Server
Why: multiple client front-ends, one server processing requests — a distributed, request/response system.
3. A financial analysis system where collaborative modules each contribute expertise toward personalized investment strategies, dynamically responding to new market data.
→ Blackboard
Why: independent modules collaborating around one shared, evolving data space — classic Data-Centered / Blackboard.