1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
|
\section{ Produktfunktionen }
\subsection{ Registrierung }
\label{f:registrierung}
\begin{description}
\item[Anwendungsfall:] Der Nutzer möchte sich registrieren.
\item[Anforderungen:] \ref{r:login}
\item[Test:] \ref{t:register}, \ref{t:pw-req}
\item[Ziel:] Der Nutzer hat einen funktionierenden Account.
\item[Vorbedingung:] -
\item[Nachbedingung Erfolg:] Erfolgreiche Registrierung.
\item[Nachbedingung Fehlschlag:] Registrierung/Verbindungsaufbau zum Server schlägt
fehl.
\item[Akteure:] Nutzer, Server
\item[Auslösendes Ereignis:] Drücken des \enquote{Registrieren}-Buttons.
\item[Beschreibung:] \mbox{}
\begin{enumerate}
\item Öffnen der Webseite.
\item Drücken auf \enquote{Registrieren}-Option.
\item E-Mail-Adresse und zwei Mal neues Passwort eingeben.
\item \enquote{Registrieren}-Button drücken.
\item Bestätigungs-E-Mail wird an angegebene E-Mail-Adresse gesendet.
\item Nutzer öffnet Bestätigungs-Link.
\item Nutzer wird auf Login-Seite weitergeleitet. Der Bestätigungs-Link verfällt.
\end{enumerate}
\item[Erweiterung:] Wenn der Link nach 24 Stunden noch nicht angeklickt wurde, verfällt \\
dieser.
\end{description}
\newpage
\subsection{ Anmelden }
\label{f:anmelden}
\begin{description}
\item[Anwendungsfall:] Der Nutzer möchte sich anmelden
\item[Anforderungen:] \ref{r:login}, \ref{r:login-provider}
\item[Test:] \ref{t:login}
\item[Ziel:] Der Nutzer ist eingeloggt.
\item[Vorbedingung:] Der Nutzer hat einen funktionierenden Account.
\item[Nachbedingung Erfolg:] Erfolgreiche Anmeldung
\item[Nachbedingung Fehlschlag:] Anmeldung/Verbindungsaufbau zum Server schlägt
fehl.
\item[Akteure:] Nutzer, Server
\item[Auslösendes Ereignis:] Drücken des \enquote{Anmelden}-Buttons.
\item[Beschreibung:] \mbox{}
\begin{enumerate}
\item Öffnen der Webseite.
\item E-Mail-Adresse und Passwort eingeben.
\item Option \enquote{Passwort merken} aus-/abwählen.
\item \enquote{Anmelden}-Button drücken.
\item Nutzer wird zu seinem \Gls{dashboard} weitergeleitet.
\end{enumerate}
\item[Erweiterung:] Wenn die Option \enquote{Passwort merken} aktiviert ist, bleibt der Nutzer \\
sitzungsübergreifend in seinem Account eingeloggt.
\item[Alternativen:] \mbox{}
\begin{enumerate}
\item Falls sich der Browser einen vorherigen Login gemerkt hat,
wird der Nutzer beim Aufruf der Seite direkt zu seinem
\Gls{dashboard} weitergeleitet.
\item Der Nutzer meldet sich mit einem \Gls{oauth} Dienst an.
\end{enumerate}
\end{description}
\newpage
\subsection{ Passwort vergessen }
\label{f:pwreset}
\begin{description}
\item[Anwendungsfall:] Der Nutzer hat sein Passwort vergessen und möchte es zurücksetzen.
\item[Anforderungen:] \ref{r:reset-pw}
\item[Test:] \ref{t:pw-req}, \ref{t:forgot-pw}
\item[Ziel:] Der Nutzer hat ein neues Passwort.
\item[Vorbedingung:] Der Nutzer hat einen bestehenden Account und Zugriff auf seine E-Mail-Adresse
\item[Nachbedingung Erfolg:] Erfolgreiche Passwort Zurücksetzung.
\item[Nachbedingung Fehlschlag:] Zurücksetzung des Passworts / Verbindungsaufbau zum Server
schlägt fehl.
\item[Akteure:] Nutzer, Server
\item[Auslösendes Ereignis:] Drücken der \enquote{Passwort-Vergessen} Option auf der Login-Seite.
\item[Beschreibung:] \mbox{}
\begin{enumerate}
\item Öffnen der Webseite.
\item \enquote{Passwort-Vergessen} Option auswählen.
\item Weiterleitung auf \enquote{Passwort zurücksetzen} Seite.
\item E-Mail-Adresse des Accounts eingeben. Falls kein Account mit dieser
Adresse existiert, wird dieser Schritt wiederholt.
\item Bestätigungs-E-Mail mit Zurücksetzungs-Link wird an die angegebene
E-Mail-Adresse gesendet.
\item Der Nutzer öffnet den Zurücksetzungs-Link.
\item Ein Neues Passwort zweimal eingeben.
\item Auf den \enquote{Passwort-Zurücksetzen}-Button klicken.
\item Weiterleitung auf Login-Seite.
\end{enumerate}
\end{description}
\newpage
\subsection{ Passwort ändern }
\label{f:pwchange}
\begin{description}
\item[Anwendungsfall:] Der Nutzer möchte sein Passwort ändern.
\item[Anforderungen:] \ref{r:reset-pw}
\item[Test:] \ref{t:pw-req}, \ref{t:change-pw}
\item[Ziel:] Der Nutzer hat ein neues Passwort.
\item[Vorbedingung:] Der Nutzer ist in seinem Account angemeldet.
\item[Nachbedingung Erfolg:] Erfolgreiche Passwort Änderung.
\item[Nachbedingung Fehlschlag:] Änderung des Passworts / Verbindungsaufbau zum Server
schlägt fehl.
\item[Akteure:] Nutzer, Server
\item[Auslösendes Ereignis:] Betätigen des \enquote{Passwort-Ändern}-Buttons.
\item[Beschreibung:] \mbox{}
\begin{enumerate}
\item Öffnen der Webseite.
\item Anmelden
\item Auf Account-Einstellungen gehen.
\item Bisheriges Passwort und zweimal neues Passwort in dafür vorgesehene Felder
eintippen.
\item \enquote{Passwort-Ändern}-Button betätigen.
\end{enumerate}
\end{description}
\newpage
\subsection{ Hörfortschritt synchronisieren }
\label{f:hörfortschrittSync}
\begin{description}
\item[Anwendungsfall:] Der Nutzer hört mit einem verknüpften
\Gls{podcatcher} eine \Gls{episode} bis zu
einem gewissen Zeitpunkt.
Der Hörfortschritt soll mit dem Server und allen anderen Geräten synchronisiert werden.
\item[Anforderungen:] \ref{r:sync}, \ref{r:store}, \ref{r:persistent-storage}, \ref{r:gpodder}
\item[Test:] \ref{t:sync-episode}
\item[Ziel:] Der Hörfortschritt wird auf den Server und alle verknüpften Geräte übertragen.
\item[Vorbedingung:] Der Nutzer hat seinen Account mit einem \Gls{podcatcher} verknüpft und verwendet
diesen im Folgenden.
\item[Nachbedingung Erfolg:] Erfolgreiche Synchronisation des Hörfortschritts.
\item[Nachbedingung Fehlschlag:] Verbindungsaufbau zum Server schlägt
fehl.
\item[Akteure:] Nutzer, \Gls{podcatcher}, Server
\item[Auslösendes Ereignis:] Anhören einer \Gls{episode} bis zu einem gewissen Zeitpunkt.
\item[Beschreibung:] \mbox{}
\begin{enumerate}
\item Der Nutzer hört innerhalb eines \Gls{podcatcher}s eine
\Gls{episode}.
\item Der Hörfortschritt wird dem Server über die \Gls{gpodder} mitgeteilt.
\item Der Server aktualisiert den Hörfortschritt im entsprechenden Datensatz
des Nutzeraccounts zur \Gls{episode}.
\end{enumerate}
\item[Erweiterung:] Wenn sich ein weiterer \Gls{podcatcher} aktualisiert, ruft dieser
die neuen Hörfortschritte des Nutzers vom Server über die \Gls{gpodder} ab und wendet diese an.
\end{description}
\newpage
\subsection{ Abonnements synchronisieren}
\label{f:abonnentsSync}
\begin{description}
\item[Anwendungsfall:] Der Nutzer fügt auf einem verknüpften
\Gls{podcatcher} ein \Gls{abo} hinzu bzw. löscht ein \Gls{abo}.
Dieses soll mit dem Server und allen anderen Geräten synchronisiert werden.
\item[Anforderungen:] \ref{r:sync}, \ref{r:store}, \ref{r:persistent-storage}, \ref{r:gpodder}
\item[Test:] \ref{t:sync-sub}, \ref{t:sync-unsub}
\item[Ziel:] Das (De-)\Gls{abo} wird auf den Server und alle verknüpften Geräte übertragen.
\item[Vorbedingung:] Der Nutzer hat seinen Account mit einem \Gls{podcatcher} verknüpft und verwendet
diesen im Folgenden.
\item[Nachbedingung Erfolg:] Erfolgreiche Synchronisation des \Glspl{abo}.
\item[Nachbedingung Fehlschlag:] Verbindungsaufbau zum Server schlägt
fehl.
\item[Akteure:] Nutzer, \Gls{podcatcher}, Server
\item[Auslösendes Ereignis:] (De-)Abonnieren eines \Glspl{podcast} innerhalb
eines \Gls{podcatcher}.
\item[Beschreibung:] \mbox{}
\begin{enumerate}
\item Der Nutzer (de-)abonniert innerhalb eines \Gls{podcatcher}s einen
\Gls{podcast}.
\item Die Änderung wird dem Server über die \Gls{gpodder} mitgeteilt.
\item Der Server fügt das neue \Gls{abo} persistent zum Datensatz des Nutzers
auf dem Server hinzu / löscht das \Gls{abo} vom Datensatz auf
dem Server.
\end{enumerate}
\item[Erweiterung:] Wenn sich ein weiterer \Gls{podcatcher} aktualisiert, holt dieser
die aktuelle Liste der \Glspl{abo} des Nutzers vom Server über die
\Gls{gpodder} (Client Pull).
\end{description}
\newpage
\subsection{ Account löschen}
\label{f:deleteAccount}
\begin{description}
\item[Anwendungsfall:] Der Nutzer möchte seinen Account löschen.
\item[Anforderungen:] \ref{r:delete-acc}
\item[Test:] \ref{t:delete-acc}
\item[Ziel:] Der Account und alle Nutzerdaten werden vom Server gelöscht.
\item[Vorbedingung:] Der Nutzer ist angemeldet und befindet sich auf der Einstellungsseite.
\item[Nachbedingung Erfolg:] Der Account wurde gelöscht.
\item[Nachbedingung Fehlschlag:] Verbindungsaufbau zum Server schlägt
fehl.
\item[Akteure:] Nutzer, Server
\item[Auslösendes Ereignis:] Der Nutzer drückt auf den \enquote{Account löschen} Knopf.
\item[Beschreibung:] \mbox{}
\begin{enumerate}
\item Der Nutzer drückt auf den \enquote{Account löschen}-Knopf.
\item Der Nutzer wird dazu aufgefordert sein Passwort als Bestätigung der Löschung
einzugeben.
\item Der Server löscht den Account und alle dazugehörigen Daten.
\item Der Nutzer wird auf die Login-Seite weitergeleitet.
\end{enumerate}
\end{description}
|