Head First Software Architecture

Book description

What will you learn from this book?

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.

Why does this book look so different?

Based on the latest research in cognitive science and learning theory, Head First Software Architecture uses a visually rich format to engage your mind, rather than a text-heavy approach that puts you to sleep. Why waste your time struggling with new concepts? This multisensory learning experience is designed for the way your brain really works.

Publisher resources

View/Submit Errata

Table of contents

  1. O’Reilly Books
  2. Authors of Head First Software Architecture
  3. Table of Contents (the real thing)
  4. How to use this Book: Intro
    1. Who is this book for?
      1. Who should probably back away from this book?
    2. We know what you’re thinking
      1. We know what your brain is thinking
      2. This must be important! Don’t forget it!
    3. Metacognition: Thinking about thinking
      1. So just how DO you get your brain to treat software architecture like it’s a hungry tiger?
    4. Here’s what WE did
    5. Here’s what YOU can do to bend your brain into submission
      1. Read me
      2. We break things down, then build them back again.
      3. We don’t exhaustively cover everything.
      4. The activities are NOT optional.
      5. The redundancy is intentional and important.
      6. The examples are as generic as possible.
      7. The Brain Power exercises don’t always have answers.
      8. O’Reilly online learning
    6. Do it yourself chapters
    7. The technical review team
    8. Joint acknowledgments
    9. Individual acknowledgments
  5. 1. Software Architecture Demystified: Let’s Get Started!
    1. Building your understanding of software architecture
    2. Building plans and software architecture
    3. The dimensions of software architecture
    4. Puzzling out the dimensions
    5. The first dimension: Architectural characteristics
    6. The second dimension: Architectural decisions
    7. The third dimension: Logical components
    8. The fourth dimension: Architectural styles
    9. A design perspective
    10. An architectural perspective
    11. The spectrum between architecture and design
    12. Where along the spectrum does your decision fall?
      1. Is it strategic or tactical?
      2. How much effort will it take to construct or change?
      3. Does it have significant trade-offs?
    13. Strategic versus tactical
    14. High versus low levels of effort
    15. Code Magnets
    16. Significant versus less-significant trade-offs
    17. Putting it all together
    18. You made it!
    19. Software Architecture Crossword
    20. Code Magnets Solution
    21. Software Architecture Crossword Solution
  6. 2. Architectural Characteristics: Know Your Capabilities
    1. Causing Lafter
    2. Cubicle conversation
    3. What are architectural characteristics?
    4. Defining architectural characteristics
    5. Characteristics are nondomain design considerations
    6. Characteristics influence architectural structure
    7. Limit characteristics to prevent overengineering
    8. Consider explicit and implicit capabilities
    9. The International Zoo of “-ilities”
    10. Process architectural characteristics
    11. Structural architectural characteristics
    12. Operational architectural characteristics
    13. Cross-cutting architectural characteristics
    14. Sourcing architectural characteristics from the problem domain
    15. Sourcing architectural characteristics from environmental awareness
    16. Sourcing architectural characteristics from holistic domain knowledge
    17. Composite architectural characteristics
    18. Priorities are contextual
    19. Lost in translation
    20. Architectural characteristics and logical components
      1. Architectural characteristics ≈ capabilities
      2. Logical components = behavior
    21. Balancing domain considerations and architectural characteristics
    22. Limiting architectural characteristics
      1. The magical number 7
    23. Characteristics Crossword
    24. Characteristics Crossword Solution
  7. 3. The Two Laws of Software Architecture: Everything’s a Trade-Off
    1. It starts with a sneaker app
    2. What do we know so far?
    3. Communicating with downstream services
    4. Analyzing trade-offs
    5. Trade-off analysis: Queue edition
    6. Trade-off analysis: Topic edition
    7. The first law of software architecture
    8. It always comes back to trade-offs
    9. Making an architectural decision
    10. What else makes a decision architectural?
    11. The second law of software architecture
    12. Architectural decision records (ADRs)
    13. Cubicle conversation
    14. Writing ADRs: Getting the title right
    15. Writing ADRs: What’s your status?
    16. Writing ADRs: What’s your status? (recap)
    17. Writing ADRs: Establishing the context
    18. Writing ADRs: Communicating the decision
    19. Writing ADRs: Considering the consequences
    20. Writing ADRs: Ensuring governance
    21. Writing ADRs: Closing notes
    22. The benefits of ADRs
    23. Two Many Sneakers is a success
    24. “Two Laws” Crossword
    25. “Two Laws” Crossword Solution
  8. 4. Logical Components: The Building Blocks
    1. Logical components revisited
    2. Adventurous Auctions goes online
    3. Logical versus physical architecture
    4. Creating a logical architecture
    5. Step 1: Identifying initial core components
    6. Workflow approach
    7. Actor/action approach
    8. The entity trap
    9. Step 2: Assign requirements
    10. Step 3: Analyze roles and responsibilities
    11. Sticking to cohesion
    12. Step 4: Analyze characteristics
    13. The Bid Capture component
    14. Component coupling
    15. Afferent coupling
    16. Efferent coupling
    17. Measuring coupling
    18. A tightly coupled system
    19. Applying the Law of Demeter
    20. A balancing act
    21. Some final words about components
    22. Logical Components Crossword
    23. Logical Components Crossword Solution
  9. 5. Architectural Styles: Categorization and Philosophies
    1. There are lots of architectural styles
    2. The world of architectural styles
    3. Partitioning: Technical versus domain
    4. Deployment model: Monolithic versus distributed
    5. Monolithic deployment models: The pros
    6. Monolithic: The cons
    7. Distributed deployment models: The pros
    8. Distributed deployment models: The cons
    9. Fireside Chats
    10. And that’s a wrap!
    11. Stylin’ Architectures Crossword
    12. Stylin’ Architectures Crossword Solution
  10. 6. Layered Architecture: Separating Concerns
    1. Naan & Pop: Gathering requirements
    2. Cubicle conversation
    3. Design patterns redux
    4. Layering MVC
    5. Layering it on
    6. Translating layers into code
    7. Domains, components, and layers
    8. Drivers for layered architecture
    9. Layers, meet the real world: Physical architectures
    10. Physical architecture trade-offs
    11. Cubicle conversation
    12. One final caveat about domain changes
    13. Layered architecture superpowers
    14. Layered architecture kryptonite
    15. Layered architecture star ratings
    16. Wrapping it up
    17. Layered Architecture Crossword
    18. Layered Architecture Crossword Solution
  11. 7. Modular Monoliths: Driven by the Domain
    1. Cubicle conversation
    2. Modular monolith?
    3. Domain pains changes
    4. Why modular monoliths?
    5. Show me the code!
    6. Cubicle conversation, continued...
    7. Keeping modules modular
    8. Keeping modules modular (last time!)
    9. Taking modularity all the way to the database
    10. Beware of joins
    11. Modular monolith superpowers
    12. Modular monolith kryptonite
    13. Modular monolith star ratings
    14. Naan & Pop is delivering pizza!
    15. Modular Monolith Crossword
    16. Modular Monolith Crossword Solution
  12. 8. Microkernel Architecture: Crafting Customizations
    1. The benefits of Going Green
    2. Cubicle conversation
    3. The two parts of microkernel architectures
    4. The spectrum of “microkern-ality”
    5. Device assessment service core
    6. Encapsulated versus distributed plugins
    7. Plugin communication
    8. Cubicle conversation
    9. Plugin contracts
    10. Going Green goes green
    11. Microkernel superpowers
    12. Microkernel kryptonite
    13. Microkernel star ratings
    14. Wrapping it up
    15. Microkernel Crossword
    16. Microkernel Crossword Solution
  13. 9. Do It Yourself: The TripEZ Travel App
    1. Making travel easier
    2. TripEZ’s user workflow
    3. Planning the architecture
    4. The architects’ roadmap
    5. Step 1: Identify architectural characteristics
    6. Step 2: Identify logical components
    7. Step 3: Choose an architectural style
    8. Step 4: Document your decision
    9. Step 5: Diagram your architecture
    10. There are no right (or wrong) answers
  14. 10. Microservices Architecture: Bit by Bit
    1. Are you feeling okay?
    2. Cubicle conversation
    3. What’s a microservice?
    4. It’s my data, not yours
    5. How micro is “micro”?
    6. Granularity disintegrators
    7. Why should you make microservices smaller?
    8. Granularity integrators
    9. Why should you make microservices bigger?
    10. It’s all about balance
    11. Sharing functionality
    12. Code reuse with a shared service
    13. Code reuse with a shared library
    14. Fireside Chats
    15. Managing workflows
    16. Orchestration: Conducting microservices
    17. Choreography: Let’s dance
    18. Microservices architecture superpowers
    19. Microservices architecture kryptonite
    20. Microservices star ratings
    21. Wrapping it up
    22. Microservices Crossword
    23. Microservices Crossword Solution
  15. 11. Event-Driven Architecture: Asynchronous Adventures
    1. Too slow
    2. Speeding things up
    3. Der Nile flows faster than ever
    4. What is an event?
    5. Events versus messages
    6. Initiating and derived events
    7. Is anyone listening?
    8. Asynchronous communication
    9. Fireside Chats
    10. Fire-and-forget
    11. Asynchronous for the win
    12. Synchronous for the win
    13. Database topologies
    14. Monolithic database
    15. Monolithic database topology scorecard
    16. Domain-partitioned databases
    17. Domain-partitioned databases topology scorecard
    18. Database-per-service
    19. Database-per-service topology scorecard
    20. EDA versus microservices
    21. Hybrids: Event-driven microservices
    22. Event-driven architecture superpowers
    23. Event-driven architecture kryptonite
    24. Event-driven architecture star ratings
    25. Putting it all together
    26. Wrapping up
    27. Event-Driven Crossword
    28. Event-Driven Crossword Solution
  16. 12. Do It Yourself: Testing Your Knowledge
    1. Welcome to Make the Grade
    2. Student testing workflow
    3. Planning the architecture
    4. The architects’ roadmap
    5. Step 1: Identify architectural characteristics
    6. Step 2: Identify logical components
    7. Step 3: Choose an architectural style
    8. Step 4: Document your decision
    9. Step 5: Diagram your architecture
    10. There are no right (or wrong) answers!
  17. A. Leftovers: The Top Six Topics We Didn’t Cover
    1. #1 The coding architect
    2. #2 Expectations for architects
    3. #3 The soft skills of architecture
    4. #4 Diagramming techniques
    5. #5 Knowledge depth versus breadth
    6. #6 Practicing architecture with katas
    7. How to run katas
      1. Preparation
      2. Discussion
      3. Presentation
    8. Don’t worry. This isn’t goodbye.
  18. Index

Product information

  • Title: Head First Software Architecture
  • Author(s): Raju Gandhi, Mark Richards, Neal Ford
  • Release date: March 2024
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781098134358