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

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

33,99 €

inkl. gesetzl. MwSt., Versandkostenfrei

Lieferung nach Hause

Beschreibung

Produktdetails

Verkaufsrang

37395

Einband

Taschenbuch

Erscheinungsdatum

10.12.2021

Verlag

Pearson Studium

Seitenzahl

256

Maße (L/B/H)

23,5/19,5/1,5 cm

Gewicht

480 g

Auflage

1

Sprache

Englisch

ISBN

978-0-13-731491-1

Beschreibung

Produktdetails

Verkaufsrang

37395

Einband

Taschenbuch

Erscheinungsdatum

10.12.2021

Verlag

Pearson Studium

Seitenzahl

256

Maße (L/B/H)

23,5/19,5/1,5 cm

Gewicht

480 g

Auflage

1

Sprache

Englisch

ISBN

978-0-13-731491-1

Herstelleradresse

Pearson
St.-Martin-Straße 82
81541 München
DE

Email: salesde@pearson.com

Kundinnen und Kunden meinen

0 Bewertungen

Informationen zu Bewertungen

Zur Abgabe einer Bewertung ist eine Anmeldung im Konto notwendig. Die Authentizität der Bewertungen wird von uns nicht überprüft. Wir behalten uns vor, Bewertungstexte, die unseren Richtlinien widersprechen, entsprechend zu kürzen oder zu löschen.

Die Bewertungen sind nach Format, Anzahl Sterne und Datum sortiert.

Verfassen Sie die erste Bewertung zu diesem Artikel

Helfen Sie anderen Kund*innen durch Ihre Meinung

Kundinnen und Kunden meinen

0 Bewertungen filtern

Die Leseprobe wird geladen.
  • Produktbild: Modern Software Engineering: Doing What Works to Build Better Software Faster
  • 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 Isn't 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