Wiki source code of Anforderungen Software

Version 5.1 by pmeyer on 2025/08/28 18:56

Show last authors
1 [[image:Main.Organisatorisches.WebHome@softwareprojekt_logo_transparent.png||alt="SoftwareprojektLogo.png" data-xwiki-image-style-alignment="end" height="136" width="309"]]
2
3 {{toc/}}
4
5 = Anforderungen: Spielumsetzung =
6
7 * Client-Server-Umsetzung (Spiellogik auf Server!)
8 ** Komplett Java-basiert (z.B. mit Web-Services, RMI)
9 * Aus didaktischen Gründen (nicht optional!):
10 ** „beliebig“ viele registrierte Nutzer
11 ** mehrere Spielrunden gleichzeitig im Server
12 ** Spieler können **vom selben Client aus** an mehreren Spielen teilnehmen (also nicht mehrere Clients starten und dann teilnehmen)
13 * Chat 
14 ** globaler Chat im Hauptmenü
15 ** Lobby und Spielechats
16 * Nutzerverwaltung
17 ** 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.
18 ** relationales DBMS (**Zugriff mit JDBC, kein Hibernate oder ähnliches**)
19 ** einfache Austauschbarkeit des DBMS-Servers (unterschiedliche Verbindungen, unterschiedliche Hersteller)
20 * KI (je nach Spiel, siehe Start-Folien)
21 ** Das Spiel muss die Integration einer KI unterstützen
22 ** Es muss eine einfache (z.B. zufallsbasierte) KI umgesetzt werden
23 * Ansatz muss Model-View-Presenter Anforderungen erfüllen
24 * Muss mit möglichst wenig Aufwand möglich sein, andere Client-Arten anzubinden (z.B. Console)  u.a. Spiellogik auf Server
25 * Visuelles Thema/Design darf im vorgegebenen Rahmen variiert werden (muss aber nicht!!)
26 * Achtung!
27 ** Wichtig ist guter, erweiterbarer und wartbarer Code und eine gute Benutzerführung
28 ** Wenn das Spiel dann zusätzlich noch optisch gut aussieht, um so besser.
29
30 {{info}}
31 **Wichtig!**
32
33 * Überlegen Sie genau, welche Features Sie umsetzen können und welche weggelassen werden sollten
34 * Lieber etwas weniger sehr gut umsetzen, als vieles schlecht! Qualität vor Quantität!
35 * Bedienbarkeit ist wichtig! Optisches Design weniger!
36 * „KISS: Keep it simple stupid“
37 * Fokus auf das Wichtige! Es gibt keine Zusatzpunkte für Dinge wie
38 ** Freundeslisten
39 ** privaten Chat
40 ** 3D
41 * 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.
42 * Sie haben nur begrenzte Ressourcen zur Verfügung und müssen das auch vertreten!
43 {{/info}}
44
45 = Anforderungen: Die vordefinierten Meilensteine =
46
47 Um gut in das SWP zu starten, gibt es drei **vordefinierte** Meilensteine.
48
49 * Der erste Meilenstein ist durch die gemeinsame Bearbeitung der Übungsaufgaben erreicht.
50 * 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.
51 * Es gibt eine Präsentation für den Prototypen (Meilenstein X), im zweiten Semester.
52 * Es gibt eine Präsentation für das finale Produkt (Endabnahme) zum Ende des zweiten Semesters.
53
54 == Meilenstein 1: Basisarchitektur mit UserManagement (Vertikaler Durchstich, wird gemeinsam gemacht) ==
55
56 * Hier geht es darum, die Basisarchitektur des SWP kennen zu lernen und gemeinsam in das SWP hineinzufinden.
57 * 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)
58 * Neue Nutzer sollen sich für das Spiel registrieren können.
59 * Registrierte Nutzer sollen sich am Spiel anmelden können.
60 * Die Nutzer sollen nach dem Einloggen in das Hauptmenü gelangen und dort alle Nutzer sehen, die auch eingeloggt sind.
61
62 {{success}}
63 **Hinweis:**
64
65 Hinweis: Dieser Meilenstein wird gemeinsam als Einführung für das Software Projekt durchgeführt. Es findet am Ende also keine Präsentation statt.
66 {{/success}}
67
68 == Meilenstein 2: Hauptmenü, Chat, Spiel-Ansätze ==
69
70 * Die Nutzer im Hauptmenü und im Spielefenster sollen untereinander Nachrichten in einem Chat versenden können.
71 * Es soll kein Refresh-Button verwendet werden, um die Nutzerliste im Hauptmenue (bzw. der Lobby) zu aktualisieren oder um neue Chat-Nachrichten abzurufen.
72 * Es soll eine Lister aller existierenden Lobbies geben.
73 * 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.
74 * 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!
75
76 == Meilensteine 3 - (X-1) ==
77
78 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!
79
80 == Meilenstein X "Prototyp" ==
81
82 * 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.
83 * Hier soll es eine erste, möglichst vollständige Version des Spiels geben (Feature-Complete).
84 * Es dürfen noch Fehler drin sein und die Bedienbarkeit muss noch nicht ganz ausgereift sein.
85 * Es dürfen danach noch Änderungen und Erweiterungen gemacht werden.
86
87 {{success}}
88 **Hinweis:**
89
90 * Die Anforderungen sind die **Minimalanforderungen**.
91 * Es darf ruhig zum jeweiligen Zeitpunkt schon mehr realisiert werden.
92 * Aber: Fokus auf das Wichtige!
93 ** Keine Freundeslisten
94 ** Keinen privaten Chat
95 ** kein 3D etc.
96 ** Die Spielanleitung kann als PDF zur Verfügung gestellt werden.
97 * 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!
98 {{/success}}
99
100 = Anforderungen: Dokumentation =
101
102 Im Softwareprojekt muss am Ende zusätzlich zum eigentlichen Produkt ein Dokument abgegeben werden, welches im Wesentlichen die folgenden Aspekte enthalten sollte:
103
104 * Eine allgemeine Einleitung für das Dokument. Worum geht es und wie ist das Dokument aufgebaut.
105 * Grundsätzlich sollte jeder Abschnitt kurz eingeleitet werden und jeden Kapitel sollte eine kurze Zusammenfassung bekommen.
106 * Quellen müssen angebenen werden, also z.B. nicht einfach Text von einer Web-Seite kopieren. Das kann u.U. als Plagiat ausgelegt werden...
107 * Eine Darstellung der ermittelten Anforderungen.
108 ** 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.
109 ** Ggf. eine Darstellung/Auflistung nicht umgesetzter User Stories. Die kann noch einmal zeigen, welche kreativen Ideen zeitlich nicht mehr umgesetzt wurden
110 ** Die Stories sollten möglichst gruppiert (z.B. nach Nutzerverwaltung, Hauptmenue/Lobby, etc.) werden.
111 * Darstellung der Realisierung
112 ** Allgemeine/Übergreifende Konzepte, z.B. wie wurde MVP realisiert
113 *** Darstellung der Architektur und Aufteilung des Gesamtsystems in Module
114 ** Für jedes Modul (Lobby, Chat, Game, ...):
115 *** Allgemeine Beschreibung
116 *** Im Client ggf. Screenshots
117 *** 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).
118 **** Zur Darstellung der Zusammenhänge ist es i.d.R. sehr sinnvoll, Klassendiagramme ohne Attribute und Methoden zu verwenden.
119 *** Ganz wichtig ist auch die Darstellung der Abläufe (Dynamikdiagramme).
120 **** Wenn man die Kommunikation zwischen Klassen darstellen möchte: Sequenzdiagramm
121 **** Wenn man allgemeine Abläufe hat: Aktivitätsdiagramme
122 **** Wenn man unterschiedliche Zustände durchläuft: Zustandsdiagramm
123 **** 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...“
124 **** 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“.
125 **** Wenn man komplexere Algorithmen darstellen möchte, kann es besser sein, die Darstellung mit Pseudocode vorzunehmen.
126 *** 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.
127 ** Bei Spiel: Regelabweichungen darstellen und begründen
128 ** (Java-)Quellcode im Text möglichst vermeiden. Pseudocode kann für die Beschreibung von komplexeren Algorithmen verwendet werden.
129 ** **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.
130 ** Die Konzepte des Servers sollten mehr Aufmerksamkeit bekommen, als die den Clients.
131 ** Das Spiel ist das wichtigste im SWP, es sollte also im Realisierungskapitel den größen Umfang bekommen.
132 * Darstellung der Tests
133 ** Nach welchem Vorgehen wurde getestet?
134 ** Welche Tests gibt es?
135 *** Hinweis: Hier nicht jeden einzelnen Unit-Test aufführen, das ist unnötige Arbeit!
136 ** Wie sieht die Testabdeckung aus?
137 ** Was wurde nicht automatisiert getestet und wie wurde sichergestellt, dass die Funktionalität trotzdem korrekt ist?
138 ** 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.
139 * Darstellung des durchgeführten Projektmanagements
140 ** Rollen
141 ** Arbeitsweise
142 ** Meilensteine
143 ** Rückblick über die Sprints/ Projekttagebuch
144 ** Verwendete Frameworks, Bibliotheken und Tools
145 * Ausblick: Was könnte man noch machen? Hier auf eine sinnvolle Reihenfolge achten
146 * Fazit:
147 ** Rückblick auf das vergangene Jahr.
148 ** Was hat man gelernt?
149 ** Was hat gut funktioniert, was weniger gut?
150 ** 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):
151 *** SWP Retrospektive: „Do More“, „Do Less“, „Keep Doing“, „Start Doing“, „Stop Doing“
152 * Anhang:
153 ** Ggf. vollständige Klassendiagramme (Ohne weitere Erläuterung)
154 ** 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.
155 * Glossar mit Begriffen des Gegenstandes/Spiels
156 * Index  (Falls Dokument mit LaTeX erstellt)
157
158 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.
159
160 Zum Produkt selber noch notwendig:
161
162 * Eine Spielanleitung: Über die Regeln des Spiels hinausgehende Beschreibung, wie die Bedienung erfolgt
163 * Wie erfolgt die Installation und die Konfiguration?
164
165 Im Git-Repository gibt es eine Dokumentationsvorlage für LaTeX.
166
167 {{success}}
168 **Hinweis:**
169
170 * 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.
171 * Falls etwas nicht korrekt funktioniert, bitte auch eine kurze Nachricht. Ich kümmere mich.
172 * Gruppen, die ihre Dokumentation auch im Git pflegen wollen, können mir einen Nachricht schicken und ich richte das Repo dann passend ein.
173 * [[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/]]
174 {{/success}}
175
176 = Anforderungen: Nutzung von KI Tools =
177
178 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.
179
180 **~1. Transparenzpflicht:**
181 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
182
183 |~/~/ Generated with ChatGPT at 31.03.2025
184
185 **Ausnahme**: Die Vervollständigung einer Zeile (durch Tab) ist nicht speziell zu dokumentieren ("Local Full Line Completion"), alles weitergehende auf jeden Fall.
186
187 Jede nicht dokumentierte Verwendung muss leider einem Plagiat (wie Copy/Paste aus Stackoverflow ohne Referenz) gleichgestellt werden und hat die üblichen Konsequenzen.
188
189 **2. Keine vollständige Automatisierung:**
190 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!
191
192 **3. Lernen steht im Vordergrund:**
193 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.
194
195 **4. Individuelle Lösungspflicht:**
196 Alle wesentlichen Design- und Architekturentscheidungen (z.B. Datenmodell, Hauptlogik, Schnittstellen) müssen selbstständig ohne KI-Tools durch die Studierenden getroffen werden.
197
198 = Anforderungen: Aufwand =
199
200 * SWP hat 3+6 KP (wobei 1 KP ca 30 h sind)
201 ** (ca.) 90 h + 180 h = 270 h pro Person
202 ** bei 10 Personen pro Gruppe: 10*270 h = 2700 h
203 ** Nur wenn alle (in die selbe Richtung) mitziehen, kann das SWP mit einigermaßen vertretbarem Aufwand durchgeführt werden
204 ** Wichtig: Planung was getan wird und was nicht (100 % in allen Übungsblättern schafft man auch nicht mit der normalen Stundenzahl)
205 ** Programmierung verleitet häufig dazu mehr zu tun … ;-)
206 * Trotzdem natürlich: Leistung = Arbeit/Zeit :-)
207
208 Anmerkung: Die Zahlen sind natürlich nur als Richtschnur zu sehen. Wichtig ist, dass man kontinuierlich an der Aufgabe dran bleibt, damit nicht am Ende die gesamten Stunden auf einen "einschlagen".
209
210 **Noch ein Nachtrag zum Aufwand:**
211
212 Es wird oft gesagt, dass 9 KP für das Software Projekt zu wenig sind. Hier liegt leider ein kleines Missverständnis vor. Das SWP sollte (so ist es zumindest geplant) so ausgelegt sein, dass ein durchschnittlicher Studierender mit den Kenntnissen die als Vorerfahrung verlangt werden mit dem Aufwand von 9 KP (also rund 250 Stunden) in der Lage sein sollte das Modul zu bestehen.
213
214 Das ganze ist immer relativ einfach zu definieren, wenn es keine Gruppenarbeit ist, dann kann man den Aufwand für das Modul auf eine einzelne Person ausrichten. Wir haben nun aber im SWP die Besonderheit, dass es Gruppenarbeit ist, und zwar keine einfache Gruppenarbeit mit 2 oder 3 Personen sondern mit bis zu 13.
215
216 Ich muss nun die Aufgabe so definieren, dass alle 13 Personen dieser Gruppe die Chance bekommen können, die 9 KP auch leisten zu können, d.h. es muss soviel "Arbeit" da sein, dass niemand aufgrund von fehlenden Aufgaben nichts für das Modul sinnvolles tun kann. Da es nun aber vorkommt, dass Personen nicht so gut mitziehen können oder wollen oder dass Personen das Modul abbrechen, könnte der Eindruck entstehen, dass die Gruppe mit weniger Personen das selbe leisten muss, wie eine Gruppe mit voller Besetzung. Das ist nicht der Fall! Bei der Bewertung der Gruppenleistung wird auch die Größe der Gruppe für die finale Bewertung herangezogen. Dabei ist ergänzend noch zu sagen, dass mit der Größe der Gruppe auch der Koordinierungaufwand steigt. Es ist also nicht so, dass eine größere Gruppe automatisch linear mehr schafft.
217
218 Also, ich versuche immer eine Aufgabe zu finden, die sich so flexibel erweitern oder einschränken lässt, dass die ganze Gruppe etwas zu tun hat, aber Einzelne nicht mehr tun sollen. Das klappt zugegebenermaßen mal mehr und mal weniger, ist aber immer mein Bemühen. Die Stunden die aufgeschrieben werden sollen, sollen auch dazu dienen, zu sehen, wieviel Aufwand tatsächlich geleistet wird. Ich gehe davon aus, dass die Stunden korrekt sind, da sie auch essentiell für die Bewertung sind. In den letzten Jahren gab es tatsächlich immer einige Studierende, den Aufwand nach oben übertroffen haben (und zwar teilweise deutlich). Das war aber in der Summe der Teilnehmer immer nur ein kleinerer Teil. Die meisten Studierenden waren tatsächlich eher deutlich unterhalb des vorgegebenen Aufwands.
219
220 Ich habe schon mal darüber nachgedacht, die Stunden nach oben hin zu deckeln (d.h. sowas wie "Strafpunkte" zu vergeben, wenn man deutlich zu viele Stunden leistet), das widerstrebt mir aber, da es sich hier um eine Lehrveranstaltung handelt und ich niemanden für sein freiwilliges Engagement bestrafen möchte. I.d.R. sprechen die Tutoren die Personen an, die deutlich zu vielen Stunden leisten.
221
222 Ein anderes Problem ist sicherlich der gefühlte Aufwand, in dem man die z.B. 6 KP die man für eine Vorlesung bekommt mit den 9 KP vergleicht, die man für das SWP bekommt. Der große Unterschied hier: Man kann theoretische Konzepte sehr schnell verstehen oder braucht etwas Zeit. Die KP Berechnung für eine VL geht davon aus, dass man die Inhalte der Vorlesung vor- und nachbereitet und seien wir mal ehrlich ...[[~[~[image:https://confluence.swl.informatik.uni-oldenburg.de/s/-df7cbn/9203/cnf719/_/images/icons/emoticons/wink.svg~|~|alt="(Zwinkern)"~]~]>>url:https://confluence.swl.informatik.uni-oldenburg.de/s/-df7cbn/9203/cnf719/_/images/icons/emoticons/wink.svg]]
223
224 In einem praktischen Modul kann man aber relativ wenig durch "schnelles Verstehen" herausholen. Man muss die Dinge aktiv tun und da gibt es auch keine Abkürzung indem man sich z.B. ein gutes You Tube Video anschaut und mit Hilfe von "Bolemie-Lernen" es irgendwie schafft, gut durch die Klausur zu kommen. Die Leistung bezieht sich in einem praktischen Modul immer kontinierlich auf die ganze Zeit (hier zwei Semester).
225
226 Was final noch dazukommt: Typischerweise schaffen es nicht alle, gleichmäßig die ganze Zeit an dem Modul zu arbeiten (wenn man mal 28 VL-Wochen nimmt, kommt man übrigens auf eine wöchentliche Arbeitsbelastung von ca. 9-10 Stunden für das Modul und der Besuch einer VL oder des Gruppensitzung decken davon je gerade mal 1,5 h ab) kommt es gerade vor Präsentationen zu erhöhtem Aufwand und der bleibt deutlich nachhaltiger im Kopf hängen, als die 3 Wochen in denen man mal nur so 2-3 h gemacht hat.
227
228 Hier noch mal etwas zum Thema Credit-Points: [[https:~~/~~/www.zeit.de/studium/studienfuehrer-2010/studium-bachelor-leitfaden/seite-3>>url:https://www.zeit.de/studium/studienfuehrer-2010/studium-bachelor-leitfaden/seite-3]]