SlideShare une entreprise Scribd logo
1  sur  84
The architect's clue bucket
@DanaBredemeyer
@RuthMalan
“Architecture represents the
significant design decisions that
shape a system”
— Grady Booch
Architecture Decisions
“Some decisions are consequential
and irreversible or nearly
irreversible [..] these decisions
must be made methodically,
carefully, slowly, with great
deliberation and consultation”
— Jeff Bezos, letter to shareholders, 2015
Decisions
Image source: wikipedia
“If you walk through and don’t like
what you see on the other side,
you can’t get back to where you
were before. We can call these
Type 1 decisions.”
— Jeff Bezos, letter to shareholders, 2015
Irreversible Decisions
“But most decisions aren’t like that
– they are changeable, reversible –
they’re two-way doors. If you’ve
made a suboptimal Type 2 decision,
you don’t have to live with the
consequences for that long. You
can reopen the door and go back
through.”
— Jeff Bezos, letter to shareholders, 2015
Reversible Decisions
Architecturally significant?
• Cost of change
• Strategic
• Address challenges
• create systems with desired
capabilities and properties
• under forces and constraints
• that are demanding, push
the limits, require design
attention
Architecture Decisions
• System outcomes
• cross-cutting concerns
• require organizational will
• First/early/before/not yet
• create “ground under the feet”
• reversible/irreversible
Super hella important
decisions of great
consequence to
• Structural integrity
• Design integrity
• Strategic impact
Architecture Decisions
Need clues – stat!
Kinds of clues:
• tips, hints, heuristics, …
principles, laws
• patterns, designs, …
• analogies, …
And clues on getting clues
What Do We Want? Clues!
Image source: Matthew Jones
Good, right, successful Architecture
Good: technically sound
Right: meets stakeholder needs
Successful: delivers value
What Do We Want?
Good: technically sound
Right: meets stakeholder needs
Successful: delivers value
Architecture
What Do We Want? Clues!
The architect’s SCARS:
• Separation of Concerns
• crisp and resilient
Abstractions
• balanced distribution of
Responsibilities
• strive to Simplify — Grady Booch
Good: Architecture
“I go along with the natural
makeup”…
“when I come to the tricky parts,
I slow down”
— Chuang Tzu:
“The Dexterous Butcher”
SCARS: Separation of Concerns
ABATIS, n. [1.] Rubbish in front of a
fort, to prevent the rubbish outside
from molesting the rubbish inside.
— Ambrose Bierce, Devil’s Dictionary
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
SCARS: Separation of Concerns
Image: alistair.cockburn.us/Hexagonal+architecture
SCARS: Separation of Concerns
Hexagonal Architecture
Ports and
adapters
Image: martinfowler.com/bliki/BoundedContext.html
Bounded Contexts in DDD
SCARS: Separation of Concerns
SCARS: crisp Abstractions
"The responsibility of architecture is the
architecture of responsibility.“
— Tom Graves (as paraphrased by Jan van Til)
SCARS: crisp Abstractions
“Things that are cohesive, [..] naturally stick to
each other because they are of like kind, or
because they fit so well together.[..] the pieces
all seem to be related, they seem to belong
together, and it would feel somewhat unnatural
(it would result in tight coupling!) to pull them
apart” — Glenn Vanderburg
Single Responsibility at the level of
abstraction of the abstraction
SCARS: crisp Abstractions
“The responsibility of architecture is the
architecture of responsibility.”
-- Jan van Til
SCARS: crisp Abstractions
"To find the right abstraction, guess. If it exhibits
the right properties, stop. "— Jessica Kerr
Factor and Refactor
Posit responsibilities
SCARS: crisp Abstractions
“We propose instead that one begins with a
list of difficult design decisions or design
decisions which are likely to change. Each
module is then designed to hide such a
decision from the others.” — David Parnas
SCARS: crisp and resilient Abstractions
Resilient under change
SRP: each software module should have one and
only one reason to change (Uncle Bob Martin)
Retrospective (Feathers)
Prospective (thought experiments)
SCARS: resilient Abstractions
“disorder is easier and more
permanent than order, which is difficult
and temporary”
— Jeremy Campbell
SCARS: resilient Abstractions
“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
Image: welshwaller.files.wordpress.com/2013/01/llwest-and-elan-valley-017.jpg
SCARS: Separation of Concerns
Boundaries: Conway’s Law
“Any organization that designs a
system (defined broadly) will
produce a design whose structure
is a copy of the organization's
communication structure.”
—Melvyn Conway (in 1968!)
Separate, and Keep Separate
No “god” component
SCARS: balanced distribution of Responsibilities
“Simplify, simplify” — H. D. Thoreau
‘One “simplify” would have sufficed’ —
Ralph Waldo Emerson, in response
SCARS: strive to Simplify
“Simplify, simplify, Simplify”
“Communicate, Communicate,
Communicate”
— Eberhardt Rechtin
SCARS: strive to Simplify
“disorder is easier and more
permanent than order, which is difficult
and temporary”
— Jeremy Campbell
SCARS: strive to Simplify
SCARS: strive to Simplify
“An evolving system increases its
complexity unless work is done to
reduce it.” — Meir Lehman
SCARS: strive to Simplify
“Every program attempts to expand
until it can read mail. Those programs
which cannot so expand are replaced
by ones which can.”
— Jamie Zawinski
“Do the simplest thing that could possibly
work”
Occam’s Razor: the simplest solution is
usually the correct one
YAGNI
SCARS: strive to Simplify
Chad Fowler: “The older I get, the more I realize
the biggest problem to solve in
tech is to get people to stop
making things harder than they
have to be.”
Michael Feathers: “It's not that easy.”
SCARS: strive to Simplify
SCARS: strive to Simplify
focusing is saying “no”— Steve Jobs
SCARS: strive to Simplify
“old code doesn’t die; you have
to kill it”
— Grady Booch
SCARS: strive to Simplify
StranglerApplication: “An alternative route is
to gradually create a new system around the
edges of the old, letting it grow slowly over
several years until the old system is
strangled.”
— Martin Fowler
SCARS: strive to Simplify
The architect’s SCARS:
• Separation of Concerns
• crisp and resilient
Abstractions
• balanced distribution of
Responsibilities
• strive to Simplify — Grady Booch
Good: Architecture
Good: Architecture 💔
“You reach for the
banana, and get the
entire gorilla”
– Michael Stahl
Image: from Undoing the harm of layers by Bjørn Bjartnes
Good: Architecture 💔
Actually, it looks more like this
“we have to keep it crisp,
disentangled, and simple if we
refuse to be crushed by the
complexities of our own
making...”
— Dijkstra
SCARS: Crisp, disentangled
“Architecture represents the
significant design decisions that
shape a system, where significant is
measured by cost of change”
— Grady Booch
Architecture Decisions
• Pay more attention to
consequential
irreversible decisions
• Make more decisions
reversible
Decoupled modular structure
 Reversible
• Isolate impact of change
• Isolate arenas of uncertainty and experiment
• Increase replaceability
• Increase responsiveness/adaptability
• Reduce complexity
• separate concerns, reveal intent: increase
comprehensibility
Decouple
 Reversible
• Event driven
• flow control is moved from sender to receiver
“If you're good at course
correcting, being wrong may be
less costly than you think”
— Jeff Bezos
Image source: wikipedia
 Reversible
Small changes, quick feedback, easy to undo
 Reversible
• Development servers. Each engineer has their own copy
of the entire site. Engineers can make a change, see the
consequences, and reverse the change in seconds
without affecting anyone else.
• Code review. Engineers can propose a change, get
feedback, and improve or abandon it in minutes or hours,
all before affecting any people using Facebook.
• Internal usage. Engineers can make a change, get
feedback from thousands of employees using the change,
and roll it back in an hour.
• Staged rollout. We can begin deploying a change to a billion
people and, if the metrics tank, take it back before problems
affect most people using Facebook.
• Dynamic configuration. If an engineer has planned for it in the
code, we can turn off an offending feature in production in
seconds. Alternatively, we can dial features up and down in
tiny increments (i.e. only 0.1% of people see the feature) to
discover and avoid non-linear effects
https://m.facebook.com/notes/kent-beck/taming-complexity-with-reversibility/
“Architecture represents the
significant design decisions that
shape a system”
— Grady Booch
Architecture Decisions
“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
Good: Shape a System
Essence of systems is:
• Relationships
• Interfaces
• Form
• Fit
• Function
— Eberhardt Rechtin
Systems
Essence of systems is:
• Relationships
• Interfaces
“Relationships among the elements are what give
systems their added value”
“The greatest leverage in architecting is at the interfaces”
“It is inadequate to architect up to the boundaries or interfaces of a system; one must
architect across them.” – Robert Spinrad, quoted by Eb Rechtin
Systems: Interfaces
architect across
“A lock is a lock because of the key [--] when
we design abstractions for lock, we are also
[in parallel] designing abstractions for key”
— Shripad Agashe
Systems: Interfaces
“Don’t partition by slicing through regions
where high rates of information exchange are
required” – Eb Rechtin
Systems: Interfaces
Image source: Martin Fowler’s bliki
Posit structure Explore behavior
Revise structure
Explore — with sketches
“Design is not just what it looks like and feels like.
Design is how it works.” — Steve Jobs
Systems: How it Works
Essence of architecture is:
• Structuring
• Simplification
• Compromise
• Balance
— Eberhardt Rechtin
Systems
“dependencies are a
tradeoff between the
cost of maintaining the
code yourself (and
implementing it) & the
cost of the risk of
breakage”
— Kent Beck
Systems: Tradeoffs/Compromise
Good: technically sound
Right: meets stakeholder needs
Successful: delivers value
Architecture
What Do We Want?
"Always design a thing by considering it in
its next larger context" -- Eliel Saarinen
Context System-in-Context
(use, dev, ops)
System
(Ecosystem)
Architecture
structure and
mechanisms
“Requirements”
design of system
capabilities
Strategy
ecosystem
interventions
Right: Fit to Context
Architecture Decisions
Title: short noun phrase
Context: desired outcomes and the forces
at play (probably in tension)
Decision: describes our response to these
forces
Status: proposed, accepted, deprecated or
superseded
Consequences: describes the resulting
context, after applying the decision
— Michael Nygard, Documenting
Architecture Decisions, Nov 2011
Right: Fit to Context
Context: Forces
Source: Grady Booch
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
Getting Clues: Look/Change PoV
“A change of
perspective is worth
80 IQ points”
— Alan Kay
Getting Clues: Look/Change PoV
“You don't understand
something until you
understand it more
than one way”
— Marvin Minsky
Image:
wikipedia.org/wiki/Marvin_Minsky#/media/File:Marvin_Minsky_at_OLPCb.jpg
“If you haven’t thought of
three possibilities, you
haven’t thought enough.”
— Jerry Weinberg
Rule of Three
Getting Clues: Look/Change PoV
Expose your mental models to the open air.
Remember, always, that everything you
know, and everything everyone knows, is only
a model.
Get your model out there where it can be
shot at.
Invite others to challenge your assumptions
and add their own.
Instead of becoming a champion for one
possible explanation or hypothesis or model,
collect as many as possible.
— Donella Meadows
Getting Clues: Look/Change PoV
Image source: Donella Meadows Institute
Good: technically sound
Right: meets stakeholder needs
Successful: delivers value
Architecture
What Do We Want?
What does it take to be successful?
An Architecture Story
Signing of the Constitution (painting by Louis S. Glanzman)
Architecture Story
The Articles of Confederation
Created 1777
Ratified 1781
Image source:
wikipedia
The
Virginia
Plan
Image: ourdocuments.gov
Architecture Story
The Constitution
of the
United States
Architecture Story
Architecture Story
“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
“it seems to have been reserved to the
people of this country, [..], to decide the
important question, whether societies of
men are really capable or not, of
establishing good government from
reflection and choice, or whether they
are forever destined to depend, for their
political constitutions, on accident and
force.”
Federalist No.1
Architecture Story
The Federalist Papers,
No. 51 addresses
• checks and balances
• separation of powers
Architecture Story
Ask
• [not just] What do users need?
• [but also] What do developers and testing need?
• [and] What does operations need?
• [and] What do others in the value network need?
to be successful
Ask
• What does the code need?
• What does the system need
• What does the ecosystem need?
to be successful
“Systems develop goals
the minute they come
into being”
— John Gall
What
(system view)
HowWhat
(user view)
SYSTEM ARCHITECTURE
STRUCTURALBEHAVIORAL
CAPABILITIESCONTEXT
Why How well
FUNCTIONALPROPERTIES
good?right?successful?
to be successful
The Clue-Space: More than Technical
Personal Organizational
Technical
Strategic
“Architecture is a way
of thinking that is
inescapably concerned
with everything”
— Dana Bredemeyer
Where to Go for More Clues
Personal Organizational
Technical
Strategic
Strategic Effectiveness
• Strategic context and
situational awareness
• Mapping, ecosystems, value
networks and differentiation
• Technology radars, capability
evolution and trends
• Operating models
• How we create value
• How we make money(/survive)
Strategy: Why go there?
Personal Organizational
Technical
Strategic
• You’re leading; where to?
• Inform/influence business
direction, given technology
capabilities and challenges
• Shape technical direction, to
enable business direction
• Architecture decisions
• Understand shaping forces,
differentiating value/outcomes
• Achieve fit to context / purpose
Where to Go for More Clues
Personal Organizational
Technical
Strategic
Organizational Effectiveness
• Leadership and social
dynamics
• Building relationships, trust and
teams
• Working across the organization
• Persuasion and influence;
negotiation, disagreement
• Decision making, judgment, effects
of groups
• …
Where to Go for More Clues
Personal Organizational
Technical
Strategic
Personal Effectiveness
• How we work: cognition (4Es), ..
• Empathy and design
imagination
• Cognitive amplifiers, fallibilities
and biases
• Perception and meaning making
• Opportunity discovery; problem
solving and problem framing
• …
More Clues
@RuthMalan
@DanaBredemeyer
Web: bredemeyer.com
Personal Organizational
Technical
Strategic
More Clues
Personal Organizational
Technical
Strategic
Software Architecture Workshop
November 12-15, 2018
Chicago-Schaumburg, IL
More: bredemeyer.com

Contenu connexe

Tendances

Presentation: Enterprise Architecture design In 3 Minutes or so
Presentation: Enterprise Architecture design In 3 Minutes or soPresentation: Enterprise Architecture design In 3 Minutes or so
Presentation: Enterprise Architecture design In 3 Minutes or soAdrian Grigoriu
 
Designing adaptive and nimble organizations
Designing adaptive and nimble organizationsDesigning adaptive and nimble organizations
Designing adaptive and nimble organizationsEmiliano Soldi
 
Business Architecture the Key to Enterprise Transformation
Business Architecture the Key to Enterprise TransformationBusiness Architecture the Key to Enterprise Transformation
Business Architecture the Key to Enterprise TransformationMike Walker
 
Beyond Agile with Team Topologies
Beyond Agile with Team TopologiesBeyond Agile with Team Topologies
Beyond Agile with Team TopologiesRich Allen
 
Rick Austin - Portfolio mangement in an agile world [Agile DC]
Rick Austin - Portfolio mangement in an agile world [Agile DC]Rick Austin - Portfolio mangement in an agile world [Agile DC]
Rick Austin - Portfolio mangement in an agile world [Agile DC]LeadingAgile
 
IT4IT real life examples & myths and rumors dispelled
IT4IT real life examples & myths and rumors dispelledIT4IT real life examples & myths and rumors dispelled
IT4IT real life examples & myths and rumors dispelledTony Price
 
The Paved Road at Netflix
The Paved Road at NetflixThe Paved Road at Netflix
The Paved Road at NetflixDianne Marsh
 
The Road to Business Agility
The Road to Business AgilityThe Road to Business Agility
The Road to Business AgilitySrini Koushik
 
Agile Product Management: Getting from Backlog to Value
Agile Product Management: Getting from Backlog to ValueAgile Product Management: Getting from Backlog to Value
Agile Product Management: Getting from Backlog to ValueLeadingAgile
 
Microservices Technology Stack
Microservices Technology StackMicroservices Technology Stack
Microservices Technology StackEberhard Wolff
 
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021Yusuke Suzuki
 
DevOps Implementation Roadmap
DevOps Implementation RoadmapDevOps Implementation Roadmap
DevOps Implementation RoadmapSofiaCarter4
 
From Capability-Based Planning to Competitive Advantage: Assembling Your Bus...
From Capability-Based Planning to Competitive Advantage:  Assembling Your Bus...From Capability-Based Planning to Competitive Advantage:  Assembling Your Bus...
From Capability-Based Planning to Competitive Advantage: Assembling Your Bus...Iver Band
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018Yusuke Suzuki
 
微服務架構|01|入門微服務|到底什麼是微服務?
微服務架構|01|入門微服務|到底什麼是微服務?微服務架構|01|入門微服務|到底什麼是微服務?
微服務架構|01|入門微服務|到底什麼是微服務?Kuo Lung Chu
 
Effective Application Portfolio Management using ArchiMate
Effective Application Portfolio Management using ArchiMateEffective Application Portfolio Management using ArchiMate
Effective Application Portfolio Management using ArchiMateCorso
 

Tendances (20)

Presentation: Enterprise Architecture design In 3 Minutes or so
Presentation: Enterprise Architecture design In 3 Minutes or soPresentation: Enterprise Architecture design In 3 Minutes or so
Presentation: Enterprise Architecture design In 3 Minutes or so
 
Designing adaptive and nimble organizations
Designing adaptive and nimble organizationsDesigning adaptive and nimble organizations
Designing adaptive and nimble organizations
 
Business Architecture the Key to Enterprise Transformation
Business Architecture the Key to Enterprise TransformationBusiness Architecture the Key to Enterprise Transformation
Business Architecture the Key to Enterprise Transformation
 
Beyond Agile with Team Topologies
Beyond Agile with Team TopologiesBeyond Agile with Team Topologies
Beyond Agile with Team Topologies
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Rick Austin - Portfolio mangement in an agile world [Agile DC]
Rick Austin - Portfolio mangement in an agile world [Agile DC]Rick Austin - Portfolio mangement in an agile world [Agile DC]
Rick Austin - Portfolio mangement in an agile world [Agile DC]
 
SAFe and DevOps - better together
SAFe and DevOps - better togetherSAFe and DevOps - better together
SAFe and DevOps - better together
 
IT4IT real life examples & myths and rumors dispelled
IT4IT real life examples & myths and rumors dispelledIT4IT real life examples & myths and rumors dispelled
IT4IT real life examples & myths and rumors dispelled
 
The Paved Road at Netflix
The Paved Road at NetflixThe Paved Road at Netflix
The Paved Road at Netflix
 
The Road to Business Agility
The Road to Business AgilityThe Road to Business Agility
The Road to Business Agility
 
Agile Mindset Shifting: Agile For All
Agile Mindset Shifting: Agile For AllAgile Mindset Shifting: Agile For All
Agile Mindset Shifting: Agile For All
 
Agile Product Management: Getting from Backlog to Value
Agile Product Management: Getting from Backlog to ValueAgile Product Management: Getting from Backlog to Value
Agile Product Management: Getting from Backlog to Value
 
Microservices Technology Stack
Microservices Technology StackMicroservices Technology Stack
Microservices Technology Stack
 
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021
 
DevOps Implementation Roadmap
DevOps Implementation RoadmapDevOps Implementation Roadmap
DevOps Implementation Roadmap
 
Jupyterカーネルを魔改造した話
Jupyterカーネルを魔改造した話Jupyterカーネルを魔改造した話
Jupyterカーネルを魔改造した話
 
From Capability-Based Planning to Competitive Advantage: Assembling Your Bus...
From Capability-Based Planning to Competitive Advantage:  Assembling Your Bus...From Capability-Based Planning to Competitive Advantage:  Assembling Your Bus...
From Capability-Based Planning to Competitive Advantage: Assembling Your Bus...
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
 
微服務架構|01|入門微服務|到底什麼是微服務?
微服務架構|01|入門微服務|到底什麼是微服務?微服務架構|01|入門微服務|到底什麼是微服務?
微服務架構|01|入門微服務|到底什麼是微服務?
 
Effective Application Portfolio Management using ArchiMate
Effective Application Portfolio Management using ArchiMateEffective Application Portfolio Management using ArchiMate
Effective Application Portfolio Management using ArchiMate
 

Similaire à Software Architecture Clues

The Allure of Gothic Markup
The Allure of Gothic MarkupThe Allure of Gothic Markup
The Allure of Gothic MarkupSimon St.Laurent
 
Agile Architecture Tech And Patterns
Agile Architecture   Tech And PatternsAgile Architecture   Tech And Patterns
Agile Architecture Tech And Patternspragkirk
 
Introduction to User Experience
Introduction to User ExperienceIntroduction to User Experience
Introduction to User ExperienceChristina Wodtke
 
Essential Complexity in Systems Architecture
Essential Complexity in Systems ArchitectureEssential Complexity in Systems Architecture
Essential Complexity in Systems ArchitectureMark Mishaev
 
Introduction to Software Architecture
Introduction to Software ArchitectureIntroduction to Software Architecture
Introduction to Software ArchitectureRuth Malan
 
Design as Leadership: Exploring the Terrain
Design as Leadership: Exploring the TerrainDesign as Leadership: Exploring the Terrain
Design as Leadership: Exploring the TerrainRick Fox
 
Decisions and Technical Leadership
Decisions and Technical LeadershipDecisions and Technical Leadership
Decisions and Technical LeadershipRuth Malan
 
Agile Architecture and Modeling - Where are we Today
Agile Architecture and Modeling - Where are we TodayAgile Architecture and Modeling - Where are we Today
Agile Architecture and Modeling - Where are we TodayGary Pedretti
 
The Architecture of Uncertainty
The Architecture of UncertaintyThe Architecture of Uncertainty
The Architecture of UncertaintyKevlin Henney
 
The Architecture of Uncertainty
The Architecture of UncertaintyThe Architecture of Uncertainty
The Architecture of UncertaintyKevlin Henney
 
What (Else) Can Agile Learn From Complexity
What (Else) Can Agile Learn From ComplexityWhat (Else) Can Agile Learn From Complexity
What (Else) Can Agile Learn From ComplexityJurgen Appelo
 
Applying Agile Values to Enterprise Architecture
Applying Agile Values to Enterprise ArchitectureApplying Agile Values to Enterprise Architecture
Applying Agile Values to Enterprise ArchitectureBenjamin Scherrey
 
Engineers or Bricoleurs by prof Jan Devos
Engineers or Bricoleurs by prof Jan DevosEngineers or Bricoleurs by prof Jan Devos
Engineers or Bricoleurs by prof Jan DevosCONFENIS 2012
 
How architectures fail, and what to do about it
How architectures fail, and what to do about itHow architectures fail, and what to do about it
How architectures fail, and what to do about itTetradian Consulting
 
Applying Agile Values to Enterprise Architecture Software Architectural Trend...
Applying Agile Values to Enterprise Architecture Software Architectural Trend...Applying Agile Values to Enterprise Architecture Software Architectural Trend...
Applying Agile Values to Enterprise Architecture Software Architectural Trend...Software Park Thailand
 
Favoring the Emergence through Agile Scaffolding
Favoring the Emergence through Agile ScaffoldingFavoring the Emergence through Agile Scaffolding
Favoring the Emergence through Agile ScaffoldingEmiliano Soldi
 

Similaire à Software Architecture Clues (20)

The Allure of Gothic Markup
The Allure of Gothic MarkupThe Allure of Gothic Markup
The Allure of Gothic Markup
 
Agile Architecture Tech And Patterns
Agile Architecture   Tech And PatternsAgile Architecture   Tech And Patterns
Agile Architecture Tech And Patterns
 
Introduction to User Experience
Introduction to User ExperienceIntroduction to User Experience
Introduction to User Experience
 
Essential Complexity in Systems Architecture
Essential Complexity in Systems ArchitectureEssential Complexity in Systems Architecture
Essential Complexity in Systems Architecture
 
Introduction to Software Architecture
Introduction to Software ArchitectureIntroduction to Software Architecture
Introduction to Software Architecture
 
Design as Leadership: Exploring the Terrain
Design as Leadership: Exploring the TerrainDesign as Leadership: Exploring the Terrain
Design as Leadership: Exploring the Terrain
 
Decisions and Technical Leadership
Decisions and Technical LeadershipDecisions and Technical Leadership
Decisions and Technical Leadership
 
Agile Architecture and Modeling - Where are we Today
Agile Architecture and Modeling - Where are we TodayAgile Architecture and Modeling - Where are we Today
Agile Architecture and Modeling - Where are we Today
 
The Architecture of Uncertainty
The Architecture of UncertaintyThe Architecture of Uncertainty
The Architecture of Uncertainty
 
The Architecture of Uncertainty
The Architecture of UncertaintyThe Architecture of Uncertainty
The Architecture of Uncertainty
 
What (Else) Can Agile Learn From Complexity
What (Else) Can Agile Learn From ComplexityWhat (Else) Can Agile Learn From Complexity
What (Else) Can Agile Learn From Complexity
 
Architects and design-org
Architects and design-orgArchitects and design-org
Architects and design-org
 
Rulespace
RulespaceRulespace
Rulespace
 
Applying Agile Values to Enterprise Architecture
Applying Agile Values to Enterprise ArchitectureApplying Agile Values to Enterprise Architecture
Applying Agile Values to Enterprise Architecture
 
Engineers or Bricoleurs by prof Jan Devos
Engineers or Bricoleurs by prof Jan DevosEngineers or Bricoleurs by prof Jan Devos
Engineers or Bricoleurs by prof Jan Devos
 
SAF - architecture framework
SAF - architecture frameworkSAF - architecture framework
SAF - architecture framework
 
How architectures fail, and what to do about it
How architectures fail, and what to do about itHow architectures fail, and what to do about it
How architectures fail, and what to do about it
 
Applying Agile Values to Enterprise Architecture Software Architectural Trend...
Applying Agile Values to Enterprise Architecture Software Architectural Trend...Applying Agile Values to Enterprise Architecture Software Architectural Trend...
Applying Agile Values to Enterprise Architecture Software Architectural Trend...
 
Favoring the Emergence through Agile Scaffolding
Favoring the Emergence through Agile ScaffoldingFavoring the Emergence through Agile Scaffolding
Favoring the Emergence through Agile Scaffolding
 
Engineer or Bricoleur ?
Engineer or Bricoleur ?Engineer or Bricoleur ?
Engineer or Bricoleur ?
 

Dernier

Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 

Dernier (20)

Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 

Software Architecture Clues

  • 1. The architect's clue bucket @DanaBredemeyer @RuthMalan
  • 2. “Architecture represents the significant design decisions that shape a system” — Grady Booch Architecture Decisions
  • 3. “Some decisions are consequential and irreversible or nearly irreversible [..] these decisions must be made methodically, carefully, slowly, with great deliberation and consultation” — Jeff Bezos, letter to shareholders, 2015 Decisions Image source: wikipedia
  • 4. “If you walk through and don’t like what you see on the other side, you can’t get back to where you were before. We can call these Type 1 decisions.” — Jeff Bezos, letter to shareholders, 2015 Irreversible Decisions
  • 5. “But most decisions aren’t like that – they are changeable, reversible – they’re two-way doors. If you’ve made a suboptimal Type 2 decision, you don’t have to live with the consequences for that long. You can reopen the door and go back through.” — Jeff Bezos, letter to shareholders, 2015 Reversible Decisions
  • 6. Architecturally significant? • Cost of change • Strategic • Address challenges • create systems with desired capabilities and properties • under forces and constraints • that are demanding, push the limits, require design attention Architecture Decisions • System outcomes • cross-cutting concerns • require organizational will • First/early/before/not yet • create “ground under the feet” • reversible/irreversible
  • 7. Super hella important decisions of great consequence to • Structural integrity • Design integrity • Strategic impact Architecture Decisions Need clues – stat!
  • 8. Kinds of clues: • tips, hints, heuristics, … principles, laws • patterns, designs, … • analogies, … And clues on getting clues What Do We Want? Clues! Image source: Matthew Jones
  • 9. Good, right, successful Architecture Good: technically sound Right: meets stakeholder needs Successful: delivers value What Do We Want?
  • 10. Good: technically sound Right: meets stakeholder needs Successful: delivers value Architecture What Do We Want? Clues!
  • 11. The architect’s SCARS: • Separation of Concerns • crisp and resilient Abstractions • balanced distribution of Responsibilities • strive to Simplify — Grady Booch Good: Architecture
  • 12. “I go along with the natural makeup”… “when I come to the tricky parts, I slow down” — Chuang Tzu: “The Dexterous Butcher” SCARS: Separation of Concerns
  • 13. ABATIS, n. [1.] Rubbish in front of a fort, to prevent the rubbish outside from molesting the rubbish inside. — Ambrose Bierce, Devil’s Dictionary 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 SCARS: Separation of Concerns
  • 14. Image: alistair.cockburn.us/Hexagonal+architecture SCARS: Separation of Concerns Hexagonal Architecture Ports and adapters
  • 16. SCARS: crisp Abstractions "The responsibility of architecture is the architecture of responsibility.“ — Tom Graves (as paraphrased by Jan van Til)
  • 17. SCARS: crisp Abstractions “Things that are cohesive, [..] naturally stick to each other because they are of like kind, or because they fit so well together.[..] the pieces all seem to be related, they seem to belong together, and it would feel somewhat unnatural (it would result in tight coupling!) to pull them apart” — Glenn Vanderburg
  • 18. Single Responsibility at the level of abstraction of the abstraction SCARS: crisp Abstractions “The responsibility of architecture is the architecture of responsibility.” -- Jan van Til
  • 19. SCARS: crisp Abstractions "To find the right abstraction, guess. If it exhibits the right properties, stop. "— Jessica Kerr
  • 20. Factor and Refactor Posit responsibilities SCARS: crisp Abstractions
  • 21. “We propose instead that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others.” — David Parnas SCARS: crisp and resilient Abstractions
  • 22. Resilient under change SRP: each software module should have one and only one reason to change (Uncle Bob Martin) Retrospective (Feathers) Prospective (thought experiments) SCARS: resilient Abstractions
  • 23. “disorder is easier and more permanent than order, which is difficult and temporary” — Jeremy Campbell SCARS: resilient Abstractions
  • 24. “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 Image: welshwaller.files.wordpress.com/2013/01/llwest-and-elan-valley-017.jpg SCARS: Separation of Concerns
  • 25. Boundaries: Conway’s Law “Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.” —Melvyn Conway (in 1968!) Separate, and Keep Separate
  • 26. No “god” component SCARS: balanced distribution of Responsibilities
  • 27. “Simplify, simplify” — H. D. Thoreau ‘One “simplify” would have sufficed’ — Ralph Waldo Emerson, in response SCARS: strive to Simplify
  • 28. “Simplify, simplify, Simplify” “Communicate, Communicate, Communicate” — Eberhardt Rechtin SCARS: strive to Simplify
  • 29. “disorder is easier and more permanent than order, which is difficult and temporary” — Jeremy Campbell SCARS: strive to Simplify
  • 30. SCARS: strive to Simplify “An evolving system increases its complexity unless work is done to reduce it.” — Meir Lehman
  • 31. SCARS: strive to Simplify “Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.” — Jamie Zawinski
  • 32. “Do the simplest thing that could possibly work” Occam’s Razor: the simplest solution is usually the correct one YAGNI SCARS: strive to Simplify
  • 33. Chad Fowler: “The older I get, the more I realize the biggest problem to solve in tech is to get people to stop making things harder than they have to be.” Michael Feathers: “It's not that easy.” SCARS: strive to Simplify
  • 34. SCARS: strive to Simplify
  • 35. focusing is saying “no”— Steve Jobs SCARS: strive to Simplify
  • 36. “old code doesn’t die; you have to kill it” — Grady Booch SCARS: strive to Simplify
  • 37. StranglerApplication: “An alternative route is to gradually create a new system around the edges of the old, letting it grow slowly over several years until the old system is strangled.” — Martin Fowler SCARS: strive to Simplify
  • 38. The architect’s SCARS: • Separation of Concerns • crisp and resilient Abstractions • balanced distribution of Responsibilities • strive to Simplify — Grady Booch Good: Architecture
  • 39. Good: Architecture 💔 “You reach for the banana, and get the entire gorilla” – Michael Stahl
  • 40. Image: from Undoing the harm of layers by Bjørn Bjartnes Good: Architecture 💔 Actually, it looks more like this
  • 41. “we have to keep it crisp, disentangled, and simple if we refuse to be crushed by the complexities of our own making...” — Dijkstra SCARS: Crisp, disentangled
  • 42. “Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change” — Grady Booch Architecture Decisions
  • 43. • Pay more attention to consequential irreversible decisions • Make more decisions reversible
  • 44. Decoupled modular structure  Reversible • Isolate impact of change • Isolate arenas of uncertainty and experiment • Increase replaceability • Increase responsiveness/adaptability • Reduce complexity • separate concerns, reveal intent: increase comprehensibility
  • 45. Decouple  Reversible • Event driven • flow control is moved from sender to receiver
  • 46. “If you're good at course correcting, being wrong may be less costly than you think” — Jeff Bezos Image source: wikipedia  Reversible
  • 47. Small changes, quick feedback, easy to undo  Reversible • Development servers. Each engineer has their own copy of the entire site. Engineers can make a change, see the consequences, and reverse the change in seconds without affecting anyone else. • Code review. Engineers can propose a change, get feedback, and improve or abandon it in minutes or hours, all before affecting any people using Facebook. • Internal usage. Engineers can make a change, get feedback from thousands of employees using the change, and roll it back in an hour. • Staged rollout. We can begin deploying a change to a billion people and, if the metrics tank, take it back before problems affect most people using Facebook. • Dynamic configuration. If an engineer has planned for it in the code, we can turn off an offending feature in production in seconds. Alternatively, we can dial features up and down in tiny increments (i.e. only 0.1% of people see the feature) to discover and avoid non-linear effects https://m.facebook.com/notes/kent-beck/taming-complexity-with-reversibility/
  • 48. “Architecture represents the significant design decisions that shape a system” — Grady Booch Architecture Decisions
  • 49. “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 Good: Shape a System
  • 50. Essence of systems is: • Relationships • Interfaces • Form • Fit • Function — Eberhardt Rechtin Systems
  • 51. Essence of systems is: • Relationships • Interfaces “Relationships among the elements are what give systems their added value” “The greatest leverage in architecting is at the interfaces” “It is inadequate to architect up to the boundaries or interfaces of a system; one must architect across them.” – Robert Spinrad, quoted by Eb Rechtin Systems: Interfaces architect across
  • 52. “A lock is a lock because of the key [--] when we design abstractions for lock, we are also [in parallel] designing abstractions for key” — Shripad Agashe Systems: Interfaces
  • 53. “Don’t partition by slicing through regions where high rates of information exchange are required” – Eb Rechtin Systems: Interfaces Image source: Martin Fowler’s bliki
  • 54. Posit structure Explore behavior Revise structure Explore — with sketches “Design is not just what it looks like and feels like. Design is how it works.” — Steve Jobs Systems: How it Works
  • 55. Essence of architecture is: • Structuring • Simplification • Compromise • Balance — Eberhardt Rechtin Systems
  • 56. “dependencies are a tradeoff between the cost of maintaining the code yourself (and implementing it) & the cost of the risk of breakage” — Kent Beck Systems: Tradeoffs/Compromise
  • 57. Good: technically sound Right: meets stakeholder needs Successful: delivers value Architecture What Do We Want?
  • 58. "Always design a thing by considering it in its next larger context" -- Eliel Saarinen Context System-in-Context (use, dev, ops) System (Ecosystem) Architecture structure and mechanisms “Requirements” design of system capabilities Strategy ecosystem interventions Right: Fit to Context
  • 59. Architecture Decisions Title: short noun phrase Context: desired outcomes and the forces at play (probably in tension) Decision: describes our response to these forces Status: proposed, accepted, deprecated or superseded Consequences: describes the resulting context, after applying the decision — Michael Nygard, Documenting Architecture Decisions, Nov 2011 Right: Fit to Context
  • 61. 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
  • 62. Getting Clues: Look/Change PoV “A change of perspective is worth 80 IQ points” — Alan Kay
  • 63. Getting Clues: Look/Change PoV “You don't understand something until you understand it more than one way” — Marvin Minsky Image: wikipedia.org/wiki/Marvin_Minsky#/media/File:Marvin_Minsky_at_OLPCb.jpg
  • 64. “If you haven’t thought of three possibilities, you haven’t thought enough.” — Jerry Weinberg Rule of Three Getting Clues: Look/Change PoV
  • 65. Expose your mental models to the open air. Remember, always, that everything you know, and everything everyone knows, is only a model. Get your model out there where it can be shot at. Invite others to challenge your assumptions and add their own. Instead of becoming a champion for one possible explanation or hypothesis or model, collect as many as possible. — Donella Meadows Getting Clues: Look/Change PoV Image source: Donella Meadows Institute
  • 66. Good: technically sound Right: meets stakeholder needs Successful: delivers value Architecture What Do We Want?
  • 67. What does it take to be successful?
  • 68. An Architecture Story Signing of the Constitution (painting by Louis S. Glanzman)
  • 69. Architecture Story The Articles of Confederation Created 1777 Ratified 1781 Image source: wikipedia
  • 71. The Constitution of the United States Architecture Story
  • 72. Architecture Story “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
  • 73. “it seems to have been reserved to the people of this country, [..], to decide the important question, whether societies of men are really capable or not, of establishing good government from reflection and choice, or whether they are forever destined to depend, for their political constitutions, on accident and force.” Federalist No.1 Architecture Story
  • 74. The Federalist Papers, No. 51 addresses • checks and balances • separation of powers Architecture Story
  • 75. Ask • [not just] What do users need? • [but also] What do developers and testing need? • [and] What does operations need? • [and] What do others in the value network need? to be successful
  • 76. Ask • What does the code need? • What does the system need • What does the ecosystem need? to be successful “Systems develop goals the minute they come into being” — John Gall
  • 77. What (system view) HowWhat (user view) SYSTEM ARCHITECTURE STRUCTURALBEHAVIORAL CAPABILITIESCONTEXT Why How well FUNCTIONALPROPERTIES good?right?successful? to be successful
  • 78. The Clue-Space: More than Technical Personal Organizational Technical Strategic “Architecture is a way of thinking that is inescapably concerned with everything” — Dana Bredemeyer
  • 79. Where to Go for More Clues Personal Organizational Technical Strategic Strategic Effectiveness • Strategic context and situational awareness • Mapping, ecosystems, value networks and differentiation • Technology radars, capability evolution and trends • Operating models • How we create value • How we make money(/survive)
  • 80. Strategy: Why go there? Personal Organizational Technical Strategic • You’re leading; where to? • Inform/influence business direction, given technology capabilities and challenges • Shape technical direction, to enable business direction • Architecture decisions • Understand shaping forces, differentiating value/outcomes • Achieve fit to context / purpose
  • 81. Where to Go for More Clues Personal Organizational Technical Strategic Organizational Effectiveness • Leadership and social dynamics • Building relationships, trust and teams • Working across the organization • Persuasion and influence; negotiation, disagreement • Decision making, judgment, effects of groups • …
  • 82. Where to Go for More Clues Personal Organizational Technical Strategic Personal Effectiveness • How we work: cognition (4Es), .. • Empathy and design imagination • Cognitive amplifiers, fallibilities and biases • Perception and meaning making • Opportunity discovery; problem solving and problem framing • …
  • 84. More Clues Personal Organizational Technical Strategic Software Architecture Workshop November 12-15, 2018 Chicago-Schaumburg, IL More: bredemeyer.com

Notes de l'éditeur

  1. Sometimes we just need to get a clue, and this talk has a bucket full. The idea of a clue bucket came up when we were working on a project and grasping around for ideas, and I said “I need a clue bucket so I can just reach in a get a clue.”
  2. We develop, through direct and indirect experience, "a considerable body of contextual sense" -- that is, "a knowledge of what is reasonable within a given context" (Rechtin, 1991). Engineering heuristics, or rules of thumb, are "statements of common, or contextual, sense that aid in concept development, problem solving, decision making, or judgment"(Rechtin, 1991). They can be descriptive (what is the situation) or prescriptive (what to do about it) (Rechtin, 1991). "Heuristics offer plausible approaches to solving problems, not infallible ones."— Rebecca Wirfs-Brock Image created from “15 Fundamental Laws of Software Development” by Matthew Jones, https://exceptionnotfound.net/fundamental-laws-of-software-development/
  3. Let’s talk first about creating a good architecture – one that fellow architects would recognize as having the properties of a good architecture
  4. Let’s talk first about creating a good architecture – one that fellow architects would recognize as having the properties of a good architecture
  5. Grady Booch identified these four “fundamentals remain fundamental“ to architectural design. mne·mon·ic — scars Taking the first of those (Separation of Concerns), and to illustrate surfacing and illuminating heuristics, here's a story from the Tao. It is the story of the dextrous butcher. In one translation, the master cook tells us:
  6. Chuang Tzu — Taoist thinker ‘Cook Ting was cutting up an ox for Lord Wen-hui. As every touch of his hand, every heave of his shoulder, every move of his feet, every thrust of his knee — zip! zoop! He slithered the knife along with a zing, and all was in perfect rhythm, as though he were performing the dance of the Mulberry Grove or keeping time to the Ching-shou music. “Ah, this is marvelous!” said Lord Wen-hui. “Imagine skill reaching such heights!” Cook Ting laid down his knife and replied, “What I care about is the Way, which goes beyond skill. When I first began cutting up oxen, all I could see was the ox itself. After three years I no longer saw the whole ox. And now — now I go at it by spirit and don’t look with my eyes. Perception and understanding have come to a stop and spirit moves where it wants. I go along with the natural makeup, strike in the big hollows, guide the knife through the big openings, and following things as they are. So I never touch the smallest ligament or tendon, much less a main joint. “A good cook changes his knife once a year — because he cuts. A mediocre cook changes his knife once a month — because he hacks. I’ve had this knife of mine for nineteen years and I’ve cut up thousands of oxen with it, and yet the blade is as good as though it had just come from the grindstone. There are spaces between the joints, and the blade of the knife has really no thickness. If you insert what has no thickness into such spaces, then there’s plenty of room — more than enough for the blade to play about it. That’s why after nineteen years the blade of my knife is still as good as when it first came from the grindstone. “However, whenever I come to a complicated place, I size up the difficulties, tell myself to watch out and be careful, keep my eyes on what I’m doing, work very slowly, and move the knife with the greatest subtlety, until — flop! the whole thing comes apart like a clod of earth crumbling to the ground. I stand there holding the knife and look all around me, completely satisfied and reluctant to move on, and then I wipe off the knife and put it away.” “Excellent!” said Lord Wen-hui. “I have heard the words of Cook Ting and learned how to care for life!”’ Translated by Burton Watson  (Chuang Tzu: The Basic Writings, 1964) It goes according to natural laws, Striking apart large gaps, Moving toward large openings, Following its natural structure. … Nevertheless, every time I come across joints, I see its tricky parts, I pay attention and use caution, What do we extract, that helps guide us in architecting? Two heuristics jump out: follow the natural structure when we come to the tricky parts, slow down
  7. software doesn't have natural topology. Or does it? The system boundary is an obvious candidate: separate interactions at the boundary from the core of the system. In the founding classic of system architecture, Eberhardt Rechtin presents heuristics gleaned from his amazing career as a system architect in aerospace, and master teacher of system architects in the seminal program he created at USC. One of these heuristics (is a "turtles all the way down" sort of thing, but applies also at the system level): "Design things to make their performance as insensitive to the unknown or uncontrollable external influence as practical." That, for me anyway, has echoes of fort design and Ambrose Bierce' Devil's Dictionary definition of abatis: "rubbish in front of a fort, to prevent the rubbish outside from molesting the rubbish inside"
  8. A fort visually, and in intent, has echoes of Alistair Cockburn's hexagonal architecture (pattern). Here, adapters at the system boundary, shield the (core) application (code) from interactions with the outside, keeping business logic uncontaminated by the peculiarities of external agents or systems and their states, interactions and interaction paradigms, and keeping business logic from leaching into user, or other system, interface code. Moreover, ports and adapters are a first mechanism of address for cost of change, partitioning the system boundary into plug-and-play access points.
  9. One place to go, in looking for the natural topology, to find the natural shape to follow in creating internal system boundaries, is the "problem" domain — that is, the domain(s) being served by the system(s) we're evolve-building. This brings us to bounded contexts and heuristics and guidance in Domain-Driven Design to suggest system and component or microservice boundaries. http://martinfowler.com/bliki/BoundedContext.html
  10. Another place to go, in looking for abstractions, is back to 1989 and Ward Cunningham and Kent Beck's CRC cards, but repurposed for components, along with a heuristic that takes the form of a neat antimetabole (thanks to Jan van Til's paraphrase of a Tom Graves point): "The responsibility of architecture is the architecture of responsibility." Which points us in the direction of identifying responsibilities related to system capabilities and properties, and the arrangement of responsibilities. Separating responsibilities along the lines of concerns. [This is not the only way we use the term "separation of concerns' in software design, of course.]
  11. The dual to separation of concerns is a coalescence or cohesion of concerns? That is, not only are we looking for what to pull apart, but what to keep together to form crisp and resilient abstractions. We use abstraction in different ways — levels of abstraction, abstractions as elements of code we work with, the activity of abstracting. J. Edsger Dijkstra (The Humble Programmer, 1972) noted: http://vanderburg.org/blog/2011/01/31/cohesion.html
  12. We use abstraction in different ways — levels of abstraction, abstractions as elements of code we work with, the activity of abstracting. J. Edsger Dijkstra (The Humble Programmer, 1972) noted: “The purpose of abstracting is not to be vague, but to create a new semantic level in which one can be absolutely precise.” Here, we're talking about heuristics for identifying architectural elements (or components, or microservices if those are the architectural elements of the system in question). A crisp abstraction has a clear, unifying purpose or cohesive identity; it has, in effect, a single responsibility at the level of abstraction of the abstraction. That is, there is high cohesion among its sub-responsibilities, and all contribute to the element's distinguishing purpose, or single responsibility. A single, if you like, defining job-to-be-done. This suggests a focus on responsibilities as an avenue to system (de)composition. We identify responsibilities and assign to them components, working in either (and both!) direction: start with a first cut notion of components the system will need, and identify and allocate responsibilities to them; or start with responsibilities evident from what the system needs to do, and factor to find components. A related heuristic takes the form:
  13. We take a guess as a starting point, and improve on it: Run thought experiments and model (use cases or user stories; focus on one property, then another, etc.) to flush out responsibilities we overlooked in our initial guess. Change perspective, and review the responsibilities and abstractions in the view of, for example, thinking through allocation to the physical system topology, or a system change. Be disciplined in seeking alternatives — for example, by emphasizing a different requirement. Do this quickly and cheaply, to get a good enough starting point to build the next increment of code, and iterate on the design. Update the responsibilities lists as we do so.
  14. These lists of responsibilities are a powerful and largely overlooked/underused tool in the architect's toolbelt. If the responsibilities don't cohere within an overarching responsibility, or purpose, that should trip the architect's boundary bleed detectors. We may need to refactor responsibilities, and discover new components in the process. We think that "naming things" is the big problem of software development, but "places to put things" is the proximate corollary.
  15. Heuristics don't take away the need to think, to reason and try things out. They help us identify what to think about, as we do so, and may suggest how to go about it (better). In another of the foundational classics of our field, David Parnas (On the Criteria To Be Used in Decomposing Systems into Modules, 1972) proposes: "that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others. " The other heuristic in his criteria for decomposing (already quoted above) is: "[begin] with a list of difficult design decisions [..] Each module is then designed to hide such a decision from the others ." As an aside, we also recommend identifying key architectural challenges when we're determining architectural strategy, to think about principles we might craft to help shape our approach to the challenge. And this approach is again useful, when identifying abstractions, or (re)assessing already identified abstractions for goodness. In a modular approach, parts of the system that are unstable, due to uncertainty and experimentation to resolve that uncertainty, can be shielded from other, better understood and more stable parts of the system.
  16. That's two heuristics, and thanks to Robert Martin, the second has primary place in the SOLID set of principles that have been a touchstone of software design, and object-oriented design in particular: Single Responsibility Principle (SRP): a class should have one and only one reason to change Stuart Brand, writing about pace or shearing layers in building architecture in How Buildings Learn, observed that different parts of a structure change at different rates (with the building site, and then the structure, being least likely to change, given the cost and difficulty of doing so; and the stuff inside being the most likely to change). This observation gives rise to the heuristic: keep things that change together, together
  17. Jeremy Campbell, GRAMMATICAL MAN: Information, Entropy,Language and Life Systems evolve – we’re constantly adapting them. Complexity from accrual Complexity from mess Accidental complexity Versus inherent complexity
  18. Several things in the quote are striking: An idea of boundary But the idea was real. Important. Ambiguous. Two-faced. What was inside it, and what was outside it, depended on what side you were on.
  19. But what about the boundaries within the boundary? These abstractions we use to give our system internal form, must be invented. They are conceits. In every sense of the word, perhaps. At least, when asked about the granularity of microservices, I point to the WELC master going "about so big." Obviously a joke, the joke being on us, the right answer of course being "the right size, and no bigger." Which is not an answer, but where can we look, for a better answer? One place to go, in looking for the natural topology, to find the natural shape to follow in creating internal system boundaries, is the "problem" domain -- that is, the domain(s) being served by the system(s) we're evolve-building. And indeed, we're broadly using bounded contexts in Domain-Driven Design to suggest microservice boundaries. And when we get to the tricky parts, like "customer" or "product" that have potentially overlapping, yet different, meanings in different domains, we slow down, and move more carefully. A customer, after all, experiences themselves to be one person through all touchpoints with "the system," and doesn't want to feel like the system cleaved them brutalistically. So we separate domains, but the architect is noting this point of articulation, this tricky part, where we have to move more carefully.
  20. What is often the case with something we might call common sense -- even if we mean the contextual sense variety -- is that it looks obvious once noted. And yet it time and again that a system design ends up with a component that has a high center of gravity or something, and attracts way more responsibility than other components (common enough it goes by a name, "god class"). "A single responsibility at the level of abstraction of the abstraction" is a judgment call (or set of judgment calls). One way to check our judgment is to apply the heuristic: consider the distribution of responsibilities for balance.
  21. The last of the fundamentals organized by the SCARS mnemonic, reminds us to strive to simplify. In response to H.D. Thoreau's "simplify, simplify," Ralph Waldo Emerson reportedly retorted 'One "simplify" would have sufficed.'
  22. Eb Rechtin, on the other hand, offers us the heuristic: "Simplify, simplify, simplify. " Another heuristic (Rechtin, 1991) might illuminate: "Communicate, communicate, communicate. " That is, we need to simplify, and simplify again, and again, maintaining a discipline of repeatedly simplifying. And we need to communicate the need, and underscore the need, to simplify. Complexity is something we both embrace (we want more than hammers in our toolsets) and eschew (complexity costs -- attention, errors, ..., resources), so we need to harness complexity and reduce accidental, gratuitous, and unnecessary complexity. “Everything that needs to be said has already been said. But since no one was listening, everything must be said again. — André Gide
  23. Jeremy Campbell, GRAMMATICAL MAN: Information, Entropy,Language and Life Systems evolve – we’re constantly adapting them. Complexity from accrual Complexity from mess Accidental complexity Versus inherent complexity
  24. There's considerable discipline in applying Occam's Razor (also Ockham's razor or Ocham's razor; Latin: lex parsimoniae "law of parsimony"): Occam's razor is the problem-solving principle that the simplest solution tends to be the right one. That is, given a solution, it takes discipline and discernment to look for a simple(r) solution. Simplicity--the art of maximizing the amount of work not done--is essential. – Agile Manifesto, 12 Principles http://agilemanifesto.org/principles.html
  25. Following the spirit of Bill Venner's conversation with Ward Cunningham on "do the simplest thing that could possibly work," we form the heuristic: "do the simplest thing that is good enough."
  26. We're looking to simplify our system design, and if we only consider the system internals, the obvious can be hidden in plain sight -- the simplest way to reduce complexity, is to not add to it: Steve Jobs: “The hardest thing is, when you think about focusing, focusing is saying, yes, no, “he said, walking backwards as his argument changed direction, his hands splayed out wide. “Focusing is about saying no. Focusing is about saying no,” he repeated, as scattered applause breaks out. “You’ve got to say no, no no and when you say no you piss off people" http://observer.com/2011/10/steve-jobs-is-dead-has-died-passed-away/ "A primary cause of complexity is that software vendors uncritically adopt almost any feature that users want." — Niklaus Wirth "I wasn't the one pushing things in the wrong direction, but I should have been the one to stop it." -- Chad Fowler
  27. Everything you use, must save you time and pay for itself – Martin Thompson “Inside every large program is a small program struggling to get out.” - Tony Hoare "A programming language is low level when its programs require attention to the irrelevant." - Alan Perlis
  28. spent some time in the rain forests on the Queensland coast. One of the natural wonders of this area are the huge strangler vines. They seed in the upper branches of a fig tree and gradually work their way down the tree until they root in the soil. Over many years they grow into fantastic and beautiful shapes, meanwhile strangling and killing the tree that was their host. This metaphor struck me as a way of describing a way of doing a rewrite of an important system. Much of my career has involved rewrites of critical systems. You would think such a thing as easy - just make the new one do what the old one did. Yet they are always much more complex than they seem, and overflowing with risk. The big cut-over date looms, the pressure is on. While new features (there are always new features) are liked, old stuff has to remain. Even old bugs often need to be added to the rewritten system. An alternative route is to gradually create a new system around the edges of the old, letting it grow slowly over several years until the old system is strangled. Doing this sounds hard, but increasingly I think it's one of those things that isn't tried enough. The most important reason to consider a strangler application over a cut-over rewrite is reduced risk.
  29. Booch's fundamentals yield a system where responsibilities have a clear and well-understood location in the system; architectural elements provide clear realms of test, experiment, and change; and elements are loosely coupled.
  30. protect by not naming the source!
  31. Everything you use, must save you time and pay for itself – Martin Thompson “Inside every large program is a small program struggling to get out.” - Tony Hoare "A programming language is low level when its programs require attention to the irrelevant." - Alan Perlis
  32. Abstraction depends on context When I heard the statement “A lock is a lock because of the key”, it was one of the exhilarating insights I have listened to. To put in perspective, if you happen to lose the key to the lock, the lock is nothing but a dead weight. So when we design abstractions for lock, we are also parallelly designing abstractions for key. So our prior knowledge is playing a role there. We are always designing abstraction in pair most of the time sub-consciously. The abstraction we derive is nothing but interactions between the two components of the coupling. As coupling changes the abstraction should also change. But since only a part of the coupling is exhibited in code, the other part is often left to interpretations and assumptions. https://shripad-agashe.github.io/2 018/03/19/abstractions/
  33. Interfaces -- Whether Remote or in-Process is a shaping influence om the interface although you can encapsulate many things behind object boundaries, you can't encapsulate the remote/in-process distinction. An in-process function call is fast and always succeeds (in that any exceptions are due to the application, not due to the mere fact of making the call). Remote calls, however, are orders of magnitude slower, and there's always a chance that the call will fail due to a failure in the remote process or the connection. https://martinfowler.com/articles/distributed-objects-microservices.html
  34. https://twitter.com/KentBeck/status/713044232722718720 in response to NPM -- Left pad (11 LOC) “Every package that you use adds yet another dependency to your project. Dependencies, by their very name, are things you need in order for your code to function. The more dependencies you take on, the more points of failure you have. Not to mention the more chance for error: have you vetted any of the programmers who have written these functions that you depend on daily?” http://www.haneycodes.net/npm-left-pad-have-we-forgotten-how-to-program/
  35. "Always design a thing by considering it in its next larger context" -- Eliel Saarinen
  36. What do we do — selective attention and bubbles? move to different PoV — value of the process! not to be a big framework thing but scaffolding; and reminder of where we can go (next) to take a different look, etc. Also, a matter of discipline — self-discipline, and discipline of engineering — probe, criticism, come up with alternatives, model, reason, come up with counter arguments
  37. We see things not as they are, but as we are” — Anais Nin
  38. Virginia Plan — Madison’s notebook On May 29, 1787, Virginia delegate Edmund Randolph proposed what became known as "The Virginia Plan." Written primarily by fellow Virginian James Madison, the plan traced the broad outlines of what would become the U.S. Constitution: a national government consisting of three branches with checks and balances to prevent the abuse of power. In its amended form, this page of Madison's plan shows his ideas for a legislature. It describes 2 houses: one with members elected by the people for 3-year terms and the other composed of older leaders elected by the state legislatures for 7-year terms. Both would use population as a basis for dividing seats among the states. The Virginia Plan went through several revisions before it was finalized.
  39. We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defense, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America.
  40. Commitment to making other people successful
  41. Commitment to making other people successful
  42. • good: technically sound; • right: meets stakeholders goals and fits context and purpose; and • successful: actually delivers strategic outcomes. “Much of the essence of building a program is in fact the debugging of the specification.” — Fred Brooks