Cane Creek

Modern Software Engineering: Doing What Works to Build Better Software Faster

Description: Foreword xvii Preface xxi Acknowledgments xxv About the Author xxvii Part I: What Is Software Engineering? 1 Chapter 1: Introduction 3 Engineering--The Practical Application of Science 3 What Is Software Engineering? 4 Reclaiming "Software Engineering" 5 The Birth of Software Engineering 7 Shifting the Paradigm 8 Summary 9 Chapter 2: What Is Engineering? 11 Production Is Not Our Problem 11 Design Engineering, Not Production Engineering 12 A Working Definition of Engineering 17 Engineering != Code 17 Why Does Engineering Matter? 19 The Limits of "Craft" 19 Precision and Scalability 20 Managing Complexity 21 Repeatability and Accuracy of Measurement 22 Engineering, Creativity, and Craft 24 Why What We Do Is Not Software Engineering 25 Trade-Offs 26 The Illusion of Progress 26 The Journey from Craft to Engineering 27 Craft Is Not Enough 28 Time for a Rethink? 28 Summary 30 Chapter 3: Fundamentals of an Engineering Approach 31 An Industry of Change? 31 The Importance of Measurement 32 Applying Stability and Throughput 34 The Foundations of a Software Engineering Discipline 36 Experts at Learning 36 Experts at Managing Complexity 37 Summary 38 Part II: Optimize for Learning 41 Chapter 4: Working Iteratively 43 Practical Advantages of Working Iteratively 45 Iteration as a Defensive Design Strategy 46 The Lure of the Plan 48 Practicalities of Working Iteratively 54 Summary 55 Chapter 5: Feedback 57 A Practical Example of the Importance of Feedback 58 Feedback in Coding 60 Feedback in Integration 61 Feedback in Design 63 Feedback in Architecture 65 Prefer Early Feedback 67 Feedback in Product Design 68 Feedback in Organization and Culture 68 Summary 70 Chapter 6: Incrementalism 71 Importance of Modularity 72 Organizational Incrementalism 73 Tools of Incrementalism 74 Limiting the Impact of Change 76 Incremental Design 77 Summary 79 Chapter 7: Empiricism 81 Grounded in Reality 82 Separating Empirical from Experimental 82 "I Know That Bug!" 82 Avoiding Self-Deception 84 Inventing a Reality to Suit Our Argument 85 Guided by Reality 88 Summary 89 Chapter 8: Being Experimental 91 What Does "Being Experimental" Mean? 92 Feedback 93 Hypothesis 94 Measurement 95 Controlling the Variables 96 Automated Testing as Experiments 97 Putting the Experimental Results of Testing into Context 98 Scope of an Experiment 100 Summary 100 Part III: Optimize for Managing Complexity 103 Chapter 9: Modularity 105 Hallmarks of Modularity 106 Undervaluing the Importance of Good Design 107 The Importance of Testability 108 Designing for Testability Improves Modularity 109 Services and Modularity 115 Deployability and Modularity 116 Modularity at Different Scales 118 Modularity in Human Systems 118 Summary 120 Chapter 10: Cohesion 121 Modularity and Cohesion: Fundamentals of Design 121 A Basic Reduction in Cohesion 122 Context Matters 125 High-Performance Software 128 Link to Coupling 129 Driving High Cohesion with TDD 129 How to Achieve Cohesive Software 130 Costs of Poor Cohesion 132 Cohesion in Human Systems 133 Summary 133 Chapter 11: Separation of Concerns 135 Dependency Injection 139 Separating Essential and Accidental Complexity 139 Importance of DDD 142 Testability 144 Ports & Adapters 145 When to Adopt Ports & Adapters 147 What Is an API? 148 Using TDD to Drive Separation of Concerns 149 Summary 150 Chapter 12: Information Hiding and Abstraction 151 Abstraction or Information Hiding 151 What Causes "Big Balls of Mud"? 152 Organizational and Cultural Problems 152 Technical Problems and Problems of Design 154 Fear of Over-Engineering 157 Improving Abstraction Through Testing 159 Power of Abstraction 160 Leaky Abstractions 162 Picking Appropriate Abstractions 163 Abstractions from the Problem Domain 165 Abstract Accidental Complexity 166 Isolate Third-Party Systems and Code 168 Always Prefer to Hide Information 169 Summary 170 Chapter 13: Managing Coupling 171 Cost of Coupling 171 Scaling Up 172 Microservices 173 Decoupling May Mean More Code 175 Loose Coupling Isnt the Only Kind That Matters 176 Prefer Loose Coupling 177 How Does This Differ from Separation of Concerns? 178 DRY Is Too Simplistic 179 Async as a Tool for Loose Coupling 180 Designing for Loose Coupling 182 Loose Coupling in Human Systems 182 Summary 184 Part IV: Tools to Support Engineering in Software 185 Chapter 14: The Tools of an Engineering Discipline 187 What Is Software Development? 188 Testability as a Tool 189 Measurement Points 192 Problems with Achieving Testability 193 How to Improve Testability 196 Deployability 197 Speed 199 Controlling the Variables 200 Continuous Delivery 201 General Tools to Support Engineering 202 Summary 203 Chapter 15: The Modern Software Engineer 205 Engineering as a Human Process 207 Digitally Disruptive Organizations 207 Outcomes vs. Mechanisms 210 Durable and Generally Applicable 211 Foundations of an Engineering Discipline 214 Summary 215 Index 217

Price: 37.86 USD

Location: East Hanover, New Jersey

End Time: 2024-12-01T18:57:42.000Z

Shipping Cost: 0 USD

Product Images

Modern Software Engineering: Doing What Works to Build Better Software FasterModern Software Engineering: Doing What Works to Build Better Software Faster

Item Specifics

Return shipping will be paid by: Buyer

All returns accepted: Returns Accepted

Item must be returned within: 60 Days

Refund will be given as: Money Back

Return policy details:

EAN: 9780137314911

UPC: 9780137314911

ISBN: 9780137314911

MPN: N/A

Book Title: Modern Software Engineering: Doing What Works to B

Number of Pages: 256 Pages

Publication Name: Modern Software Engineering : Doing What Works to Build Better Software Faster

Language: English

Publisher: Addison Wesley Professional

Publication Year: 2021

Item Height: 0.7 in

Subject: Software Development & Engineering / General, General, Software Development & Engineering / Systems Analysis & Design

Type: Textbook

Item Weight: 15.5 Oz

Item Length: 9 in

Subject Area: Mathematics, Computers

Author: David Farley

Item Width: 7.3 in

Format: Trade Paperback

Recommended

MICROSOFT WINDOWS XP SERVICE PACK 2 WITH ADVANCED SECURITY TECHNOLOGIES
MICROSOFT WINDOWS XP SERVICE PACK 2 WITH ADVANCED SECURITY TECHNOLOGIES

$10.00

View Details
Learn Modern Hebrew (Davka) - Windows PC Mac CD-ROM Computer Software  BRAND NEW
Learn Modern Hebrew (Davka) - Windows PC Mac CD-ROM Computer Software BRAND NEW

$7.99

View Details
Finite Difference Computing With PDEs: A Modern Software Approach by Langtang...
Finite Difference Computing With PDEs: A Modern Software Approach by Langtang...

$44.99

View Details
Software Testing Advanced Test Analyst Guide for ISTQB Exam - Paperback - GOOD
Software Testing Advanced Test Analyst Guide for ISTQB Exam - Paperback - GOOD

$12.71

View Details
Modern Software Development Using Java G. Michael, Tymann, Paul T
Modern Software Development Using Java G. Michael, Tymann, Paul T

$7.06

View Details
FileMaker Pro 17 Advanced Software for Apple Macintosh & Windows, Free Shipping
FileMaker Pro 17 Advanced Software for Apple Macintosh & Windows, Free Shipping

$169.99

View Details
Modern Software Development Using C# . NET Paperback Richard Wien
Modern Software Development Using C# . NET Paperback Richard Wien

$6.60

View Details
FileMaker Pro 12 Advanced License Key Card for Mac & Windows, FULL VERSION
FileMaker Pro 12 Advanced License Key Card for Mac & Windows, FULL VERSION

$119.99

View Details
Modern Software Engineering: Doing What Works to Build Better Software Faster
Modern Software Engineering: Doing What Works to Build Better Software Faster

$41.51

View Details
Roland E-X50 Arranger Keyboard Black 197881187200 RF
Roland E-X50 Arranger Keyboard Black 197881187200 RF

$319.99

View Details