If you're a software developer looking for a quick on-ramp to software architecture, this handy guide is a great place to start. From the authors of Fundamentals of Software Architecture, Head First Software Architecture teaches you how to think architecturally and explores the unique challenges of software architecture. You'll learn the distinction between architecture and design and the relationship between code, components, and architectural styles. You'll also learn how to work with some common architectural styles through vivid, fun examples. Quick, easy, and entertaining, this book is a valuable introduction to the world of software architecture.
Author(s): Raju Gandhi, Mark Richards, and Neal Ford
Edition: 3
Publisher: O'Reilly Media, Inc.
Year: 2023
Language: English
Pages: 550
1. Software Architecture Demystified: Let’s Get Started!
Building your understanding of software architecture
Building plans and software architecture
The dimensions of software architecture
Puzzling out the dimensions
Everything is interconnected.
The first dimension: Architectural characteristics
The second dimension: Architectural decisions
BE the architect
The third dimension: Logical components
The fourth dimension: Architectural styles
No, architecture and design are different.
A design perspective
An architectural perspective
The spectrum between architecture and design
Where along the spectrum does your decision fall?
Is it strategic or tactical?
How much effort will it take to construct or change?
Does it have significant trade-offs?
Strategic versus tactical
High versus low levels of effort
Code Magnets
Significant versus less significant trade-offs
Putting it all together
You made it!
Software Architecture Crossword
BE the architect solution
Code Magnets Solution
Software Architecture Crossword Solution
2. Architectural Characteristics: Putting the “Function” into Nonfunctional
Laffter, the best medicine?
Cubicle Conversation
What are architectural characteristics?
Defining architectural characteristics
Part 1: A non-domain design consideration
Part 2: An influence on the structure
Part 3: Important
Overengineering is Too Easy
Explicit versus implicit
The International Zoo of “—ilities”
Process architectural characteristics
Structural architectural characteristics
Operational architectural characteristics
Cross-cutting architectural characteristics
The problem domain
Environmental awareness
Holistic domain knowledge
Solution versus problem
Composite architectural characteristics
Priorities are Contextual
Congratulations, you have yet another job.
Lost in Translation
More requirements are NOT better.
Balancing domain and architectural characteristics
Limiting architectural characteristics
The Magic Number 7
3. Everything’s a Trade-off: The Two Laws of Software Architecture
It starts with a sneaker app
What do we know so far?
Having the trading service communicate with downstream services
Analyzing trade-offs
Trade-off analysis: Queue edition
Trade-off analysis: Topic edition
The first law of software architecture
It always comes back to trade-offs
Making an architectural decision
What else makes a decision architectural?
The second law of software architecture
Architectural Decision Records (ADRs)
Cubicle conversation
Writing ADRs: Getting the title right
Writing ADRs: What’s your status?
Writing ADRs: What’s your status? (recap)
Writing ADRs: Establishing the context
Writing ADRs: Writing the decision
Writing ADRs: Considering the consequences
Writing ADRs: Ensuring governance
Writing ADRs: Closing notes
The benefits of ADRs
Two Many Sneakers is a success
The “two laws” crossword
The “two laws” crossword solution
4. Logical Components: The building blocks
Logical components revisited
Adventurous Auctions goes online
Here’s what the new system needs to do:
Logical versus physical architecture
Creating a logical architecture
Step 1: Identifying initial core components
Workflow approach
Actor/Action approach
The entity trap
Step 2: Assigning requirements
Step 3: Analyze Roles and Responsibilities
Sticking to cohesion
Step 4: Analyze characteristics
BE the architect
Our solution...
Component coupling
Afferent coupling
Efferent coupling
Measuring Static Coupling
Law of Demeter
Law of Demeter Applied
Too much knowledge?
A balancing act
Some final words about components
Software Architecture Crossword
Head First Software Architecture, Chapter 4
Head First Software Architecture, Chapter 4