
Modernes Software Engineering
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
- 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.
Reviews / Votes
»Unternehmen, die eigene Software entwickeln, können von seinen Ratschlägen profitieren.« (c´t Magazin, Maik Schmidt, 01/2024)
»Der mitp-Verlag liefert mit "Modernes Software Engineering" ein rundum gelungenes Werk, das die Rolle der Softwarearchitektur in einem modernen Unternehmen als Ganzes behandelt - auch die Übersetzung aus dem Englischen ist vorbildlich gelungen.« (Heise online, Tam Hanna, 09/2023)
More details
Other editions
Additional editions

Person
Content
- Cover
- Stimmen zum Buch
- Impressum
- Inhaltsverzeichnis
- Vorwort
- Einleitung
- Eine Definition von Software Engineering?
- Der Inhalt des Buchs
- Danksagungen
- Über den Autor
- Teil I: Was ist Software Engineering?
- Kapitel 1: Einführung
- 1.1 Engineering - Die praktische Anwendung von Wissenschaft
- 1.2 Was ist Software Engineering?
- 1.3 Die Rückeroberung des »Software Engineering«
- 1.4 Wie man Fortschritte macht
- 1.5 Die Geburt des Software Engineering
- 1.6 Paradigmenwechsel
- 1.7 Zusammenfassung
- 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
- 3.1 Eine Branche im Wandel?
- 3.2 Die Bedeutung von Messungen
- 3.3 Anwendung von Stabilität und Durchsatz
- 3.4 Die Grundlagen einer Ingenieursdisziplin für die Software-Entwicklung
- 3.5 Experten im Lernen
- 3.6 Experten im Umgang mit Komplexität
- 3.7 Zusammenfassung
- Teil II: Für das Lernen optimieren
- Kapitel 4: Iterativ arbeiten
- 4.1 Praktische Vorteile iterativen Arbeitens
- 4.2 Iteration als defensive Design-Strategie
- 4.3 Der Reiz des Plans
- 4.4 Praktische Aspekte des iterativen Arbeitens
- 4.5 Zusammenfassung
- 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
- 6.1 Die Bedeutung von Modularität
- 6.2 Inkrementalismus im Unternehmen
- 6.3 Werkzeuge für den Inkrementalismus
- 6.4 Die Auswirkungen von Änderungen begrenzen
- 6.5 Inkrementelles Design
- 6.6 Zusammenfassung
- Kapitel 7: Empirismus
- 7.1 In der Realität verankert
- 7.2 Trennung von Epirismus und Experiment
- 7.3 »Ich kenne diesen Bug!«
- 7.4 Selbsttäuschung vermeiden
- 7.5 Eine Realität erfinden, die zu unserer Argumentation passt
- 7.6 Von der Realität geleitet
- 7.7 Zusammenfassung
- Kapitel 8: Experimentell vorgehen
- 8.1 Was bedeutet »experimentell vorgehen«?
- 8.2 Feedback
- 8.3 Hypothese
- 8.4 Messung
- 8.5 Kontrolle der Variablen
- 8.6 Automatisierte Tests als Experimente
- 8.7 Einordnung der Versuchsergebnisse der Tests in den Kontext
- 8.8 Der Umfang eines Experiments
- 8.9 Zusammenfassung
- 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
- 15.1 Engineering als menschlicher Prozess
- 15.2 Digital disruptive Unternehmen
- 15.3 Ergebnisse vs. Mechanismen
- 15.4 Langlebigkeit und allgemeine Anwendbarkeit
- 15.5 Grundlagen einer Ingenieursdisziplin
- 15.6 Zusammenfassung
- Stichwortverzeichnis
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.