From 7fcdc1c788725f866de71fc9dfd8c4d1cb132b57 Mon Sep 17 00:00:00 2001 From: Orangerot Date: Fri, 24 May 2024 17:42:08 +0200 Subject: Initial commit --- .../sections/TikzPictures/ActivityLogin.tex | 56 +++++++++++++++ .../sections/TikzPictures/ActivityRegister.tex | 60 ++++++++++++++++ .../sections/TikzPictures/ActivityResetPass.tex | 70 +++++++++++++++++++ .../SequenceSynchroniseSubscription.tex | 79 ++++++++++++++++++++++ .../sections/TikzPictures/UseCaseUML.tex | 46 +++++++++++++ 5 files changed, 311 insertions(+) create mode 100644 00-pflichtenheft/sections/TikzPictures/ActivityLogin.tex create mode 100644 00-pflichtenheft/sections/TikzPictures/ActivityRegister.tex create mode 100644 00-pflichtenheft/sections/TikzPictures/ActivityResetPass.tex create mode 100644 00-pflichtenheft/sections/TikzPictures/SequenceSynchroniseSubscription.tex create mode 100644 00-pflichtenheft/sections/TikzPictures/UseCaseUML.tex (limited to '00-pflichtenheft/sections/TikzPictures') 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] {<> 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 -- cgit v1.2.3