asas 2013 - agility and the essence of software architecture

63
Simon Brown @simonbrown Agility and the essence of software architecture

Upload: avisi-bv

Post on 15-Nov-2014

513 views

Category:

Technology


1 download

DESCRIPTION

By Simon Brown

TRANSCRIPT

Page 1: ASAS 2013 - Agility and the essence of software architecture

Simon Brown@simonbrown

Agilityand the essence of

software architecture

Page 2: ASAS 2013 - Agility and the essence of software architecture

[email protected]

@simonbrown on Twitter

Jersey, Channel Islands

Page 3: ASAS 2013 - Agility and the essence of software architecture

The Difference between the United Kingdom, Great Britain and England Explainedhttp://www.youtube.com/watch?v=rNu8XDBSn10

Page 4: ASAS 2013 - Agility and the essence of software architecture

I help software teams understand

software architecture,

technical leadership and

the balance with agility

I code too⇧ ; - ⇧ 0

Page 5: ASAS 2013 - Agility and the essence of software architecture

Software architecture needs to be more

accessible

TrainingIn-house and public courses

Bookleanpub.com

SpeakingConferences and user groups

Page 6: ASAS 2013 - Agility and the essence of software architecture

Agility

Page 7: ASAS 2013 - Agility and the essence of software architecture

Agile is about

moving fast, embracing change, releasing often,

getting feedback, etc

plus some

fluffy stuff

Page 8: ASAS 2013 - Agility and the essence of software architecture

What is

agile software architecture?

Page 9: ASAS 2013 - Agility and the essence of software architecture

Is agile software architecture about using sticky notes and index cards?

Page 10: ASAS 2013 - Agility and the essence of software architecture

Delivering softwarein an agile way

doesn’t guaranteethat the resulting

software architectureis agile

Page 11: ASAS 2013 - Agility and the essence of software architecture

Agile teamsdon’t necessarily

create agilesoftware

architectures

Page 12: ASAS 2013 - Agility and the essence of software architecture

An agile software architecture

easily reactsto change

within its environment

Page 13: ASAS 2013 - Agility and the essence of software architecture

Are monolithic architectures agile?

Page 14: ASAS 2013 - Agility and the essence of software architecture

Are “big ball of mud” architectures agile?

Page 15: ASAS 2013 - Agility and the essence of software architecture

Are service-based architectures agile?

Page 16: ASAS 2013 - Agility and the essence of software architecture

A good architecture

enablesagility

Page 17: ASAS 2013 - Agility and the essence of software architecture

Nothingis free!

Page 18: ASAS 2013 - Agility and the essence of software architecture

Monolithicarchitecture

Service-based architecture

(SOA, micro-services, etc)

Something in between(components)

Page 19: ASAS 2013 - Agility and the essence of software architecture

What does

“agility”mean?

Page 20: ASAS 2013 - Agility and the essence of software architecture

John Boyd, US Air Force

Observe Orient

Act Decide

Page 21: ASAS 2013 - Agility and the essence of software architecture

Agility is relativeand time-based

Page 22: ASAS 2013 - Agility and the essence of software architecture

Inspectand

Adapt

Page 23: ASAS 2013 - Agility and the essence of software architecture

How do we inspect

an existingsoftware architecture?

Page 24: ASAS 2013 - Agility and the essence of software architecture

In my experience,

software teams aren’t able to

effectively visualise the

software architecture

of their systems

Page 25: ASAS 2013 - Agility and the essence of software architecture

Who here uses UMLon a regular basis?

Page 26: ASAS 2013 - Agility and the essence of software architecture

9 out of 10 people

don’t use UML(in my experience)

Page 27: ASAS 2013 - Agility and the essence of software architecture

NoUMLdiagrams?

Page 28: ASAS 2013 - Agility and the essence of software architecture

It’s usually difficult to show the entire design on

a single diagram

Different views of the design can be used to manage complexity and

highlight different aspects of the solution

Page 29: ASAS 2013 - Agility and the essence of software architecture

Do the namesof those views make sense?

Development vs PhysicalProcess vs FunctionalConceptual vs Logical

Development vs ImplementationPhysical vs Implementation

Physical vs Deployment

Page 30: ASAS 2013 - Agility and the essence of software architecture

Did you

codeit that way?

Page 31: ASAS 2013 - Agility and the essence of software architecture

I do use UML(activity, class, sequence, collaboration, state)

Page 32: ASAS 2013 - Agility and the essence of software architecture

A common set of abstractionsis more important than

a common notation

Page 33: ASAS 2013 - Agility and the essence of software architecture

How do we adapt

an existingsoftware architecture?

Page 34: ASAS 2013 - Agility and the essence of software architecture

Is architectural

refactoring hard?

Page 35: ASAS 2013 - Agility and the essence of software architecture

Does your code reflect the

abstractionsthat you think about?

Page 36: ASAS 2013 - Agility and the essence of software architecture

Abstractionis about reducing detailrather than creating a different representation

Page 37: ASAS 2013 - Agility and the essence of software architecture

We often think in componentsbut write classes

Page 38: ASAS 2013 - Agility and the essence of software architecture

Just Enough Software ArchitectureA Risk-Driven Approach

George Fairbanks

“Architecturally-evident coding style”

Subclassing,naming conventions,module dependencies,

package structure, ...

Page 39: ASAS 2013 - Agility and the essence of software architecture

Diagramming tools see packages and classes notcomponents and services

Page 40: ASAS 2013 - Agility and the essence of software architecture

The code doesn’t tell the *whole* story,

but it does *a* story

Page 41: ASAS 2013 - Agility and the essence of software architecture

techtribes.je

Page 42: ASAS 2013 - Agility and the essence of software architecture

https://github.com/techtribesje/techtribesje

Page 43: ASAS 2013 - Agility and the essence of software architecture

The essence ofsoftware

architecture

Page 44: ASAS 2013 - Agility and the essence of software architecture

Just enough up front design to

understand the structure

of the software and

create ashared vision

for the team

Page 45: ASAS 2013 - Agility and the essence of software architecture

You need to

identify and mitigate

your highest priority

risksThings that will cause

your project to fail

or you to be fired!Agile software projectsdo have risks, right? :-)

Page 46: ASAS 2013 - Agility and the essence of software architecture

How?

Page 47: ASAS 2013 - Agility and the essence of software architecture

Ensure that developers

understandwhat software architecture is

Page 48: ASAS 2013 - Agility and the essence of software architecture

Software architecture needs to be

accessible

Page 49: ASAS 2013 - Agility and the essence of software architecture

Ensure that the

managementunderstands what software

architecture is too

Page 50: ASAS 2013 - Agility and the essence of software architecture

Talk aboutsoftware architecture in

retrospectives

Page 51: ASAS 2013 - Agility and the essence of software architecture

Illustrate this using

architecturekatas

Page 52: ASAS 2013 - Agility and the essence of software architecture

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 DataSystem

Reference DataSystem

Risk System

1.1. Trade Data SystemThe 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:

• Trade ID

• Date

• Current trade value in US dollars

• Counterparty ID

1.2. Reference Data SystemThe 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.

Risk System

FinancialRisk 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 DataSystem

Reference DataSystem

Risk System

1.1. Trade Data SystemThe 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:

• Trade ID

• Date

• Current trade value in US dollars

• Counterparty ID

1.2. Reference Data SystemThe 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.

Risk System

Keep it simple!

Page 53: ASAS 2013 - Agility and the essence of software architecture

Iteration 1 (~90 minutes)

+

Iteration 2 (~90 minutes)

+ +

Groups of 2-4 Requirements

RequirementsGroups of 2-4 Feedback and guidance

Page 54: ASAS 2013 - Agility and the essence of software architecture

The learning goals are:

1.collaborative design2.architecture sketching3.just enough up front design

Page 55: ASAS 2013 - Agility and the essence of software architecture

Everysoftware developershould know how to

sketch

Page 56: ASAS 2013 - Agility and the essence of software architecture

Architecture sketchingassists with having

better conversations

Page 57: ASAS 2013 - Agility and the essence of software architecture

Architecture sketchingassists with

collective ownershipof the code

Page 58: ASAS 2013 - Agility and the essence of software architecture

Picturesare the simplest form

of documentation

Page 59: ASAS 2013 - Agility and the essence of software architecture

Sketches are mapsthat help a team navigate a complex codebase

Page 60: ASAS 2013 - Agility and the essence of software architecture

Risk-storming

A collaborative and visual technique for identifying risk

Page 61: ASAS 2013 - Agility and the essence of software architecture

So what?“the subject of agile and architecture have been written about and discussed at length,

and in fact now it is almost old news”

Page 62: ASAS 2013 - Agility and the essence of software architecture

Many softwaredevelopment teams

don’tunderstand or practice

“architecture”If you’re a developer who wants to contribute to the big picture – the high-level design of the systems you work on – you need to be able to communicate your ideas clearly for your peers to understand. In my experience, with myself included, developers are inherently lacking in this skill.

http://www.ntcoding.blogspot.co.uk/2013/02/improve-your-communication-skills-with.html

Page 63: ASAS 2013 - Agility and the essence of software architecture

educateWe have a duty to

[email protected]

@simonbrown on Twitter

This is aboutscaling teams...