SlideShare a Scribd company logo
Getting Started with
Architecture Decision Records
Michael Keeling
LendingHome
@michaelkeeling
Code & Supply
Architecture Meetup #5
Agenda
1. Theory:
• What is an Architecture Decision Record (ADR)?
• How can ADRs help your team be more awesome?
2. Practice:
• Learn how to create ADRs
A “100% hypothetical”
conversation with a
teammate…
I’m a leg!
We need to make decisions so
we can move forward.
We can’t move forward fast unless
everyone understands the decision.
X
Oral history is a great way to share
design decisions especially while we’re
still exploring the architecture.
Limits of Oral History
Short reach
Changes organically
Time consuming to share
Dies without constant attention
Eventually we need to write
something down.
How do we share decisions?
Code
Wikis
Documents
Email
Slack
How do we share decisions?
Code
Wikis
Documents
Email
Slack
Never erase the whiteboards
Just writing something down
isn’t enough.
We’ve gotta capture
the “right” things.
ARCHITECTURE
DECISION
RECORDS
Let’s start with the “A”….
What do we mean by “software architecture”?
Software architecture is the set of significant
design decisions about how the software is
organized to promote desired quality
attributes and other properties.
What do we mean by “software architecture”?
Software architecture is the set of significant
design decisions about how the software is
organized to promote desired quality
attributes and other properties.
Architecture is organized around structures
• Structure = Element + relation
• Element
• Fundamental building blocks
• Relation
• Description of how to combine elements
Element Element
Relation
Same basic elements, many arrangements
Three Kinds of Structures
• Module - Design time structures
• Elements: class, module, package, layer
• Relations: uses, allowed to use, depends on
• Component and Connector (C&C) - Runtime structures
• Elements: Object, tier, process, thread, filter
• Relations: call, subscribe, pipe, publish, read
• Allocation - Map module and C&C structures to physical
elements and each other
• Elements: Server, sensor, container, Colin (a person)
• Relations: runs on, deployed to, builds, pays for
D is for Decision
What do we mean by “software architecture”?
Software architecture is the set of significant
design decisions about how the software is
organized to promote desired quality
attributes and other properties.
What is a significant decision?
• Defines or modifies coarse grained structures
• Strongly influences...
• Quality attributes
• Costs
• Schedule
• External systems or organizations
• Dramatically alters our ability to change our minds later
• One-way door – Extremely costly to go back
• Two-way door – Easy to change your mind
Some examples of significant decisions
• Component X is responsible for sending email
• Because of <decision>, Foo will be more difficult to test
• We will now depend on a third-party library
• The code for ABC will move to new packages/modules
• And by accepting this technical debt we’ll ship sooner but, ….
• Because of <decision>, all devs will need to use tool Blah
And that brings us to the “R”….
Documenting Architecture Decisions by Michael Nygard
http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions
“An architecture decision record is a
short text file in a format similar to an
Alexandrian pattern that describes a
set of forces and a single decision in response to
those forces.”
“An architecture decision record is a
short text file in a format similar to an
Alexandrian pattern that describes a
set of forces and a single decision in response to
those forces.”
Documenting Architecture Decisions by Michael Nygard
http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions
Architecture Decision Record (ADR)
28
Context
Decision
Consequences
29
30
31
32
33
Capturing design decisions as we
make them lets us build a
decision log over time…
34
35
Plain, direct language
Brief, 1-2 pages max
Markdown
Stored with the code
Benefits of ADRs
Simple
Easy to teach
Discoverable
Low barrier to entry
Easy to ramp up over time
PRACTICE TIME!
Today’s Mission
• Work in pairs or small groups
• Design a “Smart Toaster”
• Perfectly toasts bread
• Voice activated
• Learns breakfast preferences of your household
• Internet connected
• Create a decision log (ADRs) for your design
Ground Rules
• No right or wrong answers
• Watch the clock (I’ll help too)
• Ask me questions if you need help
• Fill in project gaps with your imagination (or ask)
• HAVE FUN! 
Example:
Task #1
Meet your team! (5 minutes)
• Self-organize into pairs or small groups
• Send someone up for materials
Tips
• Introduce yourself!
• Chocolate, vanilla, or strawberry?
Task #2
Create a high-level design for your smart
toaster system (7 minutes)
Tips
• Sketch a picture or two
• Context diagrams are great
• Lean on your experience
• Add some buzz words  – cloud, IoT, machine learning
Your first ADR…
Task #2
Make a decision (3 minutes)
Tips
• Use imperative voice: “We will…”
• Is it “architectural”?
• Keep it brief – can you say it one sentence?
Task #3
Describe the context (7 minutes)
Tips
• What exerts force influencing on the decision?
• State the context as facts
• Are there alternatives?
• Keep it brief…
Share and Discuss
What’s the context?
Task #4
Outline the consequences (7 minutes)
Tips
• Consequences can be “good” or “bad”
• “As a result of this decision…”
• Think about risks
• What do you know? Did you create more work?
• Dig for at least 3 consequences
Share and Discuss
Decision + consequences
Task #5
Let’s write another ADR (12 minutes)
Tips
• What exerts force influencing on the decision?
• State the context as facts
• Use imperative voice for the decision: “We will…”
• Dig for at least three consequences
Share and Discuss
Share your ADR with another group
What was the decision?
Does the decision make sense given the context?
Can you think of more consequences?
What is awesome about the ADR?
SOME PARTING
PRACTICAL ADVICE
Use a template
• Title
• Context
• Value neutral, describe forces at play
• Decision
• 1 sentence
• “We will ….”
• Status
• Choose one: [Proposed | Accepted | Deprecated | Superseded]
• Consequences
• New context after decision applied
• 3 – 5+, go beyond the obvious
# ADR N: Brief Decision Title
Context goes here. Describe the forces at play, including technological, political,
social, and project local. These forces are likely in tension, and should be called
out as such. The language in this section is value-neutral. It is simply describing
facts. Rationale should be self-evident from the context
## Decision
This section describes our response to these forces. It is stated in full sentences,
with active voice. "We will ...“
## Status
choose one: [Proposed | Accepted | Deprecated | Superseded]
if deprecated, include a rationale. If superseded, include a link to the new ADR
## Consequences
Describe the resulting context, after applying the decision. All consequences should
be listed here, not just the "positive" ones. A particular decision may have positive,
negative, and neutral consequences, but all of them affect the team and project in the
future.
Easy to edit, easy to find
• A place where stakeholders can find them
• Plain text works great
• Easy to consume, easy to change
• Integrate with peer review workflow and tools
• Contextually close to where it’s used
55
Delegate ADR Creation
• Grow the team’s design skills
• Small responsibility, little risk
• Easy to review
• Opportunity for training
• Peer review, pair, coach
57
Peer Review as you would Code
• Get the whole team involved
• Spread knowledge
• Allow team to make decisions without architect
58
Foster a documentation habit
• Architect points out when a decision is made
• “Do we need to record an ADR?”
• Track ADRs in the backlog
• Hold the team accountable
• Make templates readily available
• Host an ADR party
• Use architecture briefings
59
Make a decision, then document it
• Proposed decisions without consensus thrashed
during peer review
• Document and share a decision
• Remember ideas for the future
60
Not everything is an ADR!
• Everyone LOVES ADRs
• People will try to use them for anything and everything
• Draw pictures
• Create guidelines
• Capture other views of the system
61
ADR Tips and Advice
• Use a template
• Easy to edit, easy to find
• Delegate ADR creation.
• Peer review as you would code.
• Foster a documentation habit.
• Make a decision, then document it.
• Not everything is an ADR!
62
WRAP UP
Get started with ADRs on your team!
You don’t need permission to start!
Step 1: Create a template
Step 2: Create your team’s first ADR
Step 3: Ask someone to review it
64
Architecture Decisions…
cool since at least 1997
• 1997: Architecture in Practice, first edition
• Len Bass, Paul Clements, Rick Kazman
• 2002: Documenting Software Architecture: Views and Beyond, first edition
• Paul Clements et al.
•2005: Architecture Decisions: Demystifying Architecture
• Jeff Tyree and Art Akerman
• 2009: The Decision View's Role in Software Architecture Practice
• Phillipe Krutchten
• 2011: A documentation framework for architecture decisions
• Uwe Van Heesch, Paris Avgerioum, and Rich Hilliard
• 2011: Documenting Architecture Decisions
• http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions
• Michael Nygard
65
More Resources…
• Architecture Decision Records in Action (SATURN conference)
• Video: https://www.youtube.com/watch?v=41NVge3_cYo
• Slides: https://resources.sei.cmu.edu/asset_files/Presentation/2017_017_001_497746.pdf
• Michael Keeling and Joe Runde
• Share the Load: Distributed Design Authority with Architecture Decision Records
• https://www.agilealliance.org/resources/experience-reports/distribute-design-authority-with-architecture-decision-
records/
• Video: https://www.agilealliance.org/resources/sessions/share-the-load-distributing-design-authority-with-lightweight-
decision-records/
• Michael Keeling and Joe Runde
• Creating, Reviewing, and Succeeding with Architecture Decision Records
• Video: https://www.youtube.com/watch?v=LFiTwqblqsk&list=PLSNlEg26NNpy1RjhlISNMRNO1gypYaXHo
• Ken Power
• Design It!
• http://bit.ly/design-it
• Michael Keeling
• https://github.com/joelparkerhenderson/architecture_decision_record
• https://adr.github.io/ 66
Silver
Toolbox
Thank you!
Michael Keeling
@michaelkeeling
neverletdown.net
Buy Design It! now at
http://bit.ly/design-it

More Related Content

What's hot

Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with Backstage
Opsta
 
Scrum + bdd + ddd
Scrum + bdd + dddScrum + bdd + ddd
Scrum + bdd + ddd
Helder De Oliveira
 
Platform Engineering - a 360 degree view
Platform Engineering - a 360 degree viewPlatform Engineering - a 360 degree view
Platform Engineering - a 360 degree view
Giulio Roggero
 
Why agile is failing in large enterprises
Why agile is failing in large enterprisesWhy agile is failing in large enterprises
Why agile is failing in large enterprises
LeadingAgile
 
Zero-Trust SASE DevSecOps
Zero-Trust SASE DevSecOpsZero-Trust SASE DevSecOps
Zero-Trust SASE DevSecOps
Araf Karsh Hamid
 
How To Create An AppD Centre of Excellence at AppD Global Tour London
How To Create An AppD Centre of Excellence at AppD Global Tour LondonHow To Create An AppD Centre of Excellence at AppD Global Tour London
How To Create An AppD Centre of Excellence at AppD Global Tour London
AppDynamics
 
Cloud Migration: A How-To Guide
Cloud Migration: A How-To GuideCloud Migration: A How-To Guide
Cloud Migration: A How-To Guide
Amazon Web Services
 
Intro to AWS Cloud Development Kit | AWS Floor28
Intro to AWS Cloud Development Kit | AWS Floor28Intro to AWS Cloud Development Kit | AWS Floor28
Intro to AWS Cloud Development Kit | AWS Floor28
Amazon Web Services
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture
Araf Karsh Hamid
 
Re-Host or Re-Architect: Understanding the Why and How of Very Different Path...
Re-Host or Re-Architect: Understanding the Why and How of Very Different Path...Re-Host or Re-Architect: Understanding the Why and How of Very Different Path...
Re-Host or Re-Architect: Understanding the Why and How of Very Different Path...
Amazon Web Services
 
Overview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practicesOverview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practices
Ashutosh Agarwal
 
The Architect's Clue Bucket
The Architect's Clue BucketThe Architect's Clue Bucket
The Architect's Clue Bucket
Ruth Malan
 
AIOps - The next 5 years
AIOps - The next 5 yearsAIOps - The next 5 years
AIOps - The next 5 years
Moogsoft
 
Observability For Modern Applications
Observability For Modern ApplicationsObservability For Modern Applications
Observability For Modern Applications
Amazon Web Services
 
SRE From Scratch
SRE From ScratchSRE From Scratch
SRE From Scratch
Grier Johnson
 
GitOps - Operation By Pull Request
GitOps - Operation By Pull RequestGitOps - Operation By Pull Request
GitOps - Operation By Pull Request
Kasper Nissen
 
Building the Business Case for AWS
Building the Business Case for AWSBuilding the Business Case for AWS
Building the Business Case for AWS
Amazon Web Services
 
Azure dev ops
Azure dev opsAzure dev ops
Azure dev ops
Tomy Rhymond
 
AWS CDK Introduction
AWS CDK IntroductionAWS CDK Introduction
AWS CDK Introduction
Kasun Dilunika
 
CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton
Araf Karsh Hamid
 

What's hot (20)

Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with Backstage
 
Scrum + bdd + ddd
Scrum + bdd + dddScrum + bdd + ddd
Scrum + bdd + ddd
 
Platform Engineering - a 360 degree view
Platform Engineering - a 360 degree viewPlatform Engineering - a 360 degree view
Platform Engineering - a 360 degree view
 
Why agile is failing in large enterprises
Why agile is failing in large enterprisesWhy agile is failing in large enterprises
Why agile is failing in large enterprises
 
Zero-Trust SASE DevSecOps
Zero-Trust SASE DevSecOpsZero-Trust SASE DevSecOps
Zero-Trust SASE DevSecOps
 
How To Create An AppD Centre of Excellence at AppD Global Tour London
How To Create An AppD Centre of Excellence at AppD Global Tour LondonHow To Create An AppD Centre of Excellence at AppD Global Tour London
How To Create An AppD Centre of Excellence at AppD Global Tour London
 
Cloud Migration: A How-To Guide
Cloud Migration: A How-To GuideCloud Migration: A How-To Guide
Cloud Migration: A How-To Guide
 
Intro to AWS Cloud Development Kit | AWS Floor28
Intro to AWS Cloud Development Kit | AWS Floor28Intro to AWS Cloud Development Kit | AWS Floor28
Intro to AWS Cloud Development Kit | AWS Floor28
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture
 
Re-Host or Re-Architect: Understanding the Why and How of Very Different Path...
Re-Host or Re-Architect: Understanding the Why and How of Very Different Path...Re-Host or Re-Architect: Understanding the Why and How of Very Different Path...
Re-Host or Re-Architect: Understanding the Why and How of Very Different Path...
 
Overview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practicesOverview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practices
 
The Architect's Clue Bucket
The Architect's Clue BucketThe Architect's Clue Bucket
The Architect's Clue Bucket
 
AIOps - The next 5 years
AIOps - The next 5 yearsAIOps - The next 5 years
AIOps - The next 5 years
 
Observability For Modern Applications
Observability For Modern ApplicationsObservability For Modern Applications
Observability For Modern Applications
 
SRE From Scratch
SRE From ScratchSRE From Scratch
SRE From Scratch
 
GitOps - Operation By Pull Request
GitOps - Operation By Pull RequestGitOps - Operation By Pull Request
GitOps - Operation By Pull Request
 
Building the Business Case for AWS
Building the Business Case for AWSBuilding the Business Case for AWS
Building the Business Case for AWS
 
Azure dev ops
Azure dev opsAzure dev ops
Azure dev ops
 
AWS CDK Introduction
AWS CDK IntroductionAWS CDK Introduction
AWS CDK Introduction
 
CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton
 

Similar to Getting Started with Architecture Decision Records

It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
Mike Harris
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)
Mike Harris
 
Nimble Framework - Software architecture and design in agile era - PSQT Template
Nimble Framework - Software architecture and design in agile era - PSQT TemplateNimble Framework - Software architecture and design in agile era - PSQT Template
Nimble Framework - Software architecture and design in agile era - PSQT Templatetjain
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): Revisted
Mike Harris
 
Collaboration Within A Multidisciplinary Team
Collaboration Within A Multidisciplinary Team Collaboration Within A Multidisciplinary Team
Collaboration Within A Multidisciplinary Team
Michele Ide-Smith
 
Design Systems at Scale
Design Systems at ScaleDesign Systems at Scale
Design Systems at Scale
Sarah Federman
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
adesso AG
 
Tips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadTips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech Lead
Ben Limmer
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesIgor Moochnick
 
Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
Eberhard Wolff
 
Agile Technical Leadership
Agile Technical LeadershipAgile Technical Leadership
Agile Technical Leadership
Alexandru Bolboaca
 
Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019
Hannes Lowette
 
Kasten Engineering Culture Deck
Kasten Engineering Culture DeckKasten Engineering Culture Deck
Kasten Engineering Culture Deck
Niraj Tolia
 
Software Design
Software DesignSoftware Design
Software Design
Ahmed Misbah
 
The Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignThe Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software Design
Jeremy Miller
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)
David Benjamin
 
Design System 101
Design System 101Design System 101
Design System 101
Mayank Dhawan
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLC
Abdul Karim
 
Agile Engineering for Managers Workshop
Agile Engineering for Managers WorkshopAgile Engineering for Managers Workshop
Agile Engineering for Managers Workshop
Paul Boos
 
Does it reduce my decision workload?.pptx
Does it reduce my decision workload?.pptxDoes it reduce my decision workload?.pptx
Does it reduce my decision workload?.pptx
Barry Hennessy
 

Similar to Getting Started with Architecture Decision Records (20)

It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)
 
Nimble Framework - Software architecture and design in agile era - PSQT Template
Nimble Framework - Software architecture and design in agile era - PSQT TemplateNimble Framework - Software architecture and design in agile era - PSQT Template
Nimble Framework - Software architecture and design in agile era - PSQT Template
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): Revisted
 
Collaboration Within A Multidisciplinary Team
Collaboration Within A Multidisciplinary Team Collaboration Within A Multidisciplinary Team
Collaboration Within A Multidisciplinary Team
 
Design Systems at Scale
Design Systems at ScaleDesign Systems at Scale
Design Systems at Scale
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
 
Tips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadTips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech Lead
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
 
Agile Technical Leadership
Agile Technical LeadershipAgile Technical Leadership
Agile Technical Leadership
 
Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019
 
Kasten Engineering Culture Deck
Kasten Engineering Culture DeckKasten Engineering Culture Deck
Kasten Engineering Culture Deck
 
Software Design
Software DesignSoftware Design
Software Design
 
The Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignThe Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software Design
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)
 
Design System 101
Design System 101Design System 101
Design System 101
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLC
 
Agile Engineering for Managers Workshop
Agile Engineering for Managers WorkshopAgile Engineering for Managers Workshop
Agile Engineering for Managers Workshop
 
Does it reduce my decision workload?.pptx
Does it reduce my decision workload?.pptxDoes it reduce my decision workload?.pptx
Does it reduce my decision workload?.pptx
 

Recently uploaded

Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 
Nidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, TipsNidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, Tips
vrstrong314
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
ShamsuddeenMuhammadA
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
abdulrafaychaudhry
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 

Recently uploaded (20)

Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 
Nidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, TipsNidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, Tips
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 

Getting Started with Architecture Decision Records

  • 1. Getting Started with Architecture Decision Records Michael Keeling LendingHome @michaelkeeling Code & Supply Architecture Meetup #5
  • 2. Agenda 1. Theory: • What is an Architecture Decision Record (ADR)? • How can ADRs help your team be more awesome? 2. Practice: • Learn how to create ADRs
  • 5. We need to make decisions so we can move forward. We can’t move forward fast unless everyone understands the decision.
  • 6.
  • 7. X
  • 8. Oral history is a great way to share design decisions especially while we’re still exploring the architecture.
  • 9. Limits of Oral History Short reach Changes organically Time consuming to share Dies without constant attention
  • 10. Eventually we need to write something down.
  • 11. How do we share decisions? Code Wikis Documents Email Slack
  • 12. How do we share decisions? Code Wikis Documents Email Slack Never erase the whiteboards
  • 13. Just writing something down isn’t enough. We’ve gotta capture the “right” things.
  • 15. Let’s start with the “A”….
  • 16. What do we mean by “software architecture”? Software architecture is the set of significant design decisions about how the software is organized to promote desired quality attributes and other properties.
  • 17. What do we mean by “software architecture”? Software architecture is the set of significant design decisions about how the software is organized to promote desired quality attributes and other properties.
  • 18. Architecture is organized around structures • Structure = Element + relation • Element • Fundamental building blocks • Relation • Description of how to combine elements Element Element Relation
  • 19. Same basic elements, many arrangements
  • 20. Three Kinds of Structures • Module - Design time structures • Elements: class, module, package, layer • Relations: uses, allowed to use, depends on • Component and Connector (C&C) - Runtime structures • Elements: Object, tier, process, thread, filter • Relations: call, subscribe, pipe, publish, read • Allocation - Map module and C&C structures to physical elements and each other • Elements: Server, sensor, container, Colin (a person) • Relations: runs on, deployed to, builds, pays for
  • 21. D is for Decision
  • 22. What do we mean by “software architecture”? Software architecture is the set of significant design decisions about how the software is organized to promote desired quality attributes and other properties.
  • 23. What is a significant decision? • Defines or modifies coarse grained structures • Strongly influences... • Quality attributes • Costs • Schedule • External systems or organizations • Dramatically alters our ability to change our minds later • One-way door – Extremely costly to go back • Two-way door – Easy to change your mind
  • 24. Some examples of significant decisions • Component X is responsible for sending email • Because of <decision>, Foo will be more difficult to test • We will now depend on a third-party library • The code for ABC will move to new packages/modules • And by accepting this technical debt we’ll ship sooner but, …. • Because of <decision>, all devs will need to use tool Blah
  • 25. And that brings us to the “R”….
  • 26. Documenting Architecture Decisions by Michael Nygard http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions “An architecture decision record is a short text file in a format similar to an Alexandrian pattern that describes a set of forces and a single decision in response to those forces.”
  • 27. “An architecture decision record is a short text file in a format similar to an Alexandrian pattern that describes a set of forces and a single decision in response to those forces.” Documenting Architecture Decisions by Michael Nygard http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions
  • 28. Architecture Decision Record (ADR) 28 Context Decision Consequences
  • 29. 29
  • 30. 30
  • 31. 31
  • 32. 32
  • 33. 33 Capturing design decisions as we make them lets us build a decision log over time…
  • 34. 34
  • 35. 35 Plain, direct language Brief, 1-2 pages max Markdown Stored with the code
  • 36. Benefits of ADRs Simple Easy to teach Discoverable Low barrier to entry Easy to ramp up over time
  • 38. Today’s Mission • Work in pairs or small groups • Design a “Smart Toaster” • Perfectly toasts bread • Voice activated • Learns breakfast preferences of your household • Internet connected • Create a decision log (ADRs) for your design
  • 39.
  • 40. Ground Rules • No right or wrong answers • Watch the clock (I’ll help too) • Ask me questions if you need help • Fill in project gaps with your imagination (or ask) • HAVE FUN! 
  • 42. Task #1 Meet your team! (5 minutes) • Self-organize into pairs or small groups • Send someone up for materials Tips • Introduce yourself! • Chocolate, vanilla, or strawberry?
  • 43. Task #2 Create a high-level design for your smart toaster system (7 minutes) Tips • Sketch a picture or two • Context diagrams are great • Lean on your experience • Add some buzz words  – cloud, IoT, machine learning
  • 45. Task #2 Make a decision (3 minutes) Tips • Use imperative voice: “We will…” • Is it “architectural”? • Keep it brief – can you say it one sentence?
  • 46. Task #3 Describe the context (7 minutes) Tips • What exerts force influencing on the decision? • State the context as facts • Are there alternatives? • Keep it brief…
  • 48. Task #4 Outline the consequences (7 minutes) Tips • Consequences can be “good” or “bad” • “As a result of this decision…” • Think about risks • What do you know? Did you create more work? • Dig for at least 3 consequences
  • 49. Share and Discuss Decision + consequences
  • 50. Task #5 Let’s write another ADR (12 minutes) Tips • What exerts force influencing on the decision? • State the context as facts • Use imperative voice for the decision: “We will…” • Dig for at least three consequences
  • 51. Share and Discuss Share your ADR with another group What was the decision? Does the decision make sense given the context? Can you think of more consequences? What is awesome about the ADR?
  • 53. Use a template • Title • Context • Value neutral, describe forces at play • Decision • 1 sentence • “We will ….” • Status • Choose one: [Proposed | Accepted | Deprecated | Superseded] • Consequences • New context after decision applied • 3 – 5+, go beyond the obvious
  • 54. # ADR N: Brief Decision Title Context goes here. Describe the forces at play, including technological, political, social, and project local. These forces are likely in tension, and should be called out as such. The language in this section is value-neutral. It is simply describing facts. Rationale should be self-evident from the context ## Decision This section describes our response to these forces. It is stated in full sentences, with active voice. "We will ...“ ## Status choose one: [Proposed | Accepted | Deprecated | Superseded] if deprecated, include a rationale. If superseded, include a link to the new ADR ## Consequences Describe the resulting context, after applying the decision. All consequences should be listed here, not just the "positive" ones. A particular decision may have positive, negative, and neutral consequences, but all of them affect the team and project in the future.
  • 55. Easy to edit, easy to find • A place where stakeholders can find them • Plain text works great • Easy to consume, easy to change • Integrate with peer review workflow and tools • Contextually close to where it’s used 55
  • 56.
  • 57. Delegate ADR Creation • Grow the team’s design skills • Small responsibility, little risk • Easy to review • Opportunity for training • Peer review, pair, coach 57
  • 58. Peer Review as you would Code • Get the whole team involved • Spread knowledge • Allow team to make decisions without architect 58
  • 59. Foster a documentation habit • Architect points out when a decision is made • “Do we need to record an ADR?” • Track ADRs in the backlog • Hold the team accountable • Make templates readily available • Host an ADR party • Use architecture briefings 59
  • 60. Make a decision, then document it • Proposed decisions without consensus thrashed during peer review • Document and share a decision • Remember ideas for the future 60
  • 61. Not everything is an ADR! • Everyone LOVES ADRs • People will try to use them for anything and everything • Draw pictures • Create guidelines • Capture other views of the system 61
  • 62. ADR Tips and Advice • Use a template • Easy to edit, easy to find • Delegate ADR creation. • Peer review as you would code. • Foster a documentation habit. • Make a decision, then document it. • Not everything is an ADR! 62
  • 64. Get started with ADRs on your team! You don’t need permission to start! Step 1: Create a template Step 2: Create your team’s first ADR Step 3: Ask someone to review it 64
  • 65. Architecture Decisions… cool since at least 1997 • 1997: Architecture in Practice, first edition • Len Bass, Paul Clements, Rick Kazman • 2002: Documenting Software Architecture: Views and Beyond, first edition • Paul Clements et al. •2005: Architecture Decisions: Demystifying Architecture • Jeff Tyree and Art Akerman • 2009: The Decision View's Role in Software Architecture Practice • Phillipe Krutchten • 2011: A documentation framework for architecture decisions • Uwe Van Heesch, Paris Avgerioum, and Rich Hilliard • 2011: Documenting Architecture Decisions • http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions • Michael Nygard 65
  • 66. More Resources… • Architecture Decision Records in Action (SATURN conference) • Video: https://www.youtube.com/watch?v=41NVge3_cYo • Slides: https://resources.sei.cmu.edu/asset_files/Presentation/2017_017_001_497746.pdf • Michael Keeling and Joe Runde • Share the Load: Distributed Design Authority with Architecture Decision Records • https://www.agilealliance.org/resources/experience-reports/distribute-design-authority-with-architecture-decision- records/ • Video: https://www.agilealliance.org/resources/sessions/share-the-load-distributing-design-authority-with-lightweight- decision-records/ • Michael Keeling and Joe Runde • Creating, Reviewing, and Succeeding with Architecture Decision Records • Video: https://www.youtube.com/watch?v=LFiTwqblqsk&list=PLSNlEg26NNpy1RjhlISNMRNO1gypYaXHo • Ken Power • Design It! • http://bit.ly/design-it • Michael Keeling • https://github.com/joelparkerhenderson/architecture_decision_record • https://adr.github.io/ 66
  • 68. Thank you! Michael Keeling @michaelkeeling neverletdown.net Buy Design It! now at http://bit.ly/design-it

Editor's Notes

  1. Had things been working well, our team would be operating like Voltron… this giant awesome machine that can do practicaly anything. But remember, that machine is made up of individuals controlling different pieces
  2. But it has significant limitations…
  3. Zooming in a bit to the context, in this case we state three clear forces: We previously decided to use a pattern That pattern was very difficult to enforce A framework exists to enforce this pattern
  4. The decision is short in active voice- We will use the framework
  5. And the consequences go into detail about all of the tradeoffs that we considered when we made this decision
  6. Formal like a fancy dinner, not like a mathematical model.