SlideShare une entreprise Scribd logo
1  sur  82
Télécharger pour lire hors ligne
Bredemeyer Consulting
Web: http://www.bredemeyer.com
Introduction to
Software Architecture
Software Architecture Workshop
Introduction Slide 2
Preamble: An Architecture Story
Copyright © 1999-2017 Bredemeyer Consulting
http://www.bredemeyer.com
Software Architecture Workshop
Introduction Slide 3
Articles of
Confederation
Virginia Plan
Madison’s Notes AmendmentsThe Constitution
Federalist papers
Expressions of the Architecture
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”
Software Architecture Workshop
Introduction Slide 5
Debrief: Lessons for Architects
Copyright © 1999-2017 Bredemeyer Consulting
http://www.bredemeyer.com
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
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
Software Architecture Workshop
Introduction Slide 8
What is Software Architecture?
’92
Software Architecture Workshop
Introduction Slide 9
’03
Software Architecture Workshop
Introduction Slide 10
Architecture: What?
Software Architecture Workshop
Introduction Slide 11
Architecture: Decisions!
Software Architecture Workshop
Introduction Slide 12
Architecture: Which Decisions??!
Software Architecture Workshop
Introduction Slide 13
Architecture: Significant Decisions!
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
Software Architecture Workshop
Introduction Slide 15
Actually, it looks more like this
Image: from Undoing the harm of layers by Bjørn Bjartnes
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
Software Architecture Workshop
Introduction Slide 17
’03
Software Architecture Workshop
Introduction Slide 18
’92
Architecture: What?
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)
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
Software Architecture Workshop
Introduction Slide 21
Architecture: is Design!
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
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”
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
Software Architecture Workshop
Introduction Slide 25
Separation of Concerns
Image:
alistair.cockburn.us/Hexagonal+architecture
[Ports and
adapters]
Hexagonal Architecture
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
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
Software Architecture Workshop
Introduction Slide 28
How: Finding Natural Abstractions
Image: martinfowler.com/bliki/BoundedContext.html
Bounded Contexts in DDD
Software Architecture Workshop
Introduction Slide 29
Components and Responsibilities
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?
Software Architecture Workshop
Introduction Slide 31
How: Heuristics
“Fundamentals that remain fundamental”
Software Architecture Workshop
Introduction Slide 32
Architecture: What [Again?]?
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
Software Architecture Workshop
Introduction Slide 34
Essence of Systems is
http://www.bredemeyer.com
• Relationships
• Interfaces
• Form
• Fit
• Function
— Eberhardt Rechtin
Software Architecture Workshop
Introduction Slide 35
Illustration By Apocryphal Example
trying to be an airplane”
— Wim Roelandts
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
Software Architecture Workshop
Introduction Slide 37
Design: to Get More the Properties We
Want…
Software Architecture Workshop
Introduction Slide 38
Architecture: Parts, Relations, Properties
Software Architecture Workshop
Introduction Slide 39
Minimalist Architecture
Copyright © 1999-2017 Bredemeyer Consulting
http://www.bredemeyer.com
Those decisions that must
be made from a system
perspective
• system outcomes
• across boundaries
Dana Bredemeyer
Software Architecture Workshop
Introduction Slide 40
Design Across
“Design is not just what
it looks like and feels
like. Design is how it
works.”
— Steve Jobs
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?
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
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
Software Architecture Workshop
Introduction Slide 44
Architecturally significant?
Copyright © 1999-2017 Bredemeyer Consulting
http://www.bredemeyer.com
demands (forces, properties, …) on the
system that are challenging, push the limits,
raise risks, require design attention
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
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
Software Architecture Workshop
Introduction Slide 47
Federalist 51
addresses
• separation of powers
• checks and balances
Software Architecture Workshop
Introduction Slide 48
Develop a Theory of the System
Software Architecture Workshop
Introduction Slide 49
Annotate and Explain Design (Views)
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
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)
Software Architecture Workshop
Introduction Slide 52
Reflection: tools to view
static structure
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
Software Architecture Workshop
Introduction Slide 54
Design Stays Inside the Box?
Copyright © 1999-2017 Bredemeyer Consulting
http://www.bredemeyer.com
No, no it does not!
Software Architecture Workshop
Introduction Slide 55
Copyright © 1999-2008 Bredemeyer Consulting
http://www.bredemeyer.com
Connecting the Dots: relating decisions to
strategies, needs and forces they address
Software Architecture Workshop
Introduction Slide 56
Develop a Theory of the System
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
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
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
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
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?
Software Architecture Workshop
Introduction Slide 62
Separation of Concerns
Context Capabilities Architecture
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!
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
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
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
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
Software Architecture Workshop
Introduction Slide 68
Is the Jar Full?
Software Architecture Workshop
Introduction Slide 69
Is the Jar Full Now?
Software Architecture Workshop
Introduction Slide 70
How: Architecting
• Heuristics help identify and guide tradeoffs
• Visual design and design visualization
• Iterations
http://www.bredemeyer.com
Software Architecture Workshop
Introduction Slide 71
Copyright © 1999-2008 Bredemeyer Consulting
http://www.bredemeyer.com
Software Architecture Workshop
Introduction Slide 72
Iterations
http://www.bredemeyer.com
You think it’s messy?
Well, it’s messier than that!
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
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
Software Architecture Workshop
Introduction Slide 75
(Ad)Vantage Point
“A change of
perspective is
worth 80 IQ points”
— Alan Kay
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
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
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
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
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)
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
Software Architecture Workshop
Introduction Slide 82
More?
• Software Architecture Workshop
Denver, CO, June 11-14, 2018
http://www.bredemeyer.com/Workshops/architecture_workshop_overview.htm
http://www.bredemeyer.com

Contenu connexe

Tendances

Software architecture and software design
Software architecture and software designSoftware architecture and software design
Software architecture and software designMr. Swapnil G. Thaware
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design Arslan Anwar
 
API Management Within a Microservices Architecture
API Management Within a Microservices Architecture API Management Within a Microservices Architecture
API Management Within a Microservices Architecture Nadeesha Gamage
 
Esterhuyse, Stephan Christiaan - Skills Matrix Template
Esterhuyse, Stephan Christiaan - Skills Matrix TemplateEsterhuyse, Stephan Christiaan - Skills Matrix Template
Esterhuyse, Stephan Christiaan - Skills Matrix TemplateStephan Esterhuyse
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean ArchitectureBadoo
 
UI vs UX: Comparison Between User Interface and User Experience
UI vs UX: Comparison Between User Interface and User ExperienceUI vs UX: Comparison Between User Interface and User Experience
UI vs UX: Comparison Between User Interface and User ExperienceCloud Analogy
 
UI vs UX ( User Interface vs User Experience)
UI vs UX ( User Interface vs User Experience)UI vs UX ( User Interface vs User Experience)
UI vs UX ( User Interface vs User Experience)Sonali Pawar
 
User Experience Best Practices
User Experience Best PracticesUser Experience Best Practices
User Experience Best PracticesNick Finck
 
Spring Cloud Contract And Your Microservice Architecture
Spring Cloud Contract And Your Microservice ArchitectureSpring Cloud Contract And Your Microservice Architecture
Spring Cloud Contract And Your Microservice ArchitectureMarcin Grzejszczak
 
Introduction to MERN Stack
Introduction to MERN StackIntroduction to MERN Stack
Introduction to MERN StackSurya937648
 
Scalable Deployment Patterns in WSO2 API Manager
Scalable Deployment Patterns in WSO2 API Manager Scalable Deployment Patterns in WSO2 API Manager
Scalable Deployment Patterns in WSO2 API Manager WSO2
 
UI / UX Design Processes
UI / UX Design ProcessesUI / UX Design Processes
UI / UX Design ProcessesMuhammad Hijazi
 
Introduction to UX Design
Introduction to UX DesignIntroduction to UX Design
Introduction to UX DesignBill Tribble
 
The Architect's Clue Bucket
The Architect's Clue BucketThe Architect's Clue Bucket
The Architect's Clue BucketRuth Malan
 
UI & UX Design for Startups
UI & UX Design for StartupsUI & UX Design for Startups
UI & UX Design for StartupsRichard Fang
 

Tendances (20)

Software architecture and software design
Software architecture and software designSoftware architecture and software design
Software architecture and software design
 
Ui design
Ui designUi design
Ui design
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design
 
Ch18 service oriented software engineering
Ch18 service oriented software engineeringCh18 service oriented software engineering
Ch18 service oriented software engineering
 
API Management Within a Microservices Architecture
API Management Within a Microservices Architecture API Management Within a Microservices Architecture
API Management Within a Microservices Architecture
 
12 software maintenance
12 software maintenance12 software maintenance
12 software maintenance
 
Esterhuyse, Stephan Christiaan - Skills Matrix Template
Esterhuyse, Stephan Christiaan - Skills Matrix TemplateEsterhuyse, Stephan Christiaan - Skills Matrix Template
Esterhuyse, Stephan Christiaan - Skills Matrix Template
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
UI vs UX: Comparison Between User Interface and User Experience
UI vs UX: Comparison Between User Interface and User ExperienceUI vs UX: Comparison Between User Interface and User Experience
UI vs UX: Comparison Between User Interface and User Experience
 
UI vs UX ( User Interface vs User Experience)
UI vs UX ( User Interface vs User Experience)UI vs UX ( User Interface vs User Experience)
UI vs UX ( User Interface vs User Experience)
 
User Experience Best Practices
User Experience Best PracticesUser Experience Best Practices
User Experience Best Practices
 
Spring Cloud Contract And Your Microservice Architecture
Spring Cloud Contract And Your Microservice ArchitectureSpring Cloud Contract And Your Microservice Architecture
Spring Cloud Contract And Your Microservice Architecture
 
Introduction to MERN Stack
Introduction to MERN StackIntroduction to MERN Stack
Introduction to MERN Stack
 
Scalable Deployment Patterns in WSO2 API Manager
Scalable Deployment Patterns in WSO2 API Manager Scalable Deployment Patterns in WSO2 API Manager
Scalable Deployment Patterns in WSO2 API Manager
 
UI / UX Design Processes
UI / UX Design ProcessesUI / UX Design Processes
UI / UX Design Processes
 
Introduction to UX Design
Introduction to UX DesignIntroduction to UX Design
Introduction to UX Design
 
The Architect's Clue Bucket
The Architect's Clue BucketThe Architect's Clue Bucket
The Architect's Clue Bucket
 
Ui design
Ui designUi design
Ui design
 
UI & UX Design for Startups
UI & UX Design for StartupsUI & UX Design for Startups
UI & UX Design for Startups
 
UI / UX Design Presentation
UI / UX Design PresentationUI / UX Design Presentation
UI / UX Design Presentation
 

Similaire à Introduction to Software Architecture

Lecture-1-Introduction.pdf
Lecture-1-Introduction.pdfLecture-1-Introduction.pdf
Lecture-1-Introduction.pdfAkilaGamage2
 
Oop 2014 sw architekt v3
Oop 2014 sw architekt v3Oop 2014 sw architekt v3
Oop 2014 sw architekt v3Michael Stal
 
Thoughts On Architecting V4 2
Thoughts On Architecting V4 2Thoughts On Architecting V4 2
Thoughts On Architecting V4 2bmercer
 
Analysis of software architectures
Analysis of software architecturesAnalysis of software architectures
Analysis of software architecturesHoria Constantin
 
Cs 1023 lec 4 (week 1)
Cs 1023 lec 4 (week 1)Cs 1023 lec 4 (week 1)
Cs 1023 lec 4 (week 1)stanbridge
 
Design concepts and principle,
Design concepts and principle, Design concepts and principle,
Design concepts and principle, awikhan12
 
Masterclass architectural thinking
Masterclass architectural thinkingMasterclass architectural thinking
Masterclass architectural thinkingWolfgang Göbl
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)stanbridge
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)stanbridge
 
Unlocking the Secrets to Designing Faster, Smarter, and Lighter
Unlocking the Secrets to Designing Faster, Smarter, and LighterUnlocking the Secrets to Designing Faster, Smarter, and Lighter
Unlocking the Secrets to Designing Faster, Smarter, and LighterDesign World
 
SDA 01.pptx
SDA 01.pptxSDA 01.pptx
SDA 01.pptxJuttG6
 
UX + Agile: The Good, The Bad, and The Ugly
UX + Agile: The Good, The Bad, and The UglyUX + Agile: The Good, The Bad, and The Ugly
UX + Agile: The Good, The Bad, and The UglyJoshua Randall
 
Agile Architecture
Agile Architecture Agile Architecture
Agile Architecture VMware Tanzu
 
Architectural Thinking - What Is Architecture?
Architectural Thinking - What Is Architecture?Architectural Thinking - What Is Architecture?
Architectural Thinking - What Is Architecture?ingo
 
Accelerating communication in AEC with Unity Reflect
Accelerating communication in AEC with Unity ReflectAccelerating communication in AEC with Unity Reflect
Accelerating communication in AEC with Unity ReflectUnity Technologies
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architecturesMajong DevJfu
 
Architectural thinking - the Sucess Factor of Scaled Agile
Architectural thinking - the Sucess Factor of Scaled AgileArchitectural thinking - the Sucess Factor of Scaled Agile
Architectural thinking - the Sucess Factor of Scaled AgileWolfgang Göbl
 
What a Good Software Architect Does
What a Good Software Architect DoesWhat a Good Software Architect Does
What a Good Software Architect DoesEberhard Wolff
 

Similaire à Introduction to Software Architecture (20)

Lecture-1-Introduction.pdf
Lecture-1-Introduction.pdfLecture-1-Introduction.pdf
Lecture-1-Introduction.pdf
 
Oop 2014 sw architekt v3
Oop 2014 sw architekt v3Oop 2014 sw architekt v3
Oop 2014 sw architekt v3
 
Thoughts On Architecting V4 2
Thoughts On Architecting V4 2Thoughts On Architecting V4 2
Thoughts On Architecting V4 2
 
SAF - architecture framework
SAF - architecture frameworkSAF - architecture framework
SAF - architecture framework
 
Analysis of software architectures
Analysis of software architecturesAnalysis of software architectures
Analysis of software architectures
 
Cs 1023 lec 4 (week 1)
Cs 1023 lec 4 (week 1)Cs 1023 lec 4 (week 1)
Cs 1023 lec 4 (week 1)
 
Design concepts and principle,
Design concepts and principle, Design concepts and principle,
Design concepts and principle,
 
Masterclass architectural thinking
Masterclass architectural thinkingMasterclass architectural thinking
Masterclass architectural thinking
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)
 
Unlocking the Secrets to Designing Faster, Smarter, and Lighter
Unlocking the Secrets to Designing Faster, Smarter, and LighterUnlocking the Secrets to Designing Faster, Smarter, and Lighter
Unlocking the Secrets to Designing Faster, Smarter, and Lighter
 
SDA 01.pptx
SDA 01.pptxSDA 01.pptx
SDA 01.pptx
 
UX + Agile: The Good, The Bad, and The Ugly
UX + Agile: The Good, The Bad, and The UglyUX + Agile: The Good, The Bad, and The Ugly
UX + Agile: The Good, The Bad, and The Ugly
 
Agile Architecture
Agile Architecture Agile Architecture
Agile Architecture
 
Architectural Thinking - What Is Architecture?
Architectural Thinking - What Is Architecture?Architectural Thinking - What Is Architecture?
Architectural Thinking - What Is Architecture?
 
Accelerating communication in AEC with Unity Reflect
Accelerating communication in AEC with Unity ReflectAccelerating communication in AEC with Unity Reflect
Accelerating communication in AEC with Unity Reflect
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architectures
 
Architectural thinking - the Sucess Factor of Scaled Agile
Architectural thinking - the Sucess Factor of Scaled AgileArchitectural thinking - the Sucess Factor of Scaled Agile
Architectural thinking - the Sucess Factor of Scaled Agile
 
L02 What is Software Architecture?
L02 What is Software Architecture?L02 What is Software Architecture?
L02 What is Software Architecture?
 
What a Good Software Architect Does
What a Good Software Architect DoesWhat a Good Software Architect Does
What a Good Software Architect Does
 

Plus de Ruth Malan

Design Visualization: Smoke and Mirrors (slides)
Design Visualization: Smoke and Mirrors (slides)Design Visualization: Smoke and Mirrors (slides)
Design Visualization: Smoke and Mirrors (slides)Ruth Malan
 
Decisions and Technical Leadership
Decisions and Technical LeadershipDecisions and Technical Leadership
Decisions and Technical LeadershipRuth Malan
 
Design Leadership presented at SATURN19
Design Leadership presented at SATURN19 Design Leadership presented at SATURN19
Design Leadership presented at SATURN19 Ruth Malan
 
Visual Design and Architecture
Visual Design and ArchitectureVisual Design and Architecture
Visual Design and ArchitectureRuth Malan
 
Software Architecture Clues
Software Architecture CluesSoftware Architecture Clues
Software Architecture CluesRuth Malan
 
Visual Architecting
Visual Architecting Visual Architecting
Visual Architecting Ruth Malan
 

Plus de Ruth Malan (7)

Design Visualization: Smoke and Mirrors (slides)
Design Visualization: Smoke and Mirrors (slides)Design Visualization: Smoke and Mirrors (slides)
Design Visualization: Smoke and Mirrors (slides)
 
Visual Design
Visual DesignVisual Design
Visual Design
 
Decisions and Technical Leadership
Decisions and Technical LeadershipDecisions and Technical Leadership
Decisions and Technical Leadership
 
Design Leadership presented at SATURN19
Design Leadership presented at SATURN19 Design Leadership presented at SATURN19
Design Leadership presented at SATURN19
 
Visual Design and Architecture
Visual Design and ArchitectureVisual Design and Architecture
Visual Design and Architecture
 
Software Architecture Clues
Software Architecture CluesSoftware Architecture Clues
Software Architecture Clues
 
Visual Architecting
Visual Architecting Visual Architecting
Visual Architecting
 

Dernier

Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
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
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
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
 
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
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
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
 
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
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
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
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
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
 
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
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
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
 
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
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 

Dernier (20)

Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
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
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
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
 
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
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
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
 
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...
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
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...
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
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...
 
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
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
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
 
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
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 

Introduction to Software Architecture

  • 2. Software Architecture Workshop Introduction Slide 2 Preamble: An Architecture Story Copyright © 1999-2017 Bredemeyer Consulting http://www.bredemeyer.com
  • 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”
  • 5. Software Architecture Workshop Introduction Slide 5 Debrief: Lessons for Architects Copyright © 1999-2017 Bredemeyer Consulting http://www.bredemeyer.com
  • 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
  • 8. Software Architecture Workshop Introduction Slide 8 What is Software Architecture? ’92
  • 10. Software Architecture Workshop Introduction Slide 10 Architecture: What?
  • 11. Software Architecture Workshop Introduction Slide 11 Architecture: Decisions!
  • 12. Software Architecture Workshop Introduction Slide 12 Architecture: Which Decisions??!
  • 13. Software Architecture Workshop Introduction Slide 13 Architecture: Significant Decisions!
  • 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
  • 15. Software Architecture Workshop Introduction Slide 15 Actually, it looks more like this Image: from Undoing the harm of layers by Bjørn Bjartnes
  • 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
  • 18. Software Architecture Workshop Introduction Slide 18 ’92 Architecture: What?
  • 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
  • 21. Software Architecture Workshop Introduction Slide 21 Architecture: is Design!
  • 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
  • 25. Software Architecture Workshop Introduction Slide 25 Separation of Concerns Image: alistair.cockburn.us/Hexagonal+architecture [Ports and adapters] Hexagonal Architecture
  • 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
  • 28. Software Architecture Workshop Introduction Slide 28 How: Finding Natural Abstractions Image: martinfowler.com/bliki/BoundedContext.html Bounded Contexts in DDD
  • 29. Software Architecture Workshop Introduction Slide 29 Components and Responsibilities
  • 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?
  • 31. Software Architecture Workshop Introduction Slide 31 How: Heuristics “Fundamentals that remain fundamental”
  • 32. Software Architecture Workshop Introduction Slide 32 Architecture: What [Again?]?
  • 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
  • 35. Software Architecture Workshop Introduction Slide 35 Illustration By Apocryphal Example trying to be an airplane” — Wim Roelandts
  • 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
  • 37. Software Architecture Workshop Introduction Slide 37 Design: to Get More the Properties We Want…
  • 38. Software Architecture Workshop Introduction Slide 38 Architecture: Parts, Relations, Properties
  • 39. Software Architecture Workshop Introduction Slide 39 Minimalist Architecture Copyright © 1999-2017 Bredemeyer Consulting http://www.bredemeyer.com Those decisions that must be made from a system perspective • system outcomes • across boundaries Dana Bredemeyer
  • 40. Software Architecture Workshop Introduction Slide 40 Design Across “Design is not just what it looks like and feels like. Design is how it works.” — Steve Jobs
  • 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
  • 44. Software Architecture Workshop Introduction Slide 44 Architecturally significant? Copyright © 1999-2017 Bredemeyer Consulting http://www.bredemeyer.com demands (forces, properties, …) on the system that are challenging, push the limits, raise risks, require design attention
  • 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
  • 47. Software Architecture Workshop Introduction Slide 47 Federalist 51 addresses • separation of powers • checks and balances
  • 48. Software Architecture Workshop Introduction Slide 48 Develop a Theory of the System
  • 49. Software Architecture Workshop Introduction Slide 49 Annotate and Explain Design (Views)
  • 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)
  • 52. Software Architecture Workshop Introduction Slide 52 Reflection: tools to view static structure
  • 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
  • 54. Software Architecture Workshop Introduction Slide 54 Design Stays Inside the Box? Copyright © 1999-2017 Bredemeyer Consulting http://www.bredemeyer.com No, no it does not!
  • 55. Software Architecture Workshop Introduction Slide 55 Copyright © 1999-2008 Bredemeyer Consulting http://www.bredemeyer.com Connecting the Dots: relating decisions to strategies, needs and forces they address
  • 56. Software Architecture Workshop Introduction Slide 56 Develop a Theory of the System
  • 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?
  • 62. Software Architecture Workshop Introduction Slide 62 Separation of Concerns Context Capabilities Architecture
  • 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
  • 68. Software Architecture Workshop Introduction Slide 68 Is the Jar Full?
  • 69. Software Architecture Workshop Introduction Slide 69 Is the Jar Full Now?
  • 70. Software Architecture Workshop Introduction Slide 70 How: Architecting • Heuristics help identify and guide tradeoffs • Visual design and design visualization • Iterations http://www.bredemeyer.com
  • 71. Software Architecture Workshop Introduction Slide 71 Copyright © 1999-2008 Bredemeyer Consulting http://www.bredemeyer.com
  • 72. Software Architecture Workshop Introduction Slide 72 Iterations http://www.bredemeyer.com You think it’s messy? Well, it’s messier than that!
  • 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
  • 75. Software Architecture Workshop Introduction Slide 75 (Ad)Vantage Point “A change of perspective is worth 80 IQ points” — Alan Kay
  • 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
  • 82. Software Architecture Workshop Introduction Slide 82 More? • Software Architecture Workshop Denver, CO, June 11-14, 2018 http://www.bredemeyer.com/Workshops/architecture_workshop_overview.htm http://www.bredemeyer.com