# Übungen Software-Entwicklung 3: Software-Architektur

## Ausgangslage
Nachdem Sie letzte Woche sich überlegt haben, welches Thema Sie bearbeiten wollen, sollen Sie nun in erste Umsetzungen starten. 

## Aufgabe
* Überlegen Sie sich welche Teilkomponenten für Ihre Projektaufgabe notwendig sind.
* Identifzieren Sie zusammengehörige Komponenten und bündeln diese. Erstellen Sie für z.B. ein Klassendiagramm.
* Definieren Sie, wie die Kommunikation zwischen diesen Komponenten stattfinden soll. Achten Sie auf Austauschbarkeit und Erweiterbarkeit.
* Denken Sie darüber nach, welche Teile Ihres Projekts besonders verlässlich bzgl. der Schnittstelle sind.
* Unterteilen Sie Ihr Projekt in `packages`. Nutzen Sie zur Zugriffssteuerung die verschiedenen Sichtbarkeiten für Klassen.
* Nutzen Sie `Interfaces` und `Factories` zur Kapselung und Modularisierung.

## Tipps
* Beginnen Sie mit der einfachsten Umsetzung Ihrer Kernanforderungen. Fangen Sie erst im Anschluss mit der Strukturierung/Modularisierung Ihres Projekts an
* Schauen Sie in das [Vorlesungsprojekt](https://gitlab.mi.hdm-stuttgart.de/jordine/se3sose2022projekt). Hier finden Sie eine Möglichkeit wie Sie ihr Projekt untergliedern und modularisieren können.
* **Wichtig für später**: Erstellen Sie Ihr Java-Projekt mit Maven.
* Stellen Sie sich vor, dass Ihre Module als einzelne Artefakte deploybar sein sollen.
* Wenn Sie möchten, schauen Sie sich Informationen zu Java Modules an und überlegen sich, ob sie diese für Ihr Projekt einsetzen wollen.

## Ziele
* Grundstruktur Ihres Projekts steht.
* Aufteilung in modulare Einheiten.
* Nutzen von Interfaces statt konkreter Implementierung.
* Nutzung von Factories.