Hands-on software architecture fundamentals

One of the primary skills an architect must have is the ability to create, document, and communicate software architectures. Unfortunately, too many architects lack proficiency in this skill, ultimately resulting in applications that don’t meet the needs of the business.

This three-day hands-on architecture workshop provides you with the knowledge and skills necessary to effectively create, document, and present software architectures. Through interactive course materials and architecture exercises, this course teaches how to analyze your business and technical needs, select the right architecture style and pattern, define architectural components, and effectively diagram and document your software architecture.

Through interactive exercises you learn how to identify key architectural characteristics that shape your software architecture. Using those characteristics, you then learn how to analyze and use various architecture patterns and styles to make intelligent choices to determine which architecture style best suits your particular needs.

While knowing what architecture pattern best fits your situation is critical to the success of your architecture, that is only the start. Creating an architecture is also about the ability to identify and define architectural componentsthe building blocks of any software architecture. In this workshop you also learn how to identify architectural components and iteratively refine the granularity of those components. You also learn about component coupling and cohesion and the important role they play in creating and maintaining an architecture.

In addition, you learn evolutionary architecture techniques that help evolve your architecture over time to allow flexibility in the face of constant change. Through interactive exercises you also learn how to effectively diagram your architecture, document your architecture, and finally present your architecture to key stakeholders as well as developers.

This workshop is designed to be technology-agnostic, so all of the materials presented apply to any platform or language.

Day 1

  • Workshop logistics and introductions
  • Identifying architecture characteristics
  • Exercise: Architecture characteristic kata
  • Understanding monolithic architecture patterns
    • Layered
    • Pipeline
    • Microkernel
  • Understanding distributed architecture patterns
    • Microservices
    • Service-Oriented
    • Service-based
    • Event Driven
    • Space-based

Day 2

  • Domain-specific architecture patterns
    • CQRS
    • LMAX
  • Exercise: choosing proper pattern kata
  • Creating hybrid architecture patterns
  • Identifying architectural components
  • Refining component granularity
  • Exercise: defining components
  • Understanding component coupling
  • Understanding component cohesion

Day 3

  • Diagramming software architecture
  • Documenting software architecture
  • Presenting software architecture
  • Exercise: present your architecture solution
  • Building evolutionary architectures
  • Exercise: define fitness functions to protect architecture characteristics
  • Composite architectures
    • Building reactive architectures with simple event queues
    • Hybrid service/microservice architectures
    • Migrating between architectures

Neal Ford

Neal Ford

Neal is a director, software architect, and meme wrangler at ThoughtWorks, a global IT consultancy with an exclusive focus on end-to-end software development and delivery. He is also the designer and developer of applications, magazine articles, video/DVD presentations, and author and/or editor of eight books spanning a variety of subjects and technologies, including Presentation Patterns and Functional Thinking. He focuses on designing and building large-scale enterprise applications. He is also an internationally acclaimed speaker, and has delivered more than 2000 presentations at over 300 software conferences in the UK, USA, Germany, Brazil, Norway, and various other countries.

Follow Neal on Twitter