Searching...
Deutsch
English
Español
简体中文
Français
Deutsch
日本語
Português
Italiano
한국어
Русский
Nederlands
العربية
Polski
हिन्दी
Tiếng Việt
Svenska
Ελληνικά
Türkçe
ไทย
Čeština
Română
Magyar
Українська
Bahasa Indonesia
Dansk
Suomi
Български
עברית
Norsk
Hrvatski
Català
Slovenčina
Lietuvių
Slovenščina
Српски
Eesti
Latviešu
فارسی
മലയാളം
தமிழ்
اردو
Clean Architecture

Clean Architecture

A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)
by Robert Martin 2017 432 pages
Programming
Technology
Computer Science
Hören

Wichtige Erkenntnisse

1. Softwarearchitektur zielt darauf ab, menschliche Ressourcen zu minimieren und die Produktivität zu maximieren

Das Ziel der Softwarearchitektur ist es, die benötigten menschlichen Ressourcen für den Aufbau und die Wartung des erforderlichen Systems zu minimieren.

Architektonische Entscheidungen sind wichtig. Gute Architektur reduziert den Aufwand für die Entwicklung, Bereitstellung und Wartung von Softwaresystemen. Sie ermöglicht es Teams, unabhängig zu arbeiten, minimiert die Auswirkungen von Änderungen und erlaubt es dem System, sich im Laufe der Zeit weiterzuentwickeln.

Wichtige Aspekte guter Architektur:

  • Trennung der Anliegen
  • Abhängigkeitsmanagement
  • Abstraktion von Implementierungsdetails
  • Flexibilität zur Aufnahme zukünftiger Änderungen

Durch die Fokussierung auf diese Aspekte können Architekten Systeme schaffen, die leichter zu verstehen, zu modifizieren und zu erweitern sind, was letztendlich zu erhöhter Produktivität und reduzierten Kosten über die Lebensdauer des Systems führt.

2. Saubere Architektur trennt Geschäftsregeln von externen Details

Das Zentrum Ihrer Anwendung ist nicht die Datenbank. Es sind auch nicht eines oder mehrere der Frameworks, die Sie möglicherweise verwenden. Das Zentrum Ihrer Anwendung sind die Anwendungsfälle Ihrer Anwendung.

Geschäftsregeln sind der Kern. Saubere Architektur organisiert den Code in konzentrischen Kreisen, wobei die Geschäftsregeln im Zentrum und die Implementierungsdetails in den äußeren Schichten liegen. Diese Trennung ermöglicht es, dass die Kern-Geschäftslogik von Änderungen externer Faktoren wie Datenbanken, Benutzeroberflächen oder Frameworks unberührt bleibt.

Wichtige Schichten in der sauberen Architektur:

  • Entitäten: Unternehmensweite Geschäftsregeln
  • Anwendungsfälle: Anwendungsspezifische Geschäftsregeln
  • Schnittstellenadapter: Konvertieren Daten zwischen Anwendungsfällen und externen Agenturen
  • Frameworks und Treiber: Externe Werkzeuge und Technologien

Durch die Einhaltung dieser Struktur können Entwickler Systeme schaffen, die:

  • Flexibler und anpassungsfähiger an Änderungen sind
  • Leichter zu testen und zu warten sind
  • Weniger abhängig von spezifischen Technologien oder Frameworks sind

3. SOLID-Prinzipien leiten die Erstellung flexibler, wartbarer Systeme

Die SOLID-Prinzipien sagen uns, wie wir unsere Funktionen und Datenstrukturen in Klassen anordnen und wie diese Klassen miteinander verbunden sein sollten.

SOLID verbessert die Modularität. Diese fünf Prinzipien bieten Richtlinien für die Erstellung von Softwaresystemen, die verständlicher, flexibler und wartbarer sind. Sie helfen Entwicklern, Code zu entwerfen, der widerstandsfähig gegen Änderungen und leicht erweiterbar ist.

Die SOLID-Prinzipien sind:

  • Single Responsibility Principle: Eine Klasse sollte nur einen Grund zur Änderung haben
  • Open-Closed Principle: Softwareeinheiten sollten für Erweiterungen offen, aber für Modifikationen geschlossen sein
  • Liskov Substitution Principle: Objekte einer Oberklasse sollten durch Objekte ihrer Unterklassen ersetzt werden können, ohne die Korrektheit des Programms zu beeinträchtigen
  • Interface Segregation Principle: Viele client-spezifische Schnittstellen sind besser als eine allgemeine Schnittstelle
  • Dependency Inversion Principle: Hochrangige Module sollten nicht von niederrangigen Modulen abhängen; beide sollten von Abstraktionen abhängen

Durch die Anwendung dieser Prinzipien können Entwickler robustere und skalierbarere Softwarearchitekturen schaffen, die sich im Laufe der Zeit an veränderte Anforderungen anpassen können.

4. Komponenten sind die Bausteine einer sauberen Architektur

Komponenten sind die Einheiten der Bereitstellung. Sie sind die kleinsten Einheiten, die als Teil eines Systems bereitgestellt werden können.

Modulares Design ermöglicht Flexibilität. Komponenten in der sauberen Architektur sind unabhängig bereitstellbare und entwickelbare Teile des Systems. Sie kapseln verwandte Funktionalitäten und haben gut definierte Schnittstellen, was die Wartung und Modifikation des Systems erleichtert.

Wichtige Merkmale gut gestalteter Komponenten:

  • Hohe Kohäsion: Verwandte Funktionalitäten sind zusammengefasst
  • Geringe Kopplung: Minimale Abhängigkeiten zwischen Komponenten
  • Klare Schnittstellen: Gut definierte Interaktionsmethoden
  • Unabhängige Bereitstellbarkeit: Können aktualisiert oder ersetzt werden, ohne andere Teile des Systems zu beeinflussen

Durch die Organisation von Systemen in Komponenten können Architekten:

  • Parallele Entwicklung durch verschiedene Teams erleichtern
  • Einfacheres Testen und Debuggen ermöglichen
  • Inkrementelle Updates und Verbesserungen des Systems erlauben
  • Die Skalierbarkeit und Wartbarkeit des Gesamtsystems verbessern

5. Grenzen definieren und schützen die Kern-Geschäftslogik

An jeder architektonischen Grenze finden wir wahrscheinlich irgendwo das Muster des bescheidenen Objekts.

Grenzen schützen den Kern. Architektonische Grenzen in der sauberen Architektur trennen verschiedene Anliegen, insbesondere zwischen Geschäftslogik und Implementierungsdetails. Diese Grenzen helfen, die Unabhängigkeit der Kern-Geschäftsregeln von externen Änderungen zu bewahren.

Wichtige Aspekte architektonischer Grenzen:

  • Verwendung von Schnittstellen zur Definition von Interaktionen zwischen Schichten
  • Abhängigkeitsinversion, um sicherzustellen, dass Abhängigkeiten nach innen zeigen
  • Datenübertragungsobjekte zum Übermitteln von Informationen über Grenzen hinweg
  • Bescheidene Objekte, um testbares Verhalten von schwer zu testenden Komponenten zu trennen

Durch die Etablierung klarer Grenzen können Architekten:

  • Die Auswirkungen von Änderungen in externen Systemen oder Technologien minimieren
  • Einfacheres Testen der Kern-Geschäftslogik ermöglichen
  • Den Austausch von Implementierungsdetails ermöglichen, ohne das Kernsystem zu beeinflussen
  • Die Flexibilität und Anpassungsfähigkeit des Gesamtsystems verbessern

6. Saubere Architektur erleichtert testgetriebene Entwicklung und unabhängige Bereitstellung

Eine gute Architektur macht das System leicht änderbar, in all den Weisen, in denen es geändert werden muss, indem sie Optionen offen lässt.

Testbarkeit und Flexibilität sind entscheidend. Saubere Architektur fördert Praktiken, die Systeme leichter testbar und unabhängig bereitstellbar machen. Durch die Trennung der Anliegen und das Management von Abhängigkeiten wird es einfacher, Unit-Tests für die Kern-Geschäftslogik zu schreiben und verschiedene Komponenten des Systems separat bereitzustellen.

Vorteile der sauberen Architektur für Testen und Bereitstellung:

  • Kern-Geschäftsregeln können ohne UI-, Datenbank- oder externe Abhängigkeiten getestet werden
  • Verschiedene Komponenten können unabhängig bereitgestellt werden, was einfachere Updates ermöglicht
  • Änderungen in einem Bereich des Systems haben minimale Auswirkungen auf andere
  • Neue Funktionen können mit geringem Risiko bestehender Funktionalitäten hinzugefügt werden

Diese Eigenschaften führen zu:

  • Schnelleren Entwicklungszyklen
  • Reduziertem Risiko bei Bereitstellungen
  • Verbesserter Systemzuverlässigkeit
  • Größerer Flexibilität bei der Einführung neuer Technologien oder der Änderung bestehender

7. Frameworks und Datenbanken sind Implementierungsdetails, keine architektonischen Elemente

Frameworks sind Werkzeuge, die verwendet werden sollen, nicht Architekturen, denen man sich anpassen muss.

Kernlogik sollte framework-unabhängig sein. Saubere Architektur behandelt Frameworks und Datenbanken als externe Details, die die Kern-Geschäftslogik nicht beeinflussen sollten. Dieser Ansatz ermöglicht größere Flexibilität bei der Änderung oder Aktualisierung dieser externen Elemente, ohne die Kernfunktionalität des Systems zu beeinträchtigen.

Wichtige Prinzipien für den Umgang mit Frameworks und Datenbanken:

  • Behandeln Sie sie als Plugins zur Kern-Geschäftslogik
  • Verwenden Sie Abhängigkeitsinversion, um die Kernlogik unabhängig zu halten
  • Erstellen Sie Abstraktionen für Datenbankoperationen
  • Verzögern Sie Entscheidungen über Frameworks und Datenbanken so lange wie möglich

Vorteile dieses Ansatzes:

  • Einfacher, Frameworks und Datenbanken zu ändern oder zu aktualisieren
  • Kern-Geschäftslogik bleibt trotz externer Änderungen stabil
  • Reduzierte Abhängigkeit von Anbietern
  • Verbesserte Testbarkeit der Kernsystemkomponenten

8. Das Web ist nur ein weiterer Liefermechanismus in der sauberen Architektur

Das Web ist ein Liefermechanismus, und Ihre Anwendungsarchitektur sollte es als solchen behandeln.

Geschäftslogik ist lieferunabhängig. In der sauberen Architektur wird das Web als externes Detail behandelt, ähnlich wie Datenbanken oder Frameworks. Diese Perspektive ermöglicht es, dass die Kern-Geschäftslogik unabhängig vom spezifischen Liefermechanismus bleibt, sei es eine Webanwendung, eine Desktop-App oder eine API.

Wichtige Überlegungen für Webanwendungen in der sauberen Architektur:

  • Trennen Sie web-spezifischen Code von der Kern-Geschäftslogik
  • Verwenden Sie Schnittstellenadapter, um zwischen Webformaten und internen Datenstrukturen zu konvertieren
  • Behandeln Sie Web-Frameworks als Plugins zum Kernsystem
  • Entwerfen Sie Anwendungsfälle, die unabhängig von web-spezifischen Anliegen sind

Vorteile dieses Ansatzes:

  • Einfacher, das System an verschiedene Liefermechanismen anzupassen
  • Kern-Geschäftslogik kann über mehrere Plattformen hinweg wiederverwendet werden
  • Vereinfachtes Testen der Geschäftsregeln ohne Web-Abhängigkeiten
  • Größere Flexibilität bei der Änderung oder Aktualisierung von Webtechnologien

9. Saubere eingebettete Architektur trennt Hardware-Anliegen von der Geschäftslogik

Obwohl Software nicht verschleißt, kann sie von innen heraus durch unkontrollierte Abhängigkeiten von Hardware zerstört werden.

Hardware-Unabhängigkeit ist entscheidend. Saubere eingebettete Architektur wendet die Prinzipien der sauberen Architektur auf eingebettete Systeme an, indem sie hardware-spezifische Anliegen von der Kern-Geschäftslogik trennt. Diese Trennung ermöglicht einfachere Updates der Hardwarekomponenten und verbesserte Portabilität der Software.

Wichtige Elemente der sauberen eingebetteten Architektur:

  • Hardware-Abstraktionsschicht (HAL), um hardware-spezifischen Code zu isolieren
  • Geräteunabhängige Geschäftslogik
  • Klare Schnittstellen zwischen Hardware- und Softwarekomponenten
  • Verwendung von Abhängigkeitsinversion zur Verwaltung von Hardware-Abhängigkeiten

Vorteile dieses Ansatzes in eingebetteten Systemen:

  • Einfacher, Software auf neue Hardwareplattformen zu portieren
  • Vereinfachtes Testen der Kernlogik ohne Hardware-Abhängigkeiten
  • Reduzierte Auswirkungen von Hardwareänderungen auf das Gesamtsystem
  • Verbesserte Wartbarkeit und Langlebigkeit der eingebetteten Software

10. Microservices und serviceorientierte Architekturen können von den Prinzipien der sauberen Architektur profitieren

Die Architektur eines Systems wird durch Grenzen definiert, die Softwareelemente voneinander trennen und diejenigen auf der einen Seite daran hindern, über diejenigen auf der anderen Seite Bescheid zu wissen.

Saubere Prinzipien gelten in allen Maßstäben. Während saubere Architektur oft im Kontext monolithischer Anwendungen diskutiert wird, können ihre Prinzipien effektiv auf Microservices und serviceorientierte Architekturen angewendet werden. Diese Prinzipien helfen, die Unabhängigkeit und Testbarkeit einzelner Dienste zu bewahren und gleichzeitig die Komplexität verteilter Systeme zu managen.

Anwendung der sauberen Architektur auf Microservices:

  • Behandeln Sie jeden Microservice als abgegrenzten Kontext mit eigener sauberer Architektur
  • Verwenden Sie gut definierte Schnittstellen für die Kommunikation zwischen Diensten
  • Wenden Sie Abhängigkeitsinversion zwischen Diensten an
  • Bewahren Sie die unabhängige Bereitstellbarkeit der Dienste

Vorteile der sauberen Architektur in Microservices:

  • Verbesserte Modularität und Skalierbarkeit des Gesamtsystems
  • Einfacher zu verstehende und zu wartende einzelne Dienste
  • Größere Flexibilität bei der Weiterentwicklung und dem Austausch von Diensten
  • Reduzierte Kopplung zwischen Diensten, was zu robusteren Systemen führt

Last updated:

Rezensionen

4.23 out of 5
Average of 6k+ ratings from Goodreads and Amazon.

Saubere Architektur: Ein Handbuch für Softwarestruktur und -design erhält gemischte Bewertungen. Viele loben den Fokus auf SOLID-Prinzipien und Entkopplung, während andere es als repetitiv und mangelnd an praktischen Beispielen empfinden. Einige Leser schätzen den historischen Kontext und die Anekdoten, während andere der Meinung sind, dass sie vom Kerninhalt ablenken. Das Buch wird allgemein als hilfreich für das Verständnis von hochrangigen Architekturkonzepten angesehen, aber die Meinungen über seine Nützlichkeit für Anfänger im Vergleich zu erfahrenen Entwicklern gehen auseinander. Mehrere Rezensenten bemerken, dass der Inhalt des Buches prägnanter hätte vermittelt werden können.

Über den Autor

Robert Cecil Martin, bekannt als Uncle Bob, ist ein prominenter Softwareingenieur und Verfechter agiler Entwicklungsmethoden. Als Präsident von Object Mentor Inc. leitet er ein Team von Beratern, die sich auf objektorientiertes Design, Muster, UML und agile Methoden spezialisiert haben. Martin verfügt über umfangreiche Erfahrung in der Softwarebranche und war von 1996 bis 1999 Chefredakteur des C++ Report. Er ist ein gefragter Redner auf internationalen Konferenzen und Fachmessen, wo er sein Fachwissen über bewährte Praktiken in der Softwareentwicklung teilt. Martins Einfluss reicht über die Beratung hinaus, da er mehrere einflussreiche Bücher über Software-Handwerkskunst und saubere Codierungspraktiken verfasst hat.

0:00
-0:00
1x
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Listening – audio summariesListen to the first takeaway of every book for free, upgrade to Pro for unlimited listening.
Unlock unlimited listening
Your first week's on us
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 5: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Sep 26,
cancel anytime before.
What our users say
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Compare Features
Free Pro
Read full text summaries
Listen to full summaries
Unlimited Bookmarks
Unlimited History
Benefits
Get Ahead in Your Career
People who read at least 7 business books per year earn 2.3 times more on average than those who only read one book per year.
Unlock Knowledge Faster (or Read any book in 10 hours minutes)
How would your life change if we gave you the superpower to read 10 books per month?
Access 12,000+ hours of audio
Access almost unlimited content—if you listen to 1 hour daily, it’ll take you 33 years to listen to all of it.
Priority 24/7 AI-powered and human support
If you have any questions or issues, our AI can resolve 90% of the issues, and we respond in 2 hours during office hours: Mon-Fri 9 AM - 9 PM PT.
New features and books every week
We are a fast-paced company and continuously add more books and features on a weekly basis.
Fun Fact
2.8x
Pro users consume 2.8x more books than free users.
Interesting Stats
Reduced Stress: Reading for just 6 minutes can reduce stress levels by 68%
Reading can boost emotional development and career prospects by 50% to 100%
Vocabulary Expansion: Reading for 20 minutes a day are exposed to about 1.8 million words per year
Improved Cognitive Function: Reading can help reduce mental decline in old age by up to 32%.
Better Sleep: 50% of people who read before bed report better sleep.
Can I switch plans later?
Yes, you can easily switch between plans.
Is it easy to cancel?
Yes, it's just a couple of clicks. Simply go to Manage Subscription in the upper-right menu.
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.