architecture: where do you start?
DESCRIPTION
Simon Brown is coming to the UK to teach his Software Architecture for Developers Workshop in April, so we asked him if he could give a free talk on software architecture for our community. Simon agreed to give a talk exploring the question "Architecture, where do you start?".TRANSCRIPT
![Page 1: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/1.jpg)
What is software architecture?
What is the role ofa software architect?
How do you definesoftware architecture?
How do you sharesoftware architecture?
How do you deliversoftware architecture?
Software architecture for developers
Where do you start?
![Page 3: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/3.jpg)
Software Architecture for Developers (.com)
What is software architecture?
What is the role ofa software architect?
How do you definesoftware architecture?
How do you sharesoftware architecture?
How do you deliversoftware architecture?
![Page 4: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/4.jpg)
What is software architecture?
What is the role ofa software architect?
How do you definesoftware architecture?
How do you sharesoftware architecture?
How do you deliversoftware architecture?
How do you take a system visionthrough to a software design?
![Page 5: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/5.jpg)
What is software architecture?
![Page 6: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/6.jpg)
What is architecture?
Architecture
FoundationsFrameworkDesignStructure
Requirements
![Page 7: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/7.jpg)
Application architecture
An application
LibrariesFrameworksDesign PatternsClasses &Components
Requirements
Application arc
hitecture
provides the s
oftware
foundations neede
d to deliver
business value
![Page 8: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/8.jpg)
System architecture
A system
HardwareSoftwareInteroperability& Integration
Services &Subsystems
Requirements
System architecture prov
ides
the software and
hardware
foundations to de
liver
business value
![Page 9: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/9.jpg)
Enterprise ArchitectureTechnology and business strategy across organisations and organisational units.
System ArchitectureSoftware and infrastructure architecture
for an end-to-end system.
Application Architecture
Software architecture for an application, sub-system or
component.We call thissoftware
architecture{ /// <summary>/// Represents the behaviour behind the .../// </summary>public class SomeWizard : AbstractWizard{ private DomainObject _object; private WizardPage _page; private WizardController _controller;
public SomeWizard() { }
...
}
![Page 10: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/10.jpg)
Software architecture introduces
structure and guidelinesinto a software system, leading to
consistency and clarity
![Page 11: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/11.jpg)
What is the role of a software architect?
![Page 12: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/12.jpg)
Architecture Definition
Management of non-functional requirements
The role of a software architect
Architecture Delivery
Ownership of the bigger
pictureLeadership
Coaching and mentoring
Quality assurance
Design, development and testing
Technology selection
Architecture definition
Architecture evaluation
Architecture collaboration
![Page 13: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/13.jpg)
http://www.infoq.com/articles/brown-are-you-a-software-architect
![Page 14: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/14.jpg)
How do you define software architecture?
![Page 15: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/15.jpg)
Every system has an architecture, but not every
architecture is defined
Some people thin
k about
architecture, som
e don’t!
![Page 16: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/16.jpg)
Reality
Goal
Functional & non-
functional requirements
Architectural Principles
Options
What drives architecture?Architectural Constraints
![Page 17: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/17.jpg)
Functional requirements can influence
the architecture(understand and challenge them if necessary)
The devil really
is
in the detail!
![Page 18: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/18.jpg)
Kevlin Henney
How many elephants didyou see at the zoo?
How many non-elephants?
![Page 19: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/19.jpg)
Non-functional requirements
What non-functional requirements(e.g. “-ilities”) have you encountered
in software development?
![Page 20: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/20.jpg)
Non-runtimeRuntime
PerformanceScalabilityAvailabilitySecurityDisaster RecoveryAccessibilityMonitoringManagementAuditability...
FlexibilityExtensibilityMaintainabilityInteroperabilityLegalRegulatoryCompliancei18nL10n...
✓✓
✓
✓✓
![Page 21: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/21.jpg)
Performance is about how
fast something is
![Page 22: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/22.jpg)
Response time
Latency and
throughput
Applicable to w
eb apps,
UIs, messaging syste
ms,
SOAs, etc...
![Page 23: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/23.jpg)
Scalability is about
doing more(more requests, more data,
more users, more messages, ...)
Scalability is in
herently
about concurrency
![Page 24: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/24.jpg)
Verticalscalability
(scale-up)
Horizontalscalability
(scale-out)
All component
s
scale differen
tly;
scale-up is ea
sy
![Page 25: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/25.jpg)
Availability is about
uptime99%, 99
.9%, 99.99%,
99.999%, 24x7, ...
![Page 26: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/26.jpg)
Lowavailability
(single points of failure)
Highavailability
(redundancy)
All component
s
have different
availability
characteristic
s
![Page 27: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/27.jpg)
Understand how to
capture them
Vary your questions
depending on y
our audience
![Page 28: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/28.jpg)
Understand how to
refine them
SMART: Specific,
Measurable, Achievab
le,
Relevant & Timely
![Page 29: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/29.jpg)
Understand how to
challenge them
Are you sure you
need that?
![Page 30: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/30.jpg)
Understand how they
influenceyour architecture
Some non-functiona
l
requirements are complex!
![Page 31: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/31.jpg)
Learn about and understand the non-functional
requirements in order to build sufficient foundations
![Page 32: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/32.jpg)
Software lives in the real world,and the real world has
constraints
![Page 33: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/33.jpg)
Constraints
What constraints mightaffect software architecture?
What constraints have you seen in yourown organisations?
Are all constraints negative?
![Page 34: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/34.jpg)
Time & budgetCost
Scope
Time
Feature-rich + Quickly = Expensive
Cheap + Quickly = Feature-light
![Page 35: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/35.jpg)
Technology(e.g. approved technology lists, existing
licenses, interoperability,product maturity, common protocols,
local standards, public standards, open source policies/licenses,vendor “relationships”, etc)
![Page 36: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/36.jpg)
Resources & skills
(e.g. team size, lead time, future availability, training, specialists, etc)
![Page 37: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/37.jpg)
Other(e.g. legal/compliance, tactical vs
strategic imperatives, existing systems, company politics, past
failures, internal intellectual property, etc)
There will be o
bstacles ...
you must overcome them
!
![Page 38: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/38.jpg)
Beware that constraints can drive the architecture more
than the requirements
![Page 39: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/39.jpg)
Understand what the constraints are, why they are imposed, how they affect the architecture and how you will
work with them
![Page 40: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/40.jpg)
Architectural
principlesare the things you want to adopt
They help to in
troduce
consistency a
nd clarity
![Page 41: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/41.jpg)
Principles
What architectural principles haveyou seen applied to software
development projects?
What principles have you seen in your own projects?Were the principles beneficial?
What impact did the principles have?
![Page 42: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/42.jpg)
Principles are great,but make sure they’re
realistic and don’t have a massive negative impact!
![Page 43: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/43.jpg)
Reality
Goal
Functional & non-
functional requirements
Architectural Principles
Options
How do you get to the goal?Architectural Constraints
![Page 44: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/44.jpg)
Start analysingor start coding?
Analysis paraly
sis &
refactor distr
actor
are both bad
![Page 45: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/45.jpg)
Boxes & linesObject oriented analy
sis
and design (OOAD)
Class Responsibility
Collaboration (CRC)
Decomposing a soft
ware
system into c
omponents is
useful for estimating
Break the problem down
into components
and services
What components/services
do we need to do X?
How do they talk
to each other?
![Page 46: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/46.jpg)
Wide angle (system
s)
Start with the
big picture
Standard (containers)
Telephoto (components)
Macro (classes)
Every picture sho
uld
tell a differen
t part
of the same story
![Page 47: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/47.jpg)
UML tool?
You don’t need a
UML
tool to do arc
hitecture
and design
Whiteboard?
![Page 48: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/48.jpg)
Systems
Banking System
Single point of truth for all customer data.Contains all core banking logic.
New Systems
Existing Systems
Internet Banking System
Allows customers to interact securely via the web.
Administration System
Allows call centre staff to undertake administrative actions.
![Page 49: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/49.jpg)
Web serverAllows customers to interact securely via the web.Allow call centre staff to undertake administrative actions.
External web serverAllows customers to interact securely via the web.
Containers
DatabaseStores customer information related to Internet Banking.Retains audit logs.Stores help text, banners and other commentary.
Application serverOrchestrates user interaction across big legacy system.
Banking systemSingle point of truth for all customer data.Contains all core banking logic.
IIS
Internal web serverAllows call centre staff to undertake administrative actions.
IIS
IIS
UNIX
SQL Server
Windows Communication
Foundation
XML/TCP protocolSQL
Web server, sta
ndalone app,
Windows Service, databas
e,
app server, ES
B, plugin, ...
![Page 50: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/50.jpg)
Banking Service
Get accounts.Get statement.Get/create/edit/delete recipients.Make payments.
ComponentsApplication server Authentication Service
Login.Authorise transaction.Logout.Reset credentials.Lock account.
Banking System Facade
Single point of truth for all customer data.Contains all core banking logic.
Audit Service
Write audit log entry.Get audit log entries for customer.
DatabaseBanking System
Web server
Service Layer
Data Layer
WCF service
WCF service
C#
C#
![Page 51: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/51.jpg)
BankingSystemFacade
Get accounts.Get statement.Get/create/edit/delete recipients.Make payments.
ClassesBanking System Facade
Banking system
<<abstract>>Transaction
Execute transaction.Audit transaction.
<abstract>Response
Parse XML response into domain object(s).
<abstract>Request
Convert request to XML.
BankingSystemInterface
Initiate connection.Execute transaction.Close transaction.
Creates
Is made up ofUses
You could use
UML, CRC cards,
a whiteboard, ...
![Page 52: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/52.jpg)
Application serverto Database
Technology, format & protocolService-level agreementsOwnershipRelease cycle & versioningetc...
Interfaces
Application serverto Banking System
Technology, format & protocolService-level agreementsOwnershipRelease cycle & versioningetc...
External web serverto Application server
Technology, format & protocolService-level agreementsOwnershipRelease cycle & versioningetc...
Internal web serverto Application server
Technology, format & protocolService-level agreementsOwnershipRelease cycle & versioningetc...
Interfaces are
typically
the riskiest p
arts of any
software architectu
re
![Page 53: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/53.jpg)
Use stories/use cases to
walkthroughand test your design
![Page 54: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/54.jpg)
Your experience should
guide you rather than
constrain you
Databases are g
reat,
but you don’t need to
use
one for every
solution
![Page 55: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/55.jpg)
Don’t blindly focus on the code; always ask what the
major forces are on the system and how your
architecture resolves them
Step back to se
e the
big picture
![Page 56: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/56.jpg)
![Page 57: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/57.jpg)
![Page 58: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/58.jpg)
![Page 59: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/59.jpg)
How do you share software architecture?
![Page 60: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/60.jpg)
Your system
Current Development Team
Database Administrators
Business Sponsors
Operations/Support Staff
Compliance and AuditSecurity TeamOther Teams
Future Development Team
Software architectu
re
is a platform for
conversation ..
. be social!
![Page 61: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/61.jpg)
There are many libraries in the middle-tier; are they components?
It looks like there are multiple architectural layers.
There’s a web application.Lots of C# code!
There are some WCF service references.
![Page 62: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/62.jpg)
ContextWhat is this all about?
Functional ViewWhat does the system do?
Process ViewDoes the system implement
business processes?
Non-functional ViewAre there any significant non-
functional requirements influencing the architecture?
Architectural Constraints
Are there any constraints influencing the architecture?
Architectural Principles
Are there any principles influencing the architecture?
Logical ViewWhat does the big picture look like and how is the system structured?
Interface ViewAre there internal or external
system interfaces?
Design ViewIs it clear how system components
should be implemented?
Infrastructure ViewWhat does the target deployment
environment look like?
Deployment ViewHow will the system components be
deployed onto the target infrastructure?
Operational ViewHow will people operate and
support the system?
Security ViewHow is security handled across all
tiers?
Data ViewHow is data managed, archived,
backed-up, etc?
Technology SelectionWhat led to the selection of the
technologies in use?
Architecture Justification
Does the chosen architecture “work”?
![Page 63: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/63.jpg)
/// <summary> /// Represents the behaviour behind the user registration page. /// </summary> public class RegistrationWizard : AbstractWizard { private RegistrationCandidate _registrationCandidate; private RegistrationWizardPage _page; private RegistrationWizardController _controller;
Whiteboard
WikiSoftware
Architecture
Documentv0.2
ReviewCoding standards
Design conformanceTest coverageThread safety
SecurityLogging
Exception handlingExtensibilityUnderstanding
Morale
/** * Reference Architecture * @author You */
/* * Pair * Programming */
while(!angry) { pair(you);}
Delegation
Conversation
Abstract
Specific
![Page 64: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/64.jpg)
How do you deliver software architecture?
![Page 65: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/65.jpg)
How much architecture do you need to do?
Waterfall RUP Agile
This much?
This much?
![Page 66: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/66.jpg)
You need to define
“just enough” architecture
![Page 67: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/67.jpg)
What is architecturally
significant?
Costly to change Complex and risky New
![Page 68: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/68.jpg)
Does your architecture
work?
Satisfies the
architectural driversFoundations for
the codePlatform for solving
the business problem
![Page 69: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/69.jpg)
A system
Foundations
Requirements
Concreteexperiments
A throwaway prot
otype/
proof of con
cept or
production code
![Page 70: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/70.jpg)
Let’s wrap up...
![Page 71: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/71.jpg)
What is software architecture?
What is the role ofa software architect?
How do you definesoftware architecture?
How do you sharesoftware architecture?
How do you deliversoftware architecture?
How do you take a system visionthrough to a software design?
Requirements, constraints
and principles drive
software architectures
Systems, containers,
components, classes
and interfacesEvery picture should
tell a different part
of the same story
Decompose the problem
Write code and test
your architecture
as early as possible
![Page 72: Architecture: where do you start?](https://reader034.vdocuments.mx/reader034/viewer/2022042614/554e218eb4c9056b798b4daa/html5/thumbnails/72.jpg)
http://www.codingthearchitecture.com
Software architecture for developers
@simonbrown on Twitter
Thanks!