SlideShare ist ein Scribd-Unternehmen logo
1 von 77
Downloaden Sie, um offline zu lesen
Firm 
Foundations 
Simon Brown 
@simonbrown
Jersey
ASAS 2014 - Simon Brown
I help software teams understand 
software architecture, 
technical leadership and 
the balance with agility 
I code too 
⇧ ; - ⇧ 0
Software architecture 
needs to be more 
accessible
A developer-friendly 
guide to software 
architecture, 
technical leadership 
and the balance 
with agility 
10 out of 10 
“Highly recommended reading” 
! 
Junilu Lacar, JavaRanch 
http://leanpub.com/software-architecture-for-developers
In previous 
ASAS editions…
2012 
The conflict between 
agile and architecture
The conflict between 
agile and architecture 
Myth or reality?
1. A conflict in team structure 
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 
vs
2. A conflict in process 
Software 
Architecture 
Document 
Big up front design 
! 
Requirements capture, analysis 
and design complete before 
coding starts 
/// <summary> 
/// Represents the behaviour behind the ... 
/// </summary> 
public class SomeWizard : AbstractWizard 
{ 
private DomainObject _object; 
private WizardPage _page; 
private WizardController _controller; ! 
public SomeWizard() 
{ 
} ! 
Evolutionary 
architecture 
! 
The architecture evolves 
secondary to the value created 
by early regular releases of 
working software 
... !} 
vs
2013 
Agility and the essence 
of software architecture
A good 
architecture 
enables 
agility
Monolithic 
architecture 
Service-based 
architecture 
(SOA, micro-services, etc) 
Something in between 
(components)
2014 
Firm foundations
“Big design up front 
is dumb. 
! 
Doing no design up front 
is even dumber.” 
! 
(Dave Thomas)
A design 
revival?
Beyond 
Scrum 
DSDM Atern 
Disciplined Agile Delivery (DAD) 
Scaled Agile Framework (SAFe)
“The Atern lifecycle process” 
(from http://dsdm.org/content/6-lifecycle)
“ The Foundations phase 
is aimed at establishing 
firm and enduring 
foundations 
for the project. 
”
Software development is not a 
relay sport 
Software 
Architecture 
Document 
AaaS ... architecture as a service
It’s not about creating a 
perfect end-state, 
framework or 
complete architecture
You need a 
starting 
point
I often need to be the process guy…
Structure
Whiteboards 
and context diagrams
ASAS 2014 - Simon Brown
Whiteboards 
and domain diagrams
ASAS 2014 - Simon Brown
Wireframes 
(e.g. Balsamiq)
Pair* 
architecting 
* two or more people
We’re trying to design 
some software; 
not create a fluffy, 
conceptual solution
Should software design be 
technology 
agnostic?
“the solution is simple and can be 
built with any technology” 
! 
“we don't want to force 
a solution on developers” 
! 
"it's an implementation detail” 
! 
“we follow the ‘last responsible 
moment’ principle” 
Risk System 
1. Context 
A global investment bank based in London, New York and Singapore trades (buys and sells) 
financial products with other banks (counterparties). When share prices on the stock markets 
move up or down, the bank either makes money or loses it. At the end of the working day, the 
bank needs to gain a view of how much risk they are exposed to (e.g. of losing money) by 
running some calculations on the data held about their trades. The bank has an existing Trade 
Data System (TDS) and Reference Data System (RDS) but need a new Risk System. 
Trade Data 
System 
Reference Data 
System 
Risk System 
1.1. Trade Data System 
The Trade Data System maintains a store of all trades made by the bank. It is already configured 
to generate a file-based XML export of trade data at the close of business (5pm) in New York. 
The export includes the following information for every trade made by the bank: 
• Tr ad e ID 
• Date 
• Current trade value in US dollars 
• Counterparty ID 
1.2. Reference Data System 
The Reference Data System maintains all of the reference data needed by the bank. This 
includes information about counterparties; each of which represents an individual, a bank, etc. 
A file-based XML export is also available and includes basic information about each counterparty.
Hexagons 
and onions
Significant 
decisions 
can be moved but 
rarely eliminated 
Web Application 
Another abstraction layer 
Database Abstraction Layer (e.g. ORM) 
Relational 
Database
Technology is 
not 
an 
“implementation detail”
A common set of 
abstractions 
is more important than 
a common notation
Software System 
Container 
Container 
(e.g. web server, application server, standalone application, 
(e.g. web server, application browser, database, file system, etc) 
application, database, Component Component Component 
Class Class Class 
Container 
application server, standalone 
database, file system, etc) 
Agree on a simple set of abstractions 
that the whole team can use to communicate
Components 
Classes, 
Responsibilities, 
Collaborations
An initial set 
of components
Abstraction 
is about reducing detail 
rather than creating a different representation
Software 
architecture 
vs 
code
Does your code reflect the 
abstractions 
that you think about?
Agree upon some 
principles 
If you genuinely don’t know what you’re building 
(and therefore can’t create a component model), 
agree on some principles that you will use to 
structure your software
Structure 
Components, 
technologies, 
principles
Vision
Detailed 
blueprints! 
! 
vs 
setting a 
direction
In my experience, 
software teams 
aren’t able to 
effectively 
communicate 
the software 
architecture 
of their systems
The C4 model 
System Context 
The system plus users and system dependencies 
Containers 
The overall shape of the architecture and technology choices 
Components 
Logical components and their interactions within a container 
Classes 
Component or pattern implementation details
ASAS 2014 - Simon Brown
Context 
! 
•What are we 
building? 
! 
•Who is using it? 
(users, actors, roles, 
personas, etc) 
! 
•How does it fit into 
the existing IT 
environment? 
(systems, services, etc)
Containers 
! 
•What are the high-level 
technology 
decisions? (including 
responsibilities) 
! 
•How do containers 
communicate with one 
another? 
! 
•As a developer, where 
do I need to write 
code?
Components 
! 
•What components/ 
services is the 
container made up of? 
! 
•Are the technology 
choices and 
responsibilities clear?
The conversations 
change
Sketches 
will become 
out of date
Software 
architecture 
as 
code
ASAS 2014 - Simon Brown
Software architecture model as code -> JSON -> diagrams
structurizr.com
Risks
An example timeline from 
“Beyond Retrospectives” 
by Linda Rising 
! 
#gotocon Aarhus 2011
Base your architecture on 
requirements, travel light 
and prove your architecture 
with concrete experiments. 
Scott Ambler 
http://www.agilemodeling.com/essays/agileArchitecture.htm
Web tier 
Concrete 
experiments 
(prototype, proof 
of concept or 
production code) 
Middle tier 
Database tier
What is architecturally 
significant? 
Costly to 
change 
Complex New
You need to 
identify and mitigate 
your highest priority 
risks
Security holes/breaches, data 
loss, network outages, server 
outages, poor performance, 
poor scalability, deployment 
complexity, lack of skills, 
unproven technology, external 
interfaces changing, users 
doing things they shouldn’t…
Like estimates, 
risks are 
subjective
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)
Does your architecture 
work? 
(write code and test early if needed)
For structurizr.com 
! 
Rendering a dynamic diagram in JavaScript 
Exporting that diagram to PNG 
Rackspace vs Pivotal Web Services
You can still 
get it wrong 
though!
In summary…
Risks 
! 
Identify and mitigate 
the highest priority 
risks. 
! 
! 
! 
! 
! 
! 
Risk-storming 
and concrete 
experiments. 
Vision 
! 
Create and 
communicate a 
vision for the team 
to work with. 
! 
! 
! 
! 
! 
Context, container 
and component 
diagrams. 
Structure 
! 
Understand the 
significant structural 
elements and how 
they fit together, 
based upon the 
architectural drivers. 
! 
! 
! 
Design and 
decomposition down 
to containers and 
components. 
Just enough up front design 
to create firm foundations 
for the software product and its delivery
Requirements 
Context, Containers 
and Components 
Big Bank plc 
Internet Banking System 
How long? 
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.
Firm foundations 
Create a sufficient starting point 
and set a direction, 
in a minimal amount of time, 
to stack the odds of success 
in your favour 
simon.brown@codingthearchitecture.com 
@simonbrown on Twitter

Weitere ähnliche Inhalte

Was ist angesagt?

Software Architecture: Introduction
Software Architecture: IntroductionSoftware Architecture: Introduction
Software Architecture: IntroductionHenry Muccini
 
Refactoring for Software Architecture Smells
Refactoring for Software Architecture SmellsRefactoring for Software Architecture Smells
Refactoring for Software Architecture SmellsGanesh Samarthyam
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An OverviewOliver Stadie
 
What a Good Software Architect Does
What a Good Software Architect DoesWhat a Good Software Architect Does
What a Good Software Architect DoesEberhard Wolff
 
Software Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & ConnectorsSoftware Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & ConnectorsJose Emilio Labra Gayo
 
Software Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - DefinitionsSoftware Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - DefinitionsJose Emilio Labra Gayo
 
Basics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersBasics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersDan Douglas
 
Software Architecture: Design Decisions
Software Architecture: Design DecisionsSoftware Architecture: Design Decisions
Software Architecture: Design DecisionsHenry Muccini
 
[2015/2016] Introduction to software architecture
[2015/2016] Introduction to software architecture[2015/2016] Introduction to software architecture
[2015/2016] Introduction to software architectureIvano Malavolta
 
The Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software ArchitectHayim Makabee
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpointsHenry Muccini
 
Composable Software Architecture with Spring
Composable Software Architecture with SpringComposable Software Architecture with Spring
Composable Software Architecture with SpringSam Brannen
 
Architecture vs Design
Architecture vs DesignArchitecture vs Design
Architecture vs DesignLuc Trudeau
 
05 architectural styles
05 architectural styles05 architectural styles
05 architectural stylesMajong DevJfu
 
Principles of software architecture design
Principles of software architecture designPrinciples of software architecture design
Principles of software architecture designLen Bass
 
A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guideTriet Ho
 

Was ist angesagt? (20)

Software Architecture: Introduction
Software Architecture: IntroductionSoftware Architecture: Introduction
Software Architecture: Introduction
 
Refactoring for Software Architecture Smells
Refactoring for Software Architecture SmellsRefactoring for Software Architecture Smells
Refactoring for Software Architecture Smells
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An Overview
 
What a Good Software Architect Does
What a Good Software Architect DoesWhat a Good Software Architect Does
What a Good Software Architect Does
 
The Modern Software Architect
The Modern Software ArchitectThe Modern Software Architect
The Modern Software Architect
 
Software Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & ConnectorsSoftware Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & Connectors
 
Software Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - DefinitionsSoftware Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - Definitions
 
Basics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersBasics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET Developers
 
Software Architecture: Design Decisions
Software Architecture: Design DecisionsSoftware Architecture: Design Decisions
Software Architecture: Design Decisions
 
[2015/2016] Introduction to software architecture
[2015/2016] Introduction to software architecture[2015/2016] Introduction to software architecture
[2015/2016] Introduction to software architecture
 
The Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software Architect
 
Layered Software Architecture
Layered Software ArchitectureLayered Software Architecture
Layered Software Architecture
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpoints
 
Composable Software Architecture with Spring
Composable Software Architecture with SpringComposable Software Architecture with Spring
Composable Software Architecture with Spring
 
Architecture vs Design
Architecture vs DesignArchitecture vs Design
Architecture vs Design
 
05 architectural styles
05 architectural styles05 architectural styles
05 architectural styles
 
Principles of software architecture design
Principles of software architecture designPrinciples of software architecture design
Principles of software architecture design
 
L02 What is Software Architecture?
L02 What is Software Architecture?L02 What is Software Architecture?
L02 What is Software Architecture?
 
What is Software Architecture?
What is Software Architecture?What is Software Architecture?
What is 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
 

Ähnlich wie ASAS 2014 - Simon Brown

Design Decisions For Understanding Software Architecture
Design Decisions For Understanding Software ArchitectureDesign Decisions For Understanding Software Architecture
Design Decisions For Understanding Software ArchitectureTiffany Graham
 
Software Modeling And Analysis Project
Software Modeling And Analysis ProjectSoftware Modeling And Analysis Project
Software Modeling And Analysis ProjectPam Fenno
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture uploadThe Real Dyl
 
What Is The Zachman Framework
What Is The Zachman FrameworkWhat Is The Zachman Framework
What Is The Zachman FrameworkMia Gordon
 
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...Karen Thompson
 
Software Architecture And Software Design
Software Architecture And Software DesignSoftware Architecture And Software Design
Software Architecture And Software DesignSamantha Randall
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsAraf Karsh Hamid
 
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 architectureAvisi B.V.
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLESIvano Malavolta
 
.NET Architecture for Enterprises
.NET Architecture for Enterprises.NET Architecture for Enterprises
.NET Architecture for EnterprisesWade Wegner
 
IT Architecture and Architects
IT Architecture and ArchitectsIT Architecture and Architects
IT Architecture and ArchitectsAndreDovgal1
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technologyEldos Kuriakose
 
Azure presentation nnug dec 2010
Azure presentation nnug  dec 2010Azure presentation nnug  dec 2010
Azure presentation nnug dec 2010Ethos Technologies
 
Axsys Technologies Software Offerings
Axsys Technologies Software OfferingsAxsys Technologies Software Offerings
Axsys Technologies Software OfferingsSuvadeep Sarkar
 

Ähnlich wie ASAS 2014 - Simon Brown (20)

Design Decisions For Understanding Software Architecture
Design Decisions For Understanding Software ArchitectureDesign Decisions For Understanding Software Architecture
Design Decisions For Understanding Software Architecture
 
Let's talk about... Microservices
Let's talk about... MicroservicesLet's talk about... Microservices
Let's talk about... Microservices
 
Software Modeling And Analysis Project
Software Modeling And Analysis ProjectSoftware Modeling And Analysis Project
Software Modeling And Analysis Project
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Isset Presentation @ EECI2009
Isset Presentation @ EECI2009Isset Presentation @ EECI2009
Isset Presentation @ EECI2009
 
Essay On Java
Essay On JavaEssay On Java
Essay On Java
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture upload
 
What Is The Zachman Framework
What Is The Zachman FrameworkWhat Is The Zachman Framework
What Is The Zachman Framework
 
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
Cis 555 Week 4 Assignment 2 Automated Teller Machine (Atm)...
 
Software Architecture And Software Design
Software Architecture And Software DesignSoftware Architecture And Software Design
Software Architecture And Software Design
 
eswar.pptx
eswar.pptxeswar.pptx
eswar.pptx
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
 
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
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES
 
.NET Architecture for Enterprises
.NET Architecture for Enterprises.NET Architecture for Enterprises
.NET Architecture for Enterprises
 
IT Architecture and Architects
IT Architecture and ArchitectsIT Architecture and Architects
IT Architecture and Architects
 
OOSE UNIT-1.pdf
OOSE UNIT-1.pdfOOSE UNIT-1.pdf
OOSE UNIT-1.pdf
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technology
 
Azure presentation nnug dec 2010
Azure presentation nnug  dec 2010Azure presentation nnug  dec 2010
Azure presentation nnug dec 2010
 
Axsys Technologies Software Offerings
Axsys Technologies Software OfferingsAxsys Technologies Software Offerings
Axsys Technologies Software Offerings
 

Mehr von Avisi B.V.

Scaling Your Team and Technology: The Agile Way - Erik Duindam
Scaling Your Team and Technology: The Agile Way - Erik DuindamScaling Your Team and Technology: The Agile Way - Erik Duindam
Scaling Your Team and Technology: The Agile Way - Erik DuindamAvisi B.V.
 
Bigger product is better - Viktor Grgric
Bigger product is better  - Viktor GrgricBigger product is better  - Viktor Grgric
Bigger product is better - Viktor GrgricAvisi B.V.
 
Product development insights - Robin van Breukelen
Product development insights - Robin van BreukelenProduct development insights - Robin van Breukelen
Product development insights - Robin van BreukelenAvisi B.V.
 
Software design patterns and lessons learned from nature - Jaromil
Software design patterns and lessons learned from nature - JaromilSoftware design patterns and lessons learned from nature - Jaromil
Software design patterns and lessons learned from nature - JaromilAvisi B.V.
 
Content must be creative - Jon Westenberg
Content must be creative - Jon WestenbergContent must be creative - Jon Westenberg
Content must be creative - Jon WestenbergAvisi B.V.
 
Does your design smell - Tushar Sharma
Does your design smell  - Tushar SharmaDoes your design smell  - Tushar Sharma
Does your design smell - Tushar SharmaAvisi B.V.
 
How to become a Product Samurai - Chris Lukassen
How to become a Product Samurai - Chris LukassenHow to become a Product Samurai - Chris Lukassen
How to become a Product Samurai - Chris LukassenAvisi B.V.
 
ASAS 2015 Gert Florijn & Eelco Rommes
ASAS 2015 Gert Florijn & Eelco RommesASAS 2015 Gert Florijn & Eelco Rommes
ASAS 2015 Gert Florijn & Eelco RommesAvisi B.V.
 
ASAS 2015 - Benito de Miranda
ASAS 2015 - Benito de MirandaASAS 2015 - Benito de Miranda
ASAS 2015 - Benito de MirandaAvisi B.V.
 
ASAS 2015 Stanimira Jelezova
ASAS 2015 Stanimira JelezovaASAS 2015 Stanimira Jelezova
ASAS 2015 Stanimira JelezovaAvisi B.V.
 
ASAS 2015 Regina Chien
ASAS 2015 Regina ChienASAS 2015 Regina Chien
ASAS 2015 Regina ChienAvisi B.V.
 
ASAS 2015 Darren Harris
ASAS 2015 Darren HarrisASAS 2015 Darren Harris
ASAS 2015 Darren HarrisAvisi B.V.
 
ASAS 2015 Henk Kolk
ASAS 2015 Henk KolkASAS 2015 Henk Kolk
ASAS 2015 Henk KolkAvisi B.V.
 
ASAS 2015 Chris Lukassen
ASAS 2015 Chris LukassenASAS 2015 Chris Lukassen
ASAS 2015 Chris LukassenAvisi B.V.
 
ASAS 2015 Chris Lukassen
ASAS 2015 Chris LukassenASAS 2015 Chris Lukassen
ASAS 2015 Chris LukassenAvisi B.V.
 
Keynote ASAS 2015 Ted Neward
Keynote ASAS 2015 Ted NewardKeynote ASAS 2015 Ted Neward
Keynote ASAS 2015 Ted NewardAvisi B.V.
 
ASAS 2015 Robin van Breukelen
ASAS 2015 Robin van BreukelenASAS 2015 Robin van Breukelen
ASAS 2015 Robin van BreukelenAvisi B.V.
 
ASAS 2015 - Kasia Mrowca
ASAS 2015 - Kasia MrowcaASAS 2015 - Kasia Mrowca
ASAS 2015 - Kasia MrowcaAvisi B.V.
 
ASAS 2015 - Norberto Leite
ASAS 2015 - Norberto LeiteASAS 2015 - Norberto Leite
ASAS 2015 - Norberto LeiteAvisi B.V.
 
ASAS 2015 - Maarten van den Heuvel
ASAS 2015 - Maarten van den HeuvelASAS 2015 - Maarten van den Heuvel
ASAS 2015 - Maarten van den HeuvelAvisi B.V.
 

Mehr von Avisi B.V. (20)

Scaling Your Team and Technology: The Agile Way - Erik Duindam
Scaling Your Team and Technology: The Agile Way - Erik DuindamScaling Your Team and Technology: The Agile Way - Erik Duindam
Scaling Your Team and Technology: The Agile Way - Erik Duindam
 
Bigger product is better - Viktor Grgric
Bigger product is better  - Viktor GrgricBigger product is better  - Viktor Grgric
Bigger product is better - Viktor Grgric
 
Product development insights - Robin van Breukelen
Product development insights - Robin van BreukelenProduct development insights - Robin van Breukelen
Product development insights - Robin van Breukelen
 
Software design patterns and lessons learned from nature - Jaromil
Software design patterns and lessons learned from nature - JaromilSoftware design patterns and lessons learned from nature - Jaromil
Software design patterns and lessons learned from nature - Jaromil
 
Content must be creative - Jon Westenberg
Content must be creative - Jon WestenbergContent must be creative - Jon Westenberg
Content must be creative - Jon Westenberg
 
Does your design smell - Tushar Sharma
Does your design smell  - Tushar SharmaDoes your design smell  - Tushar Sharma
Does your design smell - Tushar Sharma
 
How to become a Product Samurai - Chris Lukassen
How to become a Product Samurai - Chris LukassenHow to become a Product Samurai - Chris Lukassen
How to become a Product Samurai - Chris Lukassen
 
ASAS 2015 Gert Florijn & Eelco Rommes
ASAS 2015 Gert Florijn & Eelco RommesASAS 2015 Gert Florijn & Eelco Rommes
ASAS 2015 Gert Florijn & Eelco Rommes
 
ASAS 2015 - Benito de Miranda
ASAS 2015 - Benito de MirandaASAS 2015 - Benito de Miranda
ASAS 2015 - Benito de Miranda
 
ASAS 2015 Stanimira Jelezova
ASAS 2015 Stanimira JelezovaASAS 2015 Stanimira Jelezova
ASAS 2015 Stanimira Jelezova
 
ASAS 2015 Regina Chien
ASAS 2015 Regina ChienASAS 2015 Regina Chien
ASAS 2015 Regina Chien
 
ASAS 2015 Darren Harris
ASAS 2015 Darren HarrisASAS 2015 Darren Harris
ASAS 2015 Darren Harris
 
ASAS 2015 Henk Kolk
ASAS 2015 Henk KolkASAS 2015 Henk Kolk
ASAS 2015 Henk Kolk
 
ASAS 2015 Chris Lukassen
ASAS 2015 Chris LukassenASAS 2015 Chris Lukassen
ASAS 2015 Chris Lukassen
 
ASAS 2015 Chris Lukassen
ASAS 2015 Chris LukassenASAS 2015 Chris Lukassen
ASAS 2015 Chris Lukassen
 
Keynote ASAS 2015 Ted Neward
Keynote ASAS 2015 Ted NewardKeynote ASAS 2015 Ted Neward
Keynote ASAS 2015 Ted Neward
 
ASAS 2015 Robin van Breukelen
ASAS 2015 Robin van BreukelenASAS 2015 Robin van Breukelen
ASAS 2015 Robin van Breukelen
 
ASAS 2015 - Kasia Mrowca
ASAS 2015 - Kasia MrowcaASAS 2015 - Kasia Mrowca
ASAS 2015 - Kasia Mrowca
 
ASAS 2015 - Norberto Leite
ASAS 2015 - Norberto LeiteASAS 2015 - Norberto Leite
ASAS 2015 - Norberto Leite
 
ASAS 2015 - Maarten van den Heuvel
ASAS 2015 - Maarten van den HeuvelASAS 2015 - Maarten van den Heuvel
ASAS 2015 - Maarten van den Heuvel
 

Kürzlich hochgeladen

OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 

Kürzlich hochgeladen (20)

OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 

ASAS 2014 - Simon Brown

  • 1. Firm Foundations Simon Brown @simonbrown
  • 4. I help software teams understand software architecture, technical leadership and the balance with agility I code too ⇧ ; - ⇧ 0
  • 5. Software architecture needs to be more accessible
  • 6. A developer-friendly guide to software architecture, technical leadership and the balance with agility 10 out of 10 “Highly recommended reading” ! Junilu Lacar, JavaRanch http://leanpub.com/software-architecture-for-developers
  • 7. In previous ASAS editions…
  • 8. 2012 The conflict between agile and architecture
  • 9. The conflict between agile and architecture Myth or reality?
  • 10. 1. A conflict in team structure 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 vs
  • 11. 2. A conflict in process Software Architecture Document Big up front design ! Requirements capture, analysis and design complete before coding starts /// <summary> /// Represents the behaviour behind the ... /// </summary> public class SomeWizard : AbstractWizard { private DomainObject _object; private WizardPage _page; private WizardController _controller; ! public SomeWizard() { } ! Evolutionary architecture ! The architecture evolves secondary to the value created by early regular releases of working software ... !} vs
  • 12. 2013 Agility and the essence of software architecture
  • 13. A good architecture enables agility
  • 14. Monolithic architecture Service-based architecture (SOA, micro-services, etc) Something in between (components)
  • 16. “Big design up front is dumb. ! Doing no design up front is even dumber.” ! (Dave Thomas)
  • 18. Beyond Scrum DSDM Atern Disciplined Agile Delivery (DAD) Scaled Agile Framework (SAFe)
  • 19. “The Atern lifecycle process” (from http://dsdm.org/content/6-lifecycle)
  • 20. “ The Foundations phase is aimed at establishing firm and enduring foundations for the project. ”
  • 21. Software development is not a relay sport Software Architecture Document AaaS ... architecture as a service
  • 22. It’s not about creating a perfect end-state, framework or complete architecture
  • 23. You need a starting point
  • 24. I often need to be the process guy…
  • 31. Pair* architecting * two or more people
  • 32. We’re trying to design some software; not create a fluffy, conceptual solution
  • 33. Should software design be technology agnostic?
  • 34. “the solution is simple and can be built with any technology” ! “we don't want to force a solution on developers” ! "it's an implementation detail” ! “we follow the ‘last responsible moment’ principle” Risk System 1. Context A global investment bank based in London, New York and Singapore trades (buys and sells) financial products with other banks (counterparties). When share prices on the stock markets move up or down, the bank either makes money or loses it. At the end of the working day, the bank needs to gain a view of how much risk they are exposed to (e.g. of losing money) by running some calculations on the data held about their trades. The bank has an existing Trade Data System (TDS) and Reference Data System (RDS) but need a new Risk System. Trade Data System Reference Data System Risk System 1.1. Trade Data System The Trade Data System maintains a store of all trades made by the bank. It is already configured to generate a file-based XML export of trade data at the close of business (5pm) in New York. The export includes the following information for every trade made by the bank: • Tr ad e ID • Date • Current trade value in US dollars • Counterparty ID 1.2. Reference Data System The Reference Data System maintains all of the reference data needed by the bank. This includes information about counterparties; each of which represents an individual, a bank, etc. A file-based XML export is also available and includes basic information about each counterparty.
  • 36. Significant decisions can be moved but rarely eliminated Web Application Another abstraction layer Database Abstraction Layer (e.g. ORM) Relational Database
  • 37. Technology is not an “implementation detail”
  • 38. A common set of abstractions is more important than a common notation
  • 39. Software System Container Container (e.g. web server, application server, standalone application, (e.g. web server, application browser, database, file system, etc) application, database, Component Component Component Class Class Class Container application server, standalone database, file system, etc) Agree on a simple set of abstractions that the whole team can use to communicate
  • 41. An initial set of components
  • 42. Abstraction is about reducing detail rather than creating a different representation
  • 44. Does your code reflect the abstractions that you think about?
  • 45. Agree upon some principles If you genuinely don’t know what you’re building (and therefore can’t create a component model), agree on some principles that you will use to structure your software
  • 48. Detailed blueprints! ! vs setting a direction
  • 49. In my experience, software teams aren’t able to effectively communicate the software architecture of their systems
  • 50. The C4 model System Context The system plus users and system dependencies Containers The overall shape of the architecture and technology choices Components Logical components and their interactions within a container Classes Component or pattern implementation details
  • 52. Context ! •What are we building? ! •Who is using it? (users, actors, roles, personas, etc) ! •How does it fit into the existing IT environment? (systems, services, etc)
  • 53. Containers ! •What are the high-level technology decisions? (including responsibilities) ! •How do containers communicate with one another? ! •As a developer, where do I need to write code?
  • 54. Components ! •What components/ services is the container made up of? ! •Are the technology choices and responsibilities clear?
  • 56. Sketches will become out of date
  • 59. Software architecture model as code -> JSON -> diagrams
  • 61. Risks
  • 62. An example timeline from “Beyond Retrospectives” by Linda Rising ! #gotocon Aarhus 2011
  • 63. Base your architecture on requirements, travel light and prove your architecture with concrete experiments. Scott Ambler http://www.agilemodeling.com/essays/agileArchitecture.htm
  • 64. Web tier Concrete experiments (prototype, proof of concept or production code) Middle tier Database tier
  • 65. What is architecturally significant? Costly to change Complex New
  • 66. You need to identify and mitigate your highest priority risks
  • 67. Security holes/breaches, data loss, network outages, server outages, poor performance, poor scalability, deployment complexity, lack of skills, unproven technology, external interfaces changing, users doing things they shouldn’t…
  • 68. Like estimates, risks are subjective
  • 69. Risk-storming A collaborative and visual technique for identifying risk
  • 70. You still need to deal with the risks (mitigation strategies include hiring people, undertaking proof of concept and changing your architecture)
  • 71. Does your architecture work? (write code and test early if needed)
  • 72. For structurizr.com ! Rendering a dynamic diagram in JavaScript Exporting that diagram to PNG Rackspace vs Pivotal Web Services
  • 73. You can still get it wrong though!
  • 75. Risks ! Identify and mitigate the highest priority risks. ! ! ! ! ! ! Risk-storming and concrete experiments. Vision ! Create and communicate a vision for the team to work with. ! ! ! ! ! Context, container and component diagrams. Structure ! Understand the significant structural elements and how they fit together, based upon the architectural drivers. ! ! ! Design and decomposition down to containers and components. Just enough up front design to create firm foundations for the software product and its delivery
  • 76. Requirements Context, Containers and Components Big Bank plc Internet Banking System How long? 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.
  • 77. Firm foundations Create a sufficient starting point and set a direction, in a minimal amount of time, to stack the odds of success in your favour simon.brown@codingthearchitecture.com @simonbrown on Twitter