Architectural Design - UBC Computer Science

Download Report

Transcript Architectural Design - UBC Computer Science

Material from:
Software Engineering 8, Sommerville
Software Architecture, Shaw and Garlan
ARCHITECTURAL STYLES
This work is licensed under a Creative Commons
Attribution-Noncommercial 2.5 Canada License
Neil Ernst (slides from Eric Wohlstadter, Emmerson Murphy-Hill
and Gail Murphy)
Keep It Real …
Any sufficiently advanced MVC
framework is indistinguishable
from just writing all this *&%$
from scratch to begin with @GonzoHacker
Conway’s Law [1968]
“Any organization that designs a system will
inevitably produce a design whose structure is a
copy of the organization's communication
structure.”
Coplien and Harrison [2004]

"If the parts of an organization (e.g. teams,
departments, or subdivisions) do not closely reflect
the essential parts of the product, or if the
relationship between organizations do not reflect
the relationships between product parts, then the
project will be in trouble. ... Therefore: Make sure
the organization is compatible with the product
architecture."
Eric S. Raymond

“Conway’s Law prov. The rule that organization of
the software and the organization of the software
team will be congruent; originally stated as:
 ‘If
you have four groups working on a compiler, you’ll
get a 4-pass compiler’.” (Raymond, 1996)

E.g. A web team, a DB team, and a business team
produce a 3-tier architecture.
http://www.bonkersworld.net/organizational-charts/
Common Style Categories

Language-influenced



Layered



Virtual Machines
Client-server
Dataflow-styles



Main program and sub-routine
Object-oriented
Batch-sequential
Pipe-and-filter
Shared Memory

Blackboard




Pull-style (repository)
Push-style (publish-subscribe)
Rule-based
Others ….
Layered Styles

Organize system as a stack of consumers and
providers of functions
 Layers


can be both consumer and provider
Layers only know about lower layers
Independence of layers eases evolution
 Layers
are easy to replace
 Changes to one layer only affect small set of
components

Synchronous communication through function calls or
requests
Virtual Machine Style

Layers are decomposed into increasing levels of
abstraction
My Web App
Servlet API
JDK
Operating System
Hardware Drivers
http://en.wikipedia.org/wiki/Semantic_Web_Stack
Abstraction Layers Exercise

Decompose the relevant data-structure for an HTML
Editor into levels of abstraction
GUI Editor Widgets
…
Character Sequence
Byte Sequence
Bit Sequence
Virtual Machine Style


Focus is on Logical View or Development View
Issues
 Sometimes
the best way of decomposing a system is not
related to abstraction!
 Performance can suffer
 Data
must be passed through several layers
Potential VM architecture
for Lunar Lander game
Client-Server Style

Basic style consists of two layers and a network:
A
set of servers
 A set of clients
 A network that allows clients access to servers
Design Issues
in Client-Server Architecture



Focus is on Physical View
Fat Client vs. Thin Client
Pass by Value vs. Pass by Reference
Thin Client



Client software provides GUI only
Good
 Easy to deploy system
 Additional system features easy to add on server only
 Simplicity provides compatibility with many client devices
Bad
 Client can’t do anything without Internet access
 High bandwidth usage and latency
 High throughput demand on server
 Clients never perform computation themselves
 Large scalability demands on server
MS Outlook
Fat Client



Client software provides GUI + Algorithms
Server mostly a data repository
Good
 Client can do some work without Internet access
 Computation is amortized across clients

Network access is infrequent
Bad
 Complexity inhibits compatibility with many client devices


Server gets a break
Pass by Value




Data returned to client using “deep” copy
Object fields are included in response (recursively)
Good
 Reduced latency
Bad
 Potential wasteful bandwidth
 Too much data may prevent interactive responsiveness
Pass by Value (JSON example)
{
auctionID: 4935;
description: “iPod nano”;
price: 24.54;
endDate: “9-30-2011”;
seller: {
name: “S. Jobs”;
street: “1 Infinite Loop”;
city: “Cupertino”;
}
}
Pass by Reference




Data returned to client using “shallow” copy
Object fields are translated into IDs
Good
 Reduced bandwidth
Bad
 Too many trips to retrieve data may prevent interactive
responsiveness
Pass by Reference (JSON)
{
auctionID: 4935;
description: “iPod nano”;
price: 24.54;
endDate: “9-30-2011”;
sellerID: 9984;
}
http://en.wikipedia.org/wiki/Multitier_architecture
N-Tier Architecture
Model View Controller


Look at RoR architecture (rails
What is the difference between 3-tier and MVC?
 State-Logic-Display
State (DB)
and Display

App
Server
Display
(browser)
– no interaction between State and
Design Review Signups



Send course e-mail available times
All members must attend
Include at least one 30 minute block for each day,
between 9pm and 6pm
 Oct.

15th, Oct 16th, and Oct 17th
I will then schedule everyone and post a Google
spreadsheet with the details.
Design Review ~20 mins



Each team member should contribute.
One possible timeline
~3 mins:


high-level overview
~5 mins x 3:
Describe a few related User Stories by …

Showing how the story corresponds to HTML UI

Showing how the story corresponds to Class diagram

Last 5 minutes: Q&A with me / TA