3. Software Architecture Workshop
Introduction Slide 3
Articles of
Confederation
Virginia Plan
Madison’s Notes AmendmentsThe Constitution
Federalist papers
Expressions of the Architecture
4. Software Architecture Workshop
Introduction Slide 4
Alexander Hamilton
John Jay
Benjamin Franklin
Signing of the Constitution. September 17, 1787
The Architects
James Madison
“Architect of the Constitution”
6. Software Architecture Workshop
Introduction Slide 6
Workshop Objectives
• Advance in our ability to create an
architecture that is
Good: is technically sound
Right: meets the stakeholder needs (business, customers,
developers, managers, etc.)
SUCCESSFUL: is delivering value
7. Software Architecture Workshop
Introduction Slide 7
Introduction to Software Architecture
Overview
• What: characterizing software architecture
concerns and decisions
• Why: understand the contribution it makes
• How: the (visual) architecting process
• and build a roadmap of what we will do over next 4 days
• Who: architects—role, responsibilities and
capabilities
• Where and When: organizational and
lifecycle context
14. Software Architecture Workshop
Introduction Slide 14
Big Ball of Mud Architecture:
High Cost of Change
“If you think good
architecture is expensive,
try bad architecture”
– Brian Foote
“You reach for the
banana, and get the
entire gorilla”
– Michael Stahl
16. Software Architecture Workshop
Introduction Slide 16
Modular Structure(s): Cost of Change!
• Isolate impact of change
• Isolate arenas of uncertainty and experiment
• Increase reversibility, replaceability,
• Increase responsiveness/adaptability
• Reduce complexity
Divide and conquer
“we have to keep it crisp, disentangled, and simple if we
refuse to be crushed by the complexities of our own
making...” – Dijkstra
19. Software Architecture Workshop
Introduction Slide 19
Architecture: Parts and Relations!
“Software architecture refers to the high level
structures of a software system [..] Each
structure comprises software elements,
relations among them, and properties of both
elements and relations.”
— wikipedia 2017
(after Clements et al, 2010)
20. Software Architecture Workshop
Introduction Slide 20
[intermezzo]
“Everything that needs to be said
has already been said. But since no
one was listening, everything must
be said again.
— André Gide
22. Software Architecture Workshop
Introduction Slide 22
Design: What?
"Everyone designs who
devises courses of action
aimed at changing
existing situations into
preferred ones."
— Herbert Simon
23. Software Architecture Workshop
Introduction Slide 23
How: Finding the (Natural) Shape
“I go along with the natural
makeup”…
“when I come to the tricky
parts, I slow down”
— Chuang Tzu: “The
Dexterous Butcher”
24. Software Architecture Workshop
Introduction Slide 24
Separation: Outside/Inside
— Ambrose Bierce, Devil’s Dictionary
ABATIS, n. [1.] Rubbish in front
of a fort, to prevent the rubbish
outside from molesting the
rubbish inside.
Image: Engineering and the Mind’s Eye
“Design things to make their
performance as insensitive to
the unknown or uncontrollable
external influence as practical.”
— Eb Rechtin
26. Software Architecture Workshop
Introduction Slide 26
Boundaries
“There was a wall. It did not look important. It
was built of uncut rocks roughly mortared. An
adult could look right over it, and even a child
could climb it. Where it crossed the roadway,
instead of having a gate it degenerated into
mere geometry, a line, an idea of boundary.
But the idea was real. It was important. For
seven generations there had been nothing in
the world more important than that wall.
Like all walls it was ambiguous, two-faced.
What was inside it and what was outside it
depended upon which side of it you were on.”
— Ursula K. Le Guin, The Dispossessed
27. Software Architecture Workshop
Introduction Slide 27
Abstractions
As programmers we deal
with abstractions all the
time and we have to invent
them in order to solve our
problems
— Michael Feathers
30. Software Architecture Workshop
Introduction Slide 30
How: Factor and Refactor
“The responsibility of architecture
is the architecture of responsibility.”
— Jan van Til/Tom Graves
Does this component have a
cohesive identity or purpose — a
single responsibility at the level of
abstraction of the abstraction?
33. Software Architecture Workshop
Introduction Slide 33
System: What?
“A system is an
interconnected set of
elements that is
coherently organized in
a way that achieves
something”
— Donella Meadows
Image: donellameadows.org
34. Software Architecture Workshop
Introduction Slide 34
Essence of Systems is
http://www.bredemeyer.com
• Relationships
• Interfaces
• Form
• Fit
• Function
— Eberhardt Rechtin
36. Software Architecture Workshop
Introduction Slide 36
System: What?
“The defining
properties of any
system, are properties
of the whole, which
none of the parts have.
If you take the system
apart, it loses its
essential properties”
— Russell Ackoff
41. Software Architecture Workshop
Introduction Slide 41
How: Design Across
Elements and Interactions: How it Works
http://www.bredemeyer.com
Posit structure
Explore behavior
Revise structure
How will this
work?What is it made
(up) of?
How does this
contribute to/inhibit
desired properties?
42. Software Architecture Workshop
Introduction Slide 42
Design Across: Structure and Behavior
http://www.bredemeyer.com
What
ARCHITECTURE
STRUCTURE
interfaces
elements and
relationships
How
BEHAVIOR
Logical
Conceptual
43. Software Architecture Workshop
Introduction Slide 43
Design Is How It Works
http://www.bredemeyer.com
What
(system view)
HowWhat
(user view)
ARCHITECTURE
STRUCTUREBEHAVIOR
CAPABILITIESCONTEXT
Why
v v
How well
FUNCTION PROPERTIES
architecturally significant mechanisms
45. Software Architecture Workshop
Introduction Slide 45
LMAX Disruptor Mechanism
Challenges:
A trading platform
needs very low latency
- trades have to be
processed quickly
because the market is
moving rapidly.
A retail platform adds
complexity because it
has to do this for lots
of people.
Source: Martin Fowler http://martinfowler.com/articles/lmax.html
46. Software Architecture Workshop
Introduction Slide 46
Founding Classics
“The Federalist Papers
are arguments that
support different parts of
the design of the
Constitution.”
– Alan Kay, 1995
50. Software Architecture Workshop
Introduction Slide 50
Keep an Architecture Decision Record
Title: short noun phrase
Context: describe the forces at play,
probably in tension
Decision: describe our response to
these forces
Status: proposed, accepted,
deprecated or superseded
Consequences: describe the resulting
context, after applying the decision
— Michael Nygard, Documenting
Architecture Decisions, Nov 2011
51. Software Architecture Workshop
Introduction Slide 51
Architecture as Intention and Reflection
http://www.bredemeyer.com
System Design Intention
(what should be)
System Design Reflection
(what is)
53. Software Architecture Workshop
Introduction Slide 53
Also: Just… take note(s)!
Leonardo da Vinci’s notebooks
Observe the system
Develop and share theory
• of operation
(interactions, resolution
of forces, outcomes)
• of relation of structure to
function/properties
57. Software Architecture Workshop
Introduction Slide 57
Context Factors
Image source: Sarah Mei on Twitter
“Design quality is not a
property of the code. It's
a joint property of the
code and the context in
which it exists.”
– Sarah Mei
58. Software Architecture Workshop
Introduction Slide 58
"Always design a thing by considering it in its
next larger context" — Eliel Saarinen
http://www.bredemeyer.com
Context System-in-Context
(use, dev, ops)
System
(Ecosystem)
Architecture
structure and
mechanisms
“Requirements”
design of system
capabilities
Strategy
ecosystem interventions
59. Software Architecture Workshop
Introduction Slide 59
the elephant in the room
http://www.bredemeyer.com
it’s all design!
•Strategy sets design
direction
•“Requirements” is design
of system capabilities and
properties
•Architecture is design to
achieve them
60. Software Architecture Workshop
Introduction Slide 60
Architecturally Significant
http://www.bredemeyer.com
Structurally significant
• Organizing structure
• Architecturally significant
mechanisms
• Structural integrity and
sustainability
Strategically significant
• game shapers and game changers
What is make
or break?
What impacts
how we
compete?
"I wasn't the one pushing things in the wrong direction, but I should have been the one to stop it." — Chad Fowler
61. Software Architecture Workshop
Introduction Slide 61
Not Just Good, but Right and Successful!
http://www.bredemeyer.com
What
(system view)
HowWhat
(user view)
ARCHITECTURE
STRUCTUREBEHAVIOR
CAPABILITIESCONTEXT
Why How well
FUNCTION PROPERTIES
good?right?successful?
63. Software Architecture Workshop
Introduction Slide 63
Co-Design of What the System Is
and How it is Built …
http://www.bredemeyer.com
right system–built right
Its messy! But so is any
alternative!
We either acknowledge that
design is a process of learning
what the system needs to be,
and is becoming, or it lets us
know the hard way!
64. Software Architecture Workshop
Introduction Slide 64
Decision Models: Places to Put Things
http://www.bredemeyer.com
Architecture Strategy
Architecture
Architecture Decision Record
Conceptual Architecture
Logical Architecture
Execution Architecture
• Architectural vision, principles, styles, key concepts and mechanisms
• Focus: high-level decisions that will strongly influence the structure of
the system; rules certain structural choices out, and guides selection
decisions and tradeoffs among others
• Structures and relationships, static and dynamic views,
assumptions and rationale
• Focus: decomposition and allocation of responsibility,
interface design, assignment to processes and threads
• Architecture Decision Record; open issues; guidelines, policies,
mechanisms, design patterns; frameworks, infrastructure and standards
• Focus: guide engineers in creating designs that maintain the integrity of
the architecture
65. Software Architecture Workshop
Introduction Slide 65
Architecture Views
http://www.bredemeyer.com
Conceptual Architecture
Logical Architecture
Execution Architecture
• Architecture Diagram, CRC-R cards, Design sketches for key mechanisms
• Focus: identification of components and allocation of responsibilities to
components; conceptually address key design challenges
• Updated Architecture Diagram (showing interfaces), Interface specifications,
Component specifications and usage guides, Mechanism designs
• Focus: design of component interactions, connection mechanisms and
protocols; interface design and specification; providing contextual information
for component users
• Process and Deployment Views
• Focus: assignment of the runtime component instances to processes,
threads and address spaces; how they communicate and coordinate; how
physical resources are allocated to them
66. Software Architecture Workshop
Introduction Slide 66
Architecture: Why?
• Purpose is not to be a map
of the system, though views
are useful as maps
Locate (places to find things;
places to put things)
• Purpose:
to do design (to do design is
to improve the design) to get
more the outcomes we want
67. Software Architecture Workshop
Introduction Slide 67
Architecture: When
• Earliest Responsible Moment?
• Last Responsible Moment?
http://www.bredemeyer.com
“What is the most important
think we should be thinking
about at this extraordinary
moment?”
– Buckminster Fuller
73. Software Architecture Workshop
Introduction Slide 73
Fallible We Are
“I confess that there are several parts of
this constitution which I do not at
present approve, but I am not sure I
shall never approve them: For having
lived long, I have experienced many
instances of being obliged by better
information, or fuller consideration, to
change opinions even on important
subjects, which I once thought right, but
found to be otherwise. It is therefore that
the older I grow, the more apt I am to
doubt my own judgment, and to pay
more respect to the judgment of others.”
— Benjamin Franklin
74. Software Architecture Workshop
Introduction Slide 74
Feynman on Fallibility
“We are never definitely right,
we can only be sure we are
wrong!”
“The first principle is that you
must not fool yourself and you
are the easiest person to fool”
— Richard Feynman
76. Software Architecture Workshop
Introduction Slide 76
Alternatives: Rule of Three
“If you haven’t thought
of three possibilities,
you haven’t thought
enough.”
— Jerry Weinberg
77. Software Architecture Workshop
Introduction Slide 77
Iterations
http://www.bredemeyer.com
You think it’s messy?
Well, it’s messier than that!
Actively weeding out weak
ideas, focusing and
improving the design, means
feedback loops, within
feedback loops
78. Software Architecture Workshop
Introduction Slide 78
Who: Architects
• As Leaders
Look across boundaries, and further out in time, and
asking: What does
• the code need,
• the team need,
• the system need,
• operations and users need
to thrive and be sustaining?
What needs to be done, that isn’t being done?
http://www.bredemeyer.com
79. Software Architecture Workshop
Introduction Slide 79
Architects Lead
to Design Integrity
• An architect is a tech(nical) lead(er) -- but
architect puts emphasis on *system*
*design*, that is on being a leader who
facilitates and ensures system design
integrity. Not just design cohesion, but
resilience, more...
http://www.bredemeyer.com
80. Software Architecture Workshop
Introduction Slide 80
Design Integrity
“Design is inherently
about what ought to be
made… it is inherently
ETHICAL.”
— Jabe Bloom
Image: Jabe Bloom, as he
known on twitter (@cyetain)
81. Software Architecture Workshop
Introduction Slide 81
Who: Architects
• Discussion: In an Agile context,
Do we still need architects?
(If yes) Do architects also code?
(Also if yes) What characterizes (good) architects?
http://www.bredemeyer.com