Skip to content

Vol 6: Software Engineering and Design Patterns ​

This volume asks whether software remains understandable, testable, and deliverable after several rounds of change. Requirements, contracts, tests, and architecture belong in the same discussion. Design patterns enter when there is a specific change to handle; every class does not need a grand job title.

Prerequisites ​

  • Be able to write a small program with several functions or classes and save changes with Git. Volume 1 and Volume 0 cover those foundations.
  • The service, messaging, and consistency lessons assume basic HTTP and transaction knowledge. Consult Volume 4 and Volume 5 as needed.

Coverage ​

Chapters 1–6 connect requirements, code, and delivery through feedback. Chapters 7–10 cover design principles and patterns; Chapters 11–17 cover architecture, services, messaging, and deployment. The final three examine AI systems, API contracts, and domain modeling.

Chapter 1 ​

Chapter 2 ​

Chapter 3 ​

Chapter 4 ​

Chapter 5 ​

Chapter 6 ​

Chapter 7 ​

Chapter 8 ​

Chapter 9 ​

Chapter 10 ​

Chapter 11 ​

Chapter 12 ​

Chapter 13 ​

Chapter 14 ​

Chapter 15 ​

Chapter 16 ​

Chapter 17 ​

Chapter 18 ​

Chapter 19 ​

Chapter 20 ​

Outcomes ​

  • Turn vague requirements into checkable behavior and choose tests that expose consequential errors.
  • Choose abstractions, patterns, and module boundaries based on how code needs to change, then verify small refactoring steps.
  • Analyze failures during service extraction, message delivery, and deployment, and design ways to recover and verify the result.

How to use this map ​

Bring a small project of your own to Chapters 1–6 and revise it as you read. Before looking up a pattern, describe what currently makes the code hard to change, then see whether Chapters 7–10 help. For service extraction, API changes, or duplicate messages, jump to the later chapters. Aim to explain the cost of your choice as well as the pattern name.

Built with VitePress | Software Systems Atlas