Top Banner
© Zühlke 2018 Gearing architecture for agility CodeMonsters Sofia 2018-11 // Christian Heger
31

Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

Jan 21, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Gearing architecture for agilityCodeMonsters Sofia 2018-11 // Christian Heger

Page 2: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Christian Heger

@zyklotroplinkedin.com/in/christianheger/[email protected]

Own image

Own image & dog

Own image

Page 3: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Software Architecture

- vs –

AgilityWikipedia – User Jamain / CC BY-SA 3.0

Bundesarchiv, Bild 183-J0218-0011-001 / CC-BY-SA 3.0

Page 4: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Strategies for solving the technical aspects of software engineering

so that we can embrace Agile.

Page 5: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

We are uncovering better ways of developingsoftware by doing it and helping others do it.Through this work we have come to value:

▪ Individuals and interactions over processes and tools▪ Working software over comprehensive documentation▪ Customer collaboration over contract negotiation▪ Responding to change over following a plan

That is, while there is value in the items onthe right, we value the items on the left more.

Page 6: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Individuals and interactions over processes and tools

Jakob Dettner, Reiner Zenz - CC BY 2.0

Jakob Dettner, Reiner Zenz - CC BY 2.0

Page 7: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Architectural Decision! We’re all going to die!

Meteor: Public domain – NASADino: CC0 / no attribution

Page 8: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Customer Zühlke

EngagementManager

Key User

Sponsor

Operations

ProductOwner

ProjectManager

Governance

ProjectManager Scope

Owner&

OperationOwner

UXOwnerArchitecture

Owner

QualityOwner

Users

Page 9: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Responding to change over following a plan

Page 10: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Discovery

Understand user needs and constraints

Alpha

Explore and validate solutions

Beta

Scale up for production

Live

Use, measure, improve, and expand

▪ Being useful▪ Exposed to real users → learning things

▪ Earning money

Cost of Change

Page 11: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Cost of Change

Discovery

Understand user needs and constraints

Alpha

Explore and validate solutions

Beta

Scale up for production

Live

Use, measure, improve, and expand

• Insufficient / badly structured tests

• Dependencies on a rampage

• Lack of coherence lack of understanding

Page 12: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

The PyramidWikipedia – User Chales J. Sharp / CC BY-SA 3.0

Page 13: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

The CupcakeCC0 – no attribution

Page 14: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

The Doomsday Cloud

Public Domain - R. Clucas

Page 15: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Bounded ContextsImage: Fernando de Noronha - CC BY 2.0

Visitor

Talk

Itinerary

RoomSchedule

Visitor Ticket

Payment

Invoice

Provider

Visitor

Dietary Restriction

Meal

Order

Page 16: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Customer collaboration over contract negotiation

Page 17: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Page 18: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Knowledge Crunching

Continuous Learning

Knowledge-Rich Design

Deep Models

Ubiquitous Language

Explanatory Models

Page 19: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Own Image

Page 20: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Natural language executable specification

Specification by Example // Gherkin DSL

Feature:As the ProfessionalI can see audiogram changes when I change channel levels

Scenario: Increase level on channel #1Given Hearing instrument “elia S” is mounted on left earAnd Hearing instrument is resetAnd Baseline-Profile #5 is appliedWhen left channel #1 level is increased by 5dBThen left audiogram at 120Hz is between 8dB and 10dB

Scenario: Increase level on channel #2…

Page 21: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Working software over comprehensive documentation

Page 22: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Unreadable ArchitectureCC0 – no attribution Own Image

Page 23: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Architecture diagrams should be maps

Page 24: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Simon Browns C4 Architecture Model“Diagrams are maps that help you navigating”

Page 25: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

StructurizrCreate software architecture models based upon the C4 model using code

Page 26: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Keep track of where you have been going, and why –

so you don’t have to blindly trust or change prior decisions

In the context of <use case/user story u>,

facing <concern c> we decided for <option o> and neglected <other options>,

to achieve <system qualities/desired consequences>,

accepting <downside/undesired consequences>,

because <additional rationale>.

Architectural Decision Record

Page 27: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Books and sources

Page 28: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Books and sources

Specification By ExampleGojko Adzic

Domain Driven Design

Eric Evans

PACT

docs.pact.io

ADM Models

Alex Bögli, Christian Straube, Christian Heger and many moreZühlke Engineering

The Art of Unit Testing

Roy Osherove

Page 29: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Books and sources

Building Evolutionary ArchitecturesNeal Ford, Rebecca Parsons, Patrick Kua

Building Microservies

Sam Newman

Context Mapping

Alberto Brandolini

https://www.infoq.com/articles/ddd-contextmapping/

C4 diagramsStructurizrSimon Brownstructurizr.com

Selenium

seleniumhq.org

Page 30: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Books and sources

Continuous Delivery

Jez Humble, David Farley

Discipline Flow

Stephan JanischZühlke Engineering

Clean Code

Robert “Uncle Bob” C. Martin

Gherkin DSL

cucumber.iospecflow.org

Working Effectively with Legacy CodeMichael C. Feathers

Page 31: Gearing architecture for agility - Java2Days · 2018. 12. 6. · Agility as an architecture driver Author: heg Created Date: 12/5/2018 7:52:34 AM ...

© Zühlke 2018

Books and sources

Architectural Decision Record toolingadr.github.io

Architectural Decision RecordMichael Nygard

http://thinkrelevance.com/team/members/michael-nygard

Christian Eder

Structurizr / Infrastructure as Code

https://github.com/ChristianEder/Structurizr.InfrastructureAsCode

Munchkin

Fantasy Card Game

www.worldofmunchkin.com

adr.github.io