architecture/
Der Stil selbst
Die vier Layer · Use Cases · Aggregates und Value Objects · die Richtung der Abhängigkeiten · Integration zwischen Kontexten · der Regelkatalog in Prosa.
Domain-Centric Development
Fachregeln landen verstreut in Controllern, Entities und Services. Domain-Centric Architecture (DCA) legt sie in die Domäne; Web und Persistence bleiben außen, als Adapter. Ein Architekturtest bricht den Build, wenn Technik hineingreift – in Java und .NET.
Was ihr davon habt Framework-Updates bleiben aus der Domäne, der Build nennt die verletzte Grenze, und ein Agent wird gemessen wie ein Kollege.
die Marke ist die Architektur: Adapter auf der Grenze, die Domäne im Kern, daneben Nachbarkontexte mit eigenem Kern
Infrastructure → Adapter → Application → Domain
Eine Regel steht über allem: Abhängigkeiten zeigen nach innen. Die Domäne kennt kein Framework, keine Datenbank, kein Protokoll, und der Build prüft das. Ob das Modell richtig ist, bleibt eine Frage an Menschen.
package shop.checkout.domain; import shop.checkout .infrastructure.persistence .OrderRow;
Eine Entity greift nach ihrer Tabellenzeile. Ein Jahr später lässt sich das Modell nicht mehr ohne die Datenbank ändern.
DCA-LAY-002
Domain must not depend on
Infrastructure
selects classes in *.domain..
checks no dependency on
*.infrastructure..
Eine Strukturregel, dieselbe in Java und .NET. Der Fehler wird ein roter Test, kein Review-Kommentar.
checkout.application.shared OrderRepository ← Interface checkout.adapter.outgoing .persistence JpaOrderRepository
Die Application nennt, was sie braucht; der Adapter setzt es um. Dieselbe Regel hält es so.
Eine Architektur, sechs Artefakte
Guide, Bibliotheken, zwei Shops, Katalog und Plugins beschreiben ein System. Der Katalog wird generiert; den Rest hält Pflege in Deckung.
Guide
Die Architekturentscheidungen für Kollegen und Agenten: taktisches DDD, Ports & Adapter, Benennung, Package-Layout, der Zweck jeder Regel.
dca-guideBuilding Blocks
Marker-Interfaces für die Bausteine aus DDD und Hexagonaler Architektur, dazu die Architekturregeln, auf Maven Central und NuGet. Die Marker haben keine Abhängigkeiten.
Ihr nutzt schon jMolecules? Die Regeln lassen sich auf
org.jmolecules.ddd.types.* zeigen – ohne einen Typ zu migrieren.
Referenzimplementierung · Java
Java 25, Spring Boot 4, acht Bounded Contexts, alle taktischen Patterns. Die Regeln laufen im Build.
dca-ecommerce-sample-javaReferenzimplementierung · .NET
ASP.NET Core, ein Projekt pro Bounded Context, dieselbe Ubiquitous Language. Der Beleg, dass DCA ohne Umbau auf C# passt.
dca-ecommerce-sample-dotnetKnowledge Catalog
Guide, Marker und Regeln als ein Graph mit über 500 Knoten, den Agenten nachschlagen und zitieren. Generiert, unabhängig vom Werkzeug.
dca-knowledge-catalogWerkzeuge
dca-core beschreibt, erzeugt und reviewt ein Projekt.dca-factory liefert Stories, mit einem Gate zwischen den Stufen.dca-craft bringt TDD, Clean Code, ADRs und Reviews.dca-factory-cockpit zeigt und steuert den Ablauf, nur in Claude Code.Claude Code, Codex und OpenCode lesen dieselben Skill-Ordner.
dca-marketplaceWarum es so gebaut ist
DCA ist die Architektur, eine Synthese aus Domain-Driven Design, Hexagonaler und Clean Architecture. Domain-Centric Development ist die Art, damit KI-gestützt zu entwickeln. Deterministisch soll sein, was eine Maschine prüfen kann: die Struktur und rot vor grün. Ob ein Agent die Domäne trifft, ist noch nicht gemessen.
121 gemeinsame Ids wie DCA-USE-009, für Java und .NET. Dieselbe Id heißt dieselbe
Absicht; was jede Plattform prüft, steht in ihrer Regelliste.
Der Katalog verbindet Guide, Marker und Regeln in einem Graph. Agenten schlagen darin nach und zitieren.
Gate-Skripte verlangen einen End-User-Test je Akzeptanzkriterium und lesen rot vor grün aus dem Testbericht, nicht aus einem Exit-Code. Eine Story mit Seite gilt erst als geliefert, wenn ein Mensch sie abgenommen hat.
einen Ablauf im Cockpit ansehen, vom ersten Thema bis zur App
Ein Agent hat dieselbe Story in beiden Stacks gebaut; dabei fielen zwei Abweichungen auf. Geschlossen wurden beide in Regel und Katalog, nicht im Shop-Code – dafür ist das Paar da.
Klein anfangen
DCA beginnt nicht mit einem Rewrite, sondern mit einem Test, der rot wird, wenn eine Abhängigkeit falsch zeigt.
# in Claude Code; Codex und OpenCode lesen dieselben Skill-Ordner /plugin marketplace add domain-centric-development/dca-marketplace /plugin install dca-core@dca-marketplace # in einem bestehenden Java- oder .NET-Projekt /dca-init # Building Blocks und Architekturtest, passend zum vorhandenen Layout /dca-new # oder: ein neues Projekt im leeren Verzeichnis ./gradlew test-architecture # Java dotnet test # .NET – das Architekturprojekt, Debug-Build
Vorhandene Marker-Interfaces werden übernommen oder per Alias deklariert. Nichts wird ersetzt, nur weil es anders heißt.
Regeln kommen in Sets. Was noch nicht passt, wird per Id abgeschaltet – schriftlich, nicht stillschweigend.
Danach Aggregates, Value Objects und Use Cases, mit Namenskonventionen und Glossar je Kontext.
Eine Story mit Gates durch alle Stufen. Optional: Die Architektur funktioniert auch ohne.
Die Rule Suites prüfen Struktur: wo ein Typ liegt, wovon er abhängt, wie er heißt. Ob das Modell stimmt und ein Use Case tut, was das Business meint, zeigen Verhaltenstests, Fachexperten und Review.
Liefern mit der Factory
dca-factory liefert eine Story nach der anderen, mit einem Gate zwischen
den Stufen. Sie braucht Projektbeschreibung, Backlog und Stack-Profil; /factory-setup
ergänzt, was fehlt.
# einmal pro Rechner, neben dca-core von oben /plugin install dca-craft@dca-marketplace # Tests, Reviews, Glossar für die Stages /plugin install dca-factory@dca-marketplace # die Grundlage — einmal pro Projekt, und wenn sich etwas bewegt /factory-setup # Beschreibung, git, Runner, Gate, Hook, Profil – nur, was fehlt # der Ablauf — discover → backlog → run → decide → delivered /factory-discover # optional: welches Problem sich lohnt /factory-backlog # Epic und Story mit prüfbaren Kriterien /factory-run # plan → test → build → tidy → judge → document /factory-decisions # Fragen beantworten, Ergebnisse abnehmen /factory-status # was geliefert ist, läuft, wartet, kostet # unbeaufsichtigt, aus der Shell bash .agents/factory/factory.sh run
/dca-describe schreibt project/ mit euch: Produkt, Technik, Domäne.
Jede Stage liest es; keine erfindet, was offen ist.
dca-factory.profile.yaml hält die Build- und Testbefehle. Die Erkennung füllt es
vor, ein Mensch korrigiert. Ein Lauf rät nie einen Befehl.
/factory-backlog schreibt Stories mit Szenarien. Nur status: approved
läuft; eine offene Frage hält den Lauf an und wartet in /factory-decisions.
/factory-run läuft in der Session, factory.sh run unbeaufsichtigt aus
der Shell. Beide schreiben dieselben Dateien; /factory-status zeigt beides.
einen Lauf ansehen, gleich darunter · nachlesen, wie Stages und Gates arbeiten · die Plugins installieren
Prinzipien
Die Rule Suites kodieren Strukturkonventionen für Entwickler und Agenten.
Helper, Util oder Impl an Domänentypen lehnen die Regeln ab.