For many years, software architecture was described as the “parts that are hard to change later.” Modern advances in architecture have shown that if architects build evolvability into the architecture, change becomes easier. Neal Ford describes a family of software architectures that support evolutionary change, how we can build evolvable systems, and how to retrofit existing ones. He discusses three key concepts that support evolutionary architectures. Incremental change covers engineering practices to support continuous delivery and DevOps. Neal explains how fitness functions build protective, testable scaffolding around critical parts to guide the architecture as it evolves and to help developers assess how well the architecture adheres to a particular goal. Third, he describes how to determine the level of architectural coupling, which affects the ability to evolve the architecture. Neal illustrates ways to retrofit existing systems to support architectural evolution and shares tips on migrating between architectural styles. Leave with a new appreciation of software architecture and practical ways to make your systems not nearly so hard to change.
Direct Style Effect Systems -The Print[A] Example- A Comprehension Aid
Modern Evolutionary Software Architectures
1. K2
Keynote
6/7/2017 10:00:00 AM
K2 Modern Evolutionary Software
Architectures
Presented by:
Neal Ford
ThoughtWorks
Brought to you by:
350 Corporate Way, Suite 400, Orange Park, FL 32073
888-‐268-‐8770 ·∙ 904-‐278-‐0524 - info@techwell.com - https://www.techwell.com/
2. Neal Ford
ThoughtWorks
Neal Ford is director, software architect, and meme wrangler at ThoughtWorks, a
software company and a community of passionate, purpose-led individuals. He
thinks disruptively to deliver technology to address the toughest challenges, all
while seeking to revolutionize the IT industry and create positive social change. A
speaker at hundreds of developer conferences worldwide, Neal is an
internationally recognized expert on software development and delivery,
particularly where agile engineering techniques and software architecture
intersect. Neal has authored magazine articles, seven books (and counting), and
dozens of video presentations. Neal's topics include software architecture,
continuous delivery, functional programming, and cutting-edge software
innovations. Check out Neal's website at nealford.com.
26. An evolutionary architecture supports
incremental, guided change as a first
principle across multiple dimensions.
evolutionary architecture
Definition:
39. Fitness Functions
⩊
a particular type of objective function that is
used to summarize…how close a given
design solution is to achieving the set aims.
84. Expand/Contract Pattern
app v230
compatible with db
v14
DB
version
15
DB
version
14
app v205
compatible with db
v13 and v14
app v234
compatible with db
v14
app v241
compatible with db
v14 and 15
DB
version
13
app v248
compatible with db
v15
Time
app v205
deployed
migrate
db to v14
app v230
deployed
app v234
deployed
app v234
deployed
app v248
deployed
migrate
db to v15
93. Conway’s Law
organizations which design
systems ... are constrained to
produce designs which are copies
of the communication structures
of these organizations
en.wikipedia.org/wiki/Conway%27s_law
Melvin Conway, 1968
113. Why should a company
decide to build an
evolutionary architecture?
114. Why should a company
decide to build an
evolutionary architecture?
Predictable versus Evolvable
Scale
Cycle Time as a Business Metric
Isolating “—ilities” at the Quantum Level
Longer Lasting Useful Systems
Advanced Business Capabilities
115. Why should a company
decide to build an
evolutionary architecture?
116. Why would a company choose not
to build an evolutionary
architecture?
117. Why would a company choose not
to build an evolutionary
architecture?
Can’t Evolve a Ball of Mud
Other Architectural Characteristics
Dominate
Sacrificial Architecture
Planning on Closing the Business Soon
118. Why should a company
decide to build an
evolutionary architecture?
Predictable versus Evolvable
Scale
Cycle Time as a Business Metric
Isolating “—ilities” at the Quantum Level
Longer Lasting Useful Systems
Advanced Business CapabilitiesAdvanced Business Capabilities
122. ▫︎It decides whether or not to run the try block,
▫︎Randomizes the order in which use and try blocks are
run,
▫︎Measures the durations of all behaviors,
▫︎Compares the result of try to the result of use,
▫︎Swallows (but records) any exceptions raised in the try
block
▫︎Publishes all this information.
123.
124.
125.
126. Bugs Found; Resolution
▫︎faster conflict return because shell script exited
immediately; replicated in library
▫︎index write was causing O(n) problem; inlined into
memory
▫︎the ancestor had a file with a given filemode, whilst one
side of the merge had removed the file and the other
side had changed the filemode; bug in git!
▫︎Git incorrectly successfully merged files w/ 768 conflicts;
fixed git shell script
▫︎new library was skipping an entire step; bug found &
fixed