summaryrefslogtreecommitdiff
path: root/00-pflichtenheft/sections/TikzPictures
diff options
context:
space:
mode:
authorOrangerot <purple@orangerot.dev>2024-05-24 17:42:08 +0200
committerOrangerot <purple@orangerot.dev>2024-05-24 17:47:22 +0200
commit7fcdc1c788725f866de71fc9dfd8c4d1cb132b57 (patch)
tree89931c85ae3f149884ba02c69862558e93f01531 /00-pflichtenheft/sections/TikzPictures
Initial commitHEADmain
Diffstat (limited to '00-pflichtenheft/sections/TikzPictures')
-rw-r--r--00-pflichtenheft/sections/TikzPictures/ActivityLogin.tex56
-rw-r--r--00-pflichtenheft/sections/TikzPictures/ActivityRegister.tex60
-rw-r--r--00-pflichtenheft/sections/TikzPictures/ActivityResetPass.tex70
-rw-r--r--00-pflichtenheft/sections/TikzPictures/SequenceSynchroniseSubscription.tex79
-rw-r--r--00-pflichtenheft/sections/TikzPictures/UseCaseUML.tex46
5 files changed, 311 insertions, 0 deletions
diff --git a/00-pflichtenheft/sections/TikzPictures/ActivityLogin.tex b/00-pflichtenheft/sections/TikzPictures/ActivityLogin.tex
new file mode 100644
index 0000000..701eeef
--- /dev/null
+++ b/00-pflichtenheft/sections/TikzPictures/ActivityLogin.tex
@@ -0,0 +1,56 @@
+\begin{tikzpicture}
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % Nodeklassen für Aktivitätsdiagramm festlegen: %
+ %-------------------------------------------------------------------------------%
+ % start - Schwarzer ausgefüllter Kreis %
+ % activity - Abgerundetes Rechteck für Aktivitäten des Users %
+ % actBox - Rechteck für Reaktionen des Systems %
+ % decision - Karokästchen für Entscheidungen / Abzweigungen %
+ % end - Zielscheibe für das Ende der Aktivität %
+ %-------------------------------------------------------------------------------%
+ % Siehe: https://www-kseta.ttp.kit.edu/fellows/Tanja.Harbaum/tikz_tutorial.pdf %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ \tikzset{start/.style={circle,minimum width=0.3cm,minimum height=0.3cm,draw,fill}}
+ \tikzset{activity/.style={rectangle,minimum width=1cm,minimum height=0.5cm,rounded corners=5pt,draw,align=center}}
+ \tikzset{actBox/.style={rectangle,minimum width=1cm,minimum height=0.5cm,draw,align=center}}
+ \tikzset{decision/.style={diamond,minimum width=1cm,minimum height=1cm,draw,align=center}}
+ \tikzset{end/.style={draw,double=white,circle,inner sep=1pt,minimum width=0.3cm,minimum height=0.3cm,draw,fill}}
+
+ % Nodes und deren Position (voneinander abhängig) angeben
+ \node[start] (Start) {};
+ \node[activity, right = of Start] (Aufruf) {Website aufrufen};
+ \node[actBox, right = of Aufruf] (Login) {Login page};
+ \node[decision, right = of Login] (Remembered) {Gemerkt?};
+ \node[decision, below left = of Remembered] (RemEnd1) {};
+ \node[activity, below = of RemEnd1] (Input) {E-Mail und\\ Passwort eingeben};
+ \node[activity, below = of Input] (RememberOpt) {Option \string"Passwort merken\string"\\ aus-/abwählen};
+ \node[activity, below = of RememberOpt] (LoginPress) {\string"Anmelden\string"-Button\\ drücken};
+ \node[actBox, left = of LoginPress] (ErrorBox) {Fehlermeldung};
+ \node[decision, below = of LoginPress] (CorrectEntry) {Korrekte\\ Eingabe?};
+ \node[actBox, right = of CorrectEntry] (DashboardShow) {Dashboard\\ der Website};
+ \path[name path=P1] (Remembered.south east) -| (DashboardShow);
+ \path[name path=P2] (RemEnd1.north east) -| (DashboardShow);
+ \node[end, below = of DashboardShow] (End) {};
+ \coordinate (jump1) at (DashboardShow |- RemEnd1){};
+ \draw($(Start.north west)+(-1,2)$) rectangle ($(End.south east)+(2,-1)$);
+ \path ($(Start.north west)+(-1,1.3)$) -- ($(Start -| End)+(2,1.3)$) node[midway]{\Large \textbf{Anmeldung}};
+
+ % Verbindungen zwischen den Nodes
+
+ \draw[-stealth, thick](Start) -- (Aufruf);
+ \draw[-stealth, thick](Aufruf) -- (Login);
+ \draw[-stealth, thick](Login) -- (Remembered);
+ \draw[-stealth, thick](Remembered) -- node[left = 2mm, very near start]{nein} (RemEnd1);
+ \draw[-stealth, thick](Remembered.south east) -- (jump1) node[right = 2mm, near start]{ja} -- (DashboardShow);
+ \draw[-stealth, thick](RemEnd1) -- (Input);
+ \draw[-stealth, thick](Input) -- (RememberOpt);
+ \draw[-stealth, thick](RememberOpt) -- (LoginPress);
+ \draw[-stealth, thick](LoginPress) -- (CorrectEntry);
+ \draw[-stealth, thick](CorrectEntry) -| node[above, very near start]{falsch} (ErrorBox);
+ \draw[-stealth, thick](ErrorBox) |- (RemEnd1);
+ \draw[-stealth, thick](CorrectEntry) -- node[above, midway]{wahr} (DashboardShow);
+ \draw[-stealth, thick](DashboardShow) -- (End);
+
+\end{tikzpicture} \ No newline at end of file
diff --git a/00-pflichtenheft/sections/TikzPictures/ActivityRegister.tex b/00-pflichtenheft/sections/TikzPictures/ActivityRegister.tex
new file mode 100644
index 0000000..b50bafe
--- /dev/null
+++ b/00-pflichtenheft/sections/TikzPictures/ActivityRegister.tex
@@ -0,0 +1,60 @@
+\begin{tikzpicture}
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % Nodeklassen für Aktivitätsdiagramm festlegen: %
+ %-------------------------------------------------------------------------------%
+ % start - Schwarzer ausgefüllter Kreis %
+ % activity - Abgerundetes Rechteck für Aktivitäten des Users %
+ % actBox - Rechteck für Reaktionen des Systems %
+ % decision - Karokästchen für Entscheidungen / Abzweigungen %
+ % end - Zielscheibe für das Ende der Aktivität %
+ %-------------------------------------------------------------------------------%
+ % Siehe: https://www-kseta.ttp.kit.edu/fellows/Tanja.Harbaum/tikz_tutorial.pdf %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ \tikzset{start/.style={circle,minimum width=0.3cm,minimum height=0.3cm,draw,fill}}
+ \tikzset{activity/.style={rectangle,minimum width=1cm,minimum height=0.5cm,rounded corners=5pt,draw,align=center}}
+ \tikzset{actBox/.style={rectangle,minimum width=1cm,minimum height=0.5cm,draw,align=center}}
+ \tikzset{decision/.style={diamond,minimum width=1cm,minimum height=1cm,draw,align=center}}
+ \tikzset{end/.style={draw,double=white,circle,inner sep=1pt,minimum width=0.3cm,minimum height=0.3cm,draw,fill}}
+
+ % Nodes und deren Position (voneinander abhängig) angeben
+ \node[start] (Start) {};
+ \node[activity, right = of Start] (Aufruf) {Website aufrufen};
+ \node[actBox, right = of Aufruf] (Login1) {Login page};
+ \node[activity, below = of Login1] (RegOpt) {\string"Registrieren\string"-Option\\ auswählen};
+ \node[actBox, below = of RegOpt] (Registrieren) {Registrierungsfenster};
+ \node[decision, below = of Registrieren] (EmailTakenEnd) {};
+ \node[activity, below = of EmailTakenEnd] (Input) {E-Mail-Adresse und\\ zweimal neues\\ Passwort eingeben};
+ \node[activity, below = of Input] (RegPress) {\string"Registrieren\string"-Button\\ drücken};
+ \node[decision, left = of RegPress] (EmailTaken) {E-Mail\\ vergeben?};
+ \node[actBox] (Error1) at (EmailTaken |- EmailTakenEnd) {Fehlermeldung};
+ \node[actBox, below = of EmailTaken] (Confirm) {E-Mail mit Link\\ zur Verifizierung};
+ \node[activity, below = of Confirm] (LinkClick) {Link\\ anklicken};
+ \node[decision, right = of LinkClick] (LinkTime) {Link älter\\ als 24h?};
+ \node[actBox, right = 2cm of LinkTime] (Error2) {Fehler};
+ \node[actBox, below = 1.5cm of LinkTime] (Login2) {Login Page};
+ \node[end] (End) at (Error2 |- Login2) {};
+ \draw ($(Start.north west)+(-2,2)$) rectangle ($(End.south east)+(2,-1)$);
+ \path ($(Start.north west)+(-2,1.4)$) -- ($(Start -| Error2)+(2,1.4)$) node[midway]{\Large \textbf{Registrieren}};
+
+ % Verbindungen zwischen den Nodes
+ \draw[-stealth, thick](Start) -- (Aufruf);
+ \draw[-stealth, thick](Aufruf) -- (Login1);
+ \draw[-stealth, thick](Login1) -- (RegOpt);
+ \draw[-stealth, thick](RegOpt) -- (Registrieren);
+ \draw[-stealth, thick](Registrieren) -- (EmailTakenEnd);
+ \draw[-stealth, thick](EmailTakenEnd) -- (Input);
+ \draw[-stealth, thick](Input) -- (RegPress);
+ \draw[-stealth, thick](RegPress) -- (EmailTaken);
+ \draw[-stealth, thick](EmailTaken) -- node[left, near start]{ja} (Error1);
+ \draw[-stealth, thick](Error1) -- (EmailTakenEnd);
+ \draw[-stealth, thick](EmailTaken) -- node[left, near start]{nein} (Confirm);
+ \draw[-stealth, thick](Confirm) -- (LinkClick);
+ \draw[-stealth, thick](LinkClick) -- (LinkTime);
+ \draw[-stealth, thick](LinkTime) -- node[above, near start]{ja} (Error2);
+ \draw[-stealth, thick](LinkTime) -- node[left, near start]{nein} (Login2);
+ \draw[-stealth, thick](Error2) -- (End);
+ \draw[-stealth, thick](Login2) -- (End);
+
+\end{tikzpicture} \ No newline at end of file
diff --git a/00-pflichtenheft/sections/TikzPictures/ActivityResetPass.tex b/00-pflichtenheft/sections/TikzPictures/ActivityResetPass.tex
new file mode 100644
index 0000000..28a065c
--- /dev/null
+++ b/00-pflichtenheft/sections/TikzPictures/ActivityResetPass.tex
@@ -0,0 +1,70 @@
+\begin{tikzpicture}
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % Nodeklassen für Aktivitätsdiagramm festlegen: %
+ %-------------------------------------------------------------------------------%
+ % start - Schwarzer ausgefüllter Kreis %
+ % activity - Abgerundetes Rechteck für Aktivitäten des Users %
+ % actBox - Rechteck für Reaktionen des Systems %
+ % decision - Karokästchen für Entscheidungen / Abzweigungen %
+ % end - Zielscheibe für das Ende der Aktivität %
+ %-------------------------------------------------------------------------------%
+ % Siehe: https://www-kseta.ttp.kit.edu/fellows/Tanja.Harbaum/tikz_tutorial.pdf %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ \tikzset{start/.style={circle,minimum width=0.3cm,minimum height=0.3cm,draw,fill}}
+ \tikzset{activity/.style={rectangle,minimum width=1cm,minimum height=0.5cm,rounded corners=5pt,draw,align=center}}
+ \tikzset{actBox/.style={rectangle,minimum width=1cm,minimum height=0.5cm,draw,align=center}}
+ \tikzset{decision/.style={diamond,minimum width=1cm,minimum height=1cm,draw,align=center}}
+ \tikzset{end/.style={draw,double=white,circle,inner sep=1pt,minimum width=0.3cm,minimum height=0.3cm,draw,fill}}
+
+ % Nodes und deren Position (voneinander abhängig) angeben
+ \node[start] (Start) {};
+ \node[activity, right = of Start] (Aufruf) {Website aufrufen};
+ \node[actBox, right = of Aufruf] (Login1) {Login page};
+ \node[activity, below = of Login1] (ForgetOpt) {\string"Passwort vergessen\string"\\ Option auswählen};
+ \node[actBox, below = of ForgetOpt] (Forget) {\string"Passwort vergessen\string"\\ Fenster};
+ \node[decision, below = of Forget] (EmailDecEnd) {};
+ \node[activity, below = of EmailDecEnd] (Input1) {E-Mail-Adresse\\ eingeben};
+ \node[decision, left = of Input1] (EmailDec) {E-Mail\\ registriert?};
+ \path (EmailDec) |- (EmailDecEnd) node[actBox, near end](Error2){Fehler};
+ \node[actBox, below = of EmailDec] (SendMail) {E-Mail mit Link\\ zum Zurücksetzen\\ des Passworts};
+ \node[activity, below = of SendMail] (LinkClick) {Empfangenen Link\\ öffnen};
+ \node[decision, right = of LinkClick] (LinkTime) {Link älter\\ als 24h?};
+ \node[actBox, above = of LinkTime] (Error) {Fehler};
+ \node[end, right = of Error] (End1) {};
+ \node[actBox, below = of LinkTime] (ResetWin) {\string"Passwort zurücksetzen\string"\\ Fenster};
+ \node[decision, left = of ResetWin] (PswCorEnd) {};
+ \node[activity, left = of PswCorEnd] (Input2) {neues Passwort\\ zweimal eingeben};
+ \node[activity, below = 2cm of Input2] (ResetPress) {\string"Passwort zurücksetzen\string"-\\ Button drücken};
+ \node[decision, right = of ResetPress] (PswCorrect) {Passwort\\ legal?};
+ \node[actBox, right = of PswCorrect] (Login2) {Login page};
+ \node[end, right = of Login2] (End2) {};
+ \draw ($(Start.north west)+(-3,2)$) rectangle ($(End2.south east)+(1,-2)$);
+ \path ($(Start.north west)+(-3,1.4)$) -- ($(Start -| End2)+(1,1.4)$) node[midway]{\Large \textbf{Passwort vergessen}};
+
+ % Verbindungen zwischen den Nodes
+ \draw[-stealth, thick](Start) -- (Aufruf);
+ \draw[-stealth, thick](Aufruf) -- (Login1);
+ \draw[-stealth, thick](Login1) -- (ForgetOpt);
+ \draw[-stealth, thick](ForgetOpt) -- (Forget);
+ \draw[-stealth, thick](Forget) -- (EmailDecEnd);
+ \draw[-stealth, thick](EmailDecEnd) -- (Input1);
+ \draw[-stealth, thick](Input1) -- (EmailDec);
+ \draw[-stealth, thick](EmailDec) |- node[left, near start]{nein} (Error2);
+ \draw[-stealth, thick](Error2) -- (EmailDecEnd);
+ \draw[-stealth, thick](EmailDec) -- node[left, near start]{ja} (SendMail);
+ \draw[-stealth, thick](SendMail) -- (LinkClick);
+ \draw[-stealth, thick](LinkClick) -- (LinkTime);
+ \draw[-stealth, thick](LinkTime) -- node[left, near start]{ja} (Error);
+ \draw[-stealth, thick](Error) -- (End1);
+ \draw[-stealth, thick](LinkTime) -- node[left, near start]{nein} (ResetWin);
+ \draw[-stealth, thick](ResetWin) -- (PswCorEnd);
+ \draw[-stealth, thick](PswCorEnd) -- (Input2);
+ \draw[-stealth, thick](Input2) -- (ResetPress);
+ \draw[-stealth, thick](ResetPress) -- (PswCorrect);
+ \draw[-stealth, thick](PswCorrect.north west) -| (PswCorEnd) node[above, near start]{nein};
+ \draw[-stealth, thick](PswCorrect) -- (Login2) node[above, near start]{ja};
+ \draw[-stealth, thick](Login2) -- (End2);
+
+\end{tikzpicture} \ No newline at end of file
diff --git a/00-pflichtenheft/sections/TikzPictures/SequenceSynchroniseSubscription.tex b/00-pflichtenheft/sections/TikzPictures/SequenceSynchroniseSubscription.tex
new file mode 100644
index 0000000..3e68555
--- /dev/null
+++ b/00-pflichtenheft/sections/TikzPictures/SequenceSynchroniseSubscription.tex
@@ -0,0 +1,79 @@
+%\begin{tikzpicture}
+%
+% \begin{umlseqdiag}
+%
+% \umlactor[no ddots]{Benutzer}
+% \umlobject[no ddots]{Podcatcher1}
+% \umlobject[no ddots]{Podcatcher2}
+% \umlobject[no ddots]{Webfrontend}
+% \umlobject[no ddots]{Server}
+%
+% \begin{umlcall}[dt=5, op=abonniere Podcast]{Benutzer}{Podcatcher1}
+% \begin{umlcallself}[dt=8, op=füge Podcast zu Abos hinzu, type=synchron]{Podcatcher1}
+% \end{umlcallself}
+% \begin{umlcall}[op=lade Änderungen hoch]{Podcatcher1}{Server}
+% \begin{umlcallself}[dt=8, op=speichere Änderungen]{Server}
+% \end{umlcallself}
+% \end{umlcall}
+% \end{umlcall}
+%
+% \begin{umlcall}[dt=10, op=Abos anzeigen]{Benutzer}{Webfrontend}
+% \begin{umlcall}[dt=5, op=hole Aboliste, return=Aboliste]{Webfrontend}{Server}
+% \end{umlcall}
+% \end{umlcall}
+%
+% \begin{umlcall}[dt=10, op=Abos anzeigen]{Benutzer}{Podcatcher2}
+% \begin{umlcall}[dt=5, op=hole Aboliste, return=Aboliste]{Podcatcher2}{Server}
+% \end{umlcall}
+% \end{umlcall}
+%
+% \end{umlseqdiag}
+%
+%\end{tikzpicture}
+
+\begin{sequencediagram}
+
+ \newthread{b}{Benutzer}
+ \newinst[2]{p1}{Podcatcher1}
+ \newinst{p2}{Podcatcher2}
+ \newinst[1]{w}{Webfrontend}
+ \newinst[1]{s}{Server}
+
+ \begin{call}{b}{abonniere Podcast}{p1}{}
+ \begin{callself}{p1}{füge Podcasts zu Abos hinzu}{}
+ \begin{call}{p1}{lade Änderungen hoch}{s}{}
+ \begin{callself}{s}{\shortstack{speichere\\Änderungen\\persistent}}{}
+ \end{callself}
+ \end{call}
+ \end{callself}
+ \end{call}
+
+ \begin{call}{b}{Abos anzeigen}{w}{}
+ \begin{call}{w}{hole Aboliste}{s}{Aboliste}
+ \end{call}
+ \end{call}
+
+ \begin{call}{b}{Abos anzeigen}{p2}{}
+ \begin{call}{p2}{hole Aboliste}{s}{Aboliste}
+ \end{call}
+ \end{call}
+
+\end{sequencediagram}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/00-pflichtenheft/sections/TikzPictures/UseCaseUML.tex b/00-pflichtenheft/sections/TikzPictures/UseCaseUML.tex
new file mode 100644
index 0000000..1bb2e2c
--- /dev/null
+++ b/00-pflichtenheft/sections/TikzPictures/UseCaseUML.tex
@@ -0,0 +1,46 @@
+\begin{tikzpicture}%[trim left = 1cm]
+
+ \begin{umlsystem}[x=5] {<<Website>> Podcast Sync Web}
+ \umlusecase[name=a,width=2.5cm] {Registrieren}
+ \umlusecase[name=c,y=-4,width=2.5cm] {Aktion ausführen}
+ \umlusecase[name=d,y=-6,width=2.5cm] {Anmelden}
+ \umlusecase[name=f,y=-2,width=2.5cm] {Sprache ändern (*)}
+ \umlusecase[name=g,x=6,y=-1,width=2.5cm] {Anleitung einsehen}
+ \umlusecase[name=h,x=6,y=-3,width=2.5cm] {Abonnierte Podcasts einsehen}
+ \umlusecase[name=i,x=6,y=-5,width=2.5cm] {Profil verwalten}
+ \umlusecase[name=r,x=6,y=-7.25,width=2.5cm] {Zuletzt angehörte\\ Episoden einsehen}
+ \umlusecase[name=j,x=6,y=-10.5,width=2.5cm] {Mit Google / anderen Anbietern anmelden (*)}
+ \umlusecase[name=k,x=4,y=-13,width=2.5cm] {Passwort vergessen}
+ \umlusecase[name=l,y=-15,width=2.5cm] {Admin Aktion ausführen (*)}
+ \umlusecase[name=m,x=8,y=-15,width=2.5cm] {Statistiken einsehen (*)}
+ \umlusecase[name=n,x=12,y=-4,width=2.5cm] {Passwort ändern}
+ \umlusecase[name=o,x=12,y=-2,width=2.5cm] {Gpodder verknüpfen (*)}
+ \umlusecase[name=p,x=12,y=-6,width=2.5cm] {Personenbezogene Daten abrufen (*)}
+ \umlusecase[name=q,x=12,y=-8,width=2.5cm] {Account löschen}
+ \end{umlsystem}
+
+ \umlactor[y=-3] {User}
+ \umlactor[y=-15] {Admin}
+
+ \umlinherit{Admin}{User}
+
+ \umlassoc{User}{a}
+ \umlassoc{User}{c}
+ \umlassoc{User}{d}
+ \umlassoc{User}{f}
+ \umlassoc{Admin}{l}
+
+ \umlextend{g}{c}
+ \umlextend{h}{c}
+ \umlextend{i}{c}
+ \umlextend{r}{c}
+ \umlextend{j}{d}
+ \umlextend{k}{d}
+ \umlextend{m}{l}
+ \umlinclude{c}{d}
+ \umlinclude{l}{d}
+ \umlextend{n}{i}
+ \umlextend{o}{i}
+ \umlextend{p}{i}
+ \umlextend{q}{i}
+\end{tikzpicture} \ No newline at end of file