Slide 1

Slide 1 text

Agile Architecture

Slide 2

Slide 2 text

The Architect   Tension   Diagrams & Documents   Encapsulation & Modularity   Real Options   Architecture Options

Slide 3

Slide 3 text

The Architect

Slide 4

Slide 4 text

Doesn’t code Covers every detail Their word is law Most effort up front

Slide 5

Slide 5 text

Doesn’t code Covers every detail Their word is law Most effort up front

Slide 6

Slide 6 text

Vision & Expertise Guides evolution   and technical direction Creates and investigates   options for implementation ✓

Slide 7

Slide 7 text

Tension

Slide 8

Slide 8 text

Predictability vs   reacting to change   Independence vs duplication of effort

Slide 9

Slide 9 text

BDUF Pains:   Over-Engineering Unnecessary Features   Premature Commitment

Slide 10

Slide 10 text

‘Integrated Problem Solving’ 1. Understanding and solving the   problem happen at the same time   2. Information released early   3. Information released frequently   4. Information flows in 2 directions   5. Prefer face-to-face over documents

Slide 11

Slide 11 text

Refactoring is continuous   local design improvement   Enable easy sharing   (knowledge & code)

Slide 12

Slide 12 text

Build for today   Architect for next week   (not next year)

Slide 13

Slide 13 text

Diagrams   & Documents

Slide 14

Slide 14 text

Typical BDUF documentation:   Functional Requirements   Functional Design   Solution Architecture   Technical Design   Etc.

Slide 15

Slide 15 text

Do you have all of these on your project?   Are they all up to date?   Do people actually use them?

Slide 16

Slide 16 text

Unused documentation is   at best a waste   Consider the need behind   the documentation

Slide 17

Slide 17 text

Tests are definitely needed   Documentation may be needed   Tests = Documentation?

Slide 18

Slide 18 text

Appropriate documentation Documentation should be   valuable to someone Documents don’t come first

Slide 19

Slide 19 text

Diagram as formal as needed   Diagram as detailed as needed Diagrams are a snapshot

Slide 20

Slide 20 text

Encapsulation   & Modularity

Slide 21

Slide 21 text

Minimise responsibilities   Hide the internal   implementation details   Expose the behaviours

Slide 22

Slide 22 text

From OOP to SOA   Applications   Services   Components   Classes

Slide 23

Slide 23 text

‚ EXAMPLE

Slide 24

Slide 24 text

Typical MVC App

Slide 25

Slide 25 text

Getting   harder   to grow

Slide 26

Slide 26 text

Decompose   into services

Slide 27

Slide 27 text

Extend easily   Reuse features

Slide 28

Slide 28 text

Real Options

Slide 29

Slide 29 text

An Option is the right,   but not obligation   to do something

Slide 30

Slide 30 text

Options are used to defer   commitment until more   is known about the situation

Slide 31

Slide 31 text

Real  Options   Options  have  value   Options  expire   Never  commit  early   unless  you  know  why

Slide 32

Slide 32 text

‚ EXAMPLE

Slide 33

Slide 33 text

Working  in  London  on-­‐site  full  time   Need  accommodation  this  week   Apartment  lease  might  be     signed  on  Monday   Apartment  lease  might  fall  through

Slide 34

Slide 34 text

Could  pay  for  the  hotel   for  the  whole  week   We  won’t  know  until  Monday   if  lease  is  signed   Need  to  create  an  option

Slide 35

Slide 35 text

We  want  to  delay  the  decision     until  we  have  more  knowledge   So  we  pay  a  deposit  for  a  hotel   reservation  for  the  week   If  lease  signed,  we  cancel   If  not,  we  stay  in  hotel

Slide 36

Slide 36 text

For  the  price  of  the  option,   we  can  delay  the  decision  and   make  a  more  informed  choice

Slide 37

Slide 37 text

The  option  has  a  value   The  option  will  expire   Don’t  commit  until  we  know   for  sure  about  the  lease

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

Architecture Options

Slide 40

Slide 40 text

Use Real Options to reduce risk   in technical decision making

Slide 41

Slide 41 text

Identify areas of risk   Look for big assumptions   Make options to defer decisions

Slide 42

Slide 42 text

‚ EXAMPLE

Slide 43

Slide 43 text

MongoDB or MySQL?   Assume or delay work?

Slide 44

Slide 44 text

Defer the decision & keep   working on concrete needs

Slide 45

Slide 45 text

Commit later when more   knowledge has been gained

Slide 46

Slide 46 text

Value: later decision based on   more knowledge   Expiry: may eventually need   to have persistent storage   Avoid early commitment:   unless there is a real need

Slide 47

Slide 47 text

Get   Involved

Slide 48

Slide 48 text

“Code wins arguments” Spike solutions for feasibility Hands-on experience equals credibility

Slide 49

Slide 49 text

? QUESTIONS