Kontakt
stefan.bente[at]th-koeln.de
+49 2261 8196 6367
Discord Server
Prof. Bente Personal Zoom
Adresse
Steinmüllerallee 4
51643 Gummersbach
Gebäude LC4
Raum 1708 (Wegbeschreibung)
Sprechstunde nach Vereinbarung
Terminanfrage: calendly.com Wenn Sie dieses Tool nicht nutzen wollen, schicken Sie eine Mail und ich weise Ihnen einen Termin zu.

C4 (Component) Model

The C4 model, devised by Simon Brown, offers a hierarchical approach for visualizing and documenting the architecture of software systems. It breaks down the system into four levels of granularity, Context (high-level system interactions), Containers (applications and services within the system), Components (inner parts of those containers), and Code (detailed internals of components). This structure ensures that the system’s architecture is comprehensible to various audiences, from non-technical stakeholders to developers. We will use level 1 and 2 of the C4 model in this course.

Method Description

The C4 model is a hierarchical approach for visualizing and documenting the architecture of software systems. See here for a detailed description.

(TBD more elaborate description of the method, pictures, and sources)

Aggregate Canvas

TBD: Explain - Aggregate Canvas is not really part of the C4 Model, but fits in nicely as a preparation.

The aggregate canvas (https://github.com/ddd-crew/aggregate-design-canvas) uses the aforementioned compact canvas style to sum up what belongs to an aggregate (as a “cluster” of correlated objects - at this stage still quite technology-agnostic). Another useful source is https://domaincentric.net/blog/modelling-aggregates-with-aggregate-design-canvas. The Vaughn Vernon blogs and his “red book” should also be mentionned, as aggregates are an important focus for him.

Some of fields of that canvas can lead to questions, like:

  1. What is the exact meaning of the “Corrective Policies” in field 5? The naive bank account example in the above description is not particularly helpful for this aspect. However, this source gives a quite plausible and sensible explanation: a corrective policy can be used to enforce violations of aggregate invariants, in case such violations are inevitable due to external events.
  2. Where should consumed events be listed? The is a field for “created events” (no. 7), but none for consumed events - although they have a big impact on how this aggregate communicates with the rest of the world. No reference found, we list it with the commands. Use colors as in event storming.
  3. How should the metrics in fields 8 and 9 be interpreted? The above mentioned Kacper Guniak blog post gives good examples here. The actual, realistic numbers should be queried from the business side.

C4 Model (level 1 and 2)

(TBD: more elaborate description of the method, pictures, and sources)

How to do it

(TBD: step-by-step instructions, pictures, and sources)

Deliverables

(TBD: what to deliver exactly)

Central DDD Concepts

Entity

Value Object

Aggregate

How to tackle this in an Academic Course

(TBD: step-by-step instructions)

Sources

(TBD: sources)