O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Design It!

Book Description

Don't engineer by coincidence-design it like you mean it! Filled with practical techniques, Design It! is the perfect introduction to software architecture for programmers who are ready to grow their design skills. Lead your team as a software architect, ask the right stakeholders the right questions, explore design options, and help your team implement a system that promotes the right -ilities. Share your design decisions, facilitate collaborative design workshops that are fast, effective, and fun-and develop more awesome software!

With dozens of design methods, examples, and practical know-how, Design It! shows you how to become a software architect. Walk through the core concepts every architect must know, discover how to apply them, and learn a variety of skills that will make you a better programmer, leader, and designer.

Uncover the big ideas behind software architecture and gain confidence working on projects big and small. Plan, design, implement, and evaluate software architectures and collaborate with your team, stakeholders, and other architects. Identify the right stakeholders and understand their needs, dig for architecturally significant requirements, write amazing quality attribute scenarios, and make confident decisions. Choose technologies based on their architectural impact, facilitate architecture-centric design workshops, and evaluate architectures using lightweight, effective methods. Write lean architecture descriptions people love to read. Run an architecture design studio, implement the architecture you've designed, and grow your team's architectural knowledge. Good design requires good communication. Talk about your software architecture with stakeholders using whiteboards, documents, and code, and apply architecture-focused design methods in your day-to-day practice.

Hands-on exercises, real-world scenarios, and practical team-based decision-making tools will get everyone on board and give you the experience you need to become a confident software architect.

Table of Contents

  1.  Acknowledgments
  2.  Foreword
  3.  Welcome!
    1. Who Should Read This Book?
    2. How to Read This Book
    3. Online Resources
  4. Part I. Introducing Software Architecture
    1. 1. Become a Software Architect
      1. What Software Architects Do
      2. What Is Software Architecture?
      3. Become an Architect for Your Team
      4. Build Amazing Software
      5. Case Study: Project Lionheart
      6. Next Up
    2. 2. Design Thinking Fundamentals
      1. The Four Principles of Design Thinking
      2. Adopt a Design Mindset
      3. Think, Do, Check
      4. Next Up
  5. Part II. Architecture Design Fundamentals
    1. 3. Devise a Design Strategy
      1. Find a Design That Satisfices
      2. Decide How Much to Design Up Front
      3. Let Risk Be Your Guide
      4. Create a Design Plan
      5. Project Lionheart: The Story So Far…
      6. Next Up
    2. 4. Empathize with Stakeholders
      1. Talk to the Right People
      2. Create a Stakeholder Map
      3. Discover the Business Goals
      4. Project Lionheart: The Story So Far…
      5. Next Up
    3. 5. Dig for Architecturally Significant Requirements
      1. Limit Design Options with Constraints
      2. Define the Quality Attributes
      3. Look for Classes of Functional Requirements
      4. Find Out What Else Influences the Architecture
      5. Dig for the Information You Need
      6. Build an ASR Workbook
      7. Project Lionheart: The Story So Far…
      8. Next Up
    4. 6. Choose an Architecture (Before It Chooses You)
      1. Diverge to See Options, Converge to Decide
      2. Accept Constraints
      3. Promote Desired Quality Attributes
      4. Assign Functional Responsibilities to Elements
      5. Design for Change
      6. Project Lionheart: The Story So Far…
      7. Next Up
    5. 7. Create a Foundation with Patterns
      1. What Is an Architecture Pattern?
      2. Layers Pattern
      3. Ports and Adapters Pattern
      4. Pipe-and-Filter Pattern
      5. Service-Oriented Architecture Pattern
      6. Publish-Subscribe Pattern
      7. Shared-Data Pattern
      8. Multi-Tier Pattern
      9. Center of Competence Pattern
      10. Open Source Contribution Pattern
      11. Big Ball of Mud Pattern
      12. Discover New Patterns
      13. Project Lionheart: The Story So Far…
      14. Next Up
    6. 8. Manage Complexity with Meaningful Models
      1. Reason About the Architecture
      2. Design the Meta-Model
      3. Build Models into the Code
      4. Project Lionheart: The Story So Far…
      5. Next Up
    7. 9. Host an Architecture Design Studio
      1. Plan an Architecture Design Studio
      2. Choose Appropriate Design Activities
      3. Invite the Right Participants
      4. Manage the Group
      5. Work with Remote Teams
      6. Project Lionheart: The Story So Far…
      7. Next Up
    8. 10. Visualize Design Decisions
      1. Show the Architecture from Different Views
      2. Draw Fantastic Diagrams
      3. Project Lionheart: The Story So Far…
      4. Next Up
    9. 11. Describe the Architecture
      1. Tell the Whole Story
      2. Match the Description Method to the Situation
      3. Respect Your Audience
      4. Organize Views around Stakeholders’ Concerns
      5. Explain the Rationale for Your Decisions
      6. Project Lionheart: The Story So Far…
      7. Next Up
    10. 12. Give the Architecture a Report Card
      1. Evaluate to Learn
      2. Test the Design
      3. Host an Evaluation Workshop
      4. Evaluate Early, Evaluate Often, Evaluate Continuously
      5. Project Lionheart: The Story So Far…
      6. Next Up
    11. 13. Empower the Architects on Your Team
      1. Promote Architectural Thinking
      2. Facilitate Decision Making and Foster Skills Growth
      3. Create Opportunities for Safe Practice
      4. Delegate Design Authority
      5. Design Architecture Together
      6. Project Lionheart: The Epic Conclusion
      7. Next Up
  6. Part III. The Architect’s Toolbox
    1. 14. Activities to Understand the Problem
      1. Activity 1. Choose One Thing
      2. Activity 2. Empathy Map
      3. Activity 3. Goal-Question-Metric (GQM) Workshop
      4. Activity 4. Interview Stakeholders
      5. Activity 5. List Assumptions
      6. Activity 6. Quality Attribute Web
      7. Activity 7. Mini-Quality Attribute Workshop
      8. Activity 8. Point-of-View Mad Lib
      9. Activity 9. Response Measure Straw Man
      10. Activity 10. Stakeholder Map
    2. 15. Activities to Explore Potential Solutions
      1. Activity 11. Personify the Architecture
      2. Activity 12. Architecture Flipbook
      3. Activity 13. Component Responsibility Collaborator Cards
      4. Activity 14. Concept Map
      5. Activity 15. Divide and Conquer
      6. Activity 16. Event Storming
      7. Activity 17. Group Posters
      8. Activity 18. Round-Robin Design
      9. Activity 19. Whiteboard Jam
    3. 16. Activities to Make the Design Tangible
      1. Activity 20. Architecture Decision Records
      2. Activity 21. Architecture Haiku
      3. Activity 22. Context Diagram
      4. Activity 23. Greatest Hits Reading List
      5. Activity 24. Inception Deck
      6. Activity 25. Modular Decomposition Diagram
      7. Activity 26. Paths Not Taken
      8. Activity 27. Prototype to Learn or Decide
      9. Activity 28. Sequence Diagram
      10. Activity 29. System Metaphor
    4. 17. Activities to Evaluate Design Options
      1. Activity 30. Architecture Briefing
      2. Activity 31. Code Review
      3. Activity 32. Decision Matrix
      4. Activity 33. Observe Behavior
      5. Activity 34. Question--Comment--Concern
      6. Activity 35. Risk Storming
      7. Activity 36. Sanity Check
      8. Activity 37. Scenario Walkthrough
      9. Activity 38. Sketch and Compare
  7. A1. Community Contributor Bios
  8.  Bibliography