Design It!
Book Description
Design It!
From Programmer to Software Architect
by Michael Keeling
About the Pragmatic Bookshelf
New Book Announcements
About Ebook Formats
Table of Contents
Early praise for Design It!
Acknowledgments
Foreword
Welcome!
Who Should Read This Book?
How to Read This Book
Community Tips and Advice
Case Study
Get Your Hands Dirty Exercises
Online Resources
Footnotes
Part 1 Introducing Software Architecture
Chapter 1 Become a Software Architect
What Software Architects Do
Define the Problem from an Engineering Perspective
Partition the System and Assign Responsibilities
Keep an Eye on the Bigger Picture
Decide Trade-offs among Quality Attributes
Manage Technical Debt
Grow the Team’s Architecture Skills
What Is Software Architecture?
Define the Essential Structures
Get Your Hands Dirty: Elements, Relations, and Structures
Reason about Quality Attributes (and Other System Properties)
Become an Architect for Your Team
Make the Move from Programmer to Software Architect
Build Amazing Software
Case Study: Project Lionheart
Design an Architecture to Solve This Problem
Next Up
Footnotes
Chapter 2 Design Thinking Fundamentals
The Four Principles of Design Thinking
Design for Humans
Preserve Ambiguity
Design Is Redesign
Make the Architecture Tangible
Adopt a Design Mindset
Understand the Problem
Explore Ideas
Make It Real
Evaluate Fit
Think, Do, Check
Iterate to Learn
Adopt Mindsets in Any Order
Plot Your Course: Think-Do-Check and Mindsets in Action
Next Up
Part 2 Architecture Design Fundamentals
Chapter 3 Devise a Design Strategy
Find a Design That Satisfices
Decide How Much to Design Up Front
Find the Design Sweet Spot
Example: Impact of Architecture on Total Schedule
Let Risk Be Your Guide
Identify Conditions and Consequences
Use Risk to Choose a Design Mindset
Shift to Passive Design Once Risks Are Reduced
Create a Design Plan
Project Lionheart: The Story So Far…
Next Up
Footnotes
Chapter 4 Empathize with Stakeholders
Talk to the Right People
Create a Stakeholder Map
Discover the Business Goals
Record Business Goal Statements
Help Stakeholders Share Their Business Goals
Project Lionheart: The Story So Far…
Next Up
Footnotes
Chapter 5 Dig for Architecturally Significant Requirements
Limit Design Options with Constraints
Capture Constraints as Simple Statements
Define the Quality Attributes
Capture Quality Attributes as Scenarios
Strive for Specific and Measurable Response Measures
Look for Classes of Functional Requirements
Find Out What Else Influences the Architecture
Learn to Live with Conway’s Law
Dig for the Information You Need
Build an ASR Workbook
Project Lionheart: The Story So Far…
Next Up
Chapter 6 Choose an Architecture (Before It Chooses You)
Diverge to See Options, Converge to Decide
Explore the Architecturally Significant Things
Accept Constraints
Promote Desired Quality Attributes
Explore Patterns with Quality Attributes in Mind
Create a Decision Matrix
Assign Functional Responsibilities to Elements
Design for Change
Defer Binding Decisions until the Most Responsible Moment
Move Design Decisions out of the Architecture
Project Lionheart: The Story So Far…
Next Up
Footnotes
Chapter 7 Create a Foundation with Patterns
What Is an Architecture Pattern?
Layers Pattern
Ports and Adapters Pattern
Pipe-and-Filter Pattern
Service-Oriented Architecture Pattern
Publish-Subscribe Pattern
Shared-Data Pattern
Multi-Tier Pattern
Center of Competence Pattern
Open Source Contribution Pattern
Big Ball of Mud Pattern
Discover New Patterns
Project Lionheart: The Story So Far…
Next Up
Footnotes
Chapter 8 Manage Complexity with Meaningful Models
Reason About the Architecture
Design the Meta-Model
Individuate New Concepts
Pick a Pattern to Seed the Architecture
Reconcile Inconsistencies
Use Good Names
Build Models into the Code
Apply the Vocabulary of the Architecture
Organize Code to Make Patterns Obvious
Enforce Relations Among Elements
Module Structures
Component and Connector Structures
Allocation Structures
Add Hints as Comments
Generate Models from Code
Project Lionheart: The Story So Far…
Next Up
Footnotes
Chapter 9 Host an Architecture Design Studio
Plan an Architecture Design Studio
Before the Workshop: Prepare
Kick Off the Workshop
Iterate through the Create-Share-Critique Cycle
Create
Share
Critique
Iterate
Close the Design Studio and Decide on Follow-up Actions
Choose Appropriate Design Activities
Get Your Hands Dirty: Sketching Practice
Invite the Right Participants
Right-Size the Workshop
Invite a Diverse Audience
Harness the Power of Groups Wisely
Manage the Group
Allow Enough Time for the Workshop
Set Expectations from the Start
Introduce Activities with the Tell-Show-Tell Approach
Share Tips for Activities
Set Deadlines
Educate Participants Just-in-Time
Use Parking Lots
Work with Remote Teams
Project Lionheart: The Story So Far…
Next Up
Footnotes
Chapter 10 Visualize Design Decisions
Show the Architecture from Different Views
Tell Us What Elements Do with an Element-Responsibility View
Zoom In or Out with a Refinement View
Show How the Architecture Promotes Quality Attributes
Connect Elements from Different Views
Let Ideas Breathe with a Cartoon
Create Custom Views to Show Exactly What You Need
Draw Fantastic Diagrams
Use the Legend, Don’t Just Include a Legend
Highlight the Patterns
Strive for Consistency and Simplicity
Provide Descriptive Prose
Get Your Hands Dirty: Critique Some Diagrams
Project Lionheart: The Story So Far…
Next Up
Footnotes
Chapter 11 Describe the Architecture
Tell the Whole Story
Match the Description Method to the Situation
Create an Oral History with Tribal Methods
Reach Further with Communal Methods
Invest in Formal Descriptions Only When Required
Create a Traditional Software Architecture Description
Avoid Wasting Time
Respect Your Audience
Focus on Understandability
Organize Views around Stakeholders’ Concerns
Establish the Viewpoints
Create Custom Viewpoints
Explain the Rationale for Your Decisions
Describe the Paths Not Taken
Get Your Hands Dirty: Describe the Paths Not Taken for a Project
Project Lionheart: The Story So Far…
Next Up
Footnotes
Chapter 12 Give the Architecture a Report Card
Evaluate to Learn
Test the Design
Make Something to Evaluate
Define a Design Rubric
Select Criteria Based on Architecturally Significant Requirements
Decide the Rating Scale for Criteria
Generate Insights
Get Your Hands Dirty: Ask Seven Good Questions
Host an Evaluation Workshop
Prepare for the Evaluation
Prime the Reviewers
Facilitate the Assessment
Analyze Data and Reach Conclusions
Decide on Follow-up Actions
Evaluate Early, Evaluate Often, Evaluate Continuously
Balance Cost and Value with the Evaluation Pyramid
Look for Different Kinds of Issues
Start with Low Ceremony Evaluation Methods
Project Lionheart: The Story So Far…
Next Up
Footnotes
Chapter 13 Empower the Architects on Your Team
Promote Architectural Thinking
Facilitate Decision Making and Foster Skills Growth
Create Opportunities for Safe Practice
Pair Design
Create Scaffolding
Introduce Architectural Guide Rails
Host Information Sessions
Delegate Design Authority
When to Keep Design Authority
When to Give Away Design Authority
Design Architecture Together
Project Lionheart: The Epic Conclusion
Next Up
Footnotes
Part 3 The Architect’s Toolbox
Chapter 14 Activities to Understand the Problem
Activity 1 Choose One Thing
Benefits
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Alternatives
Activity 2 Empathy Map
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Alternatives
Activity 3 Goal-Question-Metric (GQM) Workshop
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 4 Interview Stakeholders
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 5 List Assumptions
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 6 Quality Attribute Web
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 7 Mini-Quality Attribute Workshop
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Brainstorm and Prioritize Raw Scenarios
Start Scenario Refinement
Verify Findings with Stakeholders
Alternatives
Activity 8 Point-of-View Mad Lib
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Alternatives
Design Hills
Traditional Business Goal Statement
Activity 9 Response Measure Straw Man
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 10 Stakeholder Map
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Footnotes
Chapter 15 Activities to Explore Potential Solutions
Activity 11 Personify the Architecture
Benefits
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 12 Architecture Flipbook
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Alternatives
Activity 13 Component Responsibility Collaborator Cards
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 14 Concept Map
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Alternatives
Activity 15 Divide and Conquer
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 16 Event Storming
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Alternatives
Activity 17 Group Posters
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 18 Round-Robin Design
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 19 Whiteboard Jam
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Footnotes
Chapter 16 Activities to Make the Design Tangible
Activity 20 Architecture Decision Records
Benefits
Description
Guidelines and Hints
Example
Activity 21 Architecture Haiku
Benefits
Description
Guidelines and Hints
Example
Activity 22 Context Diagram
Benefits
Description
Guidelines and Hints
Example
Activity 23 Greatest Hits Reading List
Benefits
Description
Guidelines and Hints
Example
Activity 24 Inception Deck
Benefits
Description
Guidelines and Hints
Example
Activity 25 Modular Decomposition Diagram
Benefits
Description
Guidelines and Hints
Example
Activity 26 Paths Not Taken
Benefits
Description
Guidelines and Hints
Example
Activity 27 Prototype to Learn or Decide
Benefits
Description
Guidelines and Hints
Example
Activity 28 Sequence Diagram
Benefits
Description
Guidelines and Hints
Example
Activity 29 System Metaphor
Benefits
Description
Guidelines and Hints
Example
Footnotes
Chapter 17 Activities to Evaluate Design Options
Activity 30 Architecture Briefing
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 31 Code Review
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 32 Decision Matrix
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 33 Observe Behavior
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 34 Question--Comment--Concern
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 35 Risk Storming
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 36 Sanity Check
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 37 Scenario Walkthrough
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Activity 38 Sketch and Compare
Benefits
Activity Timing
Participants
Preparation and Materials
Steps
Guidelines and Hints
Example
Footnotes
Appendix 1 Community Contributor Bios
Footnotes
Bibliography
You May Be Interested In…
Exercises for Programmers
A Common-Sense Guide to Data Structures and Algorithms
Data Science Essentials in Python
Practical Programming (2nd edition)
Explore It!
The Way of the Web Tester
HTML5 and CSS3 (2nd edition)
Secure Your Node.js Web Application