Software Architecture Foundations: Characteristics and Tradeoffs
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 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
- 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
- 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)
About your instructor
Neal Ford is Director, Software Architect, and Meme Wrangler at ThoughtWorks, a software company and a community of passionate, purpose-led individuals, who thinks disruptively to deliver technology to address the toughest challenges, all while seeking to revolutionize the IT industry and create positive social change. Before joining ThoughtWorks, Neal was the Chief Technology Officer at The DSW Group, Ltd., a nationally recognized training and development firm.
Neal has a degree in Computer Science from Georgia State University specializing in languages and compilers and a minor in mathematics specializing in statistical analysis. He is an internationally recognized expert on software development and delivery, especially in the intersection of agile engineering techniques and software architecture. Neal authored magazine articles, seven books (and counting), 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 includes a business-focused book and video in improving technical presentations. His primary consulting focus is the design and construction of large-scale enterprise applications. If you have an insatiable curiosity about Neal, visit his web site at 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
(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
- (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
(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
- (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
(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
(10 min) Overall Q&A