Wiki source code of Softwareentwicklung

Last modified by Marco Grawunder on 2026/08/26 10:16

Hide last authors
Marco Grawunder 1.1 1 [[image:Main.Organisatorisches.WebHome@softwareprojekt_logo_transparent.png||alt="SoftwareprojektLogo.png" data-xwiki-image-style-alignment="end" height="136" width="309"]]
2
Marco Grawunder 5.1 3 {{info}}
Marco Grawunder 9.1 4 **Worum geht es auf dieser Seite?**
5
6 Diese Seite enthält die **allgemeinen technischen und funktionalen Anforderungen** an die Softwareentwicklung im Softwareprojekt. Dazu gehören Client-Server-Architektur, Meilensteine, Implementierung, Testen, Qualitätssicherung und der Umgang mit generativen KI-Werkzeugen.
7
8 Die konkrete Spielaufgabe und andere jahrgangsspezifische Vorgaben stehen im geschützten Bereich [[Aktuelles>>doc:Main.Aktuelles.WebHome]].
Marco Grawunder 5.1 9 {{/info}}
10
Marco Grawunder 1.1 11 {{toc/}}
12
Marco Grawunder 5.1 13 = Technische und funktionale Anforderungen =
Marco Grawunder 1.1 14
Marco Grawunder 5.1 15 * Client-Server-Umsetzung; die zentrale Spiellogik liegt auf dem Server.
16 ** Der Server muss vollständig Java-basiert sein.
17 ** Der Client kann ebenfalls in Java umgesetzt werden, muss dies aber nicht. Alternativ können z. B. Web-Frameworks wie Angular oder React verwendet werden. Dabei ist zu berücksichtigen, dass eine zusätzliche Web-Technologie insbesondere zu Beginn einen höheren Integrations- und Einarbeitungsaufwand verursachen kann.
Marco Grawunder 1.1 18 * Aus didaktischen Gründen (nicht optional!):
19 ** „beliebig“ viele registrierte Nutzer
20 ** mehrere Spielrunden gleichzeitig im Server
21 ** Spieler können **vom selben Client aus** an mehreren Spielen teilnehmen (also nicht mehrere Clients starten und dann teilnehmen)
22 * Chat 
23 ** globaler Chat im Hauptmenü
24 ** Lobby und Spielechats
25 * Nutzerverwaltung
26 ** gekapselter Zugriff, d.h. es darf für die Verwendung nicht sichtbar sein, wie die Daten wirklich verwaltet werden. Initial wird hier beispielsweise mit einer hauptspeicherbasierten Struktur gearbeitet.
27 ** relationales DBMS
28 ** einfache Austauschbarkeit des DBMS-Servers (unterschiedliche Verbindungen, unterschiedliche Hersteller)
Marco Grawunder 5.1 29 * Computergesteuerte Spieler (je nach aktueller Spielaufgabe)
30 ** Das Spiel muss die Integration eines computergesteuerten Spielers unterstützen.
31 ** Es muss mindestens eine einfache Strategie, z. B. eine zufallsbasierte Strategie, umgesetzt werden.
32 * Bei einem JavaFX-Client muss die Struktur die Anforderungen des Model-View-Presenter-Ansatzes (MVP) erfüllen.
33 * Andere Client-Arten, z. B. ein Konsolenclient, sollen mit möglichst geringem Aufwand angebunden werden können. Dies ist ein weiterer Grund dafür, die Spiellogik auf dem Server zu halten.
Marco Grawunder 1.1 34 * Visuelles Thema/Design darf im vorgegebenen Rahmen variiert werden (muss aber nicht!!)
Marco Grawunder 5.1 35 * Qualität und Bedienbarkeit haben Vorrang vor visuellen Zusatzfunktionen.
36 ** Wichtig sind insbesondere verständlicher, erweiterbarer und wartbarer Code sowie eine gute Benutzerführung.
37 ** Eine ansprechende optische Gestaltung ist willkommen, sofern sie nicht zulasten der Kernfunktionalität geht.
Marco Grawunder 1.1 38
39 {{info}}
40 **Wichtig!**
41
42 * Überlegen Sie genau, welche Features Sie umsetzen können und welche weggelassen werden sollten
43 * Lieber etwas weniger sehr gut umsetzen, als vieles schlecht! Qualität vor Quantität!
44 * Bedienbarkeit ist wichtig! Optisches Design weniger!
Marco Grawunder 5.1 45 * KISS: Lösungen möglichst einfach und nachvollziehbar halten.
Marco Grawunder 1.1 46 * Fokus auf das Wichtige! Es gibt keine Zusatzpunkte für Dinge wie
47 ** Freundeslisten
48 ** privaten Chat
49 ** 3D
50 * Sie dürfen die Regeln vereinfachen/verändern! Je nach Veränderung kann diese natürlich auch zu einer Reduktion der Komplexität und damit auch zu einer schlechteren Bewertung führen.
51 * Sie haben nur begrenzte Ressourcen zur Verfügung und müssen das auch vertreten!
52 {{/info}}
53
Marco Grawunder 8.1 54 = Allgemeine Regeln zur Brettspieladaption =
55
56 * keine Originalgrafiken ohne Freigabe veröffentlichen,
57 * Regeln dürfen vereinfacht/angepasst werden,
58 * Spielspaß soll erhalten bleiben,
59 * Aktionen anderer Spieler müssen nachvollziehbar sein,
60 * Zusatzdienste nur sinnvoll einsetzen.
61
Marco Grawunder 5.1 62 = Vorgegebene Meilensteine =
Marco Grawunder 1.1 63
Marco Grawunder 5.1 64 Für den Einstieg und zur Orientierung im Projektverlauf gibt es mehrere **vorgegebene Meilensteine**. Zusätzlich definiert jede Gruppe eigene fachliche Meilensteine.
Marco Grawunder 1.1 65
66 * Der erste Meilenstein ist durch die gemeinsame Bearbeitung der Übungsaufgaben erreicht.
Marco Grawunder 5.1 67 * Für den zweiten Meilenstein gibt es eine [[Zwischenpräsentation>>doc:Main.Präsentationen.WebHome]].
Marco Grawunder 1.1 68 * Es gibt eine Präsentation für den Prototypen (Meilenstein X), im zweiten Semester.
69 * Es gibt eine Präsentation für das finale Produkt (Endabnahme) zum Ende des zweiten Semesters.
70
71 == Meilenstein 1: Basisarchitektur mit UserManagement (Vertikaler Durchstich, wird gemeinsam gemacht) ==
72
73 * Hier geht es darum, die Basisarchitektur des SWP kennen zu lernen und gemeinsam in das SWP hineinzufinden.
74 * Die Speicherung der Nutzer erfolgt im Hauptspeicher, d.h. nach einem Neustart, sind keine Nutzer mehr vorhanden (es gibt allerdings vordefinierte Nutzer, die später wieder entfernt werden müssen)
75 * Neue Nutzer sollen sich für das Spiel registrieren können.
76 * Registrierte Nutzer sollen sich am Spiel anmelden können.
77 * Die Nutzer sollen nach dem Einloggen in das Hauptmenü gelangen und dort alle Nutzer sehen, die auch eingeloggt sind.
78 * Es soll eine Liste aller verfügbaren Lobbies angezeigt werden.
79 * Man soll neue Lobbies mit einem Namen anlegen können
80 * Man soll existierenden Lobbies beitreten können (ohne die Lobbies selber anzuzeigen)
81
82 {{success}}
83 **Hinweis:**
84
85 Hinweis: Dieser Meilenstein wird gemeinsam als Einführung für das Software Projekt durchgeführt und wird vor allem durch die Übungsblätter abgedeckt. Es findet am Ende also keine Präsentation statt.
86 {{/success}}
87
88 == Meilenstein 2: Hauptmenü, Chat, Spiel-Ansätze ==
89
90 * Die Nutzer im Hauptmenü, in der Lobby und im Spielfenster sollen jeweils untereinander Nachrichten in einem Chat versenden können.
91 * Es soll kein Refresh-Button verwendet werden, um die Nutzerliste im Hauptmenue (bzw. der Lobby) zu aktualisieren oder um neue Chat-Nachrichten abzurufen.
92 * Es soll ein einfaches Modell des **Spielmodells** vorliegen, d.h. es sollten das statische Modell (Klassendiagramm) und einige dynamische Modelle (Aktivitätsdiagramm, ggf. auch Zustandsdiagramm oder Sequenzdiagramm) vorliegen.
93 * Idealerweise kann man z.B. mit Hilfe der Console (oder eine einfachen GUI) schon ein wenig mit dem Spiel interagieren, das ist aber nicht zwingend notwendig!
94
95 == Meilensteine 3 - (X-1) ==
96
Marco Grawunder 7.1 97 Es ist notwendig, **zusätzliche eigene Meilensteine zu definieren (mindestens 3-4)**, die sich an die erste Präsentation anschließen. Der Meilenstein für den Prototypen darf **nicht der dritte Meilenstein** sein! Die Meilensteine repräsentieren dabei wichtige Zwischenziele, die erreicht worden sind und sollten sich konkret auf das Spiel beziehen. **Meilensteine müssen natürlich auch ein Datum haben!**
Marco Grawunder 1.1 98
99 == Meilenstein X "Prototyp" ==
100
101 * Es soll das UserManagement mit Hilfe einer relationalen Datenbank realisiert werden. Dazu soll das Schema für die Nutzerinformationen modelliert und über Java zugreifbar sein. Der Zugriff soll grundsätzlich auf beliebige per JDBC ansprechbare Datenbanken erfolgen und mit möglichst wenig Aufwand austauschbar sein (maximal eine neue Klasse). Außerhalb der Klasse(n), die den Datenbankzugriff regeln, darf niemand wissen, auf welche Weise die Daten gespeichert sind.
102 * Hier soll es eine erste, möglichst vollständige Version des Spiels geben (Feature-Complete).
103 * Es dürfen noch Fehler drin sein und die Bedienbarkeit muss noch nicht ganz ausgereift sein.
104 * Es dürfen danach noch Änderungen und Erweiterungen gemacht werden.
105
106 {{success}}
107 **Hinweis:**
108
109 * Die Anforderungen sind die **Minimalanforderungen**.
110 * Es darf ruhig zum jeweiligen Zeitpunkt schon mehr realisiert werden.
111 * Aber: Fokus auf das Wichtige!
112 ** Keine Freundeslisten
113 ** Keinen privaten Chat
114 ** kein 3D etc.
115 ** Die Spielanleitung kann als PDF zur Verfügung gestellt werden.
116 * Im Zweifelsfall ist es wichtiger, **eine gute Basis** zu haben und nicht so weit zu sein wie es der Meilenstein verlangt. Auf keinen Fall sollte man aus Gründen der Meilensteinerreichung Dinge einfach "runterhacken" um sie hinterher wieder aufzuräumen. Das wäre dann unnötige Arbeit!
117 {{/success}}
118
Marco Grawunder 5.1 119 = Nutzung generativer KI-Werkzeuge =
Marco Grawunder 1.1 120
Marco Grawunder 5.1 121 Generative KI-Werkzeuge wie ChatGPT, Copilot oder Gemini können im Softwareprojekt unterstützend eingesetzt werden. Dabei gelten die folgenden Regeln. Für mit KI-Unterstützung erzeugten Code und Text trägt die Gruppe dieselbe Verantwortung wie für vollständig selbst erstellte Inhalte.
Marco Grawunder 1.1 122
Marco Grawunder 8.1 123 *
124 **
Marco Grawunder 7.1 125 **1. Transparenzpflicht:
126 **Alle von KI-Tools generierten Code- oder Textpassagen müssen im Code oder in den Abgaben klar als solche gekennzeichnet werden. Zum Beispiel durch Kommentare wie**
Marco Grawunder 1.1 127
128 |~/~/ Generated with ChatGPT at 31.03.2025
129
130 **Ausnahme**: Die Vervollständigung einer Zeile (durch Tab) ist nicht speziell zu dokumentieren ("Local Full Line Completion"), alles weitergehende auf jeden Fall.
131
Marco Grawunder 5.1 132 Nicht dokumentierte weitergehende KI-Nutzung wird wie die ungekennzeichnete Übernahme fremder Inhalte behandelt und kann entsprechende Konsequenzen haben.
Marco Grawunder 1.1 133
134 **2. Keine vollständige Automatisierung:**
Marco Grawunder 5.1 135 KI-Werkzeuge dürfen z. B. zur Ideenfindung, zum Erklären, beim Debugging oder für Vorschläge genutzt werden. Größere generierte Programmteile dürfen nicht ungeprüft übernommen werden. Die Studierenden müssen verwendeten Code verstehen, prüfen und fachlich vertreten können.
Marco Grawunder 1.1 136
137 **3. Lernen steht im Vordergrund:**
Marco Grawunder 5.1 138 KI-Unterstützung darf den eigenen Lern- und Entwicklungsprozess nicht ersetzen. Insbesondere müssen die Beteiligten die resultierende Lösung verstehen und selbstständig weiterentwickeln können.
Marco Grawunder 1.1 139
140 **4. Individuelle Lösungspflicht:**
Marco Grawunder 5.1 141 Wesentliche Design- und Architekturentscheidungen – z. B. Datenmodell, zentrale Spiellogik und Schnittstellen – müssen von der Gruppe selbst getroffen, verstanden und begründet werden. KI kann dabei als Diskussions- oder Reflexionshilfe dienen, nicht als verantwortliche Entscheidungsinstanz.
Marco Grawunder 1.1 142
Marco Grawunder 5.1 143 = Implementierung, Test und Qualitätssicherung =
Marco Grawunder 1.1 144
Marco Grawunder 5.1 145 * Implementieren Sie das Produkt auf Grundlage des Entwurfs. Wenn sich während der Implementierung Änderungen ergeben, muss der Entwurf entsprechend nachgeführt werden.
Marco Grawunder 1.1 146 * Projektname muss Gruppenname enthalten!
147 * (((
148 Maven:
149
150 * Das Produkt muss sich mit Hilfe von **maven** bauen lassen.
Marco Grawunder 5.1 151 * Der Build muss **ohne vorheriges lokales `mvn install`** funktionieren.
Marco Grawunder 1.1 152 * Die Tests müssen über **maven** ausgeführt werden.
153 * **GUI-Tests** müssen sich ausschalten lassen.
Marco Grawunder 5.1 154 * Andere Build-Werkzeuge wie Gradle dürfen höchstens ergänzend eingesetzt werden. Der Maven-Build muss vollständig funktionsfähig bleiben.
Marco Grawunder 1.1 155 )))
156 * (((
157 Sinnvoll: (echtes) Pairprogramming (mit Tauschen der Rollen!): [[Hinweise zum Pairprogramming>>url:https://developer.atlassian.com/blog/2015/05/try-pair-programming/?utm_source=facebook&utm_medium=social&utm_campaign=atlassian_try-pair-programming]]
158
159 * Es gibt ein Plugin für IntelliJ, mit dem man gemeinsam am Code arbeiten kann (habe ich allerdings noch nicht getestet) 
160 ** Code With Me: "Das kostenlose Plug-in lässt sich direkt aus der Entwicklungsumgebung heraus über Preferences / Settings | Plugins | Marketplace installieren" ([[https:~~/~~/www.heise.de/news/Entwicklungsumgebung-JetBrains-veroeffentlicht-Plug-in-fuer-Pair-Programming-4915934.html>>url:https://www.heise.de/news/Entwicklungsumgebung-JetBrains-veroeffentlicht-Plug-in-fuer-Pair-Programming-4915934.html?wt_mc=nl.red.ho.ho-nl-daily.2020-10-01.link.link]])
161 )))
162 * Sinnvoll: längere Programmiersitzungen
163 * (((
164 Erstellen Sie dabei die nötigen Systemunterlagen (tw. erst zum Ende des Projektes)
165
166 * Benutzerhandbuch,
167 * Testunterlagen,
168 * Installationshandbuch etc.
169 )))
170 * (((
Marco Grawunder 5.1 171 [[Videos und Materialien u. a. zum Testen>>doc:Main.Videos.WebHome]]. Testen Sie wichtige Klassen kontinuierlich mit JUnit und nicht erst am Projektende.
Marco Grawunder 1.1 172
Marco Grawunder 5.1 173 * Nutzen Sie Dependency Injection konsequent; auf der Serverseite insbesondere über Spring.
Marco Grawunder 1.1 174 * TestFX kann beim Testen der GUI helfen. Wichtiger sind aber Tests der Funktionalitäten!
Marco Grawunder 5.1 175 * GUI-Tests müssen separat deaktivierbar sein, damit der normale Testlauf auch auf einem CI-/Build-Server ohne grafische Umgebung ausgeführt werden kann.
Marco Grawunder 1.1 176 * Mocken Sie Abhängigkeiten in Unit-Tests mit Mockito
177 )))
178 * Führen Sie Integrations- und Endtests durch
Marco Grawunder 6.1 179 * [[Führen Sie mindestens ein dokumentiertes gruppenweites Code–Review durch>>doc:Main.Projektarbeit.WebHome||anchor="HGruppenweitesCode-Review28Team-Review29"]]
Marco Grawunder 5.1 180 * Nutzen Sie Werkzeuge zur statischen Analyse und Qualitätssicherung, z. B. SpotBugs, Checkstyle, SonarLint oder SonarQube.
Marco Grawunder 1.1 181 * (((
182 **Es ist grundsätzlich nicht erlaubt, Warnungen zu unterdrücken (Wenn Warnungen unterdrückt werden, dann muss es einen sehr guten Grund geben! Jede zusätzliche Warnung muss dokumentiert und begründet sein!)**
183
Marco Grawunder 4.1 184 [[image:Warnung.png||alt="Warnung"]]
Marco Grawunder 1.1 185 )))
186 * In Scrum muss ein Produktinkrement getestet und lauffähig sein.
187 * Versuchen Sie möglichst früh und regelmäßig die aktuelle Version auch auf dem Rechner in der Arbi zu deployen.
Marco Grawunder 5.1 188 * Bei einem JavaFX-Client soll die MVP-Struktur nachvollziehbar selbst umgesetzt werden. Zusätzliche Frameworks, die diese Struktur stark automatisieren, sollten nur eingesetzt werden, wenn ihre Auswirkungen auf Testbarkeit und Wartbarkeit verstanden und begründet werden können.
189 * Beachten Sie auch die Hinweise zur [[Verwendung von KI>>doc:Main.Softwareentwicklung.WebHome||anchor="HNutzunggenerativerKI-Werkzeuge"]]
Marco Grawunder 9.1 190
191 = Siehe auch =
192
193 * [[Stichwortverzeichnis>>doc:Main.Index.WebHome]]
194 * [[Glossar>>doc:Main.Glossar.WebHome]]
195