Notes on "Fundamentals-of-Software-Architecture"

by Mark Richards and Neal Ford

I, Petar Nikov, own this book and took these notes to further my own learning. If you enjoy these notes, please purchase the book!

Chapter 1. Introduction

Architecture is about the important stuff…whatever that is.

-- Ralph Johnson

  • You can not describe a system solely by it's structure, knowledge of the architecture characteristics, architecture decisions, and design principles is also needed to fully understand the architecture of the system.
    • The architecture characteristics define the success criteria of a system
    • Architecture decisions define the rules for how a system should be constructed ( variance and variance models )
    • A design principle differs from an architecture decision in that a design principle is a guideline rather than a hard-and-fast rule.

Expectations from SA

  • Make Architecture Decisions

    Guide should guide rather than specify technology choices

  • Continually Analyze the Architecture

  • Keep Current with Latest Trends

  • Ensure Compliance with Decisions

  • Diverse Exposure and Experience

  • Have Business Domain Knowledge

  • Possess Interpersonal Skills

    be able to solve not only technical problems

  • Understand and Navigate Politics

…because as we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns—the ones we don’t know we don’t know.

-- Former United States Secretary of Defense Donald Rumsfeld

Laws of Software Architecture

  • Everything is a tradeoff
  • Why is more important than how.