Skip to Content
View all events

Software Architecture Characteristics: Defining, Discovering, and Protecting Architecture

Published by O'Reilly Media, Inc.

Intermediate content levelIntermediate

Defining, Discovering, and Protecting Architecture

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 live event 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

Prerequisites

  • 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:

Schedule

The time frames 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

Your Instructors

  • Neal Ford

    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’s authored several books, a number of magazine articles, and dozens of video presentations (including a video on improving technical presentations) and spoken at hundreds of developer conferences worldwide. His topics of interest include software architecture, continuous delivery, functional programming, and cutting-edge software innovations. Check out his website, Nealford.com

    Xlinksearch
  • Raju Gandhi

    Raju Gandhi is the founder of DefMacro Software as well as a consultant, author, teacher, and speaker at conferences around the world. As a software developer and teacher, he believes in keeping things simple, preferring to understand and explain the “why” as opposed to the “how.” Raju blogs at LooselyTyped.com and lives in Ohio with his wife, Michelle, their three children, Mason, Micah, and Delphine, and furry family members Buddy, Skye, and Princess Zara. Find his contact information at Rajugandhi.com. He’s always looking to make new friends.

    linkedinXlinksearch

Skill covered

Software Architecture