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! 🚀
![[EN] arc42 Beispiele](/images/arc42ExamplesBlogHeader.png)