Engineering the Future of Software
Feb 25–26, 2018: Training
Feb 26–28, 2018: Tutorials & Conference
New York, NY

Building evolutionary architecture (Day 2)

Neal Ford (ThoughtWorks), Rebecca Parsons (ThoughtWorks)
9:00am–5:00pm Monday, February 26, 2018
Location: Concourse B
Average rating: ****.
(4.00, 3 ratings)

What you'll learn

By the end of this two-day training course, attendees will understand:

  • The concepts of building architectures that support constant change, both from business and disruptive technology changes
  • The role of engineering practices such as continuous delivery and DevOps and how they apply to evolutionary architectures
  • How to discover, define, and execute fitness functions to preserve architectural characteristics as the system evolves
  • How to analyse business problems to discern architectural characteristics
  • How code reuse impacts evolvability
  • How enterprise architecture must evolve

And they'll be able to:

  • Use ATAM utility trees to define and track architectural characteristics
  • Define deployment pipeline stages to apply fitness functions
  • Choose architectural patterns based on business, nonfunctional requirements, and inherent evolvability
  • Compare and contrast the evolvability of disparate architectural patterns and styles
  • Define automated governance activities
  • Protect a variety of architecture characteristics to prevent degradation over time

Description

For a variety of reasons, parts of software systems resist change, becoming more brittle and intractable over time. However, the world we inhabit has exactly the opposite characteristic: the software development ecosystem exists in a state of dynamic equilibrium. New tools, techniques, approaches, and frameworks constantly impact this equilibrium in unanticipatable ways.

While this creates a headache for brittle systems, it also provides the ultimate solution. Over the last few years, incremental developments in core engineering practices for software development have created the foundations for rethinking how architecture changes over time, along with ways to protect important architectural characteristics as it evolves. An evolutionary architecture supports building systems that allow architects and developers to make sweeping changes to the most important parts of their systems with confidence.

Neal Ford and Rebecca Parsons offer a new perspective on evolving architecture, making “evolvability” a first-class “-ility” in software projects. Neal and Rebecca walk you through a logical framework for identifying and protecting parts of the architecture that evolve, which helps you identify the important dimensions, define fitness functions to ensure compliance, and use incremental change engineering practices such as deployment pipelines and other continuous delivery practices to automatically verify fitness. Along the way, they cover practices that allow architects and engineers to build continual architectures that evolve cleanly without the need for a crystal ball. You’ll leave able to build systems that support ongoing change with confidence that the important qualities won’t degrade.

Outline

Day 1

  • Introduction to evolutionary architecture
  • Identifying architectural dimensions
  • Exercise: Find “-ilities” using architecture katas
  • Fitness functions
  • Types of fitness functions
  • Dimensions of fitness functions
  • Categories of fitness functions
  • Exercise: Write fitness functions for code quality and afferent/efferent coupling


Day 2

  • Exercise: Define fitness functions for important dimensions
  • Incremental change for evolutionary architecture
  • Exercise: Create a deployment pipeline plan to apply fitness functions
  • Understanding architecture patterns
  • Exercise: Define architecture patterns via katas
  • Ongoing discovery and maintenance of fitness functions
  • The intersection of enterprise and evolutionary architecture
  • Exercise: Automate governance
  • Selling evolutionary architecture to the business
Photo of Neal Ford

Neal Ford

ThoughtWorks

Neal Ford is a director, software architect, and meme wrangler at ThoughtWorks, a global IT consultancy that thinks disruptively to deliver technology to address the toughest challenges, all while seeking to revolutionize the IT industry and create positive social change. Neal focuses on designing and building large-scale enterprise applications. He’s an internationally recognized expert on software development and delivery, especially in the intersection of Agile engineering techniques and software architecture. Neal has authored magazine articles, seven books (and counting), and dozens of video presentations and has spoken at hundreds of developers conferences worldwide on the topics of software architecture, continuous delivery, functional programming, and cutting-edge software innovations. Check out his website at Nealford.com. He welcomes feedback and can be reached at nford@thoughtworks.com.

Photo of Rebecca Parsons

Rebecca Parsons

ThoughtWorks

Rebecca Parsons is CTO at ThoughtWorks. Rebecca has more than 30 years’ experience leading the creation of large-scale distributed, services-based applications and the integration of disparate systems. Previously, she was an assistant professor of computer science at the University of Central Florida, where she taught courses on compilers, program optimization, distributed computation, programming languages, the theory of computation, machine learning, and computational biology, and a director’s postdoctoral fellow at the Los Alamos National Laboratory, where her research included work on parallel and distributed computation, genetic algorithms, computational biology, and nonlinear dynamical systems. Rebecca’s interests include parallel and distributed computation, programming languages, domain-specific languages, evolutionary architecture, genetic algorithms, and computational science. She is the coauthor of Domain-Specific Languages, The ThoughtWorks Anthology, and Building Evolutionary Architectures. A strong advocate for diversity in the technology industry who is committed to increasing the number of women in coding and STEM fields, Rebecca has served on the board of CodeChix and acted as an advisor to Women Who Code. A sought-after speaker, she has been a featured presenter at well-known conferences, including Collision Conference, Web Summit, YOW!, the Grace Hopper Celebration of Women in Computing, and more. She was chairwoman of the Agile Alliance board of directors for four years and has served the organization over a total of six years. Rebecca holds a BS in computer science and economics from Bradley University and both an MS and a PhD in computer science from Rice University.