gearing architecture for agility - java2days · 2018. 12. 6. · agility as an architecture driver...
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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/1.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/2.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/3.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/4.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/5.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/6.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/7.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/8.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/9.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/10.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/11.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/12.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/13.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/14.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/15.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/16.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/17.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/18.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/19.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/20.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/21.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/22.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/23.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/24.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/25.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/26.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/27.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/28.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/29.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/30.jpg)
© 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](https://reader033.vdocuments.site/reader033/viewer/2022052816/60aa86c54dba612ab1029b56/html5/thumbnails/31.jpg)
© 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