Wiki source code of Anforderungen Software

Version 7.2 by mgrawunder on 2025/09/24 09:03

Hide last authors
Marco Grawunder 4.1 1 [[image:Main.Organisatorisches.WebHome@softwareprojekt_logo_transparent.png||alt="SoftwareprojektLogo.png" data-xwiki-image-style-alignment="end" height="136" width="309"]]
2
Pascal Meyer 1.1 3 {{toc/}}
4
5 = Anforderungen: Spielumsetzung =
6
7 * Client-Server-Umsetzung (Spiellogik auf Server!)
mgrawunder 6.2 8 ** Der Server muss komplett Java-basiert sein
9 ** Der Client kann in Java sein, muss es aber nicht. Es ist auch erlaubt, hier z.B. Web-Frameworks wie Angular oder React zu verwenden. ACHTUNG! Das kann zu einem deutlich höherem Aufwand führen, man spart sich aber JavaFX ;-)
Pascal Meyer 1.1 10 * Aus didaktischen Gründen (nicht optional!):
11 ** „beliebig“ viele registrierte Nutzer
12 ** mehrere Spielrunden gleichzeitig im Server
13 ** Spieler können **vom selben Client aus** an mehreren Spielen teilnehmen (also nicht mehrere Clients starten und dann teilnehmen)
14 * Chat 
15 ** globaler Chat im Hauptmenü
16 ** Lobby und Spielechats
17 * Nutzerverwaltung
18 ** 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.
mgrawunder 6.2 19 ** relationales DBMS
Pascal Meyer 1.1 20 ** einfache Austauschbarkeit des DBMS-Servers (unterschiedliche Verbindungen, unterschiedliche Hersteller)
21 * KI (je nach Spiel, siehe Start-Folien)
22 ** Das Spiel muss die Integration einer KI unterstützen
23 ** Es muss eine einfache (z.B. zufallsbasierte) KI umgesetzt werden
24 * Ansatz muss Model-View-Presenter Anforderungen erfüllen
25 * Muss mit möglichst wenig Aufwand möglich sein, andere Client-Arten anzubinden (z.B. Console)  u.a. Spiellogik auf Server
26 * Visuelles Thema/Design darf im vorgegebenen Rahmen variiert werden (muss aber nicht!!)
27 * Achtung!
28 ** Wichtig ist guter, erweiterbarer und wartbarer Code und eine gute Benutzerführung
29 ** Wenn das Spiel dann zusätzlich noch optisch gut aussieht, um so besser.
30
Pascal Meyer 1.2 31 {{info}}
Pascal Meyer 1.1 32 **Wichtig!**
33
34 * Überlegen Sie genau, welche Features Sie umsetzen können und welche weggelassen werden sollten
35 * Lieber etwas weniger sehr gut umsetzen, als vieles schlecht! Qualität vor Quantität!
36 * Bedienbarkeit ist wichtig! Optisches Design weniger!
37 * „KISS: Keep it simple stupid“
38 * Fokus auf das Wichtige! Es gibt keine Zusatzpunkte für Dinge wie
39 ** Freundeslisten
40 ** privaten Chat
41 ** 3D
42 * 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.
43 * Sie haben nur begrenzte Ressourcen zur Verfügung und müssen das auch vertreten!
Pascal Meyer 1.2 44 {{/info}}
Pascal Meyer 1.1 45
46 = Anforderungen: Die vordefinierten Meilensteine =
47
48 Um gut in das SWP zu starten, gibt es drei **vordefinierte** Meilensteine.
49
50 * Der erste Meilenstein ist durch die gemeinsame Bearbeitung der Übungsaufgaben erreicht.
Pascal Meyer 3.1 51 * Für den zweiten Meilenstein (s.u.) gibt es eine [[Zwischenpräsentation>>doc:Main.Aufgabenstellung.WebHome||anchor="HTeilaufgabe5:ZwischenprE4sentation"]]. Das ist die erste Präsentation bei mir.
Pascal Meyer 1.1 52 * Es gibt eine Präsentation für den Prototypen (Meilenstein X), im zweiten Semester.
53 * Es gibt eine Präsentation für das finale Produkt (Endabnahme) zum Ende des zweiten Semesters.
54
55 == Meilenstein 1: Basisarchitektur mit UserManagement (Vertikaler Durchstich, wird gemeinsam gemacht) ==
56
57 * Hier geht es darum, die Basisarchitektur des SWP kennen zu lernen und gemeinsam in das SWP hineinzufinden.
58 * 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)
59 * Neue Nutzer sollen sich für das Spiel registrieren können.
60 * Registrierte Nutzer sollen sich am Spiel anmelden können.
61 * Die Nutzer sollen nach dem Einloggen in das Hauptmenü gelangen und dort alle Nutzer sehen, die auch eingeloggt sind.
62
Pascal Meyer 1.2 63 {{success}}
64 **Hinweis:**
Pascal Meyer 1.1 65
66 Hinweis: Dieser Meilenstein wird gemeinsam als Einführung für das Software Projekt durchgeführt. Es findet am Ende also keine Präsentation statt.
Pascal Meyer 1.2 67 {{/success}}
Pascal Meyer 1.1 68
69 == Meilenstein 2: Hauptmenü, Chat, Spiel-Ansätze ==
70
71 * Die Nutzer im Hauptmenü und im Spielefenster sollen untereinander Nachrichten in einem Chat versenden können.
72 * Es soll kein Refresh-Button verwendet werden, um die Nutzerliste im Hauptmenue (bzw. der Lobby) zu aktualisieren oder um neue Chat-Nachrichten abzurufen.
73 * Es soll eine Lister aller existierenden Lobbies geben.
74 * 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.
75 * 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!
76
77 == Meilensteine 3 - (X-1) ==
78
79 Es ist notwendig, **zusätzliche eigene Meilensteine zu definieren (mindestens 2-3)**, 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!
80
81 == Meilenstein X "Prototyp" ==
82
83 * 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.
84 * Hier soll es eine erste, möglichst vollständige Version des Spiels geben (Feature-Complete).
85 * Es dürfen noch Fehler drin sein und die Bedienbarkeit muss noch nicht ganz ausgereift sein.
86 * Es dürfen danach noch Änderungen und Erweiterungen gemacht werden.
87
Pascal Meyer 1.2 88 {{success}}
Pascal Meyer 1.5 89 **Hinweis:**
Pascal Meyer 1.2 90
Pascal Meyer 1.1 91 * Die Anforderungen sind die **Minimalanforderungen**.
92 * Es darf ruhig zum jeweiligen Zeitpunkt schon mehr realisiert werden.
93 * Aber: Fokus auf das Wichtige!
94 ** Keine Freundeslisten
95 ** Keinen privaten Chat
96 ** kein 3D etc.
97 ** Die Spielanleitung kann als PDF zur Verfügung gestellt werden.
98 * 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!
Pascal Meyer 1.5 99 {{/success}}
Pascal Meyer 1.1 100
101 = Anforderungen: Dokumentation =
102
pmeyer 5.1 103 Im Softwareprojekt muss am Ende zusätzlich zum eigentlichen Produkt ein Dokument abgegeben werden, welches im Wesentlichen die folgenden Aspekte enthalten sollte:
Pascal Meyer 1.1 104
105 * Eine allgemeine Einleitung für das Dokument. Worum geht es und wie ist das Dokument aufgebaut.
106 * Grundsätzlich sollte jeder Abschnitt kurz eingeleitet werden und jeden Kapitel sollte eine kurze Zusammenfassung bekommen.
mgrawunder 7.2 107 * Quellen müssen angegebenen werden, also z.B. nicht einfach Text von einer Web-Seite kopieren. Das kann u.U. als Plagiat ausgelegt werden...
Pascal Meyer 1.1 108 * Eine Darstellung der ermittelten Anforderungen.
Pascal Meyer 3.1 109 ** Dies umfasst mindestens die umgesetzten User-Stories (Sinnvoll: Die Akzeptanzkriterien für eine User-Story mit angeben.). Idealerweise werden die UserStories (siehe [[User-Stories>>doc:Main.Scrum.WebHome||anchor="HUserStories"]]) noch durch Anwendungsfälle unterstützt.
Pascal Meyer 1.1 110 ** Ggf. eine Darstellung/Auflistung nicht umgesetzter User Stories. Die kann noch einmal zeigen, welche kreativen Ideen zeitlich nicht mehr umgesetzt wurden
mgrawunder 7.2 111 ** Die Stories sollten möglichst gruppiert (z.B. nach Nutzerverwaltung, Hauptmenü/Lobby, etc.) werden.
Pascal Meyer 1.1 112 * Darstellung der Realisierung
113 ** Allgemeine/Übergreifende Konzepte, z.B. wie wurde MVP realisiert
114 *** Darstellung der Architektur und Aufteilung des Gesamtsystems in Module
115 ** Für jedes Modul (Lobby, Chat, Game, ...):
116 *** Allgemeine Beschreibung
117 *** Im Client ggf. Screenshots
118 *** Darstellung der Klassen und Zusammenhänge der Klasse. Hier gerne auch ausschnittsweise, um ein besseren Verständnis zu bekommen. Vollständiges Klassendiagramm des Moduls im Anhang (auch hier nicht zwingend mit allen Attributen und Methoden).
119 **** Zur Darstellung der Zusammenhänge ist es i.d.R. sehr sinnvoll, Klassendiagramme ohne Attribute und Methoden zu verwenden.
120 *** Ganz wichtig ist auch die Darstellung der Abläufe (Dynamikdiagramme).
121 **** Wenn man die Kommunikation zwischen Klassen darstellen möchte: Sequenzdiagramm
122 **** Wenn man allgemeine Abläufe hat: Aktivitätsdiagramme
123 **** Wenn man unterschiedliche Zustände durchläuft: Zustandsdiagramm
124 **** Diagramme müssen erläutert werden. Ein Diagramm ohne Beschreibung ist faktisch nicht vorhanden. Es muss nicht alles im Detail erklärt werden, aber auf spezielle Besonderheiten oder die Verwendung von Pattern hingewiesen werden. Es sollte nicht einfach ein Diagramm an das nächste gehängt werden, sondern z.B. gesagt werden: „In dem Diagramm xy ist zu sehen, wie der grundsätzliche Ablauf eines Spielzugs ist. Dabei wird zunächst...“
125 **** Nicht immer ist offensichtlich, warum eine Lösung gewählt wurde. In diesem Fall sollten (Entwurfs-)Entscheidungen begründet/motiviert werden. Es ist grundsätzlich eine gute Idee, Dinge nicht nur „mitzuteilen“, sondern zu „erklären“.
126 **** Wenn man komplexere Algorithmen darstellen möchte, kann es besser sein, die Darstellung mit Pseudocode vorzunehmen.
127 *** Diagramme sollten an den Stellen im Text sein, an denen sie erläutert werden. Es muss vom Text aus auf die Diagramme verwiesen ("siehe Abb. X.Y") werden. Einfach alle im Anhang aufzulisten, macht keinen Sinn.
mgrawunder 7.2 128 *** Hinweise: Man kann Diagramm auch in Gitlab textuell erzeugen: [[https:~~/~~/docs.gitlab.com/user/markdown/#diagrams-and-flowcharts>>https://docs.gitlab.com/user/markdown/#diagrams-and-flowcharts]] (und dann ggf. als
Pascal Meyer 1.1 129 ** Bei Spiel: Regelabweichungen darstellen und begründen
130 ** (Java-)Quellcode im Text möglichst vermeiden. Pseudocode kann für die Beschreibung von komplexeren Algorithmen verwendet werden.
131 ** **ACHTUNG**! Die Konzepte bitte so darstellen, als wenn sie nicht iterativ entstanden wären. Also keine "Verteilung" des Konzeptes auf Sprints. Wichtig ist, was am Ende herausgekommen ist.
132 ** Die Konzepte des Servers sollten mehr Aufmerksamkeit bekommen, als die den Clients.
133 ** Das Spiel ist das wichtigste im SWP, es sollte also im Realisierungskapitel den größen Umfang bekommen.
134 * Darstellung der Tests
135 ** Nach welchem Vorgehen wurde getestet?
136 ** Welche Tests gibt es?
137 *** Hinweis: Hier nicht jeden einzelnen Unit-Test aufführen, das ist unnötige Arbeit!
138 ** Wie sieht die Testabdeckung aus?
139 ** Was wurde nicht automatisiert getestet und wie wurde sichergestellt, dass die Funktionalität trotzdem korrekt ist?
140 ** Beschreibung des (mindestens einmal) durchgeführten gruppenweiten Codereviews. Aus Gründen der Bewertung ist es u.U. sinnvoll, Pull-Request mit beispielhaften Reviews in Git nicht zu löschen.
141 * Darstellung des durchgeführten Projektmanagements
142 ** Rollen
143 ** Arbeitsweise
144 ** Meilensteine
145 ** Rückblick über die Sprints/ Projekttagebuch
146 ** Verwendete Frameworks, Bibliotheken und Tools
147 * Ausblick: Was könnte man noch machen? Hier auf eine sinnvolle Reihenfolge achten
148 * Fazit:
149 ** Rückblick auf das vergangene Jahr.
150 ** Was hat man gelernt?
151 ** Was hat gut funktioniert, was weniger gut?
152 ** Feedback zum Software Projekt allgemein (es geht um die Durchführung der Veranstaltung als solches, d.h. z.B. was kann an der Veranstaltung als solches verbessert werden):
153 *** SWP Retrospektive: „Do More“, „Do Less“, „Keep Doing“, „Start Doing“, „Stop Doing“
154 * Anhang:
155 ** Ggf. vollständige Klassendiagramme (Ohne weitere Erläuterung)
156 ** Protokolle und andere im Laufe der Zeit entstandene Dokumente in speziellen Ordner hinterlegen. **Nicht (mehr) in das Dokument mit aufnehmen**, das ist nur unnötige Arbeit.
157 * Glossar mit Begriffen des Gegenstandes/Spiels
pmeyer 5.1 158 * Index  (Falls Dokument mit LaTeX erstellt)
Pascal Meyer 1.1 159
160 Ich werde immer wieder gefragt, wieviele Seiten die Dokumentation haben muss. Das lässt sich so pauschal leider nicht sagen, denn das hängt zum einen natürlich massiv von der verwendeten Vorlage ab, zum anderen aber auch davon, welches die aktuelle Aufgaben gewesen ist. Zur Orientierung kann man jedoch sagen, dass die typische (gelungene) (LaTeX-basierte-)Dokumentation in den letzten Jahren immer so in dem Bereich von 80 bis 100 Seiten (inkl. Anhängen und Bildern) gelegen hat. Es macht nun aber keinen Sinn, die Seitenanzahl künstlich durch "unnötigen" Inhalt aufzublähen. Ich schaue schon sehr genau darauf, wie gelungen und vollständig die oben genannten Punkte abgehandelt werden.
161
162 Zum Produkt selber noch notwendig:
163
164 * Eine Spielanleitung: Über die Regeln des Spiels hinausgehende Beschreibung, wie die Bedienung erfolgt
165 * Wie erfolgt die Installation und die Konfiguration?
166
167 Im Git-Repository gibt es eine Dokumentationsvorlage für LaTeX.
168
Pascal Meyer 1.5 169 {{success}}
170 **Hinweis:**
Pascal Meyer 1.1 171
172 * Falls es Widersprüche zwischen der Vorlage und dem Text hier im Wiki gibt, bitte eine kurze Nachricht. Im Zweifelsfall zählt der Inhalt aus dem Wiki.
173 * Falls etwas nicht korrekt funktioniert, bitte auch eine kurze Nachricht. Ich kümmere mich.
pmeyer 5.1 174 * Gruppen, die ihre Dokumentation auch im Git pflegen wollen, können mir einen Nachricht schicken und ich richte das Repo dann passend ein.
Pascal Meyer 1.1 175 * [[https:~~/~~/git.swl.informatik.uni-oldenburg.de/projects/SPB/repos/dokumentation/browse/>>url:https://git.swl.informatik.uni-oldenburg.de/projects/SPB/repos/dokumentation/browse/]]
Pascal Meyer 1.5 176 {{/success}}
Pascal Meyer 1.1 177
178 = Anforderungen: Nutzung von KI Tools =
179
180 Die Verwendung von KI-Tools wie ChatGPT, Copilot oder Google Gemini ist inzwischen auch in der Software Entwicklung angekommen. Auch im SWP ist die Verwendung von KI-Tools in gewissem Rahmen erlaubt und möglich.
181
182 **~1. Transparenzpflicht:**
183 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
184
Pascal Meyer 2.1 185 |~/~/ Generated with ChatGPT at 31.03.2025
Pascal Meyer 1.1 186
187 **Ausnahme**: Die Vervollständigung einer Zeile (durch Tab) ist nicht speziell zu dokumentieren ("Local Full Line Completion"), alles weitergehende auf jeden Fall.
188
189 Jede nicht dokumentierte Verwendung muss leider einem Plagiat (wie Copy/Paste aus Stackoverflow ohne Referenz) gleichgestellt werden und hat die üblichen Konsequenzen.
190
191 **2. Keine vollständige Automatisierung:**
192 KI-Tools dürfen zur Inspiration, Ideenfindung oder zum Debugging genutzt werden, aber keine kompletten Programmteile (z.B. ganze Klassen oder Module) dürfen automatisiert generiert und ungeprüft übernommen werden. Die Endverantwortung für die Funktionsweise und das Verständnis liegt bei den Studierenden!
193
194 **3. Lernen steht im Vordergrund:**
195 KI darf nicht verwendet werden, um Aufgaben automatisiert zu lösen, sondern nur als ergänzende Unterstützung bei Verständnisproblemen oder als Hilfsmittel beim Lernen.
196
197 **4. Individuelle Lösungspflicht:**
198 Alle wesentlichen Design- und Architekturentscheidungen (z.B. Datenmodell, Hauptlogik, Schnittstellen) müssen selbstständig ohne KI-Tools durch die Studierenden getroffen werden.