Title: Patterns Design
1PatternsDesign
2User Interfaces
3Patterns
4What is a Pattern?
- A solution to a problem in a context
- A structured way of representing design
information in prose and diagrams - A way of communicating design information from an
expert to a novice - Requirement shows when and how to apply
5Origin of Patterns
- Came from architecture
- Christopher Alexander, late 70s
- The Timeless Way of Building
- Describes
- Common architectural motifs
- How they come together to form a cohesive,
livable environment - Patterns from town planning to decorative detail
6Architectural Example Door Placement
- If room has two doors and people move through it,
keep both doors at one end of the room
7Alexanders Patterns
- Entries have five parts
- Name A short familiar, descriptive name or
phrase, usually more indicative of the solution
than of the problem or context. - Example One or more pictures, diagrams, and/or
descriptions that illustrate prototypical
application. - Context Delineation of situations under which
the pattern applies. - Problem A description of the relevant forces and
constraints, and how they interact. - Solution Static relationships and dynamic rules
describing how to construct artifacts in accord
with the pattern, often listing several variants. - What do you need to change for software?
8Properties of Patterns
- Independent, specific, and formulated precisely
enough to make clear when they apply
(encapsulation) - Describes how to build a realization
(generativity) - Identifies a solution space containing an
invariant that minimizes conflict among
constraints (equilibrium) - Represent abstractions of empirical experience
and everyday knowledge (abstraction) - May be extended down to arbitrarily fine levels
of detail. Like fractals, patterns have no top or
bottom (openness) - Hierarchically related. Coarse grained patterns
are layered on top of, relate, and constrain fine
grained ones (composibility) - What do you need to change for software?
9Design Patterns
- All the same benefits are true in software
- Cunningham and Beck recognized in late 80s
- Community formed in early 90s
- The Book
- Gamma, Helm, Johnson and Vlissides, Design
Patterns Elements of Reusable Object-Oriented
Software - Define 23 patterns
- Three categories
- Structural ways to represent ensembles of
information - Creational creating complex objects
- Behavioral capturing the behavior of object
10Patterns at All Levels
11Software Architecture
- What is an architecture?
- External view
- What does that mean for software?
- The highest level design
- Well refer to it as system design though not
consistent in the industry
12System Design Goals
- Extensibility adding new features
- Tradeoff of generality and time
- How might it be extended?
- Changeability requirements changes
- Simplicity ease of understanding and
implementing - Efficiency speed and size
13Key System Design Characteristics
- Cohesion
- degree to which communication takes place within
the module - Coupling
- degree to which communication takes place between
modules - Min-max problem minimize coupling while
maximizing cohesion
14Examples
- Role-playing game
- Decompose into 4 modules environment, game
control, participants and artifacts - High cohesion and coupling
- When two characters meet, all 4 modules are
involved - Personal finance application
- Decompose into user activities accounts, bill
playing, loans, investments - Low cohesion and high coupling
- Accounts are pretty independent
- Loan payment would involve the first 3 modules
15Categorizing System Designs(Shaw and Garlan)
- Model-View Controller
- Data flows
- Viewed as data flowing among processes
- Independent components
- Components operating in parallel and
communicating occasionally - Virtual machines
- Treats an application as a program written in a
special-purpose language - Repository
- Application built around data
- Layered architectures
- Packages of function with a strong hierarchical
uses relationship
16Why Categorize?
- Recognize patterns
- Reuse designs
- Learn from other similar applications
- Reuse classes
17Data Flow Design
- Data flowing among processes
- Two categories
- Pipes and filters
- Filters processes
- Pipes input streams
- Batch sequential
- Pipe and filter where input streams are batches
of data
18Pipe and Filter
filter
pipe
filter
filter
filter
filter
pipe
filter
Filters processes Pipes input streams
19Example of Batch Sequential
Collect mortgage funds
Mortgage pool
Account balances
Collect unsecured funds
Unsecured pool
Pipe batch input
Processes
Pipe and filter where input streams are batches
of data
20Independent Components
- Components operating in parallel and
communicating occasionally - Three types
- Client-server
- Browser-web server most familiar example
- Separate systems with narrow interface
- Sometimes expanded to three tiers (why?)
- Façade pattern (single unified interface)
- Parallel communicating processes
- Several processes executing at the same time
- Typically modeled with sequence diagrams
- Observer pattern (one-to-many dependencies)
- Event systems
- Set of components waiting for input
- Example word processor waiting for user input
- State transition diagrams
- State pattern (alter behavior depending on state)
21Client-Server and Facade
Browser-web server most familiar
example Separate systems with narrow interface
Key concept limit exposed interface
Adapted from Software Engineering An
Object-Oriented Perspective by Eric J. Braude
(Wiley 2001), with permission.
22Parallel Communicating Processes
sequence diagram
Adapted from Software Engineering An
Object-Oriented Perspective by Eric J. Braude
(Wiley 2001), with permission.
23Observer Design Pattern
Single source of data with a number of clients
that need to be updated
Client of this system
1
Request others be notified
1..n
Source notify()
Observer update()
2
Notify all observers
ConcreteObserver observerState update()
ConcreteSubject state
Determines if change needed
3
Gamma et al
24Event Systems and State Transition Diagrams
Set of components waiting for input
25Virtual machines
- Treats an application as a program written in a
special language - Payoff is that the interpreter code is the basis
for multiple applications - Two types
- Interpreters
- Rule-based systems
26Repository
- A system built around data
- Two types
- Databases
- Hypertext systems
27A Typical Repository System
Adapted from Software Engineering An
Object-Oriented Perspective by Eric J. Braude
(Wiley 2001), with permission.
28Iterator pattern
void setToFirst() points to first element void
increment() causes the iterator to
point to its next element C getcurrentElement()
return the element pointed to by the
iterator boolean isDone() true if all elements
processed
29Hypertext Basis of the Web
- Motivated by Vannevar Bush in 1945
- As We May Think (Atlantic Monthly)
- Theoretical machine, "memex," to enhance human
memory by allowing the user to store and retrieve
documents linked by associations - Invented by Ted Nelson in the 1960s
- Popularized with HTML (Tim Berners-Lee)
30Ted Nelson
- "If computers are the wave of the future,
displays are the surfboards." - Xanadu 1974
- "give you a screen in your home from which you
can see into the world's hypertext libraries...
offer high-performance computer graphics and text
services at a price anyone can afford... allow
you to send and receive written messages... and
make you a part of a new electronic literature
and art, where you can get all your questions
answered... - Computer Lib/Dream Machines
31Layered Architecture
Coherent collection of software artifacts,
typically a package of classes
Adapted from Software Engineering An
Object-Oriented Perspective by Eric J. Braude
(Wiley 2001), with permission.
32Recap
- Model-View-Controller
- Data flow systems
- Pipes and filters
- Batch sequential
- Independent components
- Client-server
- Parallel communicating processes
- Event systems
- Virtual machines
- Interpreters
- Rule-based systems
- Repositories
- Databases
- Hypertext systems
- Layered architectures