SlideShare a Scribd company logo
1 of 21
Thoughts on building
Software Architecture
Jane Prusakova
@jprusakova
Why architecture?
• Eskimo have 50 words for snow
• Italians – only one
• No easy way to describe something that
doesn’t exist
Kruchten’s 4+1 View Model
• Architecture is mostly a way to describe a future system
• Context & vocabulary to make decisions
• Communicate a vision of the system design at various levels for
• business stakeholders
• development team
• IT and devops
• end users
Building architecture
• Model the process
• Data flow
• Make decisions about blocks and interactions
• current knowledge
• expectations
From requirements to solution
• The data arrives from …
• Every … message triggers … action
• User can see data arranged in … way
• User can affect data in … way
• Processing results are forwarded to …
Architectural patterns
• Structural
• Layered
• Client-server
• Pipe & Filter
• Functional
• Broker
• Peer-to-peer
• Event bus
• MVC
• Platform
For all of the architectural patterns:
Pros
• Well-understood
• [Some] Can be delivered piece-
meal
• Offer good support for original
purpose
Cons
• Complex
• [Some] Big bang delivery style
• Suitable in distinct situations
• Hard to expand beyond original
goals
Thought patterns
Common & intuitive
• Data flow
• Step-by-step
Less intuitive
• Recursive approach
• State machine
Humans vs Computer programs
• Linear time
• Stakeholders handle the most
common case
• Often one or only a few options
• Step by step approach
• Humans handle special
circumstances well
• Computes are state machines
• Time is non-linear
• Every path must be pre-defined
Wizard vs Hub & spoke
Home
Pick a
product
Select
features
Retrieve
price
Select
quantity
Checkout
Home
Pick a
product
Select
features
Retrieve
price
Select
quantity
Checkout
Only one action is possible from every point. Any action is possible at any point.
W
I
Z
A
R
D
S
p
o
k
e
Hub
&
What’s the “right” wizard?
• Developers are notoriously bad at
inventing user flow
• Less defined flow makes for better
usability
• Leave every path open
Linear vs Hub & spoke
State
• Transition
• Context
Transition
• Action
• FromState
• ToState
State • Context
Transition • Action
Structured flow Open flow
• Season subscription
1. Pick a package
2. Select day
3. Select titles
4. Review dates
5. Review seating prices
6. Select seating
7. Add to cart
Ah… so what do I code first?
• Implement a valid state
• Implement another valid state
• Implement transition
Valid options
 Nothing selected
Product selected
Product & term selected
Product Subscription
Term
Future brings change
• Rewrite: every 3 years
• Survivors: Twitter
• Did not survive: Netscape
• Hurt: hundreds of businesses
• Conway’s law: software system takes a form congruous to the
organization that produced it
Next steps: Design
•Iterate on design
• Merge and split states
• Merge and split transitions
• Add states and transitions
•Refactor code
• To fit the design
State
State
State
State
State
State
State
Maintaining architecture
• Review system design every
development cycle
• Keep the diagrams out and in the focus of
the team
• Communicate architectural decisions
continuously
• made previously
• current
• being re-thought
• Continue asking stakeholders
• What else is there?
Inspired reading
• “The Mythical Man-Month”
by Fred Brooks (Addison-Wesley,
1975)
• “The Pragmatic Programmer”
series by Andrew Hunt and Dave
Thomas
Thoughts on building
Software Architecture
Jane Prusakova
@jprusakova

More Related Content

Similar to Thoughts on building software architecture

Software architecture houstontechfest2020
Software architecture houstontechfest2020Software architecture houstontechfest2020
Software architecture houstontechfest2020Jane Prusakova
 
A Roadmap to Enterprise Quality
A Roadmap to Enterprise QualityA Roadmap to Enterprise Quality
A Roadmap to Enterprise QualityJeff Bramwell
 
A Proven Software Development Process for the Non Technical Founder
A Proven Software Development Process for the Non Technical FounderA Proven Software Development Process for the Non Technical Founder
A Proven Software Development Process for the Non Technical FounderFounders Workshop
 
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings RevealedDBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings RevealedDBmaestro - Database DevOps
 
Strategy vs. Tactical Testing: Actions for Today, Plans for Tomorrow​
Strategy vs. Tactical Testing: Actions for Today, Plans for Tomorrow​Strategy vs. Tactical Testing: Actions for Today, Plans for Tomorrow​
Strategy vs. Tactical Testing: Actions for Today, Plans for Tomorrow​Eggplant
 
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012Atlassian
 
How a Top Retailer Brought Together UX Design and Agile Development (and got ...
How a Top Retailer Brought Together UX Design and Agile Development (and got ...How a Top Retailer Brought Together UX Design and Agile Development (and got ...
How a Top Retailer Brought Together UX Design and Agile Development (and got ...Tasktop
 
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...confluent
 
No Drama: Selecting the Right CMS for You
No Drama: Selecting the Right CMS for YouNo Drama: Selecting the Right CMS for You
No Drama: Selecting the Right CMS for YouClearPath, LLC
 
A brief introduction to Enterprise and Industrial UX
A brief introduction to Enterprise and Industrial UXA brief introduction to Enterprise and Industrial UX
A brief introduction to Enterprise and Industrial UXLarry Burks
 
Agile Development – Why requirements matter by Fariz Saracevic
Agile Development – Why requirements matter by Fariz SaracevicAgile Development – Why requirements matter by Fariz Saracevic
Agile Development – Why requirements matter by Fariz SaracevicAgile ME
 
Designing and Implementing Information Systems with Event Modeling, Bobby Cal...
Designing and Implementing Information Systems with Event Modeling, Bobby Cal...Designing and Implementing Information Systems with Event Modeling, Bobby Cal...
Designing and Implementing Information Systems with Event Modeling, Bobby Cal...confluent
 
Event Driven Architectures - Net Conf UY 2018
Event Driven Architectures - Net Conf UY 2018Event Driven Architectures - Net Conf UY 2018
Event Driven Architectures - Net Conf UY 2018Bradley Irby
 
Twin Cities Salesforce.com Developer User Group Presentation April 2012
Twin Cities Salesforce.com Developer User Group Presentation April 2012Twin Cities Salesforce.com Developer User Group Presentation April 2012
Twin Cities Salesforce.com Developer User Group Presentation April 2012Developer Force - Force.com Community
 
05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&process05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&processSheSaysCREATIVE
 
Best Practices for a Successful SharePoint Migration or Upgrade to the Cloud
Best Practices for a Successful SharePoint Migration or Upgrade to the CloudBest Practices for a Successful SharePoint Migration or Upgrade to the Cloud
Best Practices for a Successful SharePoint Migration or Upgrade to the CloudPerficient, Inc.
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation ProjectsAmazon Web Services
 
Requirements Gathering for SharePoint Developers
Requirements Gathering for SharePoint DevelopersRequirements Gathering for SharePoint Developers
Requirements Gathering for SharePoint DevelopersRob Bogue
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentialsRajesh P
 

Similar to Thoughts on building software architecture (20)

Software architecture houstontechfest2020
Software architecture houstontechfest2020Software architecture houstontechfest2020
Software architecture houstontechfest2020
 
A Roadmap to Enterprise Quality
A Roadmap to Enterprise QualityA Roadmap to Enterprise Quality
A Roadmap to Enterprise Quality
 
A Proven Software Development Process for the Non Technical Founder
A Proven Software Development Process for the Non Technical FounderA Proven Software Development Process for the Non Technical Founder
A Proven Software Development Process for the Non Technical Founder
 
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings RevealedDBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
 
Strategy vs. Tactical Testing: Actions for Today, Plans for Tomorrow​
Strategy vs. Tactical Testing: Actions for Today, Plans for Tomorrow​Strategy vs. Tactical Testing: Actions for Today, Plans for Tomorrow​
Strategy vs. Tactical Testing: Actions for Today, Plans for Tomorrow​
 
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
Enabling Design Reviews with JIRA and Confluence - Atlassian Summit 2012
 
How a Top Retailer Brought Together UX Design and Agile Development (and got ...
How a Top Retailer Brought Together UX Design and Agile Development (and got ...How a Top Retailer Brought Together UX Design and Agile Development (and got ...
How a Top Retailer Brought Together UX Design and Agile Development (and got ...
 
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...
 
No Drama: Selecting the Right CMS for You
No Drama: Selecting the Right CMS for YouNo Drama: Selecting the Right CMS for You
No Drama: Selecting the Right CMS for You
 
A brief introduction to Enterprise and Industrial UX
A brief introduction to Enterprise and Industrial UXA brief introduction to Enterprise and Industrial UX
A brief introduction to Enterprise and Industrial UX
 
Agile Development – Why requirements matter by Fariz Saracevic
Agile Development – Why requirements matter by Fariz SaracevicAgile Development – Why requirements matter by Fariz Saracevic
Agile Development – Why requirements matter by Fariz Saracevic
 
Designing and Implementing Information Systems with Event Modeling, Bobby Cal...
Designing and Implementing Information Systems with Event Modeling, Bobby Cal...Designing and Implementing Information Systems with Event Modeling, Bobby Cal...
Designing and Implementing Information Systems with Event Modeling, Bobby Cal...
 
Event Driven Architectures - Net Conf UY 2018
Event Driven Architectures - Net Conf UY 2018Event Driven Architectures - Net Conf UY 2018
Event Driven Architectures - Net Conf UY 2018
 
Twin Cities Salesforce.com Developer User Group Presentation April 2012
Twin Cities Salesforce.com Developer User Group Presentation April 2012Twin Cities Salesforce.com Developer User Group Presentation April 2012
Twin Cities Salesforce.com Developer User Group Presentation April 2012
 
SharePoint Custom Development
SharePoint Custom DevelopmentSharePoint Custom Development
SharePoint Custom Development
 
05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&process05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&process
 
Best Practices for a Successful SharePoint Migration or Upgrade to the Cloud
Best Practices for a Successful SharePoint Migration or Upgrade to the CloudBest Practices for a Successful SharePoint Migration or Upgrade to the Cloud
Best Practices for a Successful SharePoint Migration or Upgrade to the Cloud
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
 
Requirements Gathering for SharePoint Developers
Requirements Gathering for SharePoint DevelopersRequirements Gathering for SharePoint Developers
Requirements Gathering for SharePoint Developers
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentials
 

More from Jane Prusakova

Estimating software development
Estimating software developmentEstimating software development
Estimating software developmentJane Prusakova
 
Improving IT Performance
Improving IT PerformanceImproving IT Performance
Improving IT PerformanceJane Prusakova
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentJane Prusakova
 
Questions of Ethics in Software Development
Questions of Ethics in Software DevelopmentQuestions of Ethics in Software Development
Questions of Ethics in Software DevelopmentJane Prusakova
 
Managing remote teams.
Managing remote teams.Managing remote teams.
Managing remote teams.Jane Prusakova
 
Gender-neutral Recruiting
Gender-neutral RecruitingGender-neutral Recruiting
Gender-neutral RecruitingJane Prusakova
 
Privacy In The Digital Age
Privacy In The Digital AgePrivacy In The Digital Age
Privacy In The Digital AgeJane Prusakova
 
Interview: a Learning Conversation
Interview: a Learning ConversationInterview: a Learning Conversation
Interview: a Learning ConversationJane Prusakova
 
Lets talk about good code
Lets talk about good codeLets talk about good code
Lets talk about good codeJane Prusakova
 
Motivating Knowledge Workers
Motivating Knowledge WorkersMotivating Knowledge Workers
Motivating Knowledge WorkersJane Prusakova
 
Pragmatic Agile: distributed teams
Pragmatic Agile: distributed teamsPragmatic Agile: distributed teams
Pragmatic Agile: distributed teamsJane Prusakova
 
A case for remote teams
A case for remote teamsA case for remote teams
A case for remote teamsJane Prusakova
 
Lets talk About Good Code (Dallas TechFest 2014)
Lets talk About Good Code (Dallas TechFest 2014)Lets talk About Good Code (Dallas TechFest 2014)
Lets talk About Good Code (Dallas TechFest 2014)Jane Prusakova
 
Women in Technology. Things that hold women back.
Women in Technology. Things that hold women back. Women in Technology. Things that hold women back.
Women in Technology. Things that hold women back. Jane Prusakova
 

More from Jane Prusakova (20)

Estimating software development
Estimating software developmentEstimating software development
Estimating software development
 
Better remote teams
Better remote teamsBetter remote teams
Better remote teams
 
Improving IT Performance
Improving IT PerformanceImproving IT Performance
Improving IT Performance
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Questions of Ethics in Software Development
Questions of Ethics in Software DevelopmentQuestions of Ethics in Software Development
Questions of Ethics in Software Development
 
Just start coding
Just start codingJust start coding
Just start coding
 
Good code
Good codeGood code
Good code
 
Managing remote teams.
Managing remote teams.Managing remote teams.
Managing remote teams.
 
Gender-neutral Recruiting
Gender-neutral RecruitingGender-neutral Recruiting
Gender-neutral Recruiting
 
Privacy In The Digital Age
Privacy In The Digital AgePrivacy In The Digital Age
Privacy In The Digital Age
 
Interview: a Learning Conversation
Interview: a Learning ConversationInterview: a Learning Conversation
Interview: a Learning Conversation
 
Effective Code Review
Effective Code ReviewEffective Code Review
Effective Code Review
 
Effective Code Review
Effective Code ReviewEffective Code Review
Effective Code Review
 
Lets talk about good code
Lets talk about good codeLets talk about good code
Lets talk about good code
 
Motivating Knowledge Workers
Motivating Knowledge WorkersMotivating Knowledge Workers
Motivating Knowledge Workers
 
What is good code?
What is good code?What is good code?
What is good code?
 
Pragmatic Agile: distributed teams
Pragmatic Agile: distributed teamsPragmatic Agile: distributed teams
Pragmatic Agile: distributed teams
 
A case for remote teams
A case for remote teamsA case for remote teams
A case for remote teams
 
Lets talk About Good Code (Dallas TechFest 2014)
Lets talk About Good Code (Dallas TechFest 2014)Lets talk About Good Code (Dallas TechFest 2014)
Lets talk About Good Code (Dallas TechFest 2014)
 
Women in Technology. Things that hold women back.
Women in Technology. Things that hold women back. Women in Technology. Things that hold women back.
Women in Technology. Things that hold women back.
 

Recently uploaded

chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxnada99848
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 

Recently uploaded (20)

chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptx
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 

Thoughts on building software architecture

  • 1. Thoughts on building Software Architecture Jane Prusakova @jprusakova
  • 2. Why architecture? • Eskimo have 50 words for snow • Italians – only one • No easy way to describe something that doesn’t exist
  • 3. Kruchten’s 4+1 View Model • Architecture is mostly a way to describe a future system • Context & vocabulary to make decisions • Communicate a vision of the system design at various levels for • business stakeholders • development team • IT and devops • end users
  • 4. Building architecture • Model the process • Data flow • Make decisions about blocks and interactions • current knowledge • expectations
  • 5. From requirements to solution • The data arrives from … • Every … message triggers … action • User can see data arranged in … way • User can affect data in … way • Processing results are forwarded to …
  • 6. Architectural patterns • Structural • Layered • Client-server • Pipe & Filter • Functional • Broker • Peer-to-peer • Event bus • MVC • Platform
  • 7. For all of the architectural patterns: Pros • Well-understood • [Some] Can be delivered piece- meal • Offer good support for original purpose Cons • Complex • [Some] Big bang delivery style • Suitable in distinct situations • Hard to expand beyond original goals
  • 8. Thought patterns Common & intuitive • Data flow • Step-by-step Less intuitive • Recursive approach • State machine
  • 9. Humans vs Computer programs • Linear time • Stakeholders handle the most common case • Often one or only a few options • Step by step approach • Humans handle special circumstances well • Computes are state machines • Time is non-linear • Every path must be pre-defined
  • 10. Wizard vs Hub & spoke Home Pick a product Select features Retrieve price Select quantity Checkout Home Pick a product Select features Retrieve price Select quantity Checkout Only one action is possible from every point. Any action is possible at any point.
  • 13. What’s the “right” wizard? • Developers are notoriously bad at inventing user flow • Less defined flow makes for better usability • Leave every path open
  • 14. Linear vs Hub & spoke State • Transition • Context Transition • Action • FromState • ToState State • Context Transition • Action
  • 15. Structured flow Open flow • Season subscription 1. Pick a package 2. Select day 3. Select titles 4. Review dates 5. Review seating prices 6. Select seating 7. Add to cart
  • 16. Ah… so what do I code first? • Implement a valid state • Implement another valid state • Implement transition Valid options  Nothing selected Product selected Product & term selected Product Subscription Term
  • 17. Future brings change • Rewrite: every 3 years • Survivors: Twitter • Did not survive: Netscape • Hurt: hundreds of businesses • Conway’s law: software system takes a form congruous to the organization that produced it
  • 18. Next steps: Design •Iterate on design • Merge and split states • Merge and split transitions • Add states and transitions •Refactor code • To fit the design State State State State State State State
  • 19. Maintaining architecture • Review system design every development cycle • Keep the diagrams out and in the focus of the team • Communicate architectural decisions continuously • made previously • current • being re-thought • Continue asking stakeholders • What else is there?
  • 20. Inspired reading • “The Mythical Man-Month” by Fred Brooks (Addison-Wesley, 1975) • “The Pragmatic Programmer” series by Andrew Hunt and Dave Thomas
  • 21. Thoughts on building Software Architecture Jane Prusakova @jprusakova