Domain-Driven Design (DDD) to podejście do rozwoju oprogramowania, które koncentruje się na modelowaniu oprogramowania tak, aby odpowiadało domenie biznesowej. To potężna metodologia radzenia sobie ze złożonością, ale wymaga głębokiego, wspólnego zrozumienia domeny. Asystent AI może być nieocenionym partnerem w tym procesie, pomagając definiować, implementować i chronić model domeny.
Z AI możesz poruszać się szybciej bez poświęcania integralności koncepcyjnej systemu. AI staje się kustoszem twojej wiedzy domenowej, zapewniając, że kod zawsze odzwierciedla logikę biznesową.
Zastosowanie DDD z asystentem AI obejmuje proces współpracy, w którym ty dostarczasz wiedzę domenową, a AI pomaga ci przełożyć tę wiedzę na dobrze ustrukturyzowaną, łatwą w utrzymaniu bazę kodu.
1. Naucz wszechobecnego języka
Fundamentem DDD jest “język wszechobecny” (Ubiquitous Language) — wspólne słownictwo między deweloperami a ekspertami domenowymi. Twoim pierwszym krokiem jest nauczenie tego języka swojego asystenta AI poprzez udokumentowanie go w plikach kontekstowych projektu (CLAUDE.md lub .cursor/rules).
2. Modeluj domenę
Współpracuj z AI, aby zidentyfikować główne komponenty modelu domeny: agregaty, encje i obiekty wartości. Możesz opisać procesy biznesowe, a AI może pomóc ci ustrukturyzować je w spójny model.
3. Zdefiniuj ograniczone konteksty
Współpracuj z AI, aby podzielić model domeny na ograniczone konteksty (Bounded Contexts). AI może pomóc zidentyfikować logiczne granice i zasugerować, jak różne konteksty powinny się komunikować (np. poprzez zdarzenia domenowe lub warstwy antykorupcyjne).
4. Implementuj i egzekwuj
Poinstruuj AI, aby wygenerowało kod dla obiektów domeny i repozytoriów. Co kluczowe, możesz również używać AI jako “strażnika” modelu domeny, prosząc go o przegląd kodu pod kątem zgodności z zasadami DDD i językiem wszechobecnym.
Rozważmy aplikację e-commerce i zobaczmy, jak możesz użyć asystenta AI do modelowania ograniczonego kontekstu “Zamówienie”.
Ustal język wszechobecny.
Zaczynasz od zdefiniowania głównych terminów w pliku CLAUDE.md lub .cursor/rules/domain.mdc.
# Język wszechobecny dla kontekstu zamówień
-**Zamówienie:** Reprezentuje żądanie klienta zakupu produktów. Główny agregat.
-**PozycjaZamówienia:** Wpis w zamówieniu dla konkretnego produktu i ilości. Obiekt wartości.
-**StatusZamówienia:** Aktualny stan zamówienia (np. Oczekujące, Wysłane, Dostarczone). Enum.
-**Klient:** Osoba, która złożyła zamówienie. Encja.
Modeluj agregat.
Teraz możesz poprosić AI o zaprojektowanie agregatu Zamówienie.
Na podstawie naszego języka wszechobecnego zaprojektuj agregat `Zamówienie`. Powinien zawierać listę `PozycjiZamówienia` i `IdKlienta`. Powinien mieć metody `dodajPozycję` i `zmieńStatus`. Wygeneruj diagram klas dla tego agregatu.
AI nie tylko wygeneruje strukturę kodu, ale może też utworzyć wizualną reprezentację (np. w składni Mermaid), aby pomóc ci zwalidować model.
Wygeneruj implementację.
Gdy jesteś zadowolony z projektu, możesz poprosić o pełną implementację.
Zaimplementuj agregat `Zamówienie`, obiekt wartości `PozycjaZamówienia` i interfejs `Repozytorium Zamówień` w TypeScript. Upewnij się, że cały kod ściśle przestrzega języka wszechobecnego. Metoda `dodajPozycję` powinna egzekwować niezmiennik, że zamówienie nie może mieć więcej niż 10 unikalnych pozycji.
AI wygeneruje kod, włączając logikę biznesową chroniącą niezmienniki twojej domeny.
Egzekwuj reguły architektoniczne.
Możesz używać AI do bieżącego zarządzania architektonicznego.
Przejrzyj ten pull request. Czy kod w ograniczonym kontekście `Wysyłka` bezpośrednio dostępuje do `RepozytoriumZamówień`? Powinien nasłuchiwać zdarzenia domenowego `ZamówienieWysłane`.
Integrując swojego asystenta AI z procesem DDD, tworzysz potężne partnerstwo. AI obsługuje kod boilerplate i pomaga przemyśleć model, podczas gdy ty dostarczasz krytyczne spostrzeżenia domenowe. Rezultatem jest baza kodu, która jest nie tylko funkcjonalna, ale również prawdziwym odzwierciedleniem twojej domeny biznesowej.