Book description
- Deutsche Ausgabe des Bestsellers von dem Pionier für Continuous Delivery
- Verbessern Sie Ihre Effektivität, Ihre Kreativität und damit auch Ihren Code
- Praktischer Leitfaden für Programmierer, technische Leiter und Manager
»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.
Table of contents
- Stimmen zum Buch
- Impressum
- Vorwort
- Einleitung
- Danksagungen
- Über den Autor
- Teil I: Was ist Software Engineering?
- Kapitel 1: Einführung
-
Kapitel 2: Was ist Engineering?
- 2.1 Die Produktion ist nicht unser Problem
- 2.2 Konstruktionsingenieurwesen, nicht Produktionstechnik
- 2.3 Eine Arbeitsdefinition von Engineering
- 2.4 Engineering != Code
- 2.5 Warum ist Engineering so wichtig?
- 2.6 Die Grenzen von »Handwerk«
- 2.7 Präzision und Skalierbarkeit
- 2.8 Komplexität handhaben
- 2.9 Reproduzierbarkeit und Messgenauigkeit
- 2.10 Engineering, Kreativität und Handwerk
- 2.11 Warum das, was wir tun, kein Software Engineering ist
- 2.12 Kompromisse
- 2.13 Die Illusion des Fortschritts
- 2.14 Der Weg vom Handwerk zum Engineering
- 2.15 Handwerk ist nicht genug
- 2.16 Zeit für ein Umdenken?
- 2.17 Zusammenfassung
- Kapitel 3: Grundlagen eines Engineering-Ansatzes
- Teil II: Für das Lernen optimieren
- Kapitel 4: Iterativ arbeiten
-
Kapitel 5: Feedback
- 5.1 Ein praktisches Beispiel für die Wichtigkeit von Feedback
- 5.2 Feedback bei der Entwicklung
- 5.3 Feedback bei der Integration
- 5.4 Feedback beim Design
- 5.5 Feedback zur Architektur
- 5.6 Frühzeitiges Feedback bevorzugen
- 5.7 Feedback beim Produktdesign
- 5.8 Feedback in Unternehmen und Kultur
- 5.9 Zusammenfassung
- Kapitel 6: Inkrementalismus
- Kapitel 7: Empirismus
- Kapitel 8: Experimentell vorgehen
- Teil III: Optimieren für den Umgang mit Komplexität
-
Kapitel 9: Modularität
- 9.1 Merkmale von Modularität
- 9.2 Die Bedeutung von gutem Design wird unterschätzt
- 9.3 Die Bedeutung von Testbarkeit
- 9.4 Für Testbarkeit zu designen verbessert die Modularität
- 9.5 Services und Modularität
- 9.6 Deploybarkeit und Modularität
- 9.7 Modularität auf verschiedenen Ebenen
- 9.8 Modularität menschlicher Systeme
- 9.9 Zusammenfassung
-
Kapitel 10: Kohäsion
- 10.1 Modularität und Kohäsion: Grundlagen des Designs
- 10.2 Der grundlegende Abbau von Kohäsion
- 10.3 Kontext ist wichtig
- 10.4 High-Performance-Software
- 10.5 Verbindung zur Kopplung
- 10.6 Hohe Kohäsion durch TDD
- 10.7 Wie erreicht man gute Kohäsion bei Software?
- 10.8 Kosten von schlechter Kohäsion
- 10.9 Kohäsion in menschlichen Systemen
- 10.10 Zusammenfassung
-
Kapitel 11: Trennung von Zuständigkeiten
- 11.1 Dependency Injection
- 11.2 Trennung von wesentlicher und zufälliger Komplexität
- 11.3 Bedeutung von DDD
- 11.4 Testbarkeit
- 11.5 Ports & Adapters
- 11.6 Wann sollte »Ports & Adapters« eingesetzt werden?
- 11.7 Was ist eine API?
- 11.8 Verwendung von TDD zur Förderung der Trennung von Zuständigkeiten
- 11.9 Zusammenfassung
-
Kapitel 12: Information Hiding und Abstraktion
- 12.1 Abstraktion oder Information Hiding
- 12.2 Was verursacht den »Big Ball of Mud«?
- 12.3 Unternehmerische und unternehmenskulturelle Probleme
- 12.4 Technische Probleme und Probleme des Designprozesses
- 12.5 Furcht vor Over-Engineering
- 12.6 Verbesserung der Abstraktion durch Testen
- 12.7 Die Macht der Abstraktion
- 12.8 Undichte Abstraktionen
- 12.9 Geeignete Abstraktionen auswählen
- 12.10 Abstraktionen in der Anwendungsdomäne
- 12.11 Abstrakte zufällige Komplexität
- 12.12 Systeme und Code von Drittanbietern isolieren
- 12.13 Immer das Verbergen von Informationen bevorzugen
- 12.14 Zusammenfassung
-
Kapitel 13: Kopplung handhaben
- 13.1 Kosten von Kopplung
- 13.2 Hochskalieren
- 13.3 Microservices
- 13.4 Entkopplung kann mehr Code bedeuten
- 13.5 Lose Kopplung ist nicht das Einzige, was wichtig ist
- 13.6 Lose Kopplung bevorzugen
- 13.7 Wie unterscheidet sich dies von der Trennung von Zuständigkeiten?
- 13.8 DRY ist zu simpel
- 13.9 Asynchronität als Werkzeug für lose Kopplung
- 13.10 Für lose Kopplung designen
- 13.11 Lose Kopplung in menschlichen Systemen
- 13.12 Zusammenfassung
- Teil IV: Werkzeuge zur Unterstützung von Engineering in der Software-Entwicklung
-
Kapitel 14: Die Werkzeuge einer Ingenieursdisziplin
- 14.1 Was ist Software-Entwicklung?
- 14.2 Testbarkeit als Werkzeug
- 14.3 Messpunkte
- 14.4 Schwierigkeiten, die Testbarkeit zu erreichen
- 14.5 Wie man die Testbarkeit verbessert
- 14.6 Deploybarkeit
- 14.7 Geschwindigkeit
- 14.8 Die Variablen kontrollieren
- 14.9 Continuous Delivery
- 14.10 Allgemeine Werkzeuge zur Unterstützung von Engineering
- 14.11 Zusammenfassung
- Kapitel 15: Der moderne Software Engineer
Product information
- Title: Modernes Software Engineering - Bessere Software schneller und effektiver entwickeln
- Author(s):
- Release date: August 2023
- Publisher(s): mitp Verlag
- ISBN: 9783747506363
You might also like
book
Der Scrum-Kurs - Praxiseinstieg in die erfolgreiche Teamarbeit
Scrum in Theorie und Praxis verstehen und erfolgreich anwenden Mit dem Team unmittelbar im Projekt Scrum-Methoden …
book
Clean Architecture Praxisbuch - für saubere Software-Architekturen und wartbaren Code
Best Practices für die Entwicklung von anpassungsfähiger Software Lernen Sie neue Konzepte kennen und verbinden Sie …
book
Produktiv auf der Linux-Kommandozeile
Souverän unterwegs auf der Kommandozeile: Ob als Systemadministrator, Softwareentwicklerin, Teammitglied im Site Reliability Engineering oder einfach …
book
Künstliche Intelligenz kapieren und programmieren - Visuell lernen und verstehen mit Illustrationen und Projekten zum Experimentieren
Neuronale Netze selbst programmieren ohne Vorkenntnisse Spannende Projekte von Chatbots bis hin zu Bilderkennung Alle Grundlagen …