Software Architecture Characteristics: Defining, Discovering, and Protecting Architecture
Published by O'Reilly Media, Inc.
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:
- Take Software architecture by example (live online training course with Mark Richards and Neal Ford)
- Review portions of Software Architecture Fundamentals (video, 9h 36m) to fill in any knowledge gaps
Recommended follow-up:
- Comparing service-based architectures (live online training course with Neal Ford)
- Microservices Architecture and Design (live online training course with Mark Richards)
- Microservice fundamentals (live online training course with Sam Newman)
- Domain-driven design and event-driven microservices (live online training course with Matt Stine)
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
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.