Software architecture by example
Learn how to apply the fundamentals through real-world examples
Software architecture is a participation sport. While you can learn a great deal about practices, patterns, coupling, cohesion, and all the other facets of software architecture, you don’t really understand them until you put them in practice.
In this four-hour intensive course, Mark Richards and Neal Ford—software architects and the authors of numerous books and videos, including the popular video training course series Software Architecture Fundamentals—lead you on a guided exploration of software architecture, helping you make architectural concepts concrete through hands-on exercises. You'll learn how to identify architectural requirements, analyze architecture trade-offs, work with key architectural components, select the right architecture patterns, and diagram and document the results, all within the context of real-world examples.
What you'll learn-and how you can apply it
By the end of this live, hands-on, online course, you’ll understand:
- How to identify architecture characteristics (“-ilities”) within a given context
- How to test architecture characteristics via fitness functions
- When to choose particular software architecture styles and patterns
- The overall steps and techniques for building an architecture
And you’ll be able to:
- Identify and design architectural components
- Analyze and select the right architecture patterns
- Diagram and document an architectural solution
- Immediately apply the techniques learned in this course to your own projects
- Better communicate architecture decisions to developers and stakeholders
This training course is for you because...
- You're a senior-level developer who wants to learn how to effectively create and communicate an architecture.
- You're a practicing software architect who wants to hone your skills and learn new software architecture techniques and practices.
- You're responsible for creating a software architecture for your company, and you want to make the right choices.
- You want a more complete picture of how to create software architectures.
About your instructor
Mark Richards is an experienced, hands-on software architect involved in the architecture, design, and implementation of microservices architectures, service-oriented architectures, and distributed systems in a variety of technologies. He has been in the software industry since 1983 and has significant experience and expertise in application, integration, and enterprise architecture. Mark served as the president of the New England Java Users Group from 1999 through 2003. He is the author of numerous technical books and videos, including the Software Architecture Fundamentals Video Series (O’Reilly video), Enterprise Messaging (O’Reilly video), Java Message Service, 2nd Edition (O’Reilly), and several books and videos on Microservices (O’Reilly). Mark is also a conference speaker and trainer and has spoken at hundreds of conferences and user groups around the world on a variety of enterprise-related technical topics.
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
Introduction (10 minutes)
- Lecture: Techniques for creating software architectures; real-world examples; introduction to example architecture katas
- Discussion: Common architectural challenges
Architecture characteristics (“-ilities”) (20 minutes)
- Lecture and hands-on exercises: Extracting and qualifying characteristics from problem context; primary versus secondary characteristics; architecture trade-off analysis; verifying and governing architecture characteristics via fitness functions; determining architectural characteristics
- Discussion: Architecture characteristics versus requirements
Architecture component design (30 minutes)
- Lecture and hands-on exercises: Component and service identification, granularity, coupling, and cohesion; iterative component creation; building components
- Discussion: What is the appropriate component granularity?
- Break (10 minutes)
Selecting architecture patterns (60 minutes)
- Lecture and hands-on exercises: Comparing architecture patterns; analyzing pattern characteristics; problem context to architecture pattern mapping; selecting the right architecture pattern; architecture pattern hybrids; selecting architectural patterns
- Discussion: How do you choose the appropriate pattern(s)?
- Break (10 minutes)
Diagramming architectures (20 minutes)
- Lecture and hands-on exercises: General diagramming techniques; leveraging the C4 diagramming technique; diagramming through code; diagramming solutions two ways
- Discussion: How much diagramming is appropriate? What's the sweet spot?
Documenting software architecture (20 minutes)
- Lecture and hands-on exercises: Identifying architecture decisions; justifying decisions; leveraging architecture decision records (ADRs); communicating software architectural decisions; documenting architectural decisions
- Discussion: What should you document? In what level of detail?