Modernes Software Engineering (eBook)
288 Seiten
MITP Verlags GmbH & Co. KG
978-3-7475-0635-6 (ISBN)
»Es gibt viele Bücher, die Ihnen sagen, wie Sie ein bestimmtes Software-Engineering-Verfahren anwenden sollen; dieses Buch ist anders. [...] Es ist ein Buch für jeden, der die Softwareentwicklung ernsthaft als echte Ingenieursdisziplin behandeln möchte, egal ob Sie gerade erst anfangen oder schon seit Jahrzehnten Software entwickeln.«
-Dave Hounslow, Software Engineer
In diesem Buch gibt Ihnen der Continuous-Delivery-Pionier David Farley praktische Strategien an die Hand, mit denen Sie Software-Projekte effektiver umsetzen, erfolgreicher managen und die Qualität Ihrer Programme grundlegend verbessern können - und damit auch Ihre tägliche Arbeit.
David Farley richtet sich an Programmierer, technische Leiter und Manager unabhängig von ihrer Erfahrung. Er beleuchtet langlebige Strategien und Prinzipien, die das Herzstück der effektiven Softwareentwicklung bilden. Dabei unterscheidet er zwischen zwei Kerndisziplinen: Erkunden und Lernen sowie Umgang mit Komplexität. Für jede der beiden vermittelt er praxisnahe Konzepte und Prinzipien, die Ihnen helfen, den gesamten Entwicklungsprozess zu verbessern, von Ihrer Denkweise bis hin zur Qualität Ihres Codes. Dafür beschreibt er effektive Strategien, die nachweislich zum Erfolg führen.
Farleys Konzepte und Techniken bilden einen ganzheitlichen, wissenschaftlichen und fundierten Ansatz zur Lösung praktischer Probleme bei der Softwareentwicklung unter realistischen wirtschaftlichen Bedingungen. Dieser allgemeingültige und langlebige Ansatz kann Ihnen helfen, sogar Probleme zu lösen, die Ihnen bisher nie begegnet sind. Er bietet Ihnen einen tiefen Einblick in Ihre tägliche Arbeit und unterstützt sie dabei, bessere Software schneller, effektiver und mit mehr Freude zu entwickeln.
David Farley ist Gründer und Consultant von Continuous Delivery Ltd und verfügt über jahrelange Erfahrung als Programmierer, Software Engineer und Systemarchitekt. Seine bahnbrechenden Ansätze haben die Arbeit von Entwicklern und Teams revolutioniert. Als Head of Software Development für London Multi Asset Exchange (LMAX) hat er eines der schnellsten Finanzsysteme der Welt aufgebaut. Er war einer der ersten, der agile Methoden wie Continuous Integration und automatisierte Tests angewendet hat und ist Betreiber des erfolgreichen Youtube-Kanals »Continuous Delivery«.
Cover 1
Stimmen zum Buch 3
Impressum 6
Inhaltsverzeichnis 7
Vorwort 13
Einleitung 17
Eine Definition von Software Engineering? 19
Der Inhalt des Buchs 20
Danksagungen 21
Über den Autor 23
Teil I: Was ist Software Engineering? 25
Kapitel 1: Einführung 27
1.1 Engineering – Die praktische Anwendung von Wissenschaft 27
1.2 Was ist Software Engineering? 28
1.3 Die Rückeroberung des »Software Engineering« 30
1.4 Wie man Fortschritte macht 30
1.5 Die Geburt des Software Engineering 31
1.6 Paradigmenwechsel 33
1.7 Zusammenfassung 34
Kapitel 2: Was ist Engineering? 35
2.1 Die Produktion ist nicht unser Problem 35
2.2 Konstruktionsingenieurwesen, nicht Produktionstechnik 36
2.3 Eine Arbeitsdefinition von Engineering 42
2.4 Engineering != Code 43
2.5 Warum ist Engineering so wichtig? 45
2.6 Die Grenzen von »Handwerk« 46
2.7 Präzision und Skalierbarkeit 47
2.8 Komplexität handhaben 48
2.9 Reproduzierbarkeit und Messgenauigkeit 49
2.10 Engineering, Kreativität und Handwerk 51
2.11 Warum das, was wir tun, kein Software Engineering ist 53
2.12 Kompromisse 54
2.13 Die Illusion des Fortschritts 55
2.14 Der Weg vom Handwerk zum Engineering 56
2.15 Handwerk ist nicht genug 57
2.16 Zeit für ein Umdenken? 58
2.17 Zusammenfassung 59
Kapitel 3: Grundlagen eines Engineering- Ansatzes 61
3.1 Eine Branche im Wandel? 61
3.2 Die Bedeutung von Messungen 62
3.3 Anwendung von Stabilität und Durchsatz 65
3.4 Die Grundlagen einer Ingenieursdisziplin für die Software-Entwicklung 67
3.5 Experten im Lernen 67
3.6 Experten im Umgang mit Komplexität 68
3.7 Zusammenfassung 70
Teil II: Für das Lernen optimieren 71
Kapitel 4: Iterativ arbeiten 73
4.1 Praktische Vorteile iterativen Arbeitens 75
4.2 Iteration als defensive Design-Strategie 77
4.3 Der Reiz des Plans 79
4.4 Praktische Aspekte des iterativen Arbeitens 86
4.5 Zusammenfassung 88
Kapitel 5: Feedback 89
5.1 Ein praktisches Beispiel für die Wichtigkeit von Feedback 89
5.2 Feedback bei der Entwicklung 93
5.3 Feedback bei der Integration 94
5.4 Feedback beim Design 96
5.5 Feedback zur Architektur 99
5.6 Frühzeitiges Feedback bevorzugen 101
5.7 Feedback beim Produktdesign 102
5.8 Feedback in Unternehmen und Kultur 103
5.9 Zusammenfassung 106
Kapitel 6: Inkrementalismus 107
6.1 Die Bedeutung von Modularität 108
6.2 Inkrementalismus im Unternehmen 110
6.3 Werkzeuge für den Inkrementalismus 112
6.4 Die Auswirkungen von Änderungen begrenzen 113
6.5 Inkrementelles Design 115
6.6 Zusammenfassung 118
Kapitel 7: Empirismus 119
7.1 In der Realität verankert 120
7.2 Trennung von Epirismus und Experiment 120
7.3 »Ich kenne diesen Bug!« 121
7.4 Selbsttäuschung vermeiden 123
7.5 Eine Realität erfinden, die zu unserer Argumentation passt 124
7.6 Von der Realität geleitet 128
7.7 Zusammenfassung 129
Kapitel 8: Experimentell vorgehen 131
8.1 Was bedeutet »experimentell vorgehen«? 132
8.2 Feedback 133
8.3 Hypothese 135
8.4 Messung 136
8.5 Kontrolle der Variablen 137
8.6 Automatisierte Tests als Experimente 138
8.7 Einordnung der Versuchsergebnisse der Tests in den Kontext 140
8.8 Der Umfang eines Experiments 142
8.9 Zusammenfassung 143
Teil III: Optimieren für den Umgang mit Komplexität 145
Kapitel 9: Modularität 147
9.1 Merkmale von Modularität 148
9.2 Die Bedeutung von gutem Design wird unterschätzt 149
9.3 Die Bedeutung von Testbarkeit 151
9.4 Für Testbarkeit zu designen verbessert die Modularität 152
9.5 Services und Modularität 159
9.6 Deploybarkeit und Modularität 161
9.7 Modularität auf verschiedenen Ebenen 163
9.8 Modularität menschlicher Systeme 164
9.9 Zusammenfassung 166
Kapitel 10: Kohäsion 167
10.1 Modularität und Kohäsion: Grundlagen des Designs 167
10.2 Der grundlegende Abbau von Kohäsion 168
10.3 Kontext ist wichtig 171
10.4 High-Performance-Software 175
10.5 Verbindung zur Kopplung 176
10.6 Hohe Kohäsion durch TDD 177
10.7 Wie erreicht man gute Kohäsion bei Software? 177
10.8 Kosten von schlechter Kohäsion 180
10.9 Kohäsion in menschlichen Systemen 181
10.10 Zusammenfassung 182
Kapitel 11: Trennung von Zuständigkeiten 183
11.1 Dependency Injection 187
11.2 Trennung von wesentlicher und zufälliger Komplexität 188
11.3 Bedeutung von DDD 192
11.4 Testbarkeit 194
11.5 Ports & Adapters
11.6 Wann sollte »Ports & Adapters« eingesetzt werden?
11.7 Was ist eine API? 199
11.8 Verwendung von TDD zur Förderung der Trennung von Zuständigkeiten 201
11.9 Zusammenfassung 202
Kapitel 12: Information Hiding und Abstraktion 203
12.1 Abstraktion oder Information Hiding 203
12.2 Was verursacht den »Big Ball of Mud«? 204
12.3 Unternehmerische und unternehmenskulturelle Probleme 204
12.4 Technische Probleme und Probleme des Designprozesses 207
12.5 Furcht vor Over-Engineering 211
12.6 Verbesserung der Abstraktion durch Testen 214
12.7 Die Macht der Abstraktion 215
12.8 Undichte Abstraktionen 217
12.9 Geeignete Abstraktionen auswählen 218
12.10 Abstraktionen in der Anwendungsdomäne 221
12.11 Abstrakte zufällige Komplexität 222
12.12 Systeme und Code von Drittanbietern isolieren 225
12.13 Immer das Verbergen von Informationen bevorzugen 226
12.14 Zusammenfassung 228
Kapitel 13: Kopplung handhaben 229
13.1 Kosten von Kopplung 229
13.2 Hochskalieren 230
13.3 Microservices 231
13.4 Entkopplung kann mehr Code bedeuten 233
13.5 Lose Kopplung ist nicht das Einzige, was wichtig ist 235
13.6 Lose Kopplung bevorzugen 236
13.7 Wie unterscheidet sich dies von der Trennung von Zuständigkeiten? 238
13.8 DRY ist zu simpel 239
13.9 Asynchronität als Werkzeug für lose Kopplung 241
13.10 Für lose Kopplung designen 243
13.11 Lose Kopplung in menschlichen Systemen 243
13.12 Zusammenfassung 245
Teil IV: Werkzeuge zur Unterstützung von Engineering in der Software-Entwicklung 247
Kapitel 14: Die Werkzeuge einer Ingenieursdisziplin 249
14.1 Was ist Software-Entwicklung? 249
14.2 Testbarkeit als Werkzeug 252
14.3 Messpunkte 255
14.4 Schwierigkeiten, die Testbarkeit zu erreichen 256
14.5 Wie man die Testbarkeit verbessert 260
14.6 Deploybarkeit 261
14.7 Geschwindigkeit 263
14.8 Die Variablen kontrollieren 264
14.9 Continuous Delivery 266
14.10 Allgemeine Werkzeuge zur Unterstützung von Engineering 267
14.11 Zusammenfassung 268
Kapitel 15: Der moderne Software Engineer 269
15.1 Engineering als menschlicher Prozess 271
15.2 Digital disruptive Unternehmen 272
15.3 Ergebnisse vs. Mechanismen 274
15.4 Langlebigkeit und allgemeine Anwendbarkeit 277
15.5 Grundlagen einer Ingenieursdisziplin 280
15.6 Zusammenfassung 281
Stichwortverzeichnis 283
Erscheint lt. Verlag | 22.8.2023 |
---|---|
Sprache | deutsch |
Themenwelt | Mathematik / Informatik ► Informatik ► Betriebssysteme / Server |
ISBN-10 | 3-7475-0635-6 / 3747506356 |
ISBN-13 | 978-3-7475-0635-6 / 9783747506356 |
Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
Haben Sie eine Frage zum Produkt? |
Größe: 7,1 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich