logo资料库

Design It! From Programmer to Software Architect(2017.10).A4.pdf

第1页 / 共356页
第2页 / 共356页
第3页 / 共356页
第4页 / 共356页
第5页 / 共356页
第6页 / 共356页
第7页 / 共356页
第8页 / 共356页
资料共356页,剩余部分请下载后查看
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
Design It! by Michael Keeling Publisher: Pragmatic Bookshelf Release Date: October 2017 ISBN: 9781680502091 Topic: Leading Teams 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.
Design It! From Programmer to Software Architect by Michael Keeling Version: P1.0 (October 2017)
Copyright © 2017 The Pragmatic Programmers, LLC. This book is licensed to the individual who purchased it. We don't copy-protect it because that would limit your ability to use it for your own purposes. Please don't break this trust—you can use this across all of your devices but please do not share this copy with other members of your team, with friends, or via file sharing services. Thanks. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and The Pragmatic Programmers, LLC was aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals. The Pragmatic Starter Kit, The Pragmatic Programmer, Pragmatic Programming, Pragmatic Bookshelf and the linking g device are trademarks of The Pragmatic Programmers, LLC. Every precaution was taken in the preparation of this book. However, the publisher assumes no responsibility for errors or omissions, or for damages that may result from the use of information (including program listings) contained herein. About the Pragmatic Bookshelf The Pragmatic Bookshelf is an agile publishing company. We’re here because we want to improve the lives of developers. We do this by creating timely, practical titles, written by programmers for programmers. Our Pragmatic courses, workshops, and other products can help you and your team create better software and have more fun. For more information, as well as the latest Pragmatic titles, please visit us at http://pragprog.com. Our ebooks do not contain any Digital Restrictions Management, and have always been DRM-free. We pioneered the beta book concept, where you can purchase and read a book while it’s still being written, and provide feedback to the author to help make a better book for everyone. Free resources for all purchasers include source code downloads (if applicable), errata and discussion forums, all available on the book's home page at pragprog.com. We’re here to make your life easier. New Book Announcements Want to keep up on our latest titles and announcements, and occasional special offers? Just create an account on pragprog.com (an email address and a password is all it takes) and select the checkbox to receive newsletters. You can also follow us on twitter as @pragprog. About Ebook Formats If you buy directly from pragprog.com, you get ebooks in all available formats for one price. You can synch your ebooks amongst all your devices (including iPhone/iPad, Android, laptops, etc.) via Dropbox. You get free updates for the life of the edition. And, of course, you can always come back and re-download your books when needed. Ebooks bought from the Amazon Kindle store are subject to Amazon's polices.
Limitations in Amazon's file format may cause ebooks to display differently on different devices. For more information, please see our FAQ at pragprog.com/frequently-asked-questions/ebooks. To learn more about this book and access the free resources, go to https://pragprog.com/book/mkdsa, the book's homepage. Thanks for your continued support, Andy Hunt The Pragmatic Programmers The team that produced this book includes: Andy Hunt (Publisher)Janet Furlow (VP of Operations)Susannah Davidson Pfalzer (Development Editor)Potomac Indexing, LLC (Indexing)Liz Welch (Copy Editor)Gilson Graphics (Layout) For customer support, please contact support@pragprog.com. For international rights, please contact rights@pragprog.com.
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
分享到:
收藏