Skip to content

Commit e9b7257

Browse files
authored
First MADRs for latest decisions (#334)
1 parent 64df7fa commit e9b7257

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
status: "accepted"
3+
date: "2023-04-06"
4+
deciders: "stefan-ka, socadk"
5+
---
6+
# Allow modeling of domain services besides aggregates, instead of inside aggregates
7+
8+
## Context and Problem Statement
9+
10+
We originally took the [Sculptor DSL](http://sculptorgenerator.org/) for the tactic DDD part. For some reason we do not exactly know, they decided that services are modelled inside aggregates. This does not correspond with our interpretation of the DDD patterns and was additionally reported with [#326](https://github.com/ContextMapper/context-mapper-dsl/issues/326). Domain services should be modeled on the same level as aggregates (for CML, this means inside the bounded context object).
11+
12+
The problem: correcting this issue in a clean way would lead to a non-backwards-compatible change.
13+
14+
## Considered Options
15+
16+
* Not backwards-compatible: Make non-backwards-compatible change and release a new major version of Context Mapper.
17+
* Backwards-compatible: Allow to model domain services inside bounded contexts, but still support the old option to stay backwards-compatible.
18+
19+
## Decision Outcome
20+
21+
Chosen option: "backwards-compatible", because a breaking change is risky, causes a lot of documentation work for us, and lots of migration work for the users (adjust their models).
22+
23+
### Consequences
24+
25+
* Good, because we lower the risk and cause less migration and documentation work for us and the users.
26+
* Bad, because it is still possible to model domain services in a way that does not reflect our understanding of the patterns.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
status: "accepted"
3+
date: "2023-05-04"
4+
deciders: "stefan-ka, socadk"
5+
---
6+
# Layout for Use Case Diagrams (PlantUML Generator)
7+
8+
## Context and Problem Statement
9+
10+
While implementing our Use Case diagram generator, we realised that there are some differences regarding how people visualize use case diagrams. The [PlantUML documentation](https://plantuml.com/use-case-diagram) by default suggests that arrows point from actors to use cases. It does not clearly state how [secondary actors](https://socadk.github.io/design-practice-repository/artifact-templates/DPR-UseCase.html) shall be visualized. socadk legitimately pointed out that for a secondary actor it would make more sense to point the arrow from the use case to the secondary actor, as only the primary actor initiates the use case.
11+
Based on that discussion we checked out [Larman](https://www.amazon.de/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062); a popular book on UML and OOAD, serving as a 'de-facto' standard for many modelers. Larman suggests to not make arrows but just connect the actors with the use cases and draw the primary actors on the left and secondary actors on the right. Use cases are visualized top to bottom.
12+
13+
## Considered Options
14+
15+
* Default PlantUML with arrows
16+
* Stick to Larman
17+
18+
## Decision Outcome
19+
20+
Chosen option: "Stick to Larman", because we try to use and align with the literature as such as possible. For example: For the Context Map generator we tried to stick to the visualization of [Vaughn Vernon](https://www.amazon.de/s?k=implementing+domain+driven+design&adgrpid=63456564181&hvadid=381008329565&hvdev=c&hvlocphy=1030659&hvnetw=g&hvqmt=e&hvrand=11057192946270756118&hvtargid=kwd-299405302030&hydadcr=14770_1980674&tag=hydrach-21&ref=pd_sl_9tt0fqrrb3_e). Thereby, our decision is consistent with our earlier design principles.

docs/madr/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Markdown Any Decision Records (MADR)
2+
3+
Within this folder we document our design and architectural decisions according to the [MADR template](https://github.com/adr/madr).
4+
5+
To create a new record, use the template file [here](https://github.com/adr/madr/blob/develop/template/adr-template.md).

0 commit comments

Comments
 (0)