Domain-Driven Design (DDD) obejmuje kilka podstawowych koncepcji mających na celu usprawnienie rozwoju i projektowania złożonych systemów oprogramowania. Kluczowe pojęcia obejmują:
-
Koncepcje
- Domain-Driven Design (DDD): DDD kładzie nacisk na głębokie zrozumienie domeny problemowej jako podstawy tworzenia oprogramowania. Promuje współpracę między ekspertami dziedzinowymi i twórcami oprogramowania w celu skutecznego przechwytywania i modelowania złożonych domen biznesowych. Kluczowe pojęcia obejmują jednostki domeny (obiekty reprezentujące koncepcje biznesowe), obiekty wartości (niezmienne obiekty reprezentujące koncepcje bez tożsamości), agregaty (klastry powiązanych jednostek traktowane jako pojedyncza jednostka), repozytoria (abstrakcje umożliwiające dostęp do obiektów domeny) i ograniczone konteksty ( wyraźne granice, w obrębie których ma zastosowanie określony model domeny).
- Domain-Driven Design (DDD): DDD wykorzystuje różne techniki do modelowania i wdrażania aplikacji zorientowanych na domeny. Techniki te obejmują strategiczne wzorce projektowe, takie jak ograniczone konteksty, język wszechobecny (wspólny język między ekspertami w danej dziedzinie i programistami), mapowanie kontekstu (definiowanie relacji i interakcji między ograniczonymi kontekstami), burza zdarzeń (wspólne modelowanie zdarzeń i procesów w domenie) oraz wzorce taktyczne takie jak agregaty, repozytoria, usługi domenowe i zdarzenia domenowe w celu skutecznego hermetyzowania logiki domeny i skutecznego zarządzania nią.
- Zasada projektowania opartego na domenie (DDD): Podstawową zasadą DDD jest skupienie się na modelowaniu domeny i jej złożoności bezpośrednio w oprogramowaniu. Zasada ta zachęca programistów do ścisłego dostosowania projektu oprogramowania do rzeczywistych koncepcji i zachowań domeny. Używając wspólnego, specyficznego dla domeny języka i ściśle współpracując z ekspertami w tej dziedzinie, DDD ma na celu stworzenie oprogramowania, które dokładnie odzwierciedla logikę i zasady domeny biznesowej.
- Centralne koncepcje projektowania opartego na domenie: Centralne koncepcje w DDD obejmują:
- Ubiquitous Language: Język wspólny dla wszystkich członków zespołu, w tym ekspertów domenowych i programistów, w celu zapewnienia przejrzystości i precyzji w omawianiu koncepcji domen.
- Ograniczony kontekst: definiuje wyraźne granice, w obrębie których model domeny, wyrażony za pomocą wszechobecnego języka, ma spójne zastosowanie.
- Elementy i obiekty wartości: reprezentują koncepcje domeny odpowiednio z tożsamością (obiekty) lub bez tożsamości (obiekty wartości).
- Agregaty: Klaster powiązanych podmiotów traktowany jako pojedyncza jednostka w celu zachowania spójności i hermetyzacji reguł biznesowych.
- Usługi domenowe: Hermetyzuj logikę domeny, która w naturalny sposób nie mieści się w jednostkach lub obiektach wartości.
- Zdarzenia domeny: reprezentują znaczące zmiany stanu lub zdarzenia w domenie, którymi mogą być zainteresowane inne części systemu.
- Model domeny w DDD: Model domeny w DDD to koncepcyjna reprezentacja kluczowych bytów, obiektów wartości, agregatów i ich relacji w domenie problemowej. Zawiera podstawową logikę biznesową i reguły rządzące zachowaniem systemu oprogramowania. Model domeny ewoluuje iteracyjnie w trakcie procesu programowania w miarę pogłębiania się zrozumienia domeny. Służy jako plan projektowania i wdrażania rozwiązań programowych, które są ściśle zgodne z wymaganiami i celami biznesowymi, promując łatwość konserwacji, skalowalność i zdolność adaptacji systemu.
Techniki