O'Reilly logo
live online training icon Live Online training

Software Architecture Foundations: Characteristics and Tradeoffs

Defining, Discovering, and Protecting Architecture

Topic: Software Development
Neal Ford

Software systems consist of designs to both satisfy requirements and architecture characteristics, also known as non-functional requirements. Identify and preserving architecture characteristics is a key responsibility for architects, yet many have an outdated perspective. New architecture styles encourage developers to rethink base assumptions from older mind sets and discover new ways to attack old problems. This online course illustrates three key concepts: architecture characteristics defined, how to discover/define them, and how to preserve them against inevitable change.

This course uses new tools and techniques, derived from Domain-driven Design and Building Evolutionary Architectures to rethink how to define and enforce architecture characteristics. It also provides new architecture metrics that allow architects to reconcile the granularity of designs like microservices, including a finer-grained way to think about architecture characteristics. It also discusses various ways to analyze the tradeoffs between different architecture characteristics. Architects need the ability to objectively and clearly define designs that incorporate architecture characteristics; this course provides the necessary resources.

What you'll learn-and how you can apply it

By the end of this live, hands-on, online course, you’ll understand:

  • The difference between requirements and architecture characteristics
  • Metrics used to define the scope of architecture characteristics
  • Mechanisms to ensure governance rules involving architecture characteristics

And you’ll be able to:

  • Discover architecture characteristics
  • Analyze tradeoffs between various architecture characteristics
  • Protect architecture characteristics against degradation

This training course is for you because...

  • You’re a new architect seeking to deepen knowledge
  • You’re a developer (or “accidental architect”) who needs foundational knowledge
  • You want to learn new techniques in architecture inspired by recent technology and technique advancements


  • Knowledge of the basics of software and software design
  • Basic experience as an architect or working with an architect
  • Knowledge of basic architecture characteristics

Recommended preparation:

Recommended follow-up:

About your instructor

  • Neal Ford is a director, software architect, and meme wrangler at ThoughtWorks, a software company and a community of passionate, purpose-led individuals who think disruptively to deliver technology to address the toughest challenges, all while seeking to revolutionize the IT industry and create positive social change. 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 seven books (and counting), a number of magazine articles, and dozens of video presentations and spoken at hundreds of developers conferences worldwide. His topics include software architecture, continuous delivery, functional programming, cutting-edge software innovations, and a business-focused book and video on improving technical presentations. Check out his website, Nealford.com.


The timeframes are only estimates and may vary according to how the class is progressing

(20 min) Defining architecture characteristics

  • Presentation: Defining architecture characteristics
  • Discussion: Difference between architecture characteristics and requirements
  • Q&A

(30 min) Modularity and architecture quantum

  • Presentation: Modularity, components, services, and architecture quantum
  • Exercise: Identify the architectural quantum
  • Presentation: Where architecture characteristics "live"
  • Exercise: scope of architecture characteristics
  • Q&A
  • (10 min break)

(30 min) Identifying architecture characteristics

  • Presentation: How to identify architecture characteristics
  • Discussion: How do architects fully describe architecture characteristics?
  • Presentation: example of extracting architecture characteristics
  • Exercise: Discover architecture characteristics in architecture kata
  • Q&A

(20 min) Protecting architecture characteristics

  • Presentation: evolutionary architecture fitness functions
  • Discussion: How can we make architecture characteristics testable?
  • Presentation: fitness functions as a governance mechanism
  • Exercise: fitness function katas
  • Q&A
  • (10 min break)

(30 min) Testable architecture characteristics

  • Presentation: Making architecture characteristics objective via fitness functions
  • Exercise: architecture characteristics fitness function for architecture kata problem
  • Q&A

(20 min) Analyzing tradeoffs

  • Presentation: documenting tradeoffs
  • Discussion: How can we analyze tradeoffs between different architecture characteristics?
  • Presentation: FFDA (fitness function driven architecture)
  • Exercise: T-shirt sizing of architecture characteristics
  • Q&A

(10 min) Overall Q&A