# Ü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.