[EN] arc42 Beispiele

Julian | Nov 16, 2024 min read

Here I will show you some examples of how the arc42 method / template is used in practice. find the theory you here

1. Introduction and objectives

Example:

### 1. Einleitung und Ziele

Das Projekt XYZ ist ein webbasiertes Software-System, das Entwicklern ermöglicht, ihre Projektmanagement-Aktivitäten effizient zu verwalten. Es zielt darauf ab, die Projektverwaltung durch ein benutzerfreundliches Dashboard und eine Reihe von Automatisierungstools zu optimieren.

**Stakeholder:**
- Projektmanager: Interessiert an Berichten und Statusübersichten.
- Entwickler: Benötigen werkzeugintegrierte Zeitaufzeichnung und Aufgabenverwaltung.
- Kunden: Zugriff auf Projektfortschritte und Meilensteine.

**Ziele:**
- Verbesserung der Projekttransparenz um 25%.
- Reduzierung der Verwaltungsaufwände um 40%.
- Bereitstellung einer intuitiven Benutzeroberfläche, die einfach zu bedienen ist.

2. Boundary conditions

Example:

### 2. Randbedingungen

**Technische Randbedingungen:**
- Muss auf einem Java EE Application Server laufen.
- Verwendung von PostgreSQL als Datenbank.

**Organisatorische Randbedingungen:**
- Entwicklung endet in Q4 2023.
- Ein Team von max. 10 Entwicklern.

**Gesetzliche Randbedingungen:**
- Einhaltung der DSGVO-Anforderungen zum Datenschutz.
- Umsetzung von Barrierefreiheit gemäß EU-Standard.

3. Context demarcation

Example:

### 3. Kontextabgrenzung

**Kontextdiagramm:**
- Das System interagiert mit externen Systemen wie einem Zahlungsdienstleister, einem E-Mail-Versandsystem und einem Authentifizierungsdienst.

```plaintext
+---------------------+
| E-Mail System       |
+----------↑----------+
           |
           |
+----------↓----------+
|          XYZ         |
|  Projektmanagement-  |
|    System            |
+----------↓----------+
           |
           |
+----------↓----------+
| Zahlungsdienstleister|
+---------------------+

Description of the interfaces:

  • Email System: SMTP, for sending notifications.
  • Payment service provider: REST API, for processing payments.
  • Authentication Service: OAuth 2.0, for Single Sign-On (SSO).

### 4. Lösungskonzept

**Beispiel:**
```plaintext
### 4. Lösungskonzept

**Architekturprinzipien:**
1. **Modularität**: Trennung von Verantwortlichkeiten durch verschiedene Module (z.B., Benutzerverwaltung, Projektmanagement, Berichterstellung).
2. **Skalierbarkeit**: Durch Einsatz von Microservices und Container-Technologien.
3. **Sicherheit**: Implementierung von Sicherheitsmechanismen wie Authentifizierung und Autorisierung.

**Technologieauswahl:**
- Backend: Spring Boot (Microservices-Architektur)
- Frontend: Angular für eine responsive und interaktive Web-Oberfläche
- Datenbank: PostgreSQL für relationale Datenspeicherung
- Containerisierung: Docker zur Isolation und einfachen Bereitstellung

5. Block view

Example:

### 5. Bausteinsicht

**Top-Level Bausteine:**
1. **User Management Module**
2. **Project Management Module**
3. **Reporting Module**

**Beschreibung:** 
- **User Management Module:** Zuständig für die Verwaltung von Benutzern, Registrierung, Anmeldung und Rollenverteilung.
- **Project Management Module:** Verwaltung von Projekten, Aufgaben und Meilensteinen.
- **Reporting Module:** Erzeugung und Bereitstellung von Berichten und Analysen.

**Bausteindiagramm:**

```plaintext
   +------------------------+
   |  User Management       |
   +------------------------+
                |
                |
   +------------------------+
   |  Projekt Management    |
   +------------------------+
                |
                |
   +------------------------+
   |  Reporting             |
   +------------------------+

### 6. Laufzeitsicht

**Beispiel:**
```plaintext
### 6. Laufzeitsicht

**Anwendungsfall Bestellverarbeitung:**
- **Schritt 1:** Kundenauftrag wird erstellt und gesendet.
- **Schritt 2:** System validiert und bestätigt den Auftrag.
- **Schritt 3:** Eine Bestätigungsmail wird an den Kunden gesendet.

```plaintext
+------------+        +------------+       +-------------+
|  Kunde     |        |   System   |       |  E-Mail     |
| Bestellt   |        |  Validiert |       |  Sendet     |
| Auftrag    +------->|  Auftrag   +------>| Bestätigung |
+------------+        +------------+       +-------------+

### 7. Verteilungssicht

**Beispiel:**
```plaintext
### 7. Verteilungssicht

**Verteilungsdiagramm:**

```plaintext
+------------------+        +------------------+
|   Web Server     |        |   App Server     |
|   (Nginx)        |        | (Spring Boot)    |
+-------↑----------+        +--------↑---------+
        |                            |
        | HTTP                       | REST
+-------↓----------+        +--------↓---------+
|   Benutzer-      |        |  Reporting       |
|   Interface      |        |  Service         |
+------------------+        +------------------+
  • Web Server: Nginx, serves as a reverse proxy and load balancer.
  • App Server: Spring Boot application for business functions.
  • Database: PostgreSQL hosted on a separate server for better scalability.

### 8. Querschnittliche Aspekte

**Beispiel:**
```plaintext
### 8. Querschnittliche Aspekte

**Sicherheit:**
- **Authentifizierung:** OAuth 2.0 für die Benutzeranmeldung.
- **Datenschutz:** Verschlüsselung sensibler Daten mit AES.

**Leistungsanforderungen:**
- **Maximale Antwortzeit:** 2 Sekunden für 95% der Anfragen.
- **Durchsatz:** Unterstützung von 10.000 gleichzeitigen Benutzern.

**Fehlerbehandlung:**
- **Standardisierte Fehlermeldungen:** Alle Fehler werden zentral verwaltet und an den Benutzer kommuniziert.
- **Logging:** Verwendung von ELK Stack (Elasticsearch, Logstash, Kibana) für umfangreiche Protokollierung und Monitoring.

9. Design decisions

Example:

### 9. Entwurfsentscheidungen

**Entscheidung 1:**
- **Was:** Einsatz von Microservices
- **Warum:** Skalierbarkeit, Zuverlässigkeit und einfache Wartbarkeit
- **Alternativen:** Monolithische Architektur; wurde verworfen wegen geringerer Skalierbarkeit und Flexibilität

**Entscheidung 2:**
- **Was:** Verwendung von PostgreSQL
- **Warum:** Leistungsfähigkeit bei großen Datenmengen und komplexen Abfragen
- **Alternativen:** MySQL; wurde verworfen aufgrund spezifischer PostgreSQL-Features wie JSONB-Unterstützung und leistungsstarker Abfrageoptimierung

These examples will give you an idea of ​​what software architecture documentation looks like with arc42. You help you understand the essential aspects and methods of arc42 and apply them in your projects. A lot Success in creating your architecture documentation! 🚀