About arc42
arc42, the template for documentation of software and system architecture.
Template Version 0.1 EN. Stefan Kapferer, July 2023
Created, maintained and © by Dr. Peter Hruschka, Dr. Gernot Starke and contributors. See https://arc42.org.
Disclaimer
This documentation and the implementation of the sample app is always work in progress and by no means complete. We continuously evolve it and use the repo for illustrating different approaches around DDD and Context Mapper.
1. Introduction and Goals
This DDD and Context Mapper Sample Application aims to illustrate how to:
-
Verify domain implementation against a Context Mapper model (tactic DDD) using the Context Mapper ArcUnit extension.
-
We use jMolecules annotations to assign DDD patterns to the Java classes.
-
-
Use Context Mapper generator outputs (for example PlantUML diagrams) in your architecture documentation.
-
Implement an application using the tactic DDD patterns and Onion Architecture (just one example; others might do it differently).
In order to provide such a sample application we needed a domain. We decided for something that is very simple, as this serves our goals (giving an example for the above points and use the application in teaching/workshops) best.
Note: We are aware that the sample domain (three letter abbreviations) would most likely too simple in a real world scenario to justify the application of DDD. For such a simple thing, you would probably not need DDD.
The idea of the sample: An application that can resolve and manage three letter abbreviations and their meanings. Users can for example integrate it in their tool-chain to automatically generate list of abbreviations in their documents.
1.1. Requirements Overview
The main idea of the application is to offer a TLA (three letter abbreviation)[1] resolver via a RESTful HTTP API. Users can resolve TLAs meanings by using the API. Additionally, users shall be able to post new TLAs. Those are then reviewed and made public by power users.
The following use case diagram illustrates the main features:
5. Building Block View
5.1. Whitebox Overall System
<Overview Diagram>
- Motivation
-
<text explanation>
- Contained Building Blocks
-
<Description of contained building block (black boxes)>
- Important Interfaces
-
<Description of important interfaces>