Clean Architecture
eBook - ePub

Clean Architecture

Das Praxis-Handbuch fĂŒr professionelles Softwaredesign.Regeln und Paradigmen fĂŒr effiziente Softwarestrukturierung.

  1. 376 Seiten
  2. German
  3. ePUB (handyfreundlich)
  4. Über iOS und Android verfĂŒgbar
eBook - ePub

Clean Architecture

Das Praxis-Handbuch fĂŒr professionelles Softwaredesign.Regeln und Paradigmen fĂŒr effiziente Softwarestrukturierung.

Über dieses Buch

  • Praktische Lösungen fĂŒr den Aufbau von Softwarearchitekturen von dem legendĂ€ren Softwareentwickler Robert C. Martin (»Uncle Bob«)
  • AllgemeingĂŒltige Regeln fĂŒr die Verbesserung der ProduktivitĂ€t in der Softwareentwicklung ĂŒber den gesamten Lebenszyklus
  • Wie Softwareentwickler wesentliche Prinzipien des Softwaredesigns meistern, warum Softwarearchitekturen hĂ€ufig scheitern und wie man solche FehlschlĂ€ge verhindern kann

Wirklich gute Software zu entwickeln, ist ein schwieriges Unterfangen und eine große Herausforderung. Aber wenn Software in der richtigen Art und Weise entwickelt wird, erfordert die Erstellung und Instandhaltung nur wenige Ressourcen, Modifikationen und Anpassungen lassen sich schnell und einfach umsetzen und MĂ€ngel und Fehler treten nur hin und wieder in Erscheinung. Der Entwicklungsaufwand ist minimal, und das bei maximaler FunktionalitĂ€t und FlexibilitĂ€t.

Was hier utopisch klingt, hat Robert C. Martin schon selbst erlebt und weiß deshalb, dass es so funktionieren kann.

Als Entwickler können Sie Ihre ProduktivitĂ€t ĂŒber die Lebenszeit eines jeden Softwaresystems dramatisch verbessern, indem Sie allgemeingĂŒltige GrundsĂ€tze fĂŒr die Entwicklung professioneller Softwarearchitektur anwenden. In diesem Buch verrĂ€t Ihnen der legendĂ€re Softwareentwickler diese maßgeblichen Prinzipien und zeigt Ihnen, wie Sie diese erfolgreich und effektiv anwenden.

Basierend auf seiner mehr als 50-jĂ€hrigen Berufserfahrung mit Softwareumgebungen jeder erdenklichen Art demonstriert Robert C. Martin in diesem Buch auf eindrucksvolle Weise, welche Entscheidungen Sie im Entwicklungsprozess treffen sollten und warum diese fĂŒr Ihren Erfolg ausschlaggebend sind. Wie man es von »Uncle Bob« kennt, enthĂ€lt dieses Buch zahlreiche unmittelbar anwendbare und in sich schlĂŒssige Lösungen fĂŒr die Herausforderungen, mit denen Sie im Berufsleben konfrontiert sein werden – jenen, die ĂŒber Gedeih und Verderb Ihrer Projekte entscheiden.

In diesem Buch lernen Sie:

  • Architektonische Zielsetzungen der Softwareentwicklung richtig abstecken und die dafĂŒr notwendigen Kerndisziplinen und -praktiken planvoll einsetzen
  • Die grundlegenden Prinzipien des Softwaredesigns fĂŒr den Umgang mit FunktionalitĂ€t, Komponententrennung und Datenmanagement meistern
  • Den Entwicklungsprozess optimieren durch die zielgerichtete Anwendung von Programmierparadigmen und die klare Definition der HandlungsspielrĂ€ume der Softwareentwickler
  • Wichtige systemrelevante Programmbestandteile von bloßen »Details« unterscheiden
  • Optimale, hochschichtige Strukturen fĂŒr Web, Datenbank, Fat Client, Konsole und eingebettete Anwendungen implementieren
  • Angemessene Grenzen und Layer definieren und die Komponenten und Services in Ihrem System organisieren
  • Faktoren fĂŒr das Scheitern von Softwaredesigns und -architekturen erkennen und diese Fehler vermeiden

Clean Architecture ist fĂŒr jeden gegenwĂ€rtigen oder angehenden Softwarearchitekten, Systemanalysten, Systemdesigner und Softwaremanager eine PflichtlektĂŒre – ebenso wie fĂŒr jeden Programmierer, der die Softwaredesigns anderer Entwickler ausfĂŒhren muss.

Kapitel 1:
Was bedeuten »Design« und »Architektur«?‌

[Bild]
Im Laufe der Jahre sorgte die Verwendung der Begriffe »Design‌« und »Architektur‌« immer wieder fĂŒr Verwirrung. Was ist Design? Was ist Architektur? Und wo liegt der Unterschied?
Eine der Zielsetzungen dieses Buches besteht darin, Ihnen einen Weg durch das verworrene Dickicht der Begriffsauslegungen aufzuzeigen und ein fĂŒr alle Mal zu definieren, was genau unter Design und Architektur zu verstehen ist. FĂŒr den Anfang soll an dieser Stelle zunĂ€chst einmal festgehalten werden, dass es eigentlich keinen Unterschied gibt. Überhaupt keinen Unterschied.
Das Wort »Architektur« wird hĂ€ufig im Zusammenhang mit Dingen auf einer ĂŒbergeordneten Ebene verwendet, die sich von den Details auf einer untergeordneten Ebene unterscheiden. Mit »Design« scheinen dagegen oftmals Strukturen‌ und Entscheidungen auf einer untergeordneten Ebene bezeichnet zu werden. Betrachtet man die Arbeit eines echten Architekten, ist diese Begriffsverwendung jedoch geradezu absurd.
Versetzen Sie sich doch einmal in den Architekten, der Ihr neues Haus entwirft. Besitzt dieses GebĂ€ude eine Architektur? NatĂŒrlich! Und worin besteht diese Architektur? Nun, einerseits beschreibt sie die Gestalt des Hauses – sein Ă€ußeres Erscheinungsbild, den Aufriss und die Anordnung des Wohnraums bzw. der RĂ€ume. Wenn Sie sich jedoch die PlanungsentwĂŒrfe Ihres Architekten anschauen, werden Sie darin zum anderen auch eine Vielzahl von untergeordneten Details entdecken. So ist zum Beispiel ausgewiesen, wo jede einzelne Steckdose, jeder einzelne Lichtschalter und jede einzelne Lampe platziert werden wird. Sie können sehen, welche Schalter welche Lampen steuern. Ebenso lĂ€sst sich feststellen, wo der Kamin errichtet werden wird und an welchen Standorten und in welcher GrĂ¶ĂŸe der Warmwasserboiler und die Schmutzwasserpumpe installiert werden. Und darĂŒber hinaus werden Sie auch detaillierte Darstellungen der Wand-, Dach- und Fundamentkonstruktionen vorfinden.
Kurz: Die PlĂ€ne geben Auskunft ĂŒber alle winzigen Details, die sĂ€mtliche auf der ĂŒbergeordneten Ebene getroffenen Entscheidungen stĂŒtzen. Und es wird deutlich, dass diese untergeordneten Details und die ĂŒbergeordneten Entscheidungen Teil des Gesamtentwurfs des Hauses sind.
Genauso verhĂ€lt es sich auch mit dem Softwaredesign. Die untergeordneten (low-level) Details und die ĂŒbergeordnete (high-level) Struktur sind allesamt Teil desselben Ganzen. Zusammen bilden sie ein durchgĂ€ngiges Konstrukt, das die Gestalt des Systems definiert. Das eine kann nicht ohne das andere sein. TatsĂ€chlich gibt es keine eindeutige Grenzlinie zwischen diesen beiden Komponenten – es gibt einfach nur ein Kontinuum an Entscheidungen, die sich von der höchsten bis zu den niedrigsten Ebenen erstrecken.

1.1 Das Ziel‌?

Und die Zielsetzung dieser Entscheidungen? Das Erreichen eines guten Softwaredesigns? Dieses Ziel entspricht nichts Geringerem als meiner »utopischen« Beschreibung:
Das Ziel der Softwarearchitektur besteht in der Minimierung der menschlichen Ressourcen, die fĂŒr das Errichten und die Instandhaltung des benötigten Systems erforderlich sind.
Die QualitĂ€t des Designs‌ bemisst sich schlicht und ergreifend an dem Ausmaß des Aufwands, der erforderlich ist, um den BedĂŒrfnissen der Kunden gerecht zu werden. Bedarf es hierfĂŒr eines geringen Aufwands und bleibt dies auch wĂ€hrend der gesamten Lebenszeit des Systems so, dann handelt es sich um ein gutes Design – steigt der Aufwand mit jedem neuen Release, taugt das Design nichts. So einfach ist das.

1.2 Fallstudie

Die nachstehende Fallstudie soll hier als Beispiel dienen. Sie weist reale Daten eines echten Unternehmens aus, das jedoch anonym bleiben möchte.
Werfen wir zunĂ€chst einen Blick auf den Anstieg des technischen Mitarbeiterstabs im Engineering-Bereich. Sicher werden Sie zustimmen, dass dieser Trend Ă€ußerst vielversprechend aussieht. Das in Abbildung 1.1 gezeigte Personalwachstum muss doch ein Indikator fĂŒr einen bedeutenden Erfolg sein!
[Bild]
Abb. 1.1: Personalwachstum im Engineering-Bereich (Abdruck mit freundlicher Genehmigung von Jason Gorman)
Betrachten wir als NĂ€chstes die ProduktivitĂ€t‌ des Unternehmens in demselben Zeitraum, und zwar gemessen an den Lines of Code‌‌, also der Anzahl der Codezeilen‌ (siehe Abbildung 1.2).
[Bild]
Abb. 1.2: ProduktivitĂ€t ĂŒber denselben Zeitraum hinweg
Hier lÀuft ganz offenkundig irgendetwas nicht richtig: Obwohl jedes Release unter Zuhilfenahme einer stetig steigenden Anzahl von Entwicklern bearbeitet wird, scheint der Code lediglich in einem asymptotischen VerhÀltnis dazu anzuwachsen.
Was nun folgt, ist allerdings eine noch weitaus besorgniserregendere Grafik: Abbildung 1.3 zeigt, wie sich die Kosten pro Codezei‌le im Zeitverlauf verĂ€ndert haben.
[Bild]
Abb. 1.3: Kosten pro Codezeile im Zeitverlauf
Diese Trendentwicklungen sind definitiv nicht tragbar. Egal, wie profitabel das Unternehmen zum gegenwĂ€rtigen Zeitpunkt auch dastehen mag: Verlaufskurven wie diese werden die Gewinne des GeschĂ€ftsmodells in katastrophaler Art und Weise belasten und die Firma in die Verlustzone treiben – wenn nicht sogar direkt in die Pleite.
Doch was in aller Welt hat diese bemerkenswerte VerĂ€nderung in Bezug auf die ProduktivitĂ€t verursacht? Warum war die Codeerstellung fĂŒr Release Nummer 8 gleich 40 Mal teurer als fĂŒr Release Nummer 1?

1.2.1 Die Signatur des Chaos‌‌

Was Sie in den vorstehenden Grafiken gesehen haben, könnte man auch als die »Signatur des Chaos‌‌« bezeichnen. Wenn Systeme hastig zusammengeschustert werden, wenn die schiere Anzahl der Programmierer der alleinige Antrieb fĂŒr den zu erzielenden Output ist und wenn nur wenige bis gar keine Überlegungen hinsichtlich der Sauberkeit des Codes oder der Struktur des Designs angestellt werden, dann können Sie gewiss sein, dass Sie den hier demonstrierten eingeschlagenen Weg bis zum bitteren Ende gehen werden.
In Abbildung 1.4 ist zu sehen, wie sich dieser Weg fĂŒr die Entwickler darstellt: Sie haben mit einer ProduktivitĂ€t von nahezu 100 % angefangen, die dann jedoch mit jedem weiteren Release radikal abfiel. Bereits ab Release Nummer 4 wurde deutlich, dass ihre ProduktivitĂ€t in einer asymptotischen AnnĂ€herung gegen null abflachen wĂŒrde.
[Bild]
Abb. 1.4: ProduktivitÀt je Release
Aus Sicht der Entwickler ist das enorm frustrierend, weil sie faktisch alle die ganze Zeit ĂŒber unvermindert hart an dem Programm weitergearbeitet haben – ohne dass auch nur ein einziger von ihnen seine Anstrengungen verringert hĂ€tte.
Und doch, trotz all ihres heroischen Einsatzes, der Überstunden und ihrer Hingabe, bringen sie einfach nicht mehr viel zustande. All ihre BemĂŒhungen entfernen sich zusehends von den Features weg und richten sich nun immer mehr darauf, das entstandene Chaos zu verwalten. Ihre Aufgabe hat sich somit inzwischen dahin gehend verĂ€ndert, dass sie jetzt das Chaos von einer Stelle zur nĂ€chsten verlagern, und wieder zur nĂ€chsten und ĂŒbernĂ€chsten, damit sie ĂŒberhaupt noch in der Lage sind, auch nur ein einziges weiteres mickriges Feature zu ergĂ€nzen.

1.2.2 Die Perspektive der Unternehmensleitung

Wenn Sie nun glauben, das sei schon ĂŒbel, dann stellen Sie sich nur einmal vor, wie sich die Sachlage der FĂŒhrungsebene des Unternehmens darstellt! Abbildung 1.5 zeigt die Entwicklung der monatlichen Gehaltszahlung‌en fĂŒr denselben Zeitraum.
Release Nummer 1 wurde bei monatlichen Gehaltszahlungen von wenigen Hunderttausend US-Dollar fertiggestellt. Das zweite Release kostete bereits ein paar Hunderttausend Dollar mehr. Und mit Release Nummer 8 hatten die monatlichen Zahlungen bereits 20 Millionen US-Dollar erreicht, Tendenz steigend!
[Bild]
Abb. 1.5: Entwicklung der monatlichen Gehaltszahlungen je Release
Allein dieses Diagramm ist schon erschreckend. Zweifelsohne ist hier irgendetwas Alarmierendes im Busch. Man kann nur hoffen, dass die ErtrĂ€ge die Kosten am Ende ĂŒbersteigen werden und somit die Ausgaben rechtfertigen – doch egal, wie man diesen Kurvenverlauf auch betrachtet, er gibt in jedem Fall Anlass zur Sorge.
Vergleichen Sie die Kurve in Abbildung 1.5 nun aber mal mit den pro Release geschriebenen Codezeilen in Abbildung 1.2. Mit der Investition von ursprĂŒnglich wenigen Hunderttausend Dollar pro Monat wurde eine Menge FunktionalitĂ€t erzielt – die letzten 20 Millionen Dollar brachten dagegen nahezu nichts! Jeder CFO bzw. Finanzdirektor wird mit einem Blick auf diese beiden grafischen Darstellungen erkennen, dass sofort etwas unternommen werden muss, um die bevorstehende Katastrophe abzuwenden.
Doch was lĂ€sst sich dagegen unternehmen? Was ist hier schiefgelaufen? Wodurch wurde dieser unglaubliche ProduktivitĂ€tsabfall verursacht? Was kann die Managementebene anderes tun, als mit den FĂŒĂŸen aufzustampfen und den Entwicklern ihren Unmut kundzutun?

1.2.3 Was ist schiefgelaufen?

Vor fast 2.600 Jahren erzĂ€hlte der griechische Dichter Äsop die Fabel von der Schildkröte und dem Hasen. Die Moral dieser Geschichte wurde im Laufe der Zeit auf vielerlei unterschiedliche Weise interpretiert:
  • »Eile mit Weile.«
  • »Nicht den Schnellen gehört im Wettlauf der Sieg, nicht den Tapferen der Sieg im Kampf.«
  • »Blinder Eifer schadet nur.«
Im Prinzip illustriert diese Fabel die Unvernunft der SelbstĂŒberschĂ€tzung‌‌‌: Der Hase vertraut dermaßen auf die ihm eigene Schnelligkeit, dass er das Rennen nicht ernst genug nimmt und ein Nickerchen hĂ€lt, wĂ€hrend die Schildkröte unterdessen die Ziellinie ĂŒberquert.
Moderne Entwickler finden sich in einer Ă€hnlichen Wettbewerbssituation wieder – und stellen eine ganz Ă€hnliche SelbstĂŒberschĂ€tzung zur Schau. Allerdings schlafen sie nicht, ganz im Gegenteil: Die Programmierer von heute arbeiten buchstĂ€blich Tag und Nacht. Dennoch: Ein Teil ihres Verstandes befindet sich oftmals tatsĂ€chlich im DĂ€mmerschlaf – und zwar der Teil, der im Grunde genommen genau weiß, dass guter, sauberer und ordentlich designter Code den entscheidenden Unterschied macht.
Diese Entwickler erliegen einer landlĂ€ufigen Illusion: »AufrĂ€umen können wir spĂ€ter immer noch, jetzt mĂŒssen wir das System aber zuerst mal auf den Markt bringen!« Allerdings wird der Code im Nachhinein natĂŒrlich nicht mehr aufgerĂ€umt – ganz einfach weil der Marktdruck niemals nachlĂ€sst. Ist die MarkteinfĂŒhrung erst einmal vollzogen, hat man sofort eine Horde von Wettbewerbern auf den Fersen, denen man um jeden Preis vorausbleiben muss, indem man im ĂŒbertragenen Sinne so schnell rennt, wie man nur kann.
Dementsprechend wird den Programmierern zu keinem Zeitpunkt ein Wechsel ihres Arbeitsmodus gelingen. Sie können nicht zurĂŒck und den vorhandenen Code sĂ€ubern, weil sie schon gleich wieder das nĂ€chste Feature fertigstellen mĂŒssen – und das nĂ€chste und das nĂ€chste und das nĂ€chste. So hĂ€uft sich immer mehr Unordnung an, und in der Konsequenz nimmt die ProduktivitĂ€t einen zielstrebigen asymptotischen Verlauf gegen null.
Ebenso wie der Hase der SelbstĂŒberschĂ€tzung seiner Schnelligkeit erlag, verfallen auch die Entwickler einer SelbstĂŒberschĂ€tzung in Bezug auf ihre FĂ€higkeit, produktiv zu bleiben. Das Chaos, das sich in den Code einschleicht und ihre ProduktivitĂ€t beeintrĂ€chtigt, setzt sich somit unerbittlich fort. Und wenn diesem Prozess nicht Einhalt geboten wird, reduziert er ebendiese ProduktivitĂ€t binnen weniger Monate auf null.
Ein noch gravierenderer Trugschluss, dem die Entwickler erliegen, ist jedoch die Vorstellung, dass ihnen das Schreiben von unordentlichem Code kurzfristig einen Geschwindigkeitsvorteil bringen und alles andere auf lange Sicht nur aufhalten wĂŒrde. Programmierer, die diesem Irrglauben aufsitzen, demonstrieren nicht nur die SelbstĂŒberschĂ€tzung des Hasen in Bezug auf ihre FĂ€higkeit, den Wechsel vom chaotischen Arbeiten zur zukĂŒnftigen Beseitigung der angerichteten Unordnung zu vollziehen, sondern begehen darĂŒber hinaus auch einen simplen faktischen Fehler, denn: Tatsache ist, dass Unordnung immer fĂŒr mehr Verzögerungen sorgt als die fortgesetzte Einhaltung sauberer Programmierung, unabhĂ€ngig davon, welcher Zeitrahmen zugrunde gelegt wird.
Betrachten Sie in diesem Zusammenhang einmal die Ergebnisse eines bemerkenswerten, von Jason Gorman unternommenen Experiments, das in Abbildung 1.6 veranschaulicht ist. Jason fĂŒhrte seine Untersuchungsreihe ĂŒber einen Zeitraum von sechs Tagen durch. An je...

Inhaltsverzeichnis

  1. Impressum
  2. Vorwort
  3. Einleitung
  4. Über den Autor
  5. Danksagung
  6. Teil I: EinfĂŒhrung
  7. Kapitel 1: Was bedeuten »Design« und »Architektur«?‌
  8. Kapitel 2: Die Geschichte zweier Werte‌
  9. Teil II: Die ersten Bausteine setzen: Programmierparadigmen‌‌
  10. Kapitel 3: Die Paradigmen‌
  11. Kapitel 4: Strukturierte Programmierung‌
  12. Kapitel 5: Objektorientierte Programmierung‌
  13. Kapitel 6: Funktionale Programmierung‌
  14. Teil III: Designprinzipien‌
  15. Kapitel 7: SRP: Das Single-Responsibility-Prinzip‌
  16. Kapitel 8: OCP: Das Open-Closed-Prinzip‌
  17. Kapitel 9: LSP: Das Liskov’sche Substitutionsprinzip‌
  18. Kapitel 10: ISP: Das Interface-Segregation-Prinzip‌
  19. Kapitel 11: DIP: Das Dependency-Inversion-Prinzip‌
  20. Teil IV: Komponentenprinzipien‌
  21. Kapitel 12: Komponenten‌
  22. Kapitel 13: KomponentenkohĂ€sion‌
  23. Kapitel 14: Komponentenkopplung‌‌‌
  24. Teil V: Softwarearchitektur
  25. Kapitel 15: Was ist Softwarearchitektur?
  26. Kapitel 16: UnabhĂ€ngigkeit‌‌
  27. Kapitel 17: Grenzen‌: Linien ziehen
  28. Kapitel 18: Anatomie der Grenzen‌
  29. Kapitel 19: Richtlinien‌ und Ebenen‌
  30. Kapitel 20: GeschĂ€ftsregeln‌
  31. Kapitel 21: Die schreiende Softwarearchitektur‌
  32. Kapitel 22: Die saubere Architektur‌
  33. Kapitel 23: Presenters und »Humble Objects«‌‌
  34. Kapitel 24: Partielle Grenzen‌‌
  35. Kapitel 25: Layer und Grenzen‌
  36. Kapitel 26: Die Komponente Main‌
  37. Kapitel 27: Services‌ – große und kleine
  38. Kapitel 28: Die Testgrenze‌
  39. Kapitel 29: Saubere eingebettete Architektur‌
  40. Teil VI: Details
  41. Kapitel 30: Die Datenbank ist ein Detail‌‌‌
  42. Kapitel 31: Das Web ist ein Detail‌‌‌
  43. Kapitel 32: Ein Framework ist ein Detail‌‌‌
  44. Kapitel 33: Fallstudie: Software‌ fĂŒr den Verkauf von Videos
  45. Kapitel 34: Das fehlende Kapitel‌
  46. Anhang A: ArchitekturarchÀologie
  47. Anhang B: Nachwort

375,005 Studierende vertrauen auf uns

Zugang zu ĂŒber 1,5 Millionen Titeln zu einem fairen monatlichen Preis.

Mit unseren Lerntools kannst du noch effizienter lernen.

Information

Jahr
2018
ISBN drucken
9783958457249
eBook-ISBN:
9783958457263

HĂ€ufig gestellte Fragen

Ja, du kannst dein Abo jederzeit ĂŒber den Tab Abo in deinen Kontoeinstellungen auf der Perlego-Website kĂŒndigen. Dein Abo bleibt bis zum Ende deines aktuellen Abrechnungszeitraums aktiv. Erfahre, wie du dein Abo kĂŒndigen kannst
Nein, BĂŒcher können nicht als externe Dateien, z. B. PDFs, zur Verwendung außerhalb von Perlego heruntergeladen werden. Du kannst jedoch BĂŒcher in der Perlego-App herunterladen, um sie offline auf deinem Smartphone oder Tablet zu lesen. Erfahre, wie du BĂŒcher herunterladen kannst, um sie offline zu lesen
Perlego bietet zwei PlÀne an: Essential und Complete
  • Essential ist ideal fĂŒr Lernende und FachkrĂ€fte, die es genießen, eine Vielzahl von Themen zu erkunden. Greife auf die Essential Library mit ĂŒber 800.000 vertrauenswĂŒrdigen Titeln und Bestsellern in den Bereichen Wirtschaft, persönliche Weiterentwicklung und Geisteswissenschaften zu. EnthĂ€lt unbegrenzte Lesezeit und Standard-Vorlesestimme.
  • Complete: Perfekt fĂŒr fortgeschrittene Lernende und Forschende, die vollen, uneingeschrĂ€nkten Zugriff benötigen. Entsperre ĂŒber 1,5 Millionen BĂŒcher zu Hunderten von Themen, einschließlich akademischen und spezialisierten Titeln. Der Complete-Plan enthĂ€lt außerdem fortschrittliche Funktionen wie Premium Vorlesen und Forschungsassistent.
Beide PlĂ€ne sind mit monatlicher, halbjĂ€hrlicher oder jĂ€hrlicher Abrechnungskadenz verfĂŒgbar.
Wir sind ein Online-Lehrbuch-Abonnement-Service, bei dem du fĂŒr weniger als den Preis eines einzelnen Buchs pro Monat Zugriff auf eine gesamte Online-Bibliothek erhĂ€ltst. Bei ĂŒber 1,5 Millionen BĂŒchern zu mehr als 990 Themen bist du bestens versorgt! Erfahre mehr ĂŒber unsere Mission
Achte auf das Symbol zum Vorlesen bei deinem nĂ€chsten Buch, um zu sehen, ob du es dir auch anhören kannst. Bei diesem Tool wird dir Text laut vorgelesen, wobei der Text beim Vorlesen auch grafisch hervorgehoben wird. Du kannst das Vorlesen jederzeit anhalten, beschleunigen und verlangsamen. Erfahre mehr ĂŒber die Funktion „Vorlesen“
Ja! Du kannst die Perlego-App sowohl auf iOS- als auch auf Android-GerĂ€ten nutzen, damit du jederzeit und ĂŒberall lesen kannst – sogar offline. Perfekt fĂŒr den Weg zur Arbeit oder wenn du unterwegs bist.
Bitte beachte, dass wir GerĂ€te, auf denen die Betriebssysteme iOS 13 und Android 7 oder noch Ă€ltere Versionen ausgefĂŒhrt werden, nicht unterstĂŒtzen können. Mehr ĂŒber die Verwendung der App erfahren
Ja, du kannst auf Clean Architecture von Robert C. Martin im PDF- und/oder ePUB-Format sowie auf andere beliebte BĂŒcher in Informatik & Wissenschaft Allgemein zugreifen. In unserem Katalog stehen ĂŒber 1,5 Millionen BĂŒcher zur VerfĂŒgung.