186 lines
8.7 KiB
TeX
186 lines
8.7 KiB
TeX
\newcommand{\newrequirementlist}[1]{
|
|
% https://www.overleaf.com/learn/latex/Lists#Creating_a_new_list_with_enumitem
|
|
\newlist{#1list}{enumerate}{1}
|
|
\setlist[#1list, 1]
|
|
{
|
|
before=\leavevmode,
|
|
label=\upshape\textlangle #1\arabic*\textrangle,
|
|
ref=\upshape\textlangle #1\arabic*\textrangle,
|
|
resume=#1list
|
|
}
|
|
}
|
|
|
|
\newrequirementlist{RM}
|
|
\newrequirementlist{RS}
|
|
\newrequirementlist{RC}
|
|
\newrequirementlist{RW}
|
|
|
|
\section{Anforderungsanalyse}
|
|
|
|
\subsection{ Musskriterien }\label{r:musskriterien}
|
|
|
|
Musskriterien: unabdingbare Leistungen der Software.
|
|
|
|
\subsubsection*{ Funktionale Anforderungen }
|
|
|
|
\begin{RMlist}
|
|
\item\label{r:login} Der Benutzer kann sich im Webfrontend mit einer
|
|
E-Mail-Adresse und einem Pass\-wort erstmalig registrieren und bei
|
|
abgeschlossener Registrierung fortan mit denselben Informationen
|
|
anmelden.
|
|
Für eine erfolgreiche Registrierung muss die angegebene
|
|
E-Mail-Adresse zuerst verifiziert werden.\\
|
|
\item\label{r:store} Die Liste der \Glspl{abo} eines Benutzers sowie
|
|
der zeitliche Fortschritt beim Anhören(/Ansehen) von jeder begonnen
|
|
\Gls{episode} werden für jeden Benutzer gespeichert.
|
|
\item\label{r:sync} Die Liste der \Glspl{abo} eines Benutzers
|
|
sowie der zeitliche Fortschritt beim Anhören(/Ansehen) von jeder
|
|
begonnenen \Gls{episode} wird automatisch über alle von einem Benutzer
|
|
verknüpften \Gls{podcatcher} aktualisiert.
|
|
Dabei sind der zu synchronisierende Stand der \Glspl{abo} und der
|
|
zeitliche Fortschritt jeweils definiert als derjenige Stand, der
|
|
zeitlich am kürzesten zurückliegt.\\
|
|
\item\label{r:ui} Das Webfrontend bietet dem Benutzer eine graphische
|
|
Benutzeroberfläche zur Navigation und zur Ansteuerung einzelner
|
|
Funktionalitäten.\\
|
|
\item\label{r:reset-pw} Der Benutzer kann sein Passwort ändern und es
|
|
gibt eine ,,Passwort vergessen''-Funktion.
|
|
So kann ein angemeldeter Benutzer sein Passwort direkt im Webfrontend
|
|
ändern.
|
|
Im nicht angemeldeten Zustand kann der Benutzer sein Passwort über
|
|
die registrierte E-Mail-Adresse zurücksetzen.\\
|
|
\item\label{r:show-podcasts} Das Webfrontend bietet dem Benutzer die
|
|
Möglichkeit, sich die Liste seiner \Glspl{abo} anzeigen zu
|
|
lassen.
|
|
Die dabei dargestellten Informationen beinhalten den Namen des
|
|
\Glspl{abo} und eine gerundete Angabe darüber, wie lange es her ist,
|
|
dass der Benutzer das letzte Mal eine \Gls{episode} dieses \Glspl{abo}
|
|
konsumiert hat.\\
|
|
\end{RMlist}
|
|
|
|
\subsubsection*{ Nicht-funktionale Anforderungen }
|
|
|
|
\begin{RMlist}
|
|
\item\label{r:requests} Der Synchronisations-Server kann mindestens
|
|
50 Anfragen pro Sekunde verarbeiten.\\
|
|
\item\label{r:desktop-first} Das Webfrontend ist primär für
|
|
Desktop-Benutzer ausgelegt.
|
|
\item\label{r:gpodder} Der Datenaustausch erfolgt über die Gpodder
|
|
\Gls{rest-api} unter Verwendung des Datenformats \Gls{json}.
|
|
\item\label{r:persistent-storage} Die Speicherung der Daten eines
|
|
Benutzers \ref{r:store} über den Synchronisations-Server erfolgt
|
|
persistent in einer \Gls{db}. Diese Daten des Benutzers sind die
|
|
Liste seiner \Glspl{abo} und der zeitliche Fortschritt beim Anhören
|
|
(/Ansehen) aller begonnenen \Glspl{episode}.
|
|
\item\label{r:api-extension} Die \Gls{gpodder} wird um Funktionalitäten
|
|
zur verbesserten Kommunikation zwischen Front- und Backend erweitert
|
|
(siehe \ref{r:login}).\\
|
|
\end{RMlist}
|
|
|
|
|
|
\subsection{ Sollkriterien }\label{r:sollkriterien}
|
|
|
|
Sollkriterien: erstrebenswerte Leistungen.
|
|
|
|
\subsubsection*{ Funktionale Anforderungen }
|
|
|
|
\begin{RSlist}
|
|
\item\label{r:man} Das Webfrontend bietet die Möglichkeit eine nicht
|
|
ausgefüllte Benutzeranleitung für das Synchronisieren von \Glspl{podcast}
|
|
anzuzeigen.\\
|
|
\item\label{r:delete-acc} Der Benutzer kann seinen Account löschen.
|
|
Daraufhin werden alle auf diesen Benutzer bezogenen Daten gelöscht.\\
|
|
\end{RSlist}
|
|
|
|
\subsubsection*{ Nicht-funktionale Anforderungen }
|
|
|
|
\begin{RSlist}
|
|
\item\label{r:backend-libs} Das Backend wird in \Gls{java} unter Verwendung des
|
|
quelloffenen Frameworks \Gls{spring} implementiert. Weiter wird für die
|
|
\Gls{db} das relationale Open-Source Datenbankverwaltungssystem MariaDB
|
|
eingesetzt.
|
|
\item\label{r:ui-libs} Die Weboberfläche wird mithilfe der
|
|
\Gls{ui-lib} React oder des Webframeworks Vue in JavaScript und
|
|
mit dem Frontend-CSS-Framework Bootstrap entwickelt.
|
|
\item\label{r:ui-source}
|
|
Verwendete \Glspl{ui-lib} werden von einem \Gls{packagemanager}, wie dem Node
|
|
Package Manager (npm) bezogen. Ein \Gls{bundler}, wie vite oder Webpack,
|
|
stellt ein minimiertes Skript von den Teilen der Bibliotheken zusammen,
|
|
die vom Code verwendet werden. Das minimierte Skript wird dann auf einem
|
|
eigenen Server für die Weboberfläche bereitgestellt.
|
|
\item\label{r:spa} Die Weboberfläche wird als \Gls{spa}
|
|
entworfen und aktualisiert dynamisch ihren Inhalt, sobald es eine
|
|
Antwort auf eine Anfrage an die \Gls{gpodder} \ref{r:api-compat} erhält.
|
|
\item\label{r:parse-metadata} Das Backend kann die Metadaten von
|
|
\Gls{podcast} aus
|
|
deren \Gls{rss}-Feeds (XML-Dateien) für die Anzeige im Webfrontend
|
|
\ref{r:show-podcasts} parsen.
|
|
\item\label{r:pw-requirements} Verwendete Passwörter müssen mindestens 8 Zeichen,
|
|
ein Sonderzeichen, eine Zahl sowie einen Klein- und einen Großbuchstaben
|
|
enthalten.
|
|
Diese Anforderungen gelten also insbesondere für über die Funktionen
|
|
\ref{r:login} und \ref{r:reset-pw} neu gewählte Passwörter.\\
|
|
\item\label{r:save-pw} Passwörter werden sicher mittels \Gls{salt-hash}
|
|
gespeichert.
|
|
\item\label{r:session} Im Webfrontend angemeldete Benutzer bleiben dort
|
|
angemeldet. Hierfür wird eine Kombination aus einem \Gls{session-token} und
|
|
einem \Gls{cookie} verwendet.\\
|
|
\end{RSlist}
|
|
|
|
\subsection{ Kannkriterien }
|
|
|
|
Kannkriterien: Leistungen, die enthalten sein können.
|
|
|
|
\subsubsection*{ Funktionale Anforderungen }
|
|
|
|
\begin{RClist}
|
|
\item\label{r:subscribe} Ein Benutzer kann über die Weboberfläche einen
|
|
abonnierten \Gls{podcast} über einen generierten Link teilen.
|
|
Öffnet nun ein anderer Nutzer den Link wird dieser zur Weboberfläche
|
|
weitergeleitet und mit einem Pop-up gefragt, ob dieser den
|
|
\Gls{podcast} abonnieren
|
|
möchte, falls noch nicht geschehen.
|
|
Akzeptiert der Nutzer, so wird der \Gls{podcast} zur Liste der
|
|
\Glspl{abo} des
|
|
Nutzers hinzugefügt.
|
|
Gegebenenfalls muss sich der Benutzer dafür zuerst anmelden.
|
|
Der Link setzt sich dabei unter anderem aus der URL des Webfrontends oder
|
|
einem \Gls{pseudoprotocol} und dem \Gls{podcast}-Link des Providers zusammen.
|
|
\item\label{r:unsubscribe} Das Webfrontend bietet dem Benutzer die Möglichkeit,
|
|
\Glspl{abo} zu entfernen beziehungsweise \Glspl{podcast} zu deabonnieren.
|
|
\item\label{r:import} Das Importieren und Exportieren aller benutzerbezogenen
|
|
Daten wird unterstützt (siehe \ref{r:dsgvo}).
|
|
\item\label{r:import-other} Das Umsiedeln von anderen \Gls{gpodder}-Plattformen und
|
|
damit insbesondere der damit verbundene Datenimport wird unterstützt.
|
|
\item\label{r:api-compat} Die Weboberfläche ist kompatibel mit beliebigen
|
|
\Glspl{gpodder}.
|
|
\item\label{r:responsive} Die Weboberfläche ist \gls{responsive}.
|
|
\item\label{r:admin} Es gibt Administrator Benutzerkonten. Eine angestrebte
|
|
Funktionalität dieser privilegierten Konten ist das Einsehen von Statistiken,
|
|
wie der Anzahl von Benutzern, und dem Abruf der Metadaten eines
|
|
\Glspl{abo}.
|
|
\end{RClist}
|
|
|
|
\subsubsection*{ Nicht-funktionale Anforderungen }
|
|
|
|
\begin{RClist}
|
|
\item\label{r:login-provider} Die Anmeldung im Webfrontend kann mit dem
|
|
offenen Protokoll \Gls{oauth} 2.0 über Google, Apple oder Facebook erfolgen.
|
|
Die bei der Verknüpfung eines \Gls{podcatcher}s mit dem Synchronisationsserver
|
|
geforderten Anmeldedaten werden dann automatisch für den betreffenden
|
|
Benutzer generiert.
|
|
Diese kann er im Webfrontend einsehen.
|
|
\item\label{r:live-update} Im Webfrontend angemeldete Benutzer bleiben dort
|
|
angemeldet, wenn das Backend ein Update bekommt.
|
|
\item\label{r:language} Die Benutzeroberfläche kann in mehreren Sprachen
|
|
angezeigt werden, wobei neben der standardmäßig deutschen
|
|
Benutzeroberfläche die zusätzliche Bereitstellung einer englischen
|
|
Version gegenüber anderen Fremdsprachen priorisiert angestrebt wird.
|
|
\item\label{r:dsgvo} Der Umgang mit personenbezogenen Daten ist konform mit
|
|
der \\\Gls{dsgvo} der Europäischen Union.
|
|
\item\label{r:docker} Die Benutzung von \Gls{docker} vereinfacht das Deployment auf
|
|
einen Server, da Abhängigkeiten bereits im \Gls{docker}-Image enthalten sind.
|
|
Außerdem bleibt bei einer Kompromittierung der Software das Host-System
|
|
durch Virtualisierung der Container sicher.\\
|
|
\end{RClist}
|