Meine Blog-Beiträge

Was ist Domain-Gesteuertes Design ?

Was ist Domain-Gesteuertes Design ?


Was ist Domäne ?

Um dies zu definieren, müssen wir zunächst bestimmen, was wir in diesem Zusammenhang und in der Entwicklung im Allgemeinen meinen. Die Wörterbuchdefinition hierfür lautet "Ein Informations- oder Aktivitätsbereich". Wenn wir ein wenig davon abgehen, drückt der Bereich des Software-Engineering in der Regel den Bereich des Themas aus, den die Anwendung implementieren soll. Mit anderen Worten, während der Anwendungsentwicklung ist es "der Bereich des Wissens und der Aktivität, um den sich die Anwendungslogik dreht." domänengesteuertes Design

Ein weiterer gebräuchlicher Begriff, der bei der Softwareentwicklung verwendet wird DomänenschichtOder Domänenlogikwas vielen Entwicklern besser bekannt ist, GeschäftslogikGeschäftslogikEntspricht übergeordneten Regeln in einer Anwendung Geschäftsobjekte: (OOADinteragiert miteinander, um Modelldaten zu erstellen und zu ändern).

Was ist Domain-gesteuertes Design?

Zunächst und in seinem 2004 erschienenen Buch Domain-Driven Desing, das beim Programmierer Eric Evans populär wurde: Struggle and Complexity at the Heart of Software , ist das Konzept, das für die Erweiterung und Entwicklung dieser Software in der Praxis gilt. Es zielt darauf ab, das Management komplexer Anwendungen zu erleichtern, indem verwandte Teile der Software mit einem sich ständig weiterentwickelnden Modell verbunden werden. Sie konzentriert sich auf drei Grundprinzipien:

  • Fokus auf das Grashoir DomäneUnd Domänenlogik.
  • Komplexe Designs Domäne.
  • Domain-ExpertenVerbessern Sie das Anwendungsmodell und Domäneständig zusammenarbeiten, um Probleme mit zu lösen.

Evans' Domain Based Design , DDDdefiniert einige allgemeinere Begriffe, die beim Erläutern und Diskutieren von Anwendungen nützlich sind:

  • Kontext : Die Einstellung, in der ein Wort oder ausdrucksbestimmend erscheint, der seine Bedeutung bestimmt. Ausdrücke zu einem Modell können nur in einem Kontext verstanden werden.
  • Modell : Definition der ausgewählten Aspekte eines Domäneund ein Abstraktionssystem, mit dem Probleme mit ihm gelöst werden können Domäne.
  • Ubiquitous Language : DomänenmodellEine Sprache, die für alle Teammitglieder verwendet und konfiguriert wurde, um alle Aktivitäten des Teams mit Software zu kombinieren.
  • Begrenzter Kontext : Ein Grenzwert, in dem ein bestimmtes Modell definiert und anwendbar ist (in der Regel die Arbeit eines Teilsystems oder eines bestimmten Teams).

Bausteine

Domänengesteuertes Designdefiniert auch eine Reihe von übergeordneten Konzepten, die in Verbindung miteinander zum Erstellen und Ändern verwendet werden können Domänenmodelle:

  • Entitätsentität : ObjektIm Gegensatz zu herkömmlichen, seine konsequente Kontinuität Objektedefiniert durch Attribute.
  • Value-Objekt : Hat eine eindeutige Identität, aber keine andere ID Unveränderlich(kann nicht geändert werden).Objektattribute
  • Domänenereignis : Ein Objekt, das zum Aufzeichnen eines separaten Ereignisses im Zusammenhang mit der Modellaktivität innerhalb des Systems verwendet wird. Wenn alle Ereignisse innerhalb des Systems überwacht werden können, wird ein einzelnes Ereignis für die Arten der zugehörigen Wartung erstellt.
  • Aggregat: Ein Cluster Entitätenund mit den Grenzen, die um die Gruppe gesetzt werden. Anstatt einzelne oder alle Aktionen für jede einzelne Aktion auszuführen, wird der Auflistung von Elementen ein einzelnes Element zugewiesen. Externe Objekte haben keinen direkten Zugriff mehr auf jede Einzelne oder jede Person darin, sondern haben Zugriff auf nur ein Element und verwenden es, um Anweisungen an die Gruppe als Ganzes zu übermitteln. Diese App ist mit vielen echten Codierungsanwendungen verbunden, die wir in unserer Serie adressieren.
  • Service: Im Wesentlichen ist ein Serviceist eine Form von Prozess- oder Geschäftslogik, die nicht auf natürliche Weise in den Bereich passt Objekte. Mit anderen Worten, wenn einige Funktionen Entitätoder wenn es nicht zugeordnet werden kann, ist es wahrscheinlich ein.
  • Repositories: Nicht zu verwechseln mit dem Partner Versionskontroll-RepositorysDDDBedeutung von Repository, was ein ServiceDie Verwendung einer globalen Schnittstelle besteht darin, alle Entitätenund die Sammlung in einem bestimmten Abstand. Es müssen Methoden definiert werden, damit Objekte in ihnen erstellt, geändert und gelöscht werden können. Wenn Sie es jedoch zum Erstellen von Datenabfragen verwenden, müssen solche Datenabfragefunktionen aus der Geschäftslogik entfernt werden.
  • Fabriken Designmusterdie Logik des Erstellens komplexer Objekte und der Möglichkeit, dass der Kunde nichts über das Innenleben der Objektmanipulation weiß. DDDverwendet werden.

Domänengesteuertes DesignAußerdem kontinuierliche Integrationhebt auch die beliebtere App als je zuvor hervor und fordert das gesamte Entwicklungsteam auf, einen einzigen gemeinsamen Codespeicher zu verwenden und täglich (wenn nicht mehrmals am Tag) Verpflichtungen an sie weiterzugeben. Am Ende des Auftrags wird ein automatisierter Prozess ausgeführt, der die Integrität der gesamten Codebasis überprüft, automatisierte Komponententests, Regressionstests usw. ausführt und potenzielle Probleme, die in den neuesten Prozessen auftreten können, schnell erkennt.

Vorteile des domänengesteuerten Designs

  • Erleichtert die Kommunikation : Projekt Allgegenwärtigeine frühzeitige Betonung der Schaffung von Gemeinsamkeit und Sprache Domänenmodellfür Teams wird die Kommunikation oft viel einfacher während des gesamten Entwicklungslebenszyklus. Normalerweise DDDweniger Fachjargon bei der Erörterung von Aspekten der Anwendung erforderlich, da allgegenwärtige SpracheFrühe Lys werden wahrscheinlich einfachere Begriffe definieren, um auf diese eher technischen Aspekte Bezug zu nehmen.
  • Erhöht die Flexibilität : DDDDa seine Konzepte so intensiv basieren, wird fast alles darin auf einem Objekt basieren und daher recht modular und gekapselt sein. Dies ermöglicht einen regelmäßigen und kontinuierlichen Austausch und eine Verbesserung verschiedener Komponenten und sogar des gesamten Systems als Ganzes.
  • Domänenschnittstelle DDDDie Praxis, Konzepte und projektezubauen Domain-ExpertenEmpfehlen DDDdas ist, was Sie sind Domäne, im Gegensatz zu Anwendungen, die UI/UX betonen, werden häufig Anwendungen erzeugt, die genau und repräsentativ für das sind, was zur Hand ist. Erste und vorste. Während ein klares Gleichgewicht erforderlich ist, DomäneEine DDDbedeutet, dass der Ansatz ein Produkt hervorbringen kann, das im Publikum, das damit verbunden ist, gut mitschwingt.

Domänengesteuerte Designnachteile

  • Erfordert solidedomänenexpertise : Auch wenn sie technisch kompetente Köpfe sind, die an der Entwicklung arbeiten Domain-ExperteWenn nicht mindestens eine Person im Team ist, die genau weiß, in und aus dem Themenbereich, der die Anwendung umsetzen soll, ist das alles umsonst. . In einigen Fällen kann die Entwicklung die Integration eines oder mehrerer externer Teammitglieder erfordern, die sich durch den Lebenszyklus bewegen können.
  • Fördert iterative Anwendungen : Obwohl viele dies als Vorteil sehen, DDDEs ist nicht zu leugnen, dass Anwendungen stark auf kontinuierlicher Iteration und kontinuierlicher Integration basieren, um ein formbares Projekt zu erstellen, das sich nach Bedarf anpassen kann. Einige Organisationen, insbesondere Erfahrungen aus der Vergangenheit, haben WasserfallModell oder ähnlich, es kann Probleme mit diesen Anwendungen haben, wenn es von weniger flexiblen Entwicklungsmodellen abhängt.

Ich hoffe, dass ich in der Lage war, DDD in diesem Artikel richtig zu erklären.



Diesen Artikel teilen


Kommentare (0)

Kommentar