SlideShare a Scribd company logo
Follow me on Twitter @simonbrown
Simon Brown
Software architecture for developers
I help software teams understand
software architecture,
technical leadership and
the balance with agility
(I code too)
Training Book Speaking
Buy the book for $10
YI85bLbAXGks
(expires 30th March 2013)
simon.brown@codingthearchitecture.com
@simonbrown on Twitter
Jersey, Channel Islands
What is software
architecture?
What is architecture?
As a noun...
Structure
The definition of something in terms
of its components and interactions As a verb...
Vision
The process of architecting,
making (significant) design decisions, etc
and
Grady Booch
http://www.handbookofsoftwarearchitecture.com/index.jsp?page=Blog&part=2006
What is design?
Architecture represents the
significant decisions,
where significance is measured
by cost of change.
Can you refactor
it in an afternoon?
Chaos!Does the team understand what they are building and how they are building it?
Chaos!Does the team understand what they are building and how they are building it?
No defined structure,
inconsistent approaches,
big ball of mud,
spaghetti code, ...
STOPSlow, insecure, unstable, unmaintainable,
hard to deploy, hard to change,
over time, over budget, ...
Shared vision of
TL; DR
Software
Architecture
Document
Shared vision of
WTF?!
The software
architecture role
The software architecture role is
different
to the lead developer role
It’s an inward and
outward facing role
It’s about the
bigpicture
Abstract Specific
As software developers, the
codeis usually our main focus
Lines of code
Classes, functions
Design patterns
Unit tests
Refactoring
Abstract Specific
Sometimes you need to
step back
from the IDE
Lines of code
Classes, functions
Design patterns
Unit tests
Refactoring
The low-level detail
is equally important
Don’t code 100% of
the time though!
Would we
code
it that way?
All decisions
involve a
trade-off
Should software architects write
code
on software projects?
Ideally yes, but...
Software architects
must be
master builders
And coding is a great way
to retain this skill
Plus it reduces many of the
problems associated with
ivory tower architecture
Depth
Deep hands-on technology
skills and knowledge
Breadth
Broad knowledge of
patterns, designs,
approaches, technologies,
non-functional requirements,
different ways of working, etc
...
options and trade-offs
Generalising
Specialist
Every software
development team
needs a
master builder
1 or many
Software architecture is about
technical
and
soft skills
Software Architect
Leadership
Communication
Influencing
Negotiation
Collaboration
Coaching and Mentoring
Motivation
Facilitation
Political
The irresponsible architect
Cross-site scripting attacks
possible; weak passwords
allowed; HTTP sessions
didn’t timeout; ...
Basic functionality errors;
little or no quality
assurance; rework required
late in the project because
of assumptions; ...
Even on
“strategic platform”
projects :-o
No non-functional testing
(e.g. penetration testing or
load testing); ...
No documentation; ...
The software architecture role
Architectural
Drivers
Understanding requirements
and constraints
Architecture
Evolution
Ownership of the architecture
throughout the delivery
Coaching and
Mentoring
Guidance and assistance
Quality
Assurance
Introduction and adherence
to standards and principles
Coding
Involvement in the hands-on
elements of software delivery
Technology
Selection
Choosing and evaluating
technology
Architecting
Designing software
Architecture
Evaluation
Understanding that the
architecture works
Software architecture introduces
control?
Chaos!Does the team understand what they are building and how they are building it?
Let’s agree
on some things
Let’s make the implicit,
explicit
Put some boundaries
and guidelines in place
Software Architect
Software Developers
Control
Guidelines, consistency,
discipline, rigour, boundaries,
...
Feedback
“I don’t understand why...”
“How should we...”
“I don’t like the way that...”
Developer Developer Developer Developer Developer
Gap
Architect
Sits in an ivory tower
Focusses on the
low level detail
Collaborating and
sharing
Architecturally
aware
Software Architect
Software Developer
Reduced gap
Avoid ivory towers by
collaborating and
being engaged
Do this well and everybody
becomes an architect :-)
Designing
software
1. Current Situation
We have an existing Internet Banking offering that allows customers to securely view
information about their bank accounts held with us via the web. Although we were one of the
first to market with such a product, the system itself is a number of years old now and a series
of problems has been identified during a consulting exercise that we recently initiated. In
summary:
• The system only provides customers with read-only access to information about their
bank accounts. This includes account balances, recent transactions and recent
statements.
• The information presented to customers is slightly out-of-date, because information from
the core banking system is exported to the website on a nightly basis.
• Transactional requests are not possible through the site, with customers instead sending
a secure message to the call centre with their request instead. This process is open to
abuse and fraud.
• The number of features supported by the offering is limited.
• The technology is no longer seen as “leading edge”, is hard to enhance and costly to
maintain. In addition, the technology has reached “end of life” and is no longer
proactively supported by the vendor.
• The system doesn’t meet current website accessibility standards.
In a recent survey, our Internet Banking system was perceived as poor in terms of the user
experience and the level of information available through the website. With our competitors
now offering fully transactional systems, there is a risk that we will lose business.
2. Vision
The board have given us the go-ahead to initiate a project to replace the current Internet
Banking system, which will need to coincide with the corporate rebranding that will be taking
place in 12 weeks. The replacement system should:
• Provide customers with real-time access to information about their bank accounts.
• Provide customers with the ability to perform common transactions through the website.
This includes making payments, setting up standing orders, transferring money and so on.
• Provide customers with a rich user experience.
• Meet current website accessibility standards.
• Be developed using the new corporate website design guidelines.
Big Bank plc
Internet Banking System
Options
Functional&non-
functionalrequirements
Principles
Constraints
(003) As a business customer, I
want to login so that I can manage
my bank accounts online.
Priority: Must
(009) As a personal customer Iwant to download statements forthe last three months.
Priority: Must
Understanding the functional requirements is
obvious but forgotten
(003) As a business customer, I
want to login so that I can manage
my bank accounts online.
Priority: Must
(009) As a personal customer Iwant to download statements forthe last three months.
Priority: Must
Performance
Scalability
Availability
Security
Disaster Recovery
Accessibility
Monitoring
Management
Audit
...
Flexibility
Extensibility
Maintainability
Interoperability
Legal
Regulatory
Compliance
i18n
L10n
...
✓
✓
✓
✓
✓
✓
✓
✓
Know which are
important to you
Quality Attributes
Learn about and understand the
(often complex) quality attributes
in order to build
sufficient
foundations
Software lives in the real world,
and the real world has
constraints
Constraints are usually
forced upon you
Understand what the constraints are,
who imposed them,
why they are being imposed and
how they affect the
architecture
Given total freedom the
work is likely to sprawl.
T.S.Eliot
Principles
are the things
you want to adopt
They help to introduce
consistency and clarity
Principles are good, but make sure
they’re realistic
and don’t have a
negative impact
1. Current Situation
We have an existing Internet Banking offering that allows customers to securely view
information about their bank accounts held with us via the web. Although we were one of the
first to market with such a product, the system itself is a number of years old now and a series
of problems has been identified during a consulting exercise that we recently initiated. In
summary:
• The system only provides customers with read-only access to information about their
bank accounts. This includes account balances, recent transactions and recent
statements.
• The information presented to customers is slightly out-of-date, because information from
the core banking system is exported to the website on a nightly basis.
• Transactional requests are not possible through the site, with customers instead sending
a secure message to the call centre with their request instead. This process is open to
abuse and fraud.
• The number of features supported by the offering is limited.
• The technology is no longer seen as “leading edge”, is hard to enhance and costly to
maintain. In addition, the technology has reached “end of life” and is no longer
proactively supported by the vendor.
• The system doesn’t meet current website accessibility standards.
In a recent survey, our Internet Banking system was perceived as poor in terms of the user
experience and the level of information available through the website. With our competitors
now offering fully transactional systems, there is a risk that we will lose business.
2. Vision
The board have given us the go-ahead to initiate a project to replace the current Internet
Banking system, which will need to coincide with the corporate rebranding that will be taking
place in 12 weeks. The replacement system should:
• Provide customers with real-time access to information about their bank accounts.
• Provide customers with the ability to perform common transactions through the website.
This includes making payments, setting up standing orders, transferring money and so on.
• Provide customers with a rich user experience.
• Meet current website accessibility standards.
• Be developed using the new corporate website design guidelines.
Big Bank plc
Internet Banking System
Options
Functional&non-
functionalrequirements
Principles
Constraints
Start analysing
or start coding?
“Analysis paralysis” &
“refactor distractor”
are both bad
Boxes & lines
Thing
Other Thing
Important line
Visualising
software
UML tool?
Whiteboard or
flip chart?
You don’t need a UML
tool to do architecture
but agree on notation
Collaborative design
(e.g. pair architecting)
NoUML
diagrams?
We can visualise our process...
...but not our
software!
Moving fast (agility) requires
good
communication
System
Container
Container
Container
Component
Component
Component
Class
Class Class
Class
1. Context 2. Containers 3. Components
Thinking inside the box
... and, optionally,
4. Classes
C4Context
Containers
Components
Classes
This only covers
the static structure
(runtime, infrastructure,
deployment, etc are also important)
This isn’t about
creating a standard
It’s about providing you
some organisational ideas
Context
• What are we building?
• Who is using it? (users, actors, roles, personas, etc)
• How does it fit into the existing IT environment?
• What are the high-level technology decisions?
• How do containers communicate with one another?
• As a developer, where do I need to write code?
Containers
Components
• What components/services is the system made up of?
• Is it clear how the system works at a high-level?
• Do all components have a home (a container)?
Some tips for
effective sketches
Titles
Short and meaningful, numbered if
diagram order is important
Lines
Make line style and arrows explicit,
add annotations to lines to provide
additional information
Layout
Sticky notes and index cards make a
great substitute for drawn boxes,
especially early on
Labels
Be wary of using acronyms
Colour
Ensure that colour coding
is made explicit
Orientation
Users at the top and database at the
bottom? Or perhaps “upside-down”?
Shapes
Don’t assume that people will
understand what different shapes
are being used for
Borders
Use borders to provide emphasis
or group related items,
but ensure people know why
Keys
Explain shapes, lines, colours,
borders, acronyms, etc
Responsibilities
Adding responsibilities to boxes can
provide a nice “at a glance” view
(Miller’s Law; 7±2)
Effective sketches
are an excellent way to
communicate
software architecture
During the design process
and retrospectively
Documenting
software
“
Working software
over
comprehensive
documentation
This doesn’t mean
“don’t do any
documentation”!
Manifesto for Agile Software Development, 2001
The code doesn’t tell
the *whole* story,
but it does *a* story
Tribal
knowledge
“just talk!”
“diagrams and documents
are just props
for conversations”
The bus factor(it’s not just about buses though!)
Any idea how X
works?
No idea what
you’re on about...
#fail
Your system
Current Development Team
Database Administrators
Business Sponsors
Operations/Support Staff
Compliance and AuditSecurity TeamOther Teams
Future Development Team
Software architecture
is a platform for
conversation ... be social!
Software
Architecture
Document
Guidebook
Maps
Sights and
itineraries
History and
culture
Practical
Information
Functional
Overview
What does the system do?
Quality
Attributes
Are there any significant
non-functional
requirements?
Constraints
Are there any significant
constraints?
Principles
What design and
development principles
have been adopted?
Software
Architecture
What does the big picture
look like and how is the
system structured?
Infrastructure
Architecture
What does the target
deployment
environment look like?
Deployment
What is the mapping
between software and
infrastructure?
Operation
& Support
How will people operate
and support the system?
Context
What is this all about?
External
Interfaces
What are the external
system interfaces?
Code
Are there any
implementation details
you need to explain?
Data
What does the data model
look like and where is it
being stored?
Documentation should
describe what
the code doesn’t
Reduce waste,
add value
Use it to explain intent and
act as a guide to navigate
the source code
How much of the document is
up to date and relevant?
Software architecture in the
development
lifecycle
AaaS ... architecture as a service
Software development is not a
relay sport
Software
Architecture
Document
The software architecture
role should be engaged
throughout
(not just analysis and design)
How much up front design should you do?
Big design up front?
Emergent design?
(or none, depending on
your viewpoint!)
Something in between?
Waterfall
You should do
“just enough”
Base your architecture on
requirements, travel light
and prove your architecture
with concrete experiments.
Base your architecture on
requirements, travel light
and prove your architecture
with concrete experiments.
Base your architecture on
requirements, travel light
and prove your architecture
with concrete experiments.
Scott Ambler
http://www.agilemodeling.com/essays/agileArchitecture.htm
What is architecturally
significant?
Costly to change
(can you refactor it
in an afternoon?)
Complex
New
You need to
identify and mitigate
your highest priority
risks
Things that will cause
your project to fail
or you to be fired!
Probability
Impact Low (1) Medium (2) High (3)
Low(1)Medium(2)High(3)
1 2
2 4
3
3 6
6
9
Who looks after the risks
on most software projects?
A (usually) non-technical project manager!
Risk-storming
A collaborative and visual technique for identifying risk
You still need to
deal with the risks
(mitigation strategies include hiring people,
undertaking proof of concept
and changing your architecture)
How much up front design should you do?
“Just enough”
Understand how the
significant elements
fit together
Identify and mitigate
the key risks
Provide firm foundations
and a vision
to move forward
The software architecture role and
the process of software architecting are
different
From chaos to self-organising
Dedicated
software architect
Single point of responsibility for
the technical aspects of the
software project
Everybody is a
software architect
Joint responsibility for the
technical aspects of the
software project
The software architecture role
Elastic Leadership (Roy Osherove)
Survival (command and control),
learning (coaching),
self-organising (facilitation)
Software
Architecture
Document
From big design up front to evolutionary
The process of software architecting
Big up front design
Requirements capture, analysis
and design complete before
coding starts
Evolutionary
architecture
The architecture evolves
secondary to the value created
by early regular releases of
working software
/// <summary>
/// Represents the behaviour behind the ...
/// </summary>
public class SomeWizard : AbstractWizard
{
private DomainObject _object;
private WizardPage _page;
private WizardController _controller;
public SomeWizard()
{
}
...
}
/// <summary>
/// Represents the behaviour behind the ...
/// </summary>
public class SomeWizard : AbstractWizard
{
private DomainObject _object;
private WizardPage _page;
private WizardController _controller;
public SomeWizard()
{
}
...
}
21st century software architecture
“just enough”
The role
The process
Understand how the
significant elements
fit together
Identify and mitigate
the key risks
Provide firm foundations
and a vision
to move forward
Software
Architecture
Document
you
Do whatever works for
Buy the book for $10
YI85bLbAXGks
(expires 30th March 2013)

More Related Content

What's hot

Software Re-Engineering
Software Re-EngineeringSoftware Re-Engineering
Software Re-Engineering
Saqib Raza
 
Documenting Software Architectures
Documenting Software ArchitecturesDocumenting Software Architectures
Documenting Software Architectures
Paulo Gandra de Sousa
 
Portfolio for JIRA & Kanban: How Thrillist Manages Their Product Roadmap
Portfolio for JIRA & Kanban: How Thrillist Manages Their Product RoadmapPortfolio for JIRA & Kanban: How Thrillist Manages Their Product Roadmap
Portfolio for JIRA & Kanban: How Thrillist Manages Their Product Roadmap
Atlassian
 
VIPER - Design Pattern
VIPER - Design PatternVIPER - Design Pattern
VIPER - Design Pattern
Pedro Henrique Peralta
 
Software Development Life Cycle
Software Development Life Cycle Software Development Life Cycle
Software Development Life Cycle
Dr. Ranjan Kumar Mishra
 
Risk management in software engineering
Risk management in software engineeringRisk management in software engineering
Risk management in software engineering
deep sharma
 
The Art of Visualising Software - Simon Brown
The Art of Visualising Software - Simon BrownThe Art of Visualising Software - Simon Brown
The Art of Visualising Software - Simon Brown
Valtech UK
 
Layered Software Architecture
Layered Software ArchitectureLayered Software Architecture
Layered Software Architecture
Lars-Erik Kindblad
 
Software reliability
Software reliabilitySoftware reliability
Software reliability
Anand Kumar
 
Оценка задач выполняемых по итеративной разработке
Оценка задач выполняемых по итеративной разработкеОценка задач выполняемых по итеративной разработке
Оценка задач выполняемых по итеративной разработке
Return on Intelligence
 
An Introduction to Software Failure Modes Effects Analysis (SFMEA)
An Introduction to Software Failure Modes Effects Analysis (SFMEA)An Introduction to Software Failure Modes Effects Analysis (SFMEA)
An Introduction to Software Failure Modes Effects Analysis (SFMEA)
Ann Marie Neufelder
 
Waterfall Model
Waterfall ModelWaterfall Model
Waterfall Model
Nahin Kumar Dey
 
V model
V modelV model
V model
Vaibhav Dash
 
OO Metrics
OO MetricsOO Metrics
OO Metrics
skmetz
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process Models
Atul Karmyal
 
Mc call's software quality model
Mc call's software quality modelMc call's software quality model
Mc call's software quality model
Yatharth Aggarwal
 
Software engineering 23 software reliability
Software engineering 23 software reliabilitySoftware engineering 23 software reliability
Software engineering 23 software reliability
Vaibhav Khanna
 
OAuth with Salesforce - Demystified
OAuth with Salesforce - DemystifiedOAuth with Salesforce - Demystified
OAuth with Salesforce - Demystified
Calvin Noronha
 
Software Engineering (Software Quality Assurance)
Software Engineering (Software Quality Assurance)Software Engineering (Software Quality Assurance)
Software Engineering (Software Quality Assurance)
ShudipPal
 
Requirements Engineering
Requirements EngineeringRequirements Engineering
Requirements Engineering
Benoy Ramachandran
 

What's hot (20)

Software Re-Engineering
Software Re-EngineeringSoftware Re-Engineering
Software Re-Engineering
 
Documenting Software Architectures
Documenting Software ArchitecturesDocumenting Software Architectures
Documenting Software Architectures
 
Portfolio for JIRA & Kanban: How Thrillist Manages Their Product Roadmap
Portfolio for JIRA & Kanban: How Thrillist Manages Their Product RoadmapPortfolio for JIRA & Kanban: How Thrillist Manages Their Product Roadmap
Portfolio for JIRA & Kanban: How Thrillist Manages Their Product Roadmap
 
VIPER - Design Pattern
VIPER - Design PatternVIPER - Design Pattern
VIPER - Design Pattern
 
Software Development Life Cycle
Software Development Life Cycle Software Development Life Cycle
Software Development Life Cycle
 
Risk management in software engineering
Risk management in software engineeringRisk management in software engineering
Risk management in software engineering
 
The Art of Visualising Software - Simon Brown
The Art of Visualising Software - Simon BrownThe Art of Visualising Software - Simon Brown
The Art of Visualising Software - Simon Brown
 
Layered Software Architecture
Layered Software ArchitectureLayered Software Architecture
Layered Software Architecture
 
Software reliability
Software reliabilitySoftware reliability
Software reliability
 
Оценка задач выполняемых по итеративной разработке
Оценка задач выполняемых по итеративной разработкеОценка задач выполняемых по итеративной разработке
Оценка задач выполняемых по итеративной разработке
 
An Introduction to Software Failure Modes Effects Analysis (SFMEA)
An Introduction to Software Failure Modes Effects Analysis (SFMEA)An Introduction to Software Failure Modes Effects Analysis (SFMEA)
An Introduction to Software Failure Modes Effects Analysis (SFMEA)
 
Waterfall Model
Waterfall ModelWaterfall Model
Waterfall Model
 
V model
V modelV model
V model
 
OO Metrics
OO MetricsOO Metrics
OO Metrics
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process Models
 
Mc call's software quality model
Mc call's software quality modelMc call's software quality model
Mc call's software quality model
 
Software engineering 23 software reliability
Software engineering 23 software reliabilitySoftware engineering 23 software reliability
Software engineering 23 software reliability
 
OAuth with Salesforce - Demystified
OAuth with Salesforce - DemystifiedOAuth with Salesforce - Demystified
OAuth with Salesforce - Demystified
 
Software Engineering (Software Quality Assurance)
Software Engineering (Software Quality Assurance)Software Engineering (Software Quality Assurance)
Software Engineering (Software Quality Assurance)
 
Requirements Engineering
Requirements EngineeringRequirements Engineering
Requirements Engineering
 

Viewers also liked

Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10koolkampus
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
Preeti Mishra
 
Architecture: where do you start?
 Architecture: where do you start? Architecture: where do you start?
Architecture: where do you start?
Skills Matter
 
ASAS 2013 - Agility and the essence of software architecture
ASAS 2013 - Agility and the essence of software architectureASAS 2013 - Agility and the essence of software architecture
ASAS 2013 - Agility and the essence of software architecture
Avisi B.V.
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Mozaic Works
 
Making things that work with us - Distill
Making things that work with us - DistillMaking things that work with us - Distill
Making things that work with us - DistillMatteo Collina
 
Making your washing machine talk with a power plant
Making your washing machine talk with a power plantMaking your washing machine talk with a power plant
Making your washing machine talk with a power plantMatteo Collina
 
Game Architecture and Programming
Game Architecture and ProgrammingGame Architecture and Programming
Game Architecture and ProgrammingSumit Jain
 
Software architecture
Software architectureSoftware architecture
Software architecture
Ahmad Raza Aslam
 
An Introduction to Software Architecture - Summary
An Introduction to Software Architecture - SummaryAn Introduction to Software Architecture - Summary
An Introduction to Software Architecture - Summary
John Ortiz
 
Software Architecture Fundamentals Part-1 Architecture soft skill
Software Architecture Fundamentals Part-1 Architecture soft skillSoftware Architecture Fundamentals Part-1 Architecture soft skill
Software Architecture Fundamentals Part-1 Architecture soft skill
SARCCOM
 
Software Engineering - chp0- introduction
Software Engineering - chp0- introductionSoftware Engineering - chp0- introduction
Software Engineering - chp0- introduction
Lilia Sfaxi
 
User Driven Software Architecture
User Driven Software ArchitectureUser Driven Software Architecture
User Driven Software Architecture
Simon Guest
 
A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guideTriet Ho
 
Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture Introduction
SARCCOM
 
Agile Software Architecture
Agile Software ArchitectureAgile Software Architecture
Agile Software Architecture
Chris F Carroll
 
Software Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous DeliverySoftware Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous Delivery
Eberhard Wolff
 
Software architecture 2
Software architecture 2Software architecture 2
Software architecture 2Ahmad Zee
 
05 architectural design
05 architectural design05 architectural design
Business Architecture - Paul Turner
Business Architecture - Paul TurnerBusiness Architecture - Paul Turner
Business Architecture - Paul Turner
IIBA UK Chapter
 

Viewers also liked (20)

Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
 
Architecture: where do you start?
 Architecture: where do you start? Architecture: where do you start?
Architecture: where do you start?
 
ASAS 2013 - Agility and the essence of software architecture
ASAS 2013 - Agility and the essence of software architectureASAS 2013 - Agility and the essence of software architecture
ASAS 2013 - Agility and the essence of software architecture
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
 
Making things that work with us - Distill
Making things that work with us - DistillMaking things that work with us - Distill
Making things that work with us - Distill
 
Making your washing machine talk with a power plant
Making your washing machine talk with a power plantMaking your washing machine talk with a power plant
Making your washing machine talk with a power plant
 
Game Architecture and Programming
Game Architecture and ProgrammingGame Architecture and Programming
Game Architecture and Programming
 
Software architecture
Software architectureSoftware architecture
Software architecture
 
An Introduction to Software Architecture - Summary
An Introduction to Software Architecture - SummaryAn Introduction to Software Architecture - Summary
An Introduction to Software Architecture - Summary
 
Software Architecture Fundamentals Part-1 Architecture soft skill
Software Architecture Fundamentals Part-1 Architecture soft skillSoftware Architecture Fundamentals Part-1 Architecture soft skill
Software Architecture Fundamentals Part-1 Architecture soft skill
 
Software Engineering - chp0- introduction
Software Engineering - chp0- introductionSoftware Engineering - chp0- introduction
Software Engineering - chp0- introduction
 
User Driven Software Architecture
User Driven Software ArchitectureUser Driven Software Architecture
User Driven Software Architecture
 
A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guide
 
Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture Introduction
 
Agile Software Architecture
Agile Software ArchitectureAgile Software Architecture
Agile Software Architecture
 
Software Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous DeliverySoftware Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous Delivery
 
Software architecture 2
Software architecture 2Software architecture 2
Software architecture 2
 
05 architectural design
05 architectural design05 architectural design
05 architectural design
 
Business Architecture - Paul Turner
Business Architecture - Paul TurnerBusiness Architecture - Paul Turner
Business Architecture - Paul Turner
 

Similar to Software architecture for developers by Simon Brown

Webgen Technologies Pvt. Ltd.
Webgen Technologies Pvt. Ltd.Webgen Technologies Pvt. Ltd.
Webgen Technologies Pvt. Ltd.
Sagar Sarkar
 
M:s Checkmate Global Technologies DevOps Services.pptx
M:s Checkmate Global Technologies DevOps Services.pptxM:s Checkmate Global Technologies DevOps Services.pptx
M:s Checkmate Global Technologies DevOps Services.pptx
Checkmateq Global Technology Consulting Services
 
I T E007 Warner 091807
I T E007  Warner 091807I T E007  Warner 091807
I T E007 Warner 091807
Dreamforce07
 
Designing Web Experiences - Eyecatch
Designing Web Experiences - EyecatchDesigning Web Experiences - Eyecatch
Designing Web Experiences - EyecatchVishnu Vallabh
 
Bomt model- Technology Business Accelerator
Bomt model- Technology Business AcceleratorBomt model- Technology Business Accelerator
Bomt model- Technology Business Accelerator
Leo TechnoSoft
 
ICS - Introduction
ICS - IntroductionICS - Introduction
ICS - Introduction
ICube Systems Pvt Ltd
 
Collaborating in Context - NexJ Systems
Collaborating in Context - NexJ SystemsCollaborating in Context - NexJ Systems
Collaborating in Context - NexJ Systems
Symphony.com
 
What are the Three Main Stages of Web Development?
What are the Three Main Stages of Web Development?What are the Three Main Stages of Web Development?
What are the Three Main Stages of Web Development?
JamesParker406701
 
Resume
ResumeResume
Resume
Amit kumar
 
Adept Change Management_Panna Visani 2015_1
Adept Change Management_Panna Visani 2015_1Adept Change Management_Panna Visani 2015_1
Adept Change Management_Panna Visani 2015_1Panna Visani MBCS ACCA
 
Artificial intelligence capabilities overview yashowardhan sowale cwin18-india
Artificial intelligence capabilities overview yashowardhan sowale cwin18-indiaArtificial intelligence capabilities overview yashowardhan sowale cwin18-india
Artificial intelligence capabilities overview yashowardhan sowale cwin18-india
Capgemini
 
Intranet Software
Intranet SoftwareIntranet Software
Intranet Software
My Hub Intranet Solutions
 
Clarisoft Software Development Process (Lunch & Learn Presentation)
Clarisoft Software Development Process (Lunch & Learn Presentation)Clarisoft Software Development Process (Lunch & Learn Presentation)
Clarisoft Software Development Process (Lunch & Learn Presentation)
Robert Haines
 
(Worthy & Heatley Networking Kimberly N. WorthyCIS 4.docx
(Worthy & Heatley Networking Kimberly N. WorthyCIS 4.docx(Worthy & Heatley Networking Kimberly N. WorthyCIS 4.docx
(Worthy & Heatley Networking Kimberly N. WorthyCIS 4.docx
mercysuttle
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon Brown
Avisi B.V.
 

Similar to Software architecture for developers by Simon Brown (20)

Webgen Technologies Pvt. Ltd.
Webgen Technologies Pvt. Ltd.Webgen Technologies Pvt. Ltd.
Webgen Technologies Pvt. Ltd.
 
M:s Checkmate Global Technologies DevOps Services.pptx
M:s Checkmate Global Technologies DevOps Services.pptxM:s Checkmate Global Technologies DevOps Services.pptx
M:s Checkmate Global Technologies DevOps Services.pptx
 
I T E007 Warner 091807
I T E007  Warner 091807I T E007  Warner 091807
I T E007 Warner 091807
 
Designing Web Experiences - Eyecatch
Designing Web Experiences - EyecatchDesigning Web Experiences - Eyecatch
Designing Web Experiences - Eyecatch
 
Bomt model- Technology Business Accelerator
Bomt model- Technology Business AcceleratorBomt model- Technology Business Accelerator
Bomt model- Technology Business Accelerator
 
ICS - Introduction
ICS - IntroductionICS - Introduction
ICS - Introduction
 
Collaborating in Context - NexJ Systems
Collaborating in Context - NexJ SystemsCollaborating in Context - NexJ Systems
Collaborating in Context - NexJ Systems
 
What are the Three Main Stages of Web Development?
What are the Three Main Stages of Web Development?What are the Three Main Stages of Web Development?
What are the Three Main Stages of Web Development?
 
Resume
ResumeResume
Resume
 
Adept Change Management_Panna Visani 2015_1
Adept Change Management_Panna Visani 2015_1Adept Change Management_Panna Visani 2015_1
Adept Change Management_Panna Visani 2015_1
 
BizProjects
BizProjectsBizProjects
BizProjects
 
BusinessProjects.com Market Segmentation and Entry Project
BusinessProjects.com Market Segmentation and Entry ProjectBusinessProjects.com Market Segmentation and Entry Project
BusinessProjects.com Market Segmentation and Entry Project
 
Artificial intelligence capabilities overview yashowardhan sowale cwin18-india
Artificial intelligence capabilities overview yashowardhan sowale cwin18-indiaArtificial intelligence capabilities overview yashowardhan sowale cwin18-india
Artificial intelligence capabilities overview yashowardhan sowale cwin18-india
 
RakeshReddy-CV
RakeshReddy-CVRakeshReddy-CV
RakeshReddy-CV
 
Resume John Tzanetakis
Resume John TzanetakisResume John Tzanetakis
Resume John Tzanetakis
 
Intranet Software
Intranet SoftwareIntranet Software
Intranet Software
 
Clarisoft Software Development Process (Lunch & Learn Presentation)
Clarisoft Software Development Process (Lunch & Learn Presentation)Clarisoft Software Development Process (Lunch & Learn Presentation)
Clarisoft Software Development Process (Lunch & Learn Presentation)
 
(Worthy & Heatley Networking Kimberly N. WorthyCIS 4.docx
(Worthy & Heatley Networking Kimberly N. WorthyCIS 4.docx(Worthy & Heatley Networking Kimberly N. WorthyCIS 4.docx
(Worthy & Heatley Networking Kimberly N. WorthyCIS 4.docx
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon Brown
 
Resumev
ResumevResumev
Resumev
 

More from Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
Codemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
Codemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
Codemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Codemotion
 

More from Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Recently uploaded

FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..
UiPathCommunity
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
Jen Stirrup
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
Vlad Stirbu
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 

Software architecture for developers by Simon Brown

  • 1. Follow me on Twitter @simonbrown Simon Brown Software architecture for developers
  • 2. I help software teams understand software architecture, technical leadership and the balance with agility (I code too) Training Book Speaking Buy the book for $10 YI85bLbAXGks (expires 30th March 2013)
  • 5. What is architecture? As a noun... Structure The definition of something in terms of its components and interactions As a verb... Vision The process of architecting, making (significant) design decisions, etc and
  • 6. Grady Booch http://www.handbookofsoftwarearchitecture.com/index.jsp?page=Blog&part=2006 What is design? Architecture represents the significant decisions, where significance is measured by cost of change. Can you refactor it in an afternoon?
  • 7. Chaos!Does the team understand what they are building and how they are building it?
  • 8. Chaos!Does the team understand what they are building and how they are building it? No defined structure, inconsistent approaches, big ball of mud, spaghetti code, ... STOPSlow, insecure, unstable, unmaintainable, hard to deploy, hard to change, over time, over budget, ...
  • 9. Shared vision of TL; DR Software Architecture Document
  • 12. The software architecture role is different to the lead developer role It’s an inward and outward facing role
  • 14. Abstract Specific As software developers, the codeis usually our main focus Lines of code Classes, functions Design patterns Unit tests Refactoring
  • 15. Abstract Specific Sometimes you need to step back from the IDE Lines of code Classes, functions Design patterns Unit tests Refactoring
  • 16. The low-level detail is equally important Don’t code 100% of the time though!
  • 19. Should software architects write code on software projects? Ideally yes, but...
  • 20. Software architects must be master builders And coding is a great way to retain this skill Plus it reduces many of the problems associated with ivory tower architecture
  • 21. Depth Deep hands-on technology skills and knowledge Breadth Broad knowledge of patterns, designs, approaches, technologies, non-functional requirements, different ways of working, etc ... options and trade-offs Generalising Specialist
  • 22. Every software development team needs a master builder 1 or many
  • 23. Software architecture is about technical and soft skills
  • 25. The irresponsible architect Cross-site scripting attacks possible; weak passwords allowed; HTTP sessions didn’t timeout; ... Basic functionality errors; little or no quality assurance; rework required late in the project because of assumptions; ... Even on “strategic platform” projects :-o No non-functional testing (e.g. penetration testing or load testing); ... No documentation; ...
  • 26. The software architecture role Architectural Drivers Understanding requirements and constraints Architecture Evolution Ownership of the architecture throughout the delivery Coaching and Mentoring Guidance and assistance Quality Assurance Introduction and adherence to standards and principles Coding Involvement in the hands-on elements of software delivery Technology Selection Choosing and evaluating technology Architecting Designing software Architecture Evaluation Understanding that the architecture works
  • 28. Chaos!Does the team understand what they are building and how they are building it? Let’s agree on some things Let’s make the implicit, explicit Put some boundaries and guidelines in place
  • 29. Software Architect Software Developers Control Guidelines, consistency, discipline, rigour, boundaries, ... Feedback “I don’t understand why...” “How should we...” “I don’t like the way that...”
  • 30. Developer Developer Developer Developer Developer Gap Architect Sits in an ivory tower Focusses on the low level detail
  • 31. Collaborating and sharing Architecturally aware Software Architect Software Developer Reduced gap Avoid ivory towers by collaborating and being engaged Do this well and everybody becomes an architect :-)
  • 33. 1. Current Situation We have an existing Internet Banking offering that allows customers to securely view information about their bank accounts held with us via the web. Although we were one of the first to market with such a product, the system itself is a number of years old now and a series of problems has been identified during a consulting exercise that we recently initiated. In summary: • The system only provides customers with read-only access to information about their bank accounts. This includes account balances, recent transactions and recent statements. • The information presented to customers is slightly out-of-date, because information from the core banking system is exported to the website on a nightly basis. • Transactional requests are not possible through the site, with customers instead sending a secure message to the call centre with their request instead. This process is open to abuse and fraud. • The number of features supported by the offering is limited. • The technology is no longer seen as “leading edge”, is hard to enhance and costly to maintain. In addition, the technology has reached “end of life” and is no longer proactively supported by the vendor. • The system doesn’t meet current website accessibility standards. In a recent survey, our Internet Banking system was perceived as poor in terms of the user experience and the level of information available through the website. With our competitors now offering fully transactional systems, there is a risk that we will lose business. 2. Vision The board have given us the go-ahead to initiate a project to replace the current Internet Banking system, which will need to coincide with the corporate rebranding that will be taking place in 12 weeks. The replacement system should: • Provide customers with real-time access to information about their bank accounts. • Provide customers with the ability to perform common transactions through the website. This includes making payments, setting up standing orders, transferring money and so on. • Provide customers with a rich user experience. • Meet current website accessibility standards. • Be developed using the new corporate website design guidelines. Big Bank plc Internet Banking System Options Functional&non- functionalrequirements Principles Constraints
  • 34. (003) As a business customer, I want to login so that I can manage my bank accounts online. Priority: Must (009) As a personal customer Iwant to download statements forthe last three months. Priority: Must Understanding the functional requirements is obvious but forgotten (003) As a business customer, I want to login so that I can manage my bank accounts online. Priority: Must (009) As a personal customer Iwant to download statements forthe last three months. Priority: Must
  • 36. Learn about and understand the (often complex) quality attributes in order to build sufficient foundations
  • 37. Software lives in the real world, and the real world has constraints Constraints are usually forced upon you
  • 38. Understand what the constraints are, who imposed them, why they are being imposed and how they affect the architecture Given total freedom the work is likely to sprawl. T.S.Eliot
  • 39. Principles are the things you want to adopt They help to introduce consistency and clarity
  • 40. Principles are good, but make sure they’re realistic and don’t have a negative impact
  • 41. 1. Current Situation We have an existing Internet Banking offering that allows customers to securely view information about their bank accounts held with us via the web. Although we were one of the first to market with such a product, the system itself is a number of years old now and a series of problems has been identified during a consulting exercise that we recently initiated. In summary: • The system only provides customers with read-only access to information about their bank accounts. This includes account balances, recent transactions and recent statements. • The information presented to customers is slightly out-of-date, because information from the core banking system is exported to the website on a nightly basis. • Transactional requests are not possible through the site, with customers instead sending a secure message to the call centre with their request instead. This process is open to abuse and fraud. • The number of features supported by the offering is limited. • The technology is no longer seen as “leading edge”, is hard to enhance and costly to maintain. In addition, the technology has reached “end of life” and is no longer proactively supported by the vendor. • The system doesn’t meet current website accessibility standards. In a recent survey, our Internet Banking system was perceived as poor in terms of the user experience and the level of information available through the website. With our competitors now offering fully transactional systems, there is a risk that we will lose business. 2. Vision The board have given us the go-ahead to initiate a project to replace the current Internet Banking system, which will need to coincide with the corporate rebranding that will be taking place in 12 weeks. The replacement system should: • Provide customers with real-time access to information about their bank accounts. • Provide customers with the ability to perform common transactions through the website. This includes making payments, setting up standing orders, transferring money and so on. • Provide customers with a rich user experience. • Meet current website accessibility standards. • Be developed using the new corporate website design guidelines. Big Bank plc Internet Banking System Options Functional&non- functionalrequirements Principles Constraints
  • 42. Start analysing or start coding? “Analysis paralysis” & “refactor distractor” are both bad
  • 43. Boxes & lines Thing Other Thing Important line
  • 45. UML tool? Whiteboard or flip chart? You don’t need a UML tool to do architecture but agree on notation
  • 48. We can visualise our process... ...but not our software!
  • 49. Moving fast (agility) requires good communication
  • 51. 1. Context 2. Containers 3. Components Thinking inside the box ... and, optionally, 4. Classes C4Context Containers Components Classes This only covers the static structure (runtime, infrastructure, deployment, etc are also important)
  • 52. This isn’t about creating a standard It’s about providing you some organisational ideas
  • 53. Context • What are we building? • Who is using it? (users, actors, roles, personas, etc) • How does it fit into the existing IT environment?
  • 54. • What are the high-level technology decisions? • How do containers communicate with one another? • As a developer, where do I need to write code? Containers
  • 55. Components • What components/services is the system made up of? • Is it clear how the system works at a high-level? • Do all components have a home (a container)?
  • 56. Some tips for effective sketches Titles Short and meaningful, numbered if diagram order is important Lines Make line style and arrows explicit, add annotations to lines to provide additional information Layout Sticky notes and index cards make a great substitute for drawn boxes, especially early on Labels Be wary of using acronyms Colour Ensure that colour coding is made explicit Orientation Users at the top and database at the bottom? Or perhaps “upside-down”? Shapes Don’t assume that people will understand what different shapes are being used for Borders Use borders to provide emphasis or group related items, but ensure people know why Keys Explain shapes, lines, colours, borders, acronyms, etc Responsibilities Adding responsibilities to boxes can provide a nice “at a glance” view (Miller’s Law; 7±2)
  • 57. Effective sketches are an excellent way to communicate software architecture During the design process and retrospectively
  • 59. “ Working software over comprehensive documentation This doesn’t mean “don’t do any documentation”! Manifesto for Agile Software Development, 2001
  • 60. The code doesn’t tell the *whole* story, but it does *a* story
  • 61. Tribal knowledge “just talk!” “diagrams and documents are just props for conversations”
  • 62. The bus factor(it’s not just about buses though!) Any idea how X works? No idea what you’re on about... #fail
  • 63. Your system Current Development Team Database Administrators Business Sponsors Operations/Support Staff Compliance and AuditSecurity TeamOther Teams Future Development Team Software architecture is a platform for conversation ... be social!
  • 65. Functional Overview What does the system do? Quality Attributes Are there any significant non-functional requirements? Constraints Are there any significant constraints? Principles What design and development principles have been adopted? Software Architecture What does the big picture look like and how is the system structured? Infrastructure Architecture What does the target deployment environment look like? Deployment What is the mapping between software and infrastructure? Operation & Support How will people operate and support the system? Context What is this all about? External Interfaces What are the external system interfaces? Code Are there any implementation details you need to explain? Data What does the data model look like and where is it being stored?
  • 66. Documentation should describe what the code doesn’t Reduce waste, add value Use it to explain intent and act as a guide to navigate the source code
  • 67. How much of the document is up to date and relevant?
  • 68. Software architecture in the development lifecycle
  • 69. AaaS ... architecture as a service Software development is not a relay sport Software Architecture Document
  • 70. The software architecture role should be engaged throughout (not just analysis and design)
  • 71. How much up front design should you do? Big design up front? Emergent design? (or none, depending on your viewpoint!) Something in between? Waterfall
  • 73. Base your architecture on requirements, travel light and prove your architecture with concrete experiments. Base your architecture on requirements, travel light and prove your architecture with concrete experiments. Base your architecture on requirements, travel light and prove your architecture with concrete experiments. Scott Ambler http://www.agilemodeling.com/essays/agileArchitecture.htm
  • 74. What is architecturally significant? Costly to change (can you refactor it in an afternoon?) Complex New
  • 75. You need to identify and mitigate your highest priority risks Things that will cause your project to fail or you to be fired!
  • 76. Probability Impact Low (1) Medium (2) High (3) Low(1)Medium(2)High(3) 1 2 2 4 3 3 6 6 9
  • 77. Who looks after the risks on most software projects? A (usually) non-technical project manager!
  • 78. Risk-storming A collaborative and visual technique for identifying risk
  • 79. You still need to deal with the risks (mitigation strategies include hiring people, undertaking proof of concept and changing your architecture)
  • 80. How much up front design should you do? “Just enough” Understand how the significant elements fit together Identify and mitigate the key risks Provide firm foundations and a vision to move forward
  • 81. The software architecture role and the process of software architecting are different
  • 82. From chaos to self-organising Dedicated software architect Single point of responsibility for the technical aspects of the software project Everybody is a software architect Joint responsibility for the technical aspects of the software project The software architecture role Elastic Leadership (Roy Osherove) Survival (command and control), learning (coaching), self-organising (facilitation)
  • 83. Software Architecture Document From big design up front to evolutionary The process of software architecting Big up front design Requirements capture, analysis and design complete before coding starts Evolutionary architecture The architecture evolves secondary to the value created by early regular releases of working software /// <summary> /// Represents the behaviour behind the ... /// </summary> public class SomeWizard : AbstractWizard { private DomainObject _object; private WizardPage _page; private WizardController _controller; public SomeWizard() { } ... }
  • 84. /// <summary> /// Represents the behaviour behind the ... /// </summary> public class SomeWizard : AbstractWizard { private DomainObject _object; private WizardPage _page; private WizardController _controller; public SomeWizard() { } ... } 21st century software architecture “just enough” The role The process Understand how the significant elements fit together Identify and mitigate the key risks Provide firm foundations and a vision to move forward Software Architecture Document
  • 86. Buy the book for $10 YI85bLbAXGks (expires 30th March 2013)