Compare commits
20 Commits
5aba8eb989
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
5152e4f4a9
|
|||
|
94cc181278
|
|||
|
8d20bd105b
|
|||
|
117722250c
|
|||
|
fab6b215fc
|
|||
|
6652d99925
|
|||
|
758a8ad419
|
|||
|
731c03f447
|
|||
|
c40b18d8cf
|
|||
|
4528ff1318
|
|||
|
faa1e09655
|
|||
|
1f71dfb55f
|
|||
|
6208a9c29c
|
|||
|
872c78079f
|
|||
|
4ee7b22db6
|
|||
|
ce8b1ce5fa
|
|||
|
5b03fdbebc
|
|||
|
2a8951ccc1
|
|||
|
f71dc2433b
|
|||
|
fc43ee2dae
|
@@ -33,61 +33,60 @@ Die \ac{ELN} könnte schlicht die von TYPO3 vergebene UID sein.
|
||||
Smartphone ist am sinnvollsten, da Feedback von Webseite damit möglich ist.
|
||||
Backup-Funktion, die \ac{ELN} händisch einzugeben. Das ginge dann auch mit einem Handscanner.
|
||||
|
||||
\paragraph*{Welche Fallbacks soll es geben, sollte ein Code nicht scanbar sein? Z.B.: Den Code- Inhalt in Text unter dem Code, der auch von Hand eintippbar sei.}
|
||||
Die \ac{ELN} muss auch unter dem qr code stehen.
|
||||
\paragraph*{Welche Fallbacks soll es geben, sollte ein Code nicht scanbar sein? Z.B.: Den Code-Inhalt in Text unter dem Code, der auch von Hand eintippbar sei.}
|
||||
Die \ac{ELN} muss auch unter dem QR-Code stehen.
|
||||
|
||||
\paragraph*{Gegen welche Missbrauchsszenarien sollte der QR-Code geschützt sein? Sollte ggf. ein Passwort nach dem Einscannen verlangt werden? ->Diskurs über versch. Authentifizierungsmethoden und Abwägung über Aufwand der dadurch entsteht.}
|
||||
Mitarbeiter authentifizieren sich mit einem Frontend-Nutzer. Dieser Nutzer ist Teil einer Mitarbeiter-Nutzergruppe.
|
||||
|
||||
\paragraph*{Gibt es im Lager Wlan?}
|
||||
Out of scope
|
||||
Out of scope.
|
||||
|
||||
\paragraph*{Wie wollen Sie Weinanmeldungen zwischen Jahresauswahlproben im Frontend trennen? Wichtig: Aktuelle Proben nach Anmeldeschluss sollten immer noch sichtbar sein und alte Proben ggf. gar nicht mehr angezeigt werden.}
|
||||
Es gibt eine Liste mit Jahresauswahlproben.
|
||||
Da werden verschiedene aufgelistet.
|
||||
Backenduser können die Anmeldung (Weine an Jahresauswahlproben anmelden) an- und abschalten.
|
||||
Backend-User können die Anmeldung (Weine an Jahresauswahlproben anmelden) an- und abschalten.
|
||||
Vergangene Proben werden nicht angezeigt.
|
||||
Die Probe gilt als vergangen, wenn die Proben probiert wurden.
|
||||
Die Anmeldemöglichkeit und \enquote{Probe ist vorbei}-Feststellung im Anmeldetool ist ein Clone vom „active until“ im „access-„panel. Mit Dateselector.
|
||||
|
||||
\paragraph*{Was soll der Kunde beim Versand selbst machen?}
|
||||
Wenn weinland-mosel-mitglied:
|
||||
Ggf account erstellen mit Mitgliedsnummer <schon implememtiert> <muss händisch von WM freigeschalten werden>
|
||||
In account einloggen
|
||||
Wenn Weinland-Mosel-Mitglied:
|
||||
Ggf Account erstellen mit Mitgliedsnummer <schon implememtiert> <muss händisch von WM freigeschalten werden>.
|
||||
In Account einloggen.
|
||||
|
||||
Wenn Nichtmitglied:
|
||||
Ggf account erstellen ohne Mitgliedsnummer <muss händisch freigeschalten werden>
|
||||
Ggf. Account erstellen ohne Mitgliedsnummer <muss händisch freigeschalten werden>
|
||||
|
||||
Eine Jahresauswahlprobe auswählen
|
||||
Eine Jahresauswahlprobe auswählen.
|
||||
Einen Wein anmelden, Webform zu Weindaten ausfüllen.
|
||||
PDF downloaden, ausdrucken im Paket dem Wein beilegen.
|
||||
Das PDF muss Daten zum Wein beinhalten und den qr-code mit der \ac{ELN}. (zur Zuordnung)
|
||||
Das PDF muss Daten zum Wein beinhalten und den QR-Code mit der \ac{ELN}. (zur Zuordnung)
|
||||
Nummernschwund, falls Weine gelöscht werden, ist kein Problem.
|
||||
|
||||
Adressierung wird selbst gemacht.
|
||||
Frankierung auch.
|
||||
|
||||
\paragraph*{In welcher Form sollten Mitarbeiter die ausstehenden und eingegangenen Weine sehen? Reicht eine einfache Liste, oder sind Export- und Filtermöglichkeiten erwünscht? Wenn ja: Welche Filter (auch Sortierungen)? Welche Exportformate?}
|
||||
- CSV soll ausgebbar sein
|
||||
- Filter nicht notwendig, aber probenspezifisch
|
||||
- CSV soll ausgebbar sein.
|
||||
- Filter nicht notwendig, aber probenspezifisch.
|
||||
|
||||
\paragraph*{Wenn nun ein Wein als “eingegangen” vermerkt ist, sollte ein Mitarbeiter das rückgängig machen können? Sollte ein Mitarbeiter Weine löschen können? Wenn eines der beiden ja: Einzeln, oder als Bulk-Action? (Bulk-Actions sind teuer/aufwändig umzusetzen)}
|
||||
- Was TYPO3 by-default kann, nichts eigenes bauen
|
||||
- Was TYPO3 by-default kann, nichts eigenes bauen.
|
||||
|
||||
\paragraph*{Welche Informationen soll der Kunde über seine Sendunge(n) sehen?}
|
||||
- ob sie eingegangen ist, mit emailbenachrichtigung
|
||||
- Ob sie eingegangen ist, mit Emailbenachrichtigung.
|
||||
|
||||
\paragraph*{Soll auch ein Kunde in der Lage sein, seine eigene Weinsendung(en) aus dem System zu löschen oder zu verändern? (Eventuell vertippt man sich) Wenn ja, bis wann? Bis zur Eingangsbestätigung?}
|
||||
Nach Einreichung (nicht Eingang bei WM) nicht mehr veränderbar und auch nicht löschbar.
|
||||
|
||||
\paragraph*{Die \ac{ELN} ist eine inkrementell erhöhte Ganzzahl. Ist der tatsächliche Wert dieser wichtig, oder ist es lediglich wichtig, dass sie eindeutig ist? Der einfachste/günstigste Weg wäre es, sie in der Datenbank als “auto\_increment” zu deklarieren. Dann hätte man niemals, auch über x Auswahlproben hinweggehend, die selbe \ac{ELN} zwei mal. Das verkürzt und vereinfacht die Entwicklung, den entstehenden Code und die Nutzererfahrung auf Seiten von \ac{WM}.}
|
||||
- siehe oben
|
||||
|
||||
- Siehe oben.
|
||||
|
||||
\paragraph*{Weiteres}
|
||||
Es soll einen Single-View für Weine geben, der anhand einer \ac{ELN} aufrufbar ist. Hier werden bekannte Details gezeigt.
|
||||
|
||||
\paragraph*{Zum Formular, das Winzer ausfüllen:}
|
||||
Das Formular besteht zwei Schritten:
|
||||
Schritt 1: Daten ausfüllen
|
||||
Schritt 2: Zusammenfassung anzeigen entweder zurück, weiter bearbeiten, oder submit \enquote{wein verbindlich anmelden}
|
||||
Schritt 1: Daten ausfüllen.
|
||||
Schritt 2: Zusammenfassung anzeigen entweder zurück, weiter bearbeiten, oder submit \enquote{Wein verbindlich anmelden}.
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
% \textbf{Art der Anforderung} & \textbf{Beschreibung}\\
|
||||
% \hline
|
||||
% \hline
|
||||
% Constraint & Einbau in brown-field TYPO3\\\hdashline
|
||||
% Constraint & Kunden-UI im Frontend\\\hdashline
|
||||
% Randbedingung & Einbau in brown-field TYPO3\\\hdashline
|
||||
% Randbedingung & Kunden-UI im Frontend\\\hdashline
|
||||
% \ac{FA} & \makecell[l]{Mitglieder bei \ac{WM} können sich einen\\Nutzeraccount erstellen}\\\hdashline
|
||||
% \ac{FA} & \makecell[l]{Nicht-Mitglieder bei \ac{WM} können sich\\einen Nutzeraccount erstellen}\\\hdashline
|
||||
% \ac{FA} & \makecell[l]{Nichtmitglieder bei \ac{WM} können sich\\einen Nutzeraccount erstellen}\\\hdashline
|
||||
% \ac{FA} & \makecell[l]{Angemeldete Nutzer sehen eine Übersicht\\aller aktiven Jahresauswahlproben}\\\hdashline
|
||||
% \ac{FA} & \makecell[l]{Angemeldete Nutzer können mehrere Weine\\bei aktiven Jahresauswahlproben anmelden}\\\hdashline
|
||||
% \ac{FA} & \makecell[l]{Eine Weinanmeldung frägt Weindaten mit\\einem Webform ab}\\\hdashline
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
\chapter{Anforderungserfassung}
|
||||
\label{chap:anforderungserfassung}
|
||||
Obwohl bereits ein grober Anriss des Zielsystems bekannt ist, ist es unabdinglich eine Anforderungsanalyse durchzuführen,
|
||||
dies um Details auszuarbeiten \cite{bib:christoph-ebert-vorwort-systematisches-re}.
|
||||
um Details auszuarbeiten \cite{bib:christoph-ebert-systematisches-re}.
|
||||
Hierbei ist es wichtig, kein exzessives Pflichtenheft aufzubauen, denn letztendlich zählt nur, was dem Kunden geliefert wird.
|
||||
Nicht, wie viele gar nicht benötigte Anforderungen umgesetzt wurden.
|
||||
\enquote{\textit{Zu viele oder falsche Anforderungen ruinieren Budgets, Termine und die Qualität.}}
|
||||
\cite{bib:christoph-ebert-vorwort-systematisches-re}.
|
||||
\quotecite{Zu viele oder falsche Anforderungen ruinieren Budgets, Termine und die Qualität.}
|
||||
\cite[S. viii]{bib:christoph-ebert-systematisches-re}.
|
||||
Die Anforderungen eines Produktes sind in drei Kategorien einzuteilen: \acp{FA}, \acp{NFA}
|
||||
und Constraints \cite{bib:heinemann-vorlesung-re}.
|
||||
Wie oben erwähnt, sind bereits die Constraints und einige funktionale und nichtfunktionale Anforderungen bekannt. Diese sind:
|
||||
und Randbedingungen \cite{bib:heinemann-vorlesung-re}.
|
||||
Wie oben erwähnt, sind bereits die Randbedingungen und einige funktionale und nichtfunktionale Anforderungen bekannt. Diese sind:
|
||||
\begin{table}[htbp]
|
||||
\centering
|
||||
\begin{tabular}{|l|l|}
|
||||
@@ -16,19 +16,19 @@ Wie oben erwähnt, sind bereits die Constraints und einige funktionale und nicht
|
||||
\textbf{Art der Anforderung} & \textbf{Anforderungsbeschreibung}\\
|
||||
\hline
|
||||
\hline
|
||||
\ac{NFA} & \makecell[l]{Angaben zum Weingut des Weines\\sollen aus dem Accountdatensatz anstatt\\aus dem Webform kommen.}\\
|
||||
\ac{NFA} & \makecell[l]{Angaben zum Weingut des Weines\\sollen aus dem Accountdatensatz anstatt\\aus dem Web-Formular kommen.}\\
|
||||
\hdashline
|
||||
\ac{NFA} & \makecell[l]{Aus dem Papierformular soll ein\\Webformular werden.}\\
|
||||
\ac{NFA} & \makecell[l]{Aus dem Papierformular soll ein\\Web-Formular werden.}\\
|
||||
\hdashline
|
||||
\ac{FA} & \makecell[l]{Beim Erstellen einer Weinteilnahme\\soll ein QR-Code als PDF generiert werden,\\der den Wein identifiziert.}\\
|
||||
\hdashline
|
||||
\ac{FA} & \makecell[l]{Durch scannen des QR-Codes auf dem\\mit einer Weinteilnahme erstellten PDFs soll\\dem Wein der Status \enquote{Eingegangen}\\ zugewiesen werden.}\\
|
||||
\ac{FA} & \makecell[l]{Durch scannen des QR-Codes auf dem\\mit einer Weinteilnahme erstellten PDFs soll\\dem Wein der Status \enquote{eingegangen}\\ zugewiesen werden.}\\
|
||||
\hdashline
|
||||
Constraint & Einbau in brown-field TYPO3\\
|
||||
Randbedingung & Einbau in Brown-Field TYPO3\\
|
||||
\hdashline
|
||||
Constraint & Mitarbeiter-UI in TYPO3-Backend\\
|
||||
Randbedingung & Mitarbeiter-UI in TYPO3-Backend\\
|
||||
\hdashline
|
||||
Constraint & Nutzer-UI im Frontend\\
|
||||
Randbedingung & Nutzer-UI im Frontend\\
|
||||
\hdashline
|
||||
\ac{NFA} & \makecell[l]{Registrierte Weinteilnahmen\\bestehen aus einem Wein und einem Zustand\\(ausstehend,eingegangen,abgelehnt).}\\
|
||||
\hdashline
|
||||
@@ -43,7 +43,7 @@ Um nähere Anforderungen zu ermitteln, werden die Befragungstechniken \enquote{I
|
||||
|
||||
\section{Interview mit Product Owner}
|
||||
Zunächst wird ein Interview mit dem \ac{PO} geführt. Ziel dieses Interviews ist
|
||||
es, konkrete Fragen zu Anforderungen zu klären und somit konkrete Anforderungen zu formulieren.
|
||||
es, konkrete Fragen zu Anforderungen zu klären und somit klare Anforderungen zu formulieren.
|
||||
Aufgrund der individuellen Gesprächsführung wurde sich für ein \enquote{teil-standardisiertes Interview}
|
||||
entschieden. Bei einem teil-standardisiertem Interview gibt es vordefinierte Fragen,
|
||||
aber auch Freiraum für Improvisation und Persönlichkeit.
|
||||
@@ -58,7 +58,7 @@ keine Suggestivfragen zu stellen
|
||||
Um Fragebögen für Stakeholder formulieren zu können, muss zunächst bekannt sein, wer die Stakeholder sind.
|
||||
\quotecite{Ein Stakeholder eines Systems ist eine Person oder Organisation, welche (direkt oder indirekt)
|
||||
\break{}Einfluss auf die Anforderungen des betrachteten Systems hat.}
|
||||
\break\cite{bib:basiswissen-re}.
|
||||
\break\cite[S. 9]{bib:kleine-re-fibel}.
|
||||
Daraus ergeben sich die Stakeholdergruppen: \enquote{Mitarbeiter \ac{WM}} und \enquote{teilnehmende Weingüter}.
|
||||
Jede dieser Stakeholdergruppen sieht das System aus einer anderen Perspektive
|
||||
\break\cite{bib:kleine-re-fibel}.
|
||||
@@ -75,8 +75,8 @@ beantworten könnte. Somit fällt ein Onlinefragebogen für die Stakeholdergrupp
|
||||
Der Fragebogen der Stakeholdergruppe \enquote{teilnehmende Weingüter} liegt im Anhang unter
|
||||
\fullref{chap:anhang-fragebogen-extern} bei.
|
||||
Um den Aufwand und somit die Hemmschwelle des Ausfüllens
|
||||
eines solchen Online-Fragebogens zu minimieren, gibt es lediglich sechs quantitative Fragen
|
||||
zuzüglich einem optionalen Freitextfeld, um sonstige Wünsche zum Ausdruck zu bringen.
|
||||
eines solchen Online-Fragebogens zu minimieren, werden lediglich sechs quantitative Fragen
|
||||
zuzüglich einem optionalen Freitextfeld, um sonstige Wünsche zum Ausdruck zu bringen, gestellt.
|
||||
Eine Anmeldung über Google für Google-Forms ist nicht erforderlich.
|
||||
Der Link zu diesem Online-Fragebogen wurde \ac{WM} mit der Bitte um Weitergabe an
|
||||
die Probenteilnehmer übergeben.
|
||||
@@ -85,15 +85,18 @@ die Probenteilnehmer übergeben.
|
||||
Aus dem Interview mit dem \ac{PO} ergibt sich ein Pflichtenheft.
|
||||
Das Pflichtenheft und das Protokoll zum Interview sind im Anhang unter je
|
||||
\fullref{chap:anhang-pflichtenheft} und \fullref{chap:anhang-interview-protokoll} zu finden.
|
||||
Ergebnisse dieses Interviews sind zahlreiche Anforderungen und Ideen. Eine der wichtigsten Ideen stellt das
|
||||
Ergebnisse dieses Interviews sind zahlreiche Anforderungen und Ideen. Eine der wichtigen Erkenntnisse stellt das
|
||||
projektbezogene, wöchentliche Statusmeeting dar: Jeden Donnerstag soll um 9:30 Uhr der aktuelle Stand
|
||||
des Projektes vorgestellt, diskutiert und Rücksprache gehalten werden.
|
||||
Weitere wichtigste Erkenntnisse des Interviews sind:
|
||||
des Projektes dem \ac{PO} vorgestellt und mit ihm diskutiert und Rücksprache gehalten werden. Ziel dessen ist unter anderem
|
||||
die pragmatische Korrektheit laufend zu überprüfen und ggf. Anforderungen zu überarbeiten.
|
||||
Diese Idee wurde unmittelbar nach Beendigung des Interviews vorgeschlagen und entzieht sich somit dem Transkript.
|
||||
\clearpage
|
||||
Weitere wichtige Erkenntnisse dieses Interviews sind:
|
||||
\begin{description}
|
||||
\item[Endgerät für Scanning und Scanneranwendung]\hfill\\
|
||||
Gescannt wird von Mobiltelefonen mit einer QR-Code-App wie QRBot.
|
||||
QRBot ermöglicht es Nutzern für jeden aufgerufenen QR-Code eine Vorlagen-URL aufzurufen,
|
||||
um den gescannten Wert als Teil der Url, z.B. als Get-Parameter, zu übergeben \cite{bib:qrbot}.
|
||||
um den gescannten Wert als Teil der URL zu übergeben \cite{bib:qrbot}.
|
||||
Das ist prädestiniert für API-ähnliche Webseitenaufrufe, um Weine einzuchecken.
|
||||
\item[Trennung von Weinen nach Jahresauswahlproben im Frontend]\hfill\\
|
||||
Da es $n$ Jahresauswahlproben gibt und Weine immer genau einer Jahresauswahlprobe zugeordnet sein müssen, macht es wenig
|
||||
@@ -103,7 +106,7 @@ Weitere wichtigste Erkenntnisse des Interviews sind:
|
||||
Diese Weine sind ebenso anklickbar und führen zu einer Einzelansicht der Weine.
|
||||
\item[Nutzerführung für \ac{WM}-Angestellte]\hfill\\
|
||||
Gescanne QR-Codes von Weinen sollen den Wein als eingegangen markieren und anschließend dem
|
||||
Mitarbeiter zeigen, welcher Wein eingechecked wurde. Somit dient das Scannen eines Codes ebenso zur
|
||||
Mitarbeiter zeigen, welcher Wein eingecheckt wurde. Somit dient das Scannen eines Codes ebenso zur
|
||||
Einsicht der Details der gelagerten Flaschen.
|
||||
Es soll ein Backendmodul \cite{bib:typo3-docs-modules} geben, das für den Export von CSV-Daten zuständig ist.
|
||||
Sonstige Aktionen sind im TYPO3-Backend mit nativen Werkzeugen erreichbar.
|
||||
@@ -112,11 +115,10 @@ Weitere wichtigste Erkenntnisse des Interviews sind:
|
||||
\item Jahresauswahlproben-Listenansicht
|
||||
\item Jahresauswahlproben-Detailansicht
|
||||
\item Wein-Registrierungsformular
|
||||
\item PDF-Url für Versandbriefe
|
||||
\item PDF-URL für Versandbriefe
|
||||
\item Registrierungsseite mit mehreren Schritten
|
||||
\item Mitarbeiterseite für gescannte QR-Codes
|
||||
\item Listenansicht der Jahresauswahlproben im CSV-Exporter im Backend
|
||||
\item Detailansicht der Jahresauswahlprobe im CSV-Exporter im Backend
|
||||
\item Listen- und Detailansicht der Jahresauswahlproben im CSV-Exporter im Backend
|
||||
\end{itemize}
|
||||
|
||||
\end{description}
|
||||
@@ -130,17 +132,16 @@ der gewünschte Geschäftsprozess der Jahresauswahlprobe nach Fertigstellung die
|
||||
Hierbei ist es wichtig, die Schnittstelle zwischen den gleichbleibenden Arbeitsschritten und den zu digitalisierenden
|
||||
Arbeitsschritten zu beachten. Diese Schnittstelle sollte unverändert bleiben,
|
||||
um eine nahtlose Integration in den restlichen, bestehenden Workflow von \ac{WM} zu gewährleisten.
|
||||
Diese Schnittstelle stellt eine Excel-Tabelle dar. Zuvor wurde diese Excel-Tabelle von Hand aus den
|
||||
Anmeldeformularen erstellt. Nach Fertigstellung dieses Projektes soll diese Tabelle in Form
|
||||
Diese Schnittstelle stellt eine Excel-Tabelle dar. Zuvor wurde diese Excel-Tabelle von Hand, aus den
|
||||
Anmeldeformularen, erstellt. Nach Fertigstellung dieses Projektes soll diese Tabelle in Form
|
||||
von CSV-Daten aus dem Redaktionssystem exportiert werden können. Diese können Mitarbeiter von \ac{WM} in Excel
|
||||
importieren und in kommenden Planungsschritten der Jahresauswahlprobe ohne Umstellung weiter verwenden.
|
||||
Das ist wichtig, da solche Umstellungen, ohne nennenswerte Verbesserungen des restlichen, von dieser
|
||||
Ausarbeitung unberührten Workflows, Zeit kostet, ohne Vorteile zu erbringen.
|
||||
Dieser Zeitverlust würde den durch die Digitalisierung erzielten Gewinn schädigen.
|
||||
Ausarbeitung unberührten Workflows, Zeit kosten, ohne Vorteile zu erbringen.
|
||||
Dieser Zeitverlust würde den durch die Digitalisierung erzielten Vorteil schmälern.
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=1\textwidth]{images/geschäftsprozess-nachher.png}
|
||||
\captionof{figure}{Geschäftsprozess Jahresauswahlprobe: nach der Digitalisierung}
|
||||
\caption*{Quelle: Eigene Darstellung}
|
||||
\captionof{figure}{Geschäftsprozess Jahresauswahlprobe: nach der Digitalisierung, Quelle: Eigene Darstellung}
|
||||
\label{fig:geschaeftsprozess-nachher}
|
||||
\end{nicepic}
|
||||
|
||||
@@ -2,46 +2,43 @@
|
||||
\label{chap:einleitung}
|
||||
Der Regionalverband für Weine \ac{WM} lässt Weine in organisierten Weinproben, sog. Jahresauswahlproben, von Juroren bewerten.
|
||||
Teilnehmende Weingüter registrieren ihre Weine in verschiedenen Kategorien und schicken diese auf dem Postweg ein.
|
||||
Dieser Prozess bildet sich in Form ausgedruckter Formulare, die von Hand ausgefüllt und von Hand in eine
|
||||
Excel-Tabelle übertragen werden, ab.
|
||||
Dieser Prozess bildet sich in Form ausgedruckter Formulare ab, die von Hand ausgefüllt und von Hand in eine
|
||||
Excel-Tabelle übertragen werden.
|
||||
|
||||
\section{Problemstellung}
|
||||
\label{chap:einleitung-problemstellung}
|
||||
Die teilnehmenden Weingüter schicken ihre Weine zusammen mit Formularen über den Postweg zu \ac{WM}.
|
||||
Es ist der Normalfall, dass ein teilnehmendes Weingut \emph{mehrere} Weine zur Bewertung anbringt.
|
||||
In diesem Fall ist für jeden anzumeldenden Wein ein solches Formular erneut auszufüllen.
|
||||
Hierbei werden sämtliche auf das Weingut bezogene Daten redundant ausgefüllt. Diese Daten sind redudant, da sie keine
|
||||
Eigenschaften der Weine, sondern die des Weingutes selbst sind.
|
||||
Da sich das Weingut zwischen den Weinen nicht ändert,
|
||||
ändern sich die darauf bezogenen Daten auch nicht. Sie müssen aber für jeden Wein erneut ausgefüllt werden.
|
||||
Hierbei werden sämtliche auf das Weingut bezogene Daten redundant ausgefüllt.
|
||||
Das ist so, weil diese Daten zwischen den Weinen gleich bleiben.
|
||||
Abgesehen davon, dass solche Redundanzen auf Weinguts- und Verbandsseite die hedonische Qualität schädigen,
|
||||
bietet ein solcher Workflow Freiraum für Fehler und Inkonsistenzen.
|
||||
Dieser Workflow, mit den zuvor genannten Nachteilen, wird auf Verbandsseite, nach Zustellung der Weine, weiter fortgeführt:
|
||||
\ac{WM} erfährt erstmalig mit der Zustellung eines Weines von dessen Teilnahme. Das erschwert die Planung der Logistik,
|
||||
da im Voraus keine konkrete Zahl der zu erwartenden Flaschen bekannt ist. Geht eine Flasche auf dem Postweg verloren,
|
||||
da im Voraus keine konkrete Anzahl der zu erwartenden Flaschen bekannt ist. Geht eine Flasche auf dem Postweg verloren,
|
||||
könnte das unbemerkt bleiben, da der Prozess für das Weingut mit dem Versand endet und der Prozess für \ac{WM}
|
||||
erst mit dem Erhalt des der Flasche beiliegendem Formulares beginnt.
|
||||
Der Postweg stellt somit eine Lücke zwischen diesen Prozessen dar.
|
||||
Der Postweg stellt somit eine Diskontinuität zwischen diesen Prozessen dar.
|
||||
Kommt ein teilnehmender Wein bei \ac{WM} an, wird das beiliegende Formular von Hand in eine Excel-Tabelle übertragen.
|
||||
Diese Schnittstelle ist besonders resourcenaufwändig und fehleranfällig, da es oft vorkommt, dass die teils
|
||||
dysgraphisch verfassten Formulare nur schwer, mehrdeutig, oder gar nicht dechiffriert werden können.
|
||||
In diesem Prozess wird der Teilnahme des Weines eine inkrementell aufsteigende \ac{ELN} zugewiesen,
|
||||
die anschließend in Form eines Aufklebers an der Flasche befestigt wird. Darauffolgend wird die Flasche im Lager verstaut.
|
||||
die anschließend in Form eines Aufklebers auf der Flasche angebracht wird. Darauffolgend wird die Flasche im Lager verstaut.
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=1\textwidth]{images/geschäftsprozess-vorher.png}
|
||||
\captionof{figure}{Geschäftsprozess Jahresauswahlprobe:\\vor der Digitalisierung}
|
||||
\caption*{Quelle: Eigene Darstellung}
|
||||
\captionof{figure}{Geschäftsprozess Jahresauswahlprobe:\\vor der Digitalisierung, Quelle: Eigene Darstellung}
|
||||
\label{fig:geschaeftsprozess-vorher}
|
||||
\end{nicepic}
|
||||
|
||||
\section{Zielsetzung}
|
||||
\label{chap:einleitung-zielsetzung}
|
||||
Ziel dieser Arbeit ist es, in Erfahrung zu bringen, wie der zuvor genannte Prozess bestmöglichst,
|
||||
im Rahmen bestimmter Constraints und funktionalen- sowie nichtfunktionalen Anforderungen, digitalisiert werden kann.
|
||||
Während die Constraints bereits bekannt sind, werden detaillierte Anforderungen
|
||||
im Rahmen bestimmter Randbedingungen und funktionalen- sowie nichtfunktionalen Anforderungen, digitalisiert werden kann.
|
||||
Während die Randbedingungen bereits bekannt sind, werden detaillierte Anforderungen
|
||||
im Rahmen der Anforderungstechnik ausgearbeitet \cite{bib:heinemann-vorlesung-re}.
|
||||
Die Constraints besagen, dass der Anmeldeprozess in die existierende Internetpräsenz des Weinverbandes integriert werden muss.
|
||||
Die Randbedingungen besagen, dass der Anmeldeprozess in die existierende Internetpräsenz des Weinverbandes integriert werden muss.
|
||||
Bei dieser Internetpräsenz handelt es sich um ein TYPO3-Redaktionssystem.
|
||||
Sämtliche Interaktionen zwischen Akteuren, die nicht \ac{WM} oder dem Softwaresystem zugehörig sind,
|
||||
müssen im Frontend der Webseite stattfinden, da das Backend den Redakteuren und Administratoren vorbehalten ist.
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
\section{Praktische Ergebnisse}
|
||||
Die TYPO3-Erweiterung ist umgesetzt und erfüllt die vereinbarten Anforderungen.
|
||||
Mitglieder und Nichtmitgleder können Teilnehmernutzer anlegen und Weine zu Jahresauswahlproben anmelden.
|
||||
Teilnehmer bekommen ein PDF-Dokument mit einem QR-Code zur späteren Zuordnung bereitgestellt.
|
||||
Teilnehmer bekommen ein PDF-Dokument mit Weindaten und einem QR-Code zur späteren Zuordnung bereitgestellt.
|
||||
\ac{WM}-Mitarbeiter können diesen QR-Code einscannen, um Weine als \enquote{angekommen} zu markieren.
|
||||
Redakteure von \ac{WM} können Zugriffsrechte und Verhalten der Jahresauswahlproben auf verschiede Weisen einschränken.
|
||||
Sie können den Sichtbarkeitszeitraum, den Anmeldezeitraum und den Probezeitraum festlegen, der definiert ab
|
||||
wann teilnehmende Weine öffentlich sind.
|
||||
Sie können Jahresauswahlproben und damit deren Anmeldeformulare auf festgelegte Wettebwerbskategorien beschränken.
|
||||
Mitarbeiter können Weindatensätze, getrennt nach Jahresauswahlproben, als CSV-Dokument exportieren und somit
|
||||
Sie können Jahresauswahlproben und damit deren Anmeldeformulare auf festgelegte Probenkategorien beschränken.
|
||||
Mitarbeiter können Weindatensätze, getrennt nach Jahresauswahlproben, als CSV-Dokumente exportieren und somit
|
||||
den verbleibenden Geschäftsprozess wie gehabt fortsetzen.
|
||||
Praktische Präsentationen gegenüber dem \ac{PO} bestätigen die Umsetzung der Anforderungen und stellen die Basis
|
||||
für weitere Iterationen der Entwicklung dar.
|
||||
@@ -26,7 +26,7 @@ Diese Antworten zeigen auf, wie die Anmeldung und Zustellung von Weinen für Wei
|
||||
für Weine in der Weinregion Mosel effizient und profitabel durch eine TYPO3-Erweiterung realisiert werden können.
|
||||
\clearpage
|
||||
|
||||
\paragraph*{Nach welcher Methodik sollten Digitalisierungsprojekte im Maßstab des behandelten Projektes entwickelt werden, um effizient und profitabel zu sein?}
|
||||
\subsection*{Nach welcher Methodik sollten Digitalisierungsprojekte im Maßstab des behandelten Projektes entwickelt werden, um effizient und profitabel zu sein?}
|
||||
In der Literaturrecherche zur Wahl von Methodiken in der Softwareentwicklung und Digitalisierung
|
||||
im Kontext der effizienten
|
||||
und profitablen Umsetzung des hier behandelten Projektes stellten sich komplexe und aufwändige Modelle als
|
||||
@@ -34,13 +34,17 @@ ungeeignet heraus. Vielmehr beeindruckten simple, agile Modelle durch ihren geri
|
||||
der bei kleinen Projekten, wie der hier beleuchteten Aufgabenstellung, unabdinglich ist, um eine effiziente und profitable
|
||||
Umsetzung gewährleisten zu können.
|
||||
|
||||
\paragraph*{Welche Anforderungen sind an die TYPO3-Erweiterung gestellt?}
|
||||
Um ein Pflichtenheft für die hier beleuchtete TYPO3-Erweiterung zu erarbeiten, wurde eine Anforderungsanalyse in Form eines Interviews mit dem \ac{PO}
|
||||
durchgeführt. Dieses Pflichtenheft zeigt unter anderem auf, dass Mitglieder sowie Nichtmitglieder Teilnehmer sein können,
|
||||
\subsection*{Welche Anforderungen sind an die TYPO3-Erweiterung gestellt?}
|
||||
Um ein Pflichtenheft für die hier beleuchtete TYPO3-Erweiterung zu erarbeiten,
|
||||
wurde eine Anforderungsanalyse in Form eines Interviews mit dem \ac{PO} durchgeführt.
|
||||
Auch wurde eine quantitative Studie in Form eines Online-Fragebogens bezüglich der Bedürfnisse der Teilnehmer angestrengt, die ohne Ergebnisse verblieb.
|
||||
Dieses Pflichtenheft zeigt unter anderem auf, dass Mitglieder sowie Nichtmitglieder Teilnehmer sein können,
|
||||
wie die Nutzerführung aussieht, welche Werkzeuge \ac{WM}-Mitarbeitern zur Verfügung stehen und wie verschiedene Schnittstellen aussehen.
|
||||
Das vollständige Ergebnis dieser Anforderungsanalyse ist im Anhang anbei, unter \fullref{chap:anhang-pflichtenheft}.
|
||||
Auch ist eine wichtige Erkenntnis, dass regelmäßige Statusmeetings mit dem \ac{PO} durchgeführt werden sollten,
|
||||
damit pragmatisch inkorrekte Anforderungen und Merkmale rechtzeitig erkannt und korrigiert werden können.
|
||||
Das vollständige Pflichtenheft liegt im Anhang anbei, unter \fullref{chap:anhang-pflichtenheft}.
|
||||
|
||||
\paragraph*{Welche QR-Code-Bibliothek ist für das behandelte Projekt gut geeignet?}
|
||||
\subsection*{Welche QR-Code-Bibliothek ist für das behandelte Projekt gut geeignet?}
|
||||
Um die Anmeldung und Zustellung von Weinen digital umsetzen zu können, ist lt. Anforderungen ein QR-Code-Generator notwendig.
|
||||
Generell sollten erwägte Bibliotheken aktiv gepflegt, einen gewissen Grad
|
||||
an Funktionalität aufweisen und für den angedachten Workflow geeignet sein. Das ist wichtig, damit sich dieser
|
||||
@@ -48,17 +52,17 @@ effizient, schnell und somit kostengünstig integrieren lässt.
|
||||
Vergleiche zwischen sechs QR-Code-Bibliotheken legen nahe, dass \textit{chillerlan/php-qrcode} die beste Eignung
|
||||
der betrachteten QR-Code-Generatoren aufweist.
|
||||
|
||||
\paragraph*{Wie wird sichergestellt, dass sich der digitalisierte Teilprozess der Weinanmeldung und -zustellung nahtlos mit dem verbleibenden Prozess integriert?}
|
||||
\subsection*{Wie wird sichergestellt, dass sich der digitalisierte Teilprozess der Weinanmeldung und -zustellung nahtlos mit dem verbleibenden Prozess integriert?}
|
||||
Es ist essenziell, die Schnittstelle zwischen dem digitalisierten Teilprozess und dem verbleibenden analogen Teilprozess
|
||||
zu schützen. Das wird sichergestellt, indem die Ausgabe des digitalisierten Teilprozesses der Ausgabe des vorherigen,
|
||||
analogen Teilprozesses gleicht. Ist das gegeben, kann der neue, digitale Teilprozess effizient in den Geschäftsprozess
|
||||
der Jahresauswahlproben integriert werden, dies weil die darauf aufbauenden Schritte mit der Ausgabe der digitalisierten Schritte
|
||||
kompatibel sind.
|
||||
|
||||
%\paragraph*{Wie können unangemessen hohe Entwicklungskosten vermieden werden?}
|
||||
%\subsection*{Wie können unangemessen hohe Entwicklungskosten vermieden werden?}
|
||||
%Vermeidbarer Aufwand in der Entwicklung ohne ausreichende Vorteile (Kosten-Nutzen-Rechnung) fällt zulasten der Effizienz.
|
||||
\section{Diskussion}
|
||||
\paragraph*{Nach welcher Methodik sollten Digitalisierungsprojekte im Maßstab des behandelten Projektes entwickelt werden, um effizient und profitabel zu sein?}
|
||||
\subsection*{Nach welcher Methodik sollten Digitalisierungsprojekte im Maßstab des behandelten Projektes entwickelt werden, um effizient und profitabel zu sein?}
|
||||
Um eine Entwicklungsmethodik für die Umsetzung einer wie in der Problemstellung beschriebenen TYPO3-Erweiterung auszuwählen,
|
||||
wurde eine Literaturrecherche durchgeführt.
|
||||
Diese Literaturrecherche lässt darauf schließen, dass sich simple, agile Methodiken, ohne nennenswerten Mehraufwand,
|
||||
@@ -73,12 +77,14 @@ fördert und kurzfristige Änderungen der Anforderungen effizient gestaltet \cit
|
||||
Es muss jedoch berücksichtigt werden, dass sich diese Literaturrecherche explizit auf die in dieser Bachelorarbeit beleuchtete Problemstellung bezieht.
|
||||
Bei Einbezug anderer Projekttypen und -beschaffenheiten weichen die geeigneten Entwicklungsmethodiken wahrscheinlich ab.
|
||||
Eine Empfehlung für weitere Forschung ist es daher, ähnliche Literaturrecherchen bezüglich
|
||||
angemessenen Entwicklungsmethodiken für abweichende Projekttypen und -beschaffenheiten durchzuführen.
|
||||
angemessener Entwicklungsmethodiken für abweichende Projekttypen und -beschaffenheiten durchzuführen.
|
||||
|
||||
\paragraph*{Welche Anforderungen sind an die TYPO3-Erweiterung gestellt?}
|
||||
\subsection*{Welche Anforderungen sind an die TYPO3-Erweiterung gestellt?}
|
||||
Um detaillierte Anforderungen an die TYPO3-Erweiterung in Erfahrung zu bringen, wurde eine Anforderungsanalyse durch verschiedene
|
||||
Befragunstechniken durchgeführt. Die verwendeten Befragunstechniken sind \enquote{Interview} und \enquote{Online-Fragebogen}.
|
||||
Es ist erwähnenswert, dass der Online-Fragebogen unbeantwortet blieb.
|
||||
Auch ist es eine wichtige Erkenntnis des Interviews, regelmäßige Statusmeetings mit dem \ac{PO} zu führen.
|
||||
Diese Statusmeetings erlauben das frühzeitige Erkennen und Beheben von pragmatisch inkorrekten Merkmalen und Anforderungen.
|
||||
Es ist wichtig zu erwähnen, dass der Online-Fragebogen unbeantwortet blieb.
|
||||
Das Ergebnis dieser Anforderungsanalyse ist ein detailliertes Pflichtenheft, das die Anforderdungen an die TYPO3-Erweiterung detailliert beschreibt.
|
||||
Dieses zeigt unter anderem auf, dass Mitglieder und Nichtmitglieder Teilnehmer sein können,
|
||||
wie detaillierte Konzepte der Nutzerführung und verschiedene Schnittstellen aussehen und welche Werkzeuge \ac{WM}-Mitarbeitern zur Verfügung stehen.
|
||||
@@ -87,10 +93,10 @@ Da diese Anforderungsanalyse lediglich die Anmeldung und Zustellung von Weinen b
|
||||
des Jahresauswahlprobenwerkzeuges Forschungen bezüglich darauf aufbauender Anforderungen durchzuführen.
|
||||
|
||||
|
||||
\paragraph*{Welche QR-Code-Bibliothek ist für das behandelte Projekt gut geeignet?}
|
||||
\subsection*{Welche QR-Code-Bibliothek ist für das behandelte Projekt gut geeignet?}
|
||||
Im Interesse eine Bibliothek zur Generierung von QR-Codes für die Umsetzung dieses Softwareprojektes zu finden,
|
||||
die sich effizient, schnell und somit kostengünstig integrieren lässt,
|
||||
wurden sechs QR-Code-Bibliotheken einander gegenübergestellt und in drei verschiedenen Bewertungskategorien verglichen.
|
||||
wurden sechs QR-Code-Biblio\-theken einander gegenübergestellt und in drei verschiedenen Bewertungskategorien verglichen.
|
||||
Diese Bewertungskategorien sind \enquote{Funktionalität}, \enquote{Gepflegtheit} und \enquote{Workflow-Eignung}.
|
||||
Jede dieser Kategorien wurde mit null bis zehn Punkten bewertet. Jede Bibliothek konnte maximal 30 Punkte erhalten.
|
||||
Die Bewertung erfolgte nach subjektiver Einschätzung des Autors, basierend auf Faktoren wie dem Zustand der Github-Seite,
|
||||
@@ -99,14 +105,14 @@ Funktionsumfang. Dieser Vergleich deutet darauf hin, dass \enquote{chillerlan/ph
|
||||
die beste Eignung der verglichenen Bibliotheken aufweist. Es wurde davon ausgegangen, dass \enquote{chillerlan/php-qrcode} eine gute Wahl sei,
|
||||
da diese Bibliothek bereits firmenintern nahegelegt wurde. Der abgehaltene Vergleich bestätigt
|
||||
diese Empfehlung. Dieser Erfolg erklärt sich durch ein aktiv gepflegtes Softwareprodukt mit einer Vielzahl an Entwicklern,
|
||||
Empfehlungen, Verwendungen, aktueller Versionsunterstützung, guter Dokumentation und projektspezifischer Eignung.
|
||||
Verwendungen, aktueller Versionsunterstützung, guter Dokumentation und projektspezifischer Eignung.
|
||||
Es muss jedoch beachtet werden, dass dieser Vergleich das spezifische Projekt als wichtigen Faktor mit einbezieht.
|
||||
Somit ist dieser Vergleich nur gültig, um eine QR-Code-Bibliothek für ein PHP-Projekt mit dem Composer-Paketmanager zu evaluieren.
|
||||
Der Autor empfielt ähnliche Vergleiche für andere Arbeitsumgebungen durchzuführen, um zu bestimmen, welche QR-Code-Bibliotheken für andere
|
||||
Projektkontexte angemessen sind. Ebenso nimmt dieser Vergleich nur sechs QR-Code-Bibliotheken in Betracht.
|
||||
Eine weitere Forschungsempfehlung ist es daher, weitere Vergleiche mit mehr Bibliotheken durchzuführen.
|
||||
|
||||
\paragraph*{Wie wird sichergestellt, dass sich der digitalisierte Teilprozess der Weinanmeldung und -zustellung nahtlos mit dem verbleibenden Prozess integriert?}
|
||||
\subsection*{Wie wird sichergestellt, dass sich der digitalisierte Teilprozess der Weinanmeldung und -zustellung nahtlos mit dem verbleibenden Prozess integriert?}
|
||||
Im Zuge der praktischen Umsetzung der in dieser Forschungsfrage beschriebenen TYPO3-Erweiterung zeigte sich das Problem
|
||||
der Integration der digitalisierten Weinanmeldung und -zustellung in den restlichen, von dieser Ausarbeitung unberührten
|
||||
Geschäftsprozess der Jahresauswahlprobe.
|
||||
@@ -114,12 +120,12 @@ Diese Umsetzung zeigt auf, dass es für eine nahtlose Integration in den existie
|
||||
unabdinglich ist, dass die Ausgabe des digitalisierten Teilprozesses der Ausgabe des ersetzten, manuellen Teilprozesses gleicht.
|
||||
Dieser Aspekt wurde zuvor nicht bedacht. Das könnte daran liegen, dass diese Schnittstelle nicht der primäre und auch nicht
|
||||
der sekundäre Fokus in der Umsetzung ist. Sie wird nicht benötigt, damit das umgesetzte Produkt intrinsisch funktioniert,
|
||||
ist aber dennoch unverzichtlich für eine praktische Verwendung.
|
||||
ist aber dennoch unverzichtlich für eine reibungslose, praktische Verwendung.
|
||||
Hierbei muss jedoch berücksichtigt werden, dass es sich um ein einzelnes, konkretes Projekt handelt und sich aus diesem Grund
|
||||
nicht unbedingt allgemeingültige Schlüsse ableiten lassen. Eine Forschungsempfehlung ist es daher, weitere Möglichkeiten
|
||||
zur Integration verschiedener Teilprozesse zu recherchieren und zu evaluieren.
|
||||
|
||||
%\paragraph*{Welche Endgeräte verwenden Weingüter und was sind ihre Bedürfnisse bezüglich der Jahresauswahlproben?}
|
||||
%\subsection*{Welche Endgeräte verwenden Weingüter und was sind ihre Bedürfnisse bezüglich der Jahresauswahlproben?}
|
||||
%Um zu beleuchten, welche Endgeräte Weingüter im Kontext der Weinanmeldung verwenden und was ihre individuellen Bedürfnisse
|
||||
%im Kontext der Jahresauswahlproben sind, wurde versucht eine quantitative Studie in Form eines Online-Formulares abzuhalten.
|
||||
%Dieses Online-Formular wurde über den Zeitraum eines Monats angeboten und mit der Bitte um Weiterleitung an Weingüter an \ac{WM}
|
||||
@@ -130,4 +136,4 @@ zur Integration verschiedener Teilprozesse zu recherchieren und zu evaluieren.
|
||||
%Es könnte auch sein, dass die Stakeholdergruppe schlicht kein Interesse an einer Teilnahme hatte.
|
||||
%Daher wird die Forschungsempfehlung ausgesprochen, dieselbe Studie erneut in einer Art und Weise durchzuführen, die eine regere Teilnahme begünstigt.
|
||||
|
||||
%\paragraph*{Wie können unangemessen hohe Entwicklungskosten vermieden werden?}
|
||||
%\subsection*{Wie können unangemessen hohe Entwicklungskosten vermieden werden?}
|
||||
|
||||
@@ -3,22 +3,24 @@
|
||||
Die vorliegende Bachelorarbeit befasste sich mit der Frage: \enquote{Wie kann die Anmeldung und Zustellung von Weinen für Weinproben
|
||||
des Regionalverbunds für Weine in der Weinregion Mosel effizient und profitabel durch eine TYPO3-Erweiterung realisiert werden?}
|
||||
Für die Beantwortung wurde eine Literaturrecherche bezüglich Entwicklungsmethodiken, eine Gegenüberstellung existierender Technik
|
||||
zur Erstellung von QR-Codes, verschiedene Befragungstechniken zur Anforderungserfassung, sowie der praktischen Umsetzung der
|
||||
zur Erstellung von QR-Codes, verschiedene Befragungstechniken zur Anforderungserfassung sowie die praktische Umsetzung der
|
||||
TYPO3-Erweiterung angestrengt.
|
||||
\\
|
||||
\\
|
||||
Aus den Ergebnissen lässt sich schließen, dass sich insbesondere \enquote{extreme-programming}-Entwicklungsmethodiken eignen,
|
||||
um das aus der Forschungsfrage hervorgehende Projekt zu realisieren.
|
||||
Es wurde gezeigt, dass sich die Bibliothek \textit{chillerlan/php-qrcode} aufgrund herausragender Projektpflege und Workflow-Eignung anbietet,
|
||||
Es wurde gezeigt, dass sich die Bibliothek \enquote{chillerlan/php-qrcode} aufgrund herausragender Projektpflege und Workflow-Eignung anbietet,
|
||||
die mit dem Projekt verbundenen Anforderungen zu erfüllen, die die Erstellung von QR-Codes beschreiben. Die Umsetzung zeigte,
|
||||
dass es unverzichtlich ist, die Schnittstelle zu den verbleibenden Teilprozessen zu schützen, um eine nahtlose Integration mit diesen zu ermöglichen.
|
||||
Es wurde begründet, dass die Durchführung einer Anforderungsanalyse wichtig ist, um ein ausführliches Pflichtenheft auszuarbeiten.
|
||||
Es wurde begründet, dass die Durchführung einer Anforderungsanalyse wichtig ist, um ein ausführliches Pflichtenheft auszuarbeiten
|
||||
und es zeigte sich, dass regelmäßige Statusmeetings mit dem \ac{PO} von Vorteil sind, um die pragmatische Korrektheit laufend zu überprüfen.
|
||||
\\
|
||||
\\
|
||||
Durch diese Forschung wurde somit erwiesen, dass die Anmeldung und Zustellung von Weinen für Weinproben des Regionalverbunds für
|
||||
Weine in der Weinregion Mosel effizient und profitabel durch eine TYPO3-Erweiterung realisiert werden kann, indem für die technische
|
||||
Umsetzung \enquote{extreme-programming}-Entwicklungsmethodiken herangezogen werden, durch eine Anforderungsanalyse ein Pflichtenheft ausarbeitet wird,
|
||||
\break\textit{chillerlan/php-qrcode} als QR-Code-Bibliothek verwendet wird und die Schnittstelle zu den verbleibenden Teilprozessen geschützt wird.
|
||||
Umsetzung \enquote{extreme-programming}-Entwicklungsmethodiken herangezogen werden, durch eine Anforderungsanalyse ein Pflichtenheft ausgearbeitet wird,
|
||||
der aktuelle Stand regelmäßig in Statusmeetings mit dem \ac{PO} besprochen wird, \enquote{chillerlan/php-qrcode} als QR-Code-Bibliothek verwendet wird
|
||||
und die Schnittstelle zu den verbleibenden Teilprozessen geschützt wird.
|
||||
|
||||
\section{Ausblick}
|
||||
\label{chap:ausblick}
|
||||
@@ -28,8 +30,7 @@ Geschäftsprozess der Jahresauswahlprobe abgebildet ist.
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=1\textwidth]{images/geschäftsprozess-ausblick.png}
|
||||
\captionof{figure}{Geschäftsprozess Jahresauswahlprobe: Ausblick}
|
||||
\caption*{Quelle: Eigene Darstellung}
|
||||
\captionof{figure}{Geschäftsprozess Jahresauswahlprobe: Ausblick, Quelle: Eigene Darstellung}
|
||||
\label{fig:geschaeftsprozess-ausblick}
|
||||
\end{nicepic}
|
||||
|
||||
@@ -37,12 +38,10 @@ Der vom Kunden langfristig erwünschte Zustand ist, dass der gesamte Geschäftsp
|
||||
Das betrifft auch, aber nicht nur, das Aufteilen von Jahresauswahlproben in Tische und Flights, das sichere Sammeln und Auswerten
|
||||
der Bewertungen und das Publizieren der daraus resultierenden Ergebnisse. Ein Flight ist eine weitere Unterteilung eines Tisches in der Zeit.
|
||||
So werden pro Tisch immer sechs Weine auf einmal probiert und bewertet.
|
||||
|
||||
Die Bewertung eines Weines erfolg derzeit über eine Bepunktung, die im Wertebereich $[0,100]$ auf Papier notiert wird.
|
||||
Die Bewertung eines Weines erfolgt derzeit über eine Bepunktung, die im Wertebereich $[0,100]$ auf Papier notiert wird.
|
||||
Anschließend wird mithilfe eines Taschenrechners das arithmetische Mittel der für diesen Wein vergebenen Punkte ausgerechnet.
|
||||
Das so zustande gekommene Ergebnis wird wiederum händisch in die Excel-Tabelle aus vorherigen Schritten übertragen.
|
||||
Das so zustandegekommene Ergebnis wird wiederum händisch in die Excel-Tabelle aus vorherigen Schritten übertragen.
|
||||
Ein solch umständliches Verfahren lenkt nicht nur von der eigentlichen Aufgabe der Bewertung ab, sondern stellt eine beachtliche Fehlerquelle dar.
|
||||
|
||||
Auch ist es angedacht, die Weinanmeldung zu Jahresauswahlproben um komplexe Funktionalität zu erweitern, die sicherstellen soll, dass
|
||||
nicht gegen Restriktionen der jeweiligen Probenkategorien verstoßen werden kann. Somit soll vermieden werden, dass Weinanmeldungen
|
||||
aufgrund von Formfehlern abgelehnt werden.
|
||||
@@ -50,7 +49,7 @@ Ein triviales Beispiel hierfür wäre ein Wein mit zu hohem Restzuckeranteil,
|
||||
der in einer Jahresauswahlprobenkategorie für trockene Weine antreten soll.
|
||||
Ziel ist es, dass das Weinanmeldeformular fehlerhafte
|
||||
Anmeldeversuche als solche erkennt und verhindert.
|
||||
Kompliziert wird diese Technik dadurch, dass Kategorien beliebig viele Restriktionen haben sollen,
|
||||
und diese von Redakteuren, im TYPO3-Backend, gepflegt können werden können. Ein komplexeres, realistischeres Beispiel wäre eine
|
||||
Kategorie, die nur vegane Barriqueweine der Rebsorte Merlot zulässt, die einen Mindest- und Maximalrestzuckeranteil, einen Maximalalkoholanteil,
|
||||
Kompliziert wird diese Technik dadurch, dass Kategorien beliebig viele Restriktionen haben können
|
||||
und diese von Redakteuren, im TYPO3-Backend, gepflegt werden sollen. Ein komplexeres, realistisches Beispiel wäre eine
|
||||
Kategorie, die nur vegane Barriqueweine der Rebsorte Merlot zulässt, die einen Mindest- und Maximalrestzuckeranteil, einen Maximalalkoholanteil und
|
||||
einen Maximalpreis erfüllen.
|
||||
|
||||
@@ -2,25 +2,26 @@
|
||||
\label{chap:umsetzung}
|
||||
Infolge der Anforderungsanalyse befasst sich das Kapitel \enquote{Konzeption und Umsetzung}
|
||||
mit der Implementation der Anforderungen in dem
|
||||
Brown-Field Projekt \cite{bib:schwarzer-vorlesung-swa} in Form einer TYPO3-Erweiterung.
|
||||
Brown-Field Projekt \cite{bib:schwarzer-vorlesung-swa} in Form einer TYPO3-\break{}Erweiterung.
|
||||
Es ist anzumerken, dass das aus \fullref{chap:anforderungserfassung} hervorgehende Pflichtenheft im Rahmen geplanter und
|
||||
opportunistischer Gespräche mit dem \ac{PO} geringfügige Änderungen erfahren wird.
|
||||
|
||||
\section{Setup einer TYPO3-Erweiterung}
|
||||
TYPO3-Erweiterungs werden via Composer installiert \break\cite{bib:typo3-docs-managing-extensions}.
|
||||
\section{Setup der TYPO3-Erweiterung}
|
||||
TYPO3-Erweiterungen werden via Composer installiert
|
||||
\break\cite{bib:typo3-docs-managing-extensions}.
|
||||
Um eine TYPO3-Erweiterung zu erstellen, muss also ein Composer-Paket erstellt werden.
|
||||
Um vermeidbare Komplexität zu verhindern, wird das Composer-Paket, welches die hier betrachtete
|
||||
TYPO3-Erweiterung darstellt, lokal in den versionierten Ordner \enquote{packages} gelegt.
|
||||
Dieses Verzeichnis wird als Quelle für Composer-Pakete in der
|
||||
Dieses Verzeichnis wird als Quelle für
|
||||
\break{}Composer-Pakete in der
|
||||
Haupt-composer.json-Datei hinterlegt.
|
||||
Somit wird ein Composer-Paket nur für dieses Projekt bereitgestellt,
|
||||
ohne den Aufwand zu betreiben, der üblicherweise mit dem Bereitstellen eines Paketes einhergeht.
|
||||
\\
|
||||
\\
|
||||
Um das grundlegende Setup einer TYPO3-Erweiterung effizient durchzuführen, wurde eine
|
||||
existierende Erweiterung mit vergleichbarem Funktionsumfang kopiert, umbenannt und eingefügt.
|
||||
Spezifisch ist dieser \enquote{vergleichbare Funktionsumfang}, dass es ebenfalls Datenmodelle und hochpersonalisierte
|
||||
Frontendlogik in Bezug auf die zuvor genannten Datenmodelle gibt.
|
||||
Um das grundlegende Setup einer TYPO3-Erweiterung effizient durchzuführen, wird eine
|
||||
existierende Erweiterung mit vergleichbarem Funktionsumfang kopiert, angepasst und eingefügt,
|
||||
um eine valide Ordnerstruktur als Ausgangspunkt zu erhalten.
|
||||
|
||||
\section{Digitization}
|
||||
Die Phase der Digitization nach Verhoef et al. befasst sich mit der digitalen Abbildung von Objekten aus der realen Welt
|
||||
@@ -28,6 +29,7 @@ in einer Art und Weise, die ermöglicht, dass diese elektronisch weiterverarbeit
|
||||
Des Weiteren befasst sich diese Phase mit der Automatisierung und Befüllung dieser Daten,
|
||||
wie zum Beispiel durch Web-Formulare \cite{bib:verhoef}.
|
||||
Das bedeutet, dass in dieser Phase Datenobjekte definiert und implementiert werden.
|
||||
Ebenfalls werden anhand der Papier-Formulare Web-Formulare gebaut, damit Nutzer diese Datenobjekte erstellen können.
|
||||
Ein Datenobjekt besteht nach firmeninternen Konventionen aus zumindest
|
||||
vier Komponenten:
|
||||
\begin{description}
|
||||
@@ -45,37 +47,36 @@ vier Komponenten:
|
||||
\end{description}
|
||||
\cite{bib:typo3-docs-extbase-reference}.
|
||||
|
||||
Im Folgenden wurde ein semiformales Diagramm der Objekte und ihren Relationen
|
||||
Im Folgenden wird ein semiformales Diagramm der Objekte und ihren Relationen
|
||||
angefertigt und in Rücksprache mit dem \ac{PO} finalisiert.
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=1\textwidth]{images/objektrelationen-weinlandmosel-einlieferungswerkzeug.png}
|
||||
\captionof{figure}{Objektrelationen}
|
||||
\caption*{Quelle: Eigene Darstellung: Weinland Mosel Einlieferungswerkzeug}
|
||||
\captionof{figure}{Objektrelationen: Weinland Mosel Jahresauswahlprobenwerkzeug, Quelle: Eigene Darstellung}
|
||||
\label{fig:objektrelationen}
|
||||
\end{nicepic}
|
||||
|
||||
Nachdem in Erfahrung gebracht wurde, welche konkreten Datenobjekte benötigt werden,
|
||||
wurden Attribute dieser Objekte dem Pflichtenheft entnommen. Diese wurden in einem
|
||||
Nachdem in Erfahrung gebracht wird, welche konkreten Datenobjekte benötigt werden,
|
||||
werden Attribute dieser Objekte dem Pflichtenheft entnommen. Diese werden in einem
|
||||
formalen Klassendiagramm festgehalten und in Rücksprache mit dem \ac{PO}
|
||||
weiter bis zu festen Datentypen und Auswahlmöglichkeiten konkretisiert.
|
||||
Beispielsweise, dass Wettbewerbskategorien durch TYPO3-Categories repräsentiert werden.
|
||||
Beispielsweise dass Probenkategorien durch TYPO3-Categories repräsentiert werden.
|
||||
Das hat den Vorteil, dass TYPO3-Categories bereits native Bestandteile eines TYPO3-Redaktionssystemes sind
|
||||
und alle relevanten Attribute anbieten. Diese sind Titel,
|
||||
Parentkategorie und Beschreibung.
|
||||
Das Parent-Attribut ist benötigt, da $n$ dieser Attribute einen Attributbaum bilden
|
||||
Das Parent-Attribut ist nötig, da $n$ dieser Attribute einen Attributbaum bilden
|
||||
\cite{bib:typo3-docs-sys-category}.
|
||||
Somit ist es möglich, Unterkategorien zu erstellen. Beispiele hierfür sind die
|
||||
Unterkategorien \enquote{Trockener Riesling} und \enquote{Halbtrockener Riesling} für die Überkategorie
|
||||
\enquote{Riesling}.
|
||||
Rebsorten, Geschmack, Weineigenschaften und Qualität sollen eigene Datentypen,
|
||||
Rebsorte, Geschmacksangabe, Weineigenschaften und Qualitätsstufe sollen eigene Datentypen,
|
||||
anstatt einfacher Zeichenfolgen sein.
|
||||
Ziel dessen ist, dass sich Nutzer für einen vorgefertigten, nominalen Eintrag in einem Dropdown-Menü
|
||||
entscheiden müssen und diese Auswahlmöglichkeiten im TYPO3-Backend pflegbar sind.
|
||||
entscheiden müssen und dass diese Auswahlmöglichkeiten im TYPO3-Backend pflegbar sind.
|
||||
Weinlagen sind im Brown-Field-Projekt bereits vorhanden, also sollen hierfür existierende Daten
|
||||
wiederverwendet werden.
|
||||
Je Wein sollen beliebig viele Weineigenschaften auswählbar sein. Wettbewerbskategorien,
|
||||
Geschmacksrichtung, etc, sind jeweils nur ein Element.
|
||||
Je Wein sollen beliebig viele Weineigenschaften auswählbar sein. Probenkategorie,
|
||||
Geschmacksangabe, etc, sind jeweils nur ein Element.
|
||||
Weitere Notizen zu diesem Gespräch sind im Anhang unter \fullref{chap:anhang-notizen-digitization}
|
||||
zu finden.
|
||||
\\
|
||||
@@ -103,10 +104,10 @@ Dem Pflichtenheft ist zu entnehmen, dass es zwei Kategorien von Teilnehmerregist
|
||||
\item Nutzer ist \ac{WM}-Mitglied
|
||||
\item Nutzer ist kein \ac{WM}-Mitglied
|
||||
\end{enumerate}
|
||||
Der primäre Unterschied zwischen Mitgliedern und Nicht-Mitgliedern ist, dass Mitglieder bereits einen
|
||||
Der primäre Unterschied zwischen Mitgliedern und Nichtmitgliedern ist, dass Mitglieder bereits einen
|
||||
Stammdatensatz hinterlegt haben.
|
||||
Dieser Stammdatensatz bildet die Angaben zum Weingut des zu digitalisierenden Anmeldeformulares ab.
|
||||
Nicht-Mitglieder sind dem System noch gänzlich unbekannt und müssen im Zuge der Registrierung ihres Nutzers
|
||||
Nichtmitglieder sind dem System noch gänzlich unbekannt und müssen im Zuge der Registrierung ihres Nutzers
|
||||
ihre Stammdaten angeben, während sich Mitglieder lediglich einloggen müssen und eine Schaltfläche
|
||||
\enquote{Teilnehmer werden} betätigen.
|
||||
Der mit dem \ac{PO} ausgearbeitete UX-Flow der Registrierung sieht vor, dass der Nutzer zunächst gefragt wird,
|
||||
@@ -114,15 +115,14 @@ ob er Mitglied sei oder nicht. Hierzu gibt es je einen Button. Ist der Nutzer ei
|
||||
wird er auf ein Loginformular, mit der Option zur Registrierung weitergeleitet.
|
||||
Nach erfolgreichem Login, wird ein Teilnehmerobjekt erstellt.
|
||||
Wählt der Nutzer \enquote{Nein, ich bin kein Mitglied}, wird er auf ein Registrierungsformular
|
||||
weitergeleitet, um einen Nicht-Mitgliederaccount anzulegen. Im Zuge dieser Registrierung werden
|
||||
weitergeleitet, um einen Nichtmitgliederaccount anzulegen. Im Zuge dieser Registrierung werden
|
||||
Stammdaten zum Weingut angefragt.
|
||||
Dieser Schritt übersetzt unter anderem den \enquote{Einreicher}-Teil des ursprünglichen Anmeldeformulares,
|
||||
anbei in \fullref{chap:anhang-anmeldeformular}.
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=0.6\textwidth]{images/ux-flow-registrierung.png}
|
||||
\captionof{figure}{UX-Flow: Registrierung}
|
||||
\caption*{Quelle: Eigene Darstellung}
|
||||
\captionof{figure}{UX-Flow: Registrierung, Quelle: Eigene Darstellung}
|
||||
\label{fig:uxflow-registrierung}
|
||||
\end{nicepic}
|
||||
|
||||
@@ -130,7 +130,7 @@ Da das Brown-Field-Projekt bereits Accountlogins und -registrierungen implementi
|
||||
wird auf diese Lösungen zurückgegriffen, um einen einheitlichen Workflow beizubehalten.
|
||||
Accountregistrierungen werden über den
|
||||
\enquote{femanager} \cite{bib:typo3-docs-femanager} realisiert, während Logins via TYPO3s nativem
|
||||
Frontend-Nutzer-Login gelöst werden. Das ist explizit von \enquote{femanager} so angedacht:
|
||||
Frontend-Nutzer-Login gelöst werden. Das ist explizit von \enquote{femanager} angedacht:
|
||||
\quotecite{Note: Login and a I forgot my password function is part of the core and not part of femanager.}
|
||||
\cite{bib:typo3-docs-femanager}.
|
||||
Im Folgenden wird der Registrierungsprozess im Detail beschrieben:
|
||||
@@ -188,18 +188,21 @@ Weiterleitungen zu bestimmten Seiten, nachdem ein Nutzer spezielle Events ausgel
|
||||
konfiguriert werden \cite{bib:typo3-docs-femanager}. Logins werden über das TYPO3-native Loginformular
|
||||
gelöst. Im TYPO3-Loginformular können Weiterleitungen zu spezialisierten Seiten im Backend-UI festgelegt werden
|
||||
\break\cite{bib:typo3-docs-felogin}.
|
||||
Für alle funktionalen Belange wird ein TYPO3-Plugin registriert. Dieses Plugin verfügt über einen
|
||||
Für alle funktionalen Belange wird ein TYPO3-Pluginobjekt registriert. Dieses Pluginobjekt verfügt über einen
|
||||
ActionController, der Nutzeranfragen an PHP-Funktionen (\enquote{Actions})
|
||||
bindet.
|
||||
In diesen Actions werden Fehlerbehandlungen durchgeführt, Datenmodelle der Domäne erstellt und in der
|
||||
Datenbank persistiert sowie Daten für die Anzeige im Frontend aufbereitet \cite{bib:typo3-docs-extbase}.
|
||||
Datenbank persistiert sowie Daten für die Anzeige im Frontend der Webseite aufbereitet
|
||||
\break\cite{bib:typo3-docs-extbase}.
|
||||
Neue Datenobjekte werden in Repository-Objekten registriert
|
||||
\break\cite{bib:typo3-docs-extdev-tut-tea-repositories}. Diese Repositories sind Aggregate des Controllers,
|
||||
\cite{bib:typo3-docs-extdev-tut-tea-repositories}. Diese Repositories sind Aggregate des Controllers,
|
||||
werden jedoch nach dem \enquote{Inversion of Control}-Prinzip via Dependency Injection instanziiert und
|
||||
der ActionController-Klasse über eine Methode übergeben \cite{bib:typo3-docs-di}.
|
||||
\break{}ActionController-Objekten über öffentliche Methoden übergeben
|
||||
\break\cite{bib:typo3-docs-di}.
|
||||
Als problematisch erweisen sich hierbei bidirektionale Verbindungen zwischen Datenmodellen, wenn die Foreign Keys
|
||||
über das SQL-Schlüsselwort \enquote{AUTO\_INCREMENT} in der Datenbank generiert werden.
|
||||
Beispielsweise, muss ein Masterrecord, der Betriebsinformationen speichert, bidirektional an ein Teilnehmerobjekt
|
||||
über das SQL-Schlüsselwort
|
||||
\enquote{AUTO\_INCREMENT} in der Datenbank generiert werden.
|
||||
Beispielsweise muss ein Masterrecord, der Betriebsinformationen speichert, bidirektional an ein Teilnehmerobjekt
|
||||
gebunden werden. Hierzu wird jedem der Elemente jeweils der Foreign Key des anderen übergeben.
|
||||
Als Foreign Keys werden hierfür die jeweiligen \acp{UID} herangezogen, da diese Werte durch
|
||||
\enquote{AUTO\_INCREMENT} auf der Datenbankebene erzeugt werden und garantiert einzigartig je Datenbanktabelle sind
|
||||
@@ -216,7 +219,7 @@ Ein Basismerkmal des Jahresauswahlprobenwerkzeuges ist die Möglichkeit, Weine z
|
||||
anzumelden. Dieser Schritt übersetzt unter anderem die verbleibenden Formfelder des
|
||||
ursprünglichen Anmeldeformulares, anbei in \fullref{chap:anhang-anmeldeformular}, in den digitalen Workflow.
|
||||
Für die Weinanmeldung spielt die Mitgliedsschaft eines Teilnehmers keine Rolle. Es wird lediglich ein
|
||||
Frontend-Nutzer der Nutzergruppe \enquote{Teilnehmer} benötigt. Dieser Nutzer hat, wenn angemeldet,
|
||||
Frontend-Nutzer der Nutzergruppe \enquote{Teilnehmer} erfordert. Dieser Nutzer hat, wenn angemeldet,
|
||||
Zugriff auf eine Auflistung aller zeitlich freigegebenen Jahresauswahlproben.
|
||||
Soweit der Registrierungszeitraum dieser Jahresauswahlprobe den aktuellen Zeitpunkt miteinschließt,
|
||||
wird eine \enquote{Jetzt Wein anmelden}-Schaltfläche angeboten.
|
||||
@@ -226,8 +229,7 @@ Mitarbeitern bearbeitet werden müssen. Davon profitiert \ac{WM}, da diese Zeit
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=0.9\textwidth]{images/ux-flow-teilnahme.png}
|
||||
\captionof{figure}{UX-Flow: Weinanmeldung}
|
||||
\caption*{Quelle: Eigene Darstellung}
|
||||
\captionof{figure}{UX-Flow: Weinanmeldung, Quelle: Eigene Darstellung}
|
||||
\label{fig:uxflow-weinanmeldung}
|
||||
\end{nicepic}
|
||||
|
||||
@@ -248,24 +250,27 @@ werden Formulare und Formfelder mit den entsprechenden Fluid-Form-ViewHelpern au
|
||||
Diese ViewHelper repräsentieren und erstellen gleichnamige HTML-Tags und fügen diesen spezielle
|
||||
Attribute zur Identifizierung in Submit-Aufrufen hinzu \cite{bib:typo3-docs-fluid-form-viewhelpers}.
|
||||
Grundsätzlich entstehen hierbei drei Kategorien von Werten, die es im Formular abzubilden gilt:
|
||||
|
||||
\paragraph*{Inputfelder} sind triviale Formfelder, die nicht durch andere Datensätze beschränkt werden.
|
||||
\\
|
||||
\\
|
||||
\textbf{Inputfelder} sind triviale Formfelder, die nicht durch andere Datensätze beschränkt werden.
|
||||
Beispiele für Inputfelder sind: Weinbeschreibung, Jahrgang und Alkoholgehalt.
|
||||
Inputfelder werden mit simplen Input-Tags umgesetzt und erhalten nach Bedarf \textit{required} und
|
||||
\textit{pattern}-Attribute. Diese Attribute beschreiben jeweils, ob ein Formfeld ein Pflichtfeld ist und
|
||||
mit welcher Regular Expression der Formfeldinhalt abzugleichen ist \cite{bib:w3schools-input}.
|
||||
Die Formfeldwerte können unverändert in der Datenbank persistiert werden.
|
||||
|
||||
\paragraph*{SelectSingle} sind Formfelder, die dem Nutzer eine Auswahl aus $n$ Elementen aus
|
||||
\\
|
||||
\\
|
||||
\textbf{SelectSingle} sind Formfelder, die dem Nutzer eine Auswahl aus $n$ Elementen aus
|
||||
anderen Datenbanktabellen geben. Der Nutzer muss sich für genau ein Element entscheiden.
|
||||
Beispiele für SelectSingle-Formfelder sind: Weinlage, Qualitätsstufe, Rebsorte und Geschmacksangabe.
|
||||
\break{}SelectSingle-Formfelder werden durch Select-HTML-Tags abgebildet. Der TYPO3-Form-ViewHelper für
|
||||
\break{}SelectSingle-Formfelder werden durch Select-HTML-Tags abgebildet.
|
||||
\break{}Der TYPO3-Form-ViewHelper für
|
||||
\enquote{Select} akzeptiert eine Liste an Auswahlmöglichkeiten und erstellt selbstständig Option-HTML-Tags
|
||||
für diese.
|
||||
Die Formfeldwerte von SelectSingle-Formfeldern sind die
|
||||
\acp{UID} des jeweils ausgewählten Elementes \cite{bib:typo3-docs-fluid-form-viewhelpers}.
|
||||
\\
|
||||
\\
|
||||
\clearpage
|
||||
|
||||
Aufgrund dessen, dass das Weinlagen-Dropdown-Menü über 170 Einträge führt, wird eine Suchmöglichkeit implementiert.
|
||||
Diese ist lediglich ein Textfeld, das bei jeder Eingabe allen Option-Tags der Weinlage,
|
||||
deren Anzeigewert nicht dem Suchwert entspricht, das Stilattribut \enquote{display: none;} auferlegt.
|
||||
@@ -276,7 +281,7 @@ Eine komplexe Ausnahme stellt das SelectSingle-Formfeld \enquote{Category} dar,
|
||||
als Baumstrukturen abgebildet werden
|
||||
\break\cite{bib:typo3-docs-sys-category}.
|
||||
Um die Eltern-Kind-Beziehungen der
|
||||
\break{}Baumstruktur erstichtlich zu machen, werden die Option-HTML-Tags rekursiv gerendert. Zunächst werden sämtliche Kategorien, deren
|
||||
\break{}Baumstruktur ersichtlich zu machen, werden die Option-HTML-Tags rekursiv gerendert. Zunächst werden sämtliche Kategorien, deren
|
||||
\ac{PID} 0 ist, dargestellt. Diese Elemente sind direkte Kinder des unsichtbaren Wurzelelementes. Für jede dieser Kategorien $a$ wird nun ein
|
||||
Fluid-Partial aufgerufen,
|
||||
das alle Kategorien $b$ darstellt, für die gilt: $b.pid = a.uid$. Diese Darstellung erfolgt durch einen erneuten rekursiven Aufruf dieses Partials.
|
||||
@@ -295,7 +300,7 @@ Daher wird im Folgenden die Zeitkomplexität dieser Rekursionsfunktion betrachte
|
||||
Für diese Funktion kann kein Master-Theorem angewandt werden,
|
||||
da es sich hierbei nicht um einen \enquote{Divide-and-Conquer-Algorithmus} handelt.
|
||||
Das ist so, da das in der Rekursion weitergereichte Problem nicht kleiner wird,
|
||||
sondern gleich groß bleibt.
|
||||
sondern gleich groß bleibt. Demnach ist $b = 1$.
|
||||
Das verletzt die Bedingung $b>1$ des Master-Theorems, definiert als $T(n) = a*T(\frac{n}{b})+f(n)$
|
||||
\cite{bib:schwarzer-vorlesung-alg}.
|
||||
Der Algorithmus besteht aus $m \in \mathbb{N}$ verschachtelten For-Schleifen
|
||||
@@ -304,12 +309,11 @@ Somit ist die Zeitkomplexität $O(n^m)$. Normiert dargestellt beträgt die Zeitk
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=0.70\textwidth]{images/timecomplexity-category.png}
|
||||
\captionof{figure}{Stichprobenartige Laufzeitanalyse des\\Kategorie-Renderers, gegenüber einer\\ quadratischen Kurve}
|
||||
\caption*{Quelle: Eigene Darstellung}
|
||||
\captionof{figure}{Stichprobenartige Laufzeitanalyse des\\Kategorie-Renderers, gegenüber einer\\ quadratischen Kurve, Quelle: Eigene Darstellung}
|
||||
\label{fig:timecomplexity-category}
|
||||
\end{nicepic}
|
||||
|
||||
Auf Optgroup-HTML-Tags wurde bewusst verzichtetet.
|
||||
Auf Optgroup-HTML-Tags wird bewusst verzichtetet.
|
||||
Grund dafür ist, dass Optgroup-Elemente an sich nicht im Dropdown-Menü auswählbar sind.
|
||||
Das stellt ein Problem dar, da beispielsweise die Kategorie \enquote{Riesling},
|
||||
die die Unterkategorien \enquote{Trockener Riesling} und \enquote{Halbtrockener Riesling} beinhalten könnte,
|
||||
@@ -317,32 +321,37 @@ auch direkt auswählbar sein sollte. Zudem besitzen Kategorie-Elemente kein Attr
|
||||
von Unterkategorien hindeutet \cite{bib:typo3-docs-sys-category}, womit eine Unterscheidung zwischen
|
||||
Baumblättern und -zweigen nicht ohne weiteres möglich wäre. Diese Entscheidung wäre jedoch
|
||||
benötigt, um zwischen einem Optgroup-Tag und einem Option-Tag abzuwägen.
|
||||
\clearpage
|
||||
|
||||
\paragraph*{SelectMultiple} sind Formfelder, die dem Nutzer eine Auswahl aus $n$ verschiedenen Elementen aus einer anderen
|
||||
\textbf{SelectMultiple} sind Formfelder, die dem Nutzer eine Auswahl aus $n$ verschiedenen Elementen aus einer anderen
|
||||
Datenbanktabelle geben. Der Nutzer kann sich für eine beliebige Auswahl dieser, eingeschlossen keinen, entscheiden.
|
||||
Ein Beispiel für SelectMultiple-Formfelder sind Weineigenschaften.
|
||||
TYPO3-Fluid implementiert hierfür keinen ViewHelper
|
||||
\break\cite{bib:typo3-docs-fluid-form-viewhelpers},
|
||||
also wurde eine eigene Lösung entworfen: Der Nutzer soll aus einer Menge $A$ wählen.
|
||||
\cite{bib:typo3-docs-fluid-form-viewhelpers},
|
||||
also wird eine eigene Lösung entworfen: Der Nutzer soll aus einer Menge $A$ wählen.
|
||||
Für alle Elemente $a \in A$
|
||||
wird ein Checkbox-Feld erstellt. Dieses Element trägt den Anzeigewert \enquote{<a.title>} und den
|
||||
Wert \enquote{<formfeldname>-true}.
|
||||
Ist also eine dieser Checkboxen angehakt, hat sie den zuvor genannten Wert. Falls nicht, trägt sie keinen Wert.
|
||||
Weil alle angehakten Checkboxen dieses Formfeldes den selben Wert tragen, ist es PHP-seitig trivial
|
||||
eine Liste aller angehakten Checkbox-Ids dieses Formfeldes aus der Liste aller Formfeldparameter zu extrahieren.
|
||||
wird ein Checkbox-Feld erstellt. Dieses Element trägt den Anzeigewert \enquote{<a.title>},
|
||||
den ID- und Namenswert \enquote{<formfeldname>-<a.uid>} und den
|
||||
Formularwert \enquote{<formfeldname>-true}.
|
||||
Ist also eine dieser Checkboxen angehakt, hat sie den zuvor genannten Formularwert. Falls nicht, trägt sie keinen Formularwert.
|
||||
Weil alle angehakten Checkboxen dieses Formfeldes den selben Namenswert tragen, ist es phpseitig trivial
|
||||
eine Liste aller angehakten Checkbox-Namen dieses Formfeldes aus der Liste aller Formfeldparameter zu extrahieren.
|
||||
Hierfür wird die eingebaute PHP-Funktion \enquote{array\_keys} verwendet. Diese Funktion gibt alle
|
||||
Keys eines Arrays in Form eines numerisch indizierten Arrays zurück.
|
||||
Der optionale Parameter \enquote{filter\_values} bestimmt, dass ausschließlich die Keys
|
||||
der Key-Value-Pairs, die einen bestimmten
|
||||
Wert tragen, extrahiert werden \cite{bib:php-array-keys}. D.h., der Funktionsaufruf filtert alle Keys und somit alle
|
||||
Wert (der Formwert) tragen, extrahiert werden \cite{bib:php-array-keys}. D.h., der Funktionsaufruf filtert alle Keys und somit alle
|
||||
Formfeld-IDs des Formfeldparameter-Arrays heraus, die den Wert \enquote{<formfeldname>-true} haben. Das ist eine Liste
|
||||
aller Formfeld-IDs der Checkboxen des SelectMultiples, die angehakt wurden.
|
||||
Mit der eingebauten PHP-Funktion \enquote{array\_map} wird nun eine Operation auf alle Schlüssel
|
||||
der Liste angewandt, die \enquote{strlen('formfeldname-')} Zeichen, von links ausgehend, von der Formfeld-ID
|
||||
entfernt. Somit wird beispielsweise die Formfeld-ID \enquote{winekind-18} zu \enquote{18} transformiert. Übrig bleiben die \acp{UID} aller angehakten Elemente $a$, in Form einer Zeichenkette.
|
||||
aller Formfeld-Namen der Checkboxen des SelectMultiples, die angehakt wurden.
|
||||
Mit der eingebauten PHP-Funktion \enquote{array\_map} wird nun eine Operation auf alle Werte
|
||||
der Liste angewandt, die
|
||||
\break\enquote{strlen('<formfeldname>-')} Zeichen, von links ausgehend, vom Formfeld-Name
|
||||
entfernt. Somit wird beispielsweise der Formfeld-Name \enquote{winekind-18} zu \enquote{18} transformiert.
|
||||
Übrig bleiben die extrahierten \acp{UID} aller angehakten Elemente $a$, in Form einer Zeichenkette.
|
||||
Über die eingebaute PHP-Funktion \enquote{intval} ist es trivial diese zu Zahlen zu übersetzen,
|
||||
wodurch die tatsächlichen Objekte aus der Datenbank angefragt werden können.
|
||||
|
||||
\\
|
||||
\\
|
||||
\subsection{PDF- und QR-Code-Generierung}
|
||||
Das dynamische Erstellen und Ausgeben des Datenblattes als PDF ist ein essenzieller Bestandteil des
|
||||
Jahresauswahlprobenwerkzeuges, da dieses PDF die Schnittstelle zwischen ankommenden Weinen und dem System darstellt.
|
||||
@@ -353,12 +362,12 @@ Generierung dieses PDFs die Bibliotheken \enquote{chillerlan/php-qrcode} und
|
||||
\enquote{mpdf/mpdf} herangezogen und über Composer installiert.
|
||||
|
||||
\subsubsection{QR-Code-Generierung}
|
||||
Der QR-Code beinhaltet lediglich die Wein-\ac{UID} anstatt einer vollständigen URL. Hintergrund dessen ist, dass
|
||||
Der QR-Code beinhaltet lediglich die Wein-\ac{UID} anstatt einer vollständigen URL. Hintergrund ist, dass
|
||||
die benötigte URL, um einen Wein einzuscannen, bis auf die Wein-\ac{UID} immer identisch ist.
|
||||
Somit wird redundanz vermieden.
|
||||
Somit wird Redundanz vermieden.
|
||||
Es ist Aufgabe der QR-Code-App, die den Code einscannt, aus der Wein-\ac{UID} eine vollständige URL herzuleiten.
|
||||
Um effizient zu arbeiten, wird der QR-Code zu einem base64-kodiertem Bild gerendert.
|
||||
Das ist der Standardrückgabewert des QR-Code-Generators
|
||||
Um effizient zu arbeiten, wird der QR-Code zu einem base64-kodierten Bild gerendert.
|
||||
Das ist der Standardrückgabewert des QR-Code-\break{}Generators
|
||||
und erfordert somit keine nähere Konfiguration. Ebenfalls lässt sich ein base64-kodiertes Bild als Quell-URL eines
|
||||
IMG-HTML-Tags angeben, womit das Bild eingebettet ist. Das spart Arbeitszeit,
|
||||
die sonst in das anderweitige Einbetten eines Bildes in einem PDF mit \enquote{mpdf} fließen müsste.
|
||||
@@ -385,6 +394,7 @@ Um dieses PDF-Dokument über die Verbindung an den Nutzer zu übertragen, wird e
|
||||
Über dieses Response-Objekt werden einige Header gesetzt und direkt übertragen. Diese Header sind Content-Type und Content-Length.
|
||||
Abschließend werden als Response-Body die Bytes des generierten PDFs übertragen. Damit ist die Verbindung beendet und das
|
||||
PDF zum Nutzer übertragen.
|
||||
\clearpage
|
||||
|
||||
\subsection{Jahresauswahlproben- und Wein-Detailansichten}
|
||||
Weine und Jahresauswahlproben sollen unter bestimmten Gegebenheiten einsehbar sein.
|
||||
@@ -395,7 +405,7 @@ Die Detailansichten für Jahresauswahlproben und Weine benötigen spezielle Auto
|
||||
Diese sind: Jahresauswahlproben sind nur einsichtig, wenn sich das aktuelle Datum innerhalb des
|
||||
Sichtbarkeitszeitraumes der Jahresauswahlprobe befindet.
|
||||
Detailansichten für Weine sind immer für den zugehörigen Teilnehmer einsichtig.
|
||||
Nach Abschluss ihrer Jahresauswahlprobe sind alle ihr angehörigen Weine öffentlich einsichtig.
|
||||
Nach Abschluss einer Jahresauswahlprobe sind alle ihr angehörigen Weine öffentlich einsichtig.
|
||||
Das hat den Hintergrund, dass Jahresauswahlproben Blindverkostungen sind
|
||||
und niemand die Möglichkeit haben sollte, im Voraus Informationen über die teilnehmenden Weine in Erfahrung zu bringen.
|
||||
Die Ergebnisse der Jahresauswahlproben sind öffentlich, also sind es die Weine nach Abschluss einer Jahresauswahlprobe auch.
|
||||
@@ -408,11 +418,8 @@ zu anderen Ansichten generiert. Diese ViewHelper übergeben Parameter. Die hierf
|
||||
Ansichten sind beispielsweise Wein-\acp{UID} und Jahresauswahlproben-\acp{UID}. Um Informationen über den angemeldeten Nutzer,
|
||||
wie beispielsweise seiner Teilnehmernummer oder seiner Nutzergruppenzugehörigkeit, zu erlangen, wird sich
|
||||
der Extbase-nativen Domain-Model-FrontendUser-Klasse bedient \cite{bib:typo3-ref-extbase-model-feuser}.
|
||||
\\
|
||||
\\
|
||||
Mit Abschluss der Phase der Digitization können alle Datenstrukturen im TYPO3-Backend händisch angelegt,
|
||||
eingesehen, gelöscht und bearbeitet werden.
|
||||
|
||||
eingesehen, gelöscht, bearbeitet und im Frontend von Nutzern befüllt werden.
|
||||
|
||||
\section{Digitalization}
|
||||
In der Phase \textit{Digitalization} werden bestehende Geschäftsprozesse so verändert,
|
||||
@@ -435,14 +442,14 @@ Wird ein Wein als \enquote{eingegangen} markiert, wird der betroffene Teilnehmer
|
||||
Hierzu wird die FluidEmail-Klasse des TYPO3-Cores herangezogen.
|
||||
Sollte ein Wein bereits als \enquote{eingegangen} markiert sein, wird keine Email verschickt und dem Mitarbeiter kommuniziert,
|
||||
dass keine Änderungen vorgenommen wurden.
|
||||
Abschließend werden im Frontend allgemeine Daten über den Wein angezeigt, damit sich Mitarbeiter sicher sein können,
|
||||
Abschließend werden im Frontend allgemeine Daten zum Wein angezeigt, damit sich Mitarbeiter sicher sein können,
|
||||
den richtigen Wein eingescanned zu haben.
|
||||
|
||||
\subsection{CSV-Export}
|
||||
Das letzte Glied des analogen Prozesses, den es zu digitalisieren gilt, ist der Datenexport der Weindaten je Jahresauswahlprobe.
|
||||
TYPO3s ListView bietet einen nativen CSV-Exporter an \cite{bib:pixelant-typo3-data-export},
|
||||
jedoch kommt dieser nicht den Anforderungen gerecht, da das CSV-Dokument Daten verschiedener Datenbanktabellen im Verein
|
||||
beinhalten muss.
|
||||
jedoch wird dieser nicht den Anforderungen gerecht, da das benötigte CSV-Dokument Daten verschiedener Datenbanktabellen im Verein
|
||||
beinhalten muss. Der Native CSV-Exporter gibt jedoch lediglich Inhalte einer Datenbanktabelle aus \cite{bib:pixelant-typo3-data-export}.
|
||||
Um eine reibungslose Integration in die restlichen Prozesse von \ac{WM} zu gewährleisten, muss das exportierte CSV
|
||||
das selbe Format haben, wie bisher bestehende Excel-Dateien. Dieses Format ist durch genaue Spaltennamen,
|
||||
Spalteneihenfolgen und den Arten von Daten, die angefragt werden, definiert.
|
||||
@@ -459,7 +466,7 @@ Das CSV-Dokument wird über die PHP-native Funktion \enquote{fputcsv} generiert.
|
||||
numerisch indizierten Array und schreibt eine darauf basierende CSV-Zeile in eine Datei \cite{bib:php-fputcsv}.
|
||||
Um gut wartbaren PHP-Code zu erzeugen, werden alle CSV-Zeilen in einem zweidimensionalen Array,
|
||||
der das gesamte CSV-Dokument darstellt,
|
||||
durch alphanumerisch indizierte, innere Arrays abgebildet. Somit ist bei jeder Wertzuweisung der zugehörige Spaltenname ersichtlich.
|
||||
durch alphanumerisch indizierte, innere Arrays abgebildet. Somit ist bei jeder Wertzuweisung der zugehörige Spaltenname als Array-Key ersichtlich.
|
||||
Über die nativen PHP-Funktionen \enquote{array\_keys} und \enquote{array\_values} wird dieser zwar gut lesbare,
|
||||
aber mit \enquote{fputcsv} inkompatible
|
||||
Array zu einer Reihe kompatibler Array konvertiert. Hierbei werden durch \enquote{array\_keys} die Kopfzeile und durch
|
||||
@@ -467,16 +474,16 @@ Array zu einer Reihe kompatibler Array konvertiert. Hierbei werden durch \enquot
|
||||
in die Zieldatei geschrieben. Als Zieldatei wird eine temporäre Datei im Arbeitsspeicher angegeben,
|
||||
um das fertig erzeugte CSV-Dokument als Zeichenkette in PHP zu erhalten. Das spart vermeidbare Festplattenschreib- und Lesezugriffe.
|
||||
Im Fluid-Template des Backendmoduls wird das generierte CSV-Dokument in einem nicht beschreibbaren Textarea-Feld präsentiert.
|
||||
Um \ac{WM} weitere Arbeitszeit zu ersparen wird eine Download-Funktion für CSV-Dateien
|
||||
Um \ac{WM} weitere Arbeitszeit zu ersparen, wird eine Download-Funktion für CSV-Dateien
|
||||
angeboten. Das erspart das manuelle Kopieren und Abspeichern von CSV-Zeichenketten durch IT-Fachfremde, reduziert damit die Anzahl
|
||||
an benötigten Übergangsschritten in weitere Prozesse und reduziert somit die Komplexität der Umstellung.
|
||||
Auch im Interesse, Arbeitszeit in der Umsetzung zu sparen,
|
||||
wurde diese Downloadfunktion JavaScript-seitig umgesetzt.
|
||||
wird diese Downloadfunktion javascript-seitig umgesetzt.
|
||||
Dadurch ist der Download in derselben Action, die CSV für das Textarea-Feld generiert, implementiert.
|
||||
Somit muss weder abstrahiert werden, noch ein weiterer CSV-Exporter gebaut werden.
|
||||
Hierfür wird ein EventHandler auf den Download-Button angewandt, der bei Betätigung ein vestecktes
|
||||
\enquote{a}-Element erstellt, über das HTML-Attribut \enquote{download} des \enquote{a}-Elementes den Download-Dateinamen
|
||||
festlegt und als \enquote{href}-HTML-Attribut
|
||||
eine Blob-URL zuweist. Diese Blob-URL wird über ein Blob-Objekt generiert.
|
||||
Wird nun der Download-Button gedrückt, wird JavaScript-seitig eine Datei erzeugt und gespeichert
|
||||
Wird nun der Download-Button gedrückt, wird javascript-seitig eine Datei erzeugt und gespeichert
|
||||
\cite{bib:tutorialspoint-js-save-text}.
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
\chapter{Stand der Forschung}
|
||||
\label{chap:stand-der-forschung}
|
||||
Der Stand der Forschung beleuchtet verschiedene Entwicklunsmethodiken zur Digitalisierung und zur digitalen Transformation.
|
||||
Der Stand der Forschung beleuchtet verschiedene Entwicklunsmethodiken zur Digitalisierung.
|
||||
|
||||
\section{Modell nach Parviainen et al.}
|
||||
\quotecite{The importance of digitalization is becoming understood,
|
||||
but the question now is how to do it in practice in order to best benefit from it.}
|
||||
\cite{bib:Parviainen_Tihinen_Kaariainen_Teppola_2022}.
|
||||
|
||||
Parviainen et al. stellten sich diese Frage und entwickelten in ihrer Forschungsarbeit einen konzeptionellen Rahmen, um zu verstehen, wie die Digitalisierung in der Praxis umgesetzt werden kann und welche Vorteile sich daraus ergeben. Dieser Rahmen basiert auf dem \ac{PDCA} -Prinzip.
|
||||
Parviainen et al. stellten sich die Frage, wie man in der Praxis von Digitalisierung profitieren kann und entwickelten in ihrer Forschungsarbeit
|
||||
einen konzeptionellen Rahmen, um zu verstehen, wie die Digitalisierung in der Praxis umgesetzt werden kann und welche Vorteile sich daraus ergeben.
|
||||
Dieser Rahmen basiert auf dem \ac{PDCA} -Prinzip.
|
||||
\\
|
||||
\\
|
||||
Dieses Rahmenwerk sieht anhand des \ac{PDCA}-Prinzips vier Schritte vor:
|
||||
|
||||
\paragraph*{Im ersten Schritt} wird definiert, wie weit die Digitalisierung für das Unternehmen gehen kann und welche Position
|
||||
\\
|
||||
\\
|
||||
\textbf{Im ersten Schritt} wird definiert, wie weit die Digitalisierung für das Unternehmen gehen kann und welche Position
|
||||
das Unternehmen dabei anstrebt. Dieser Schritt kann in vier Teilschritte unterteilt werden: Ausmaße, Treiber, Szenarien und
|
||||
Ziele. Für die Bestimmung der Ausmaße ist die Analyse aktueller Trends und deren Relevanz für die Domäne des Unternehmens
|
||||
wichtig. Ebenfalls ist wichtig, wie weit diese Trends bereits im Fachgebiet verankert sind. Zur Einordnung eignen sich
|
||||
@@ -20,42 +19,43 @@ wichtig. Ebenfalls ist wichtig, wie weit diese Trends bereits im Fachgebiet vera
|
||||
\\
|
||||
\\
|
||||
Aus den Ergebnissen der Trendanalysen sollten dann Treiber identifiziert werden. Diese Treiber sollten auf der Grundlage zukünftiger Ergebnisse skalierbar sein: Beispielsweise könnten drastische Maßnahmen erforderlich sein, um schlimme Auswirkungen zu verhindern oder große Verbesserungen zu erreichen.
|
||||
\\
|
||||
\\
|
||||
\clearpage
|
||||
|
||||
Für die relevantesten Treiber sollten Zukunftsszenarien untersucht werden. Dies ist wichtig, um zu wissen,
|
||||
welche Auswirkungen bestimmte Trends in welcher Ausprägung haben würden. Relevant sind hier die Vorteile der Umsetzung des Szenarios, die Kosten der Umsetzung, sowie die Risiken, das Szenario nicht umzusetzen oder doch umzusetzen. Auf dieser Basis kann das beste Szenario ausgewählt werden.
|
||||
welche Auswirkungen bestimmte Trends in welcher Ausprägung haben würden. Relevant sind hier die Vorteile der Umsetzung des Szenarios,
|
||||
die Kosten der Umsetzung, sowie die Risiken. Auf dieser Basis kann das beste Szenario ausgewählt werden.
|
||||
\\
|
||||
\\
|
||||
Aus diesem Szenario werden schließlich die Ziele der Digitalisierung abgeleitet. Diese Ziele müssen so formuliert sein, dass sie mit der Ausgangssituation verglichen werden können.
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=1\textwidth]{images/model-digital-transformation.png}
|
||||
\captionof{figure}{Model for tackling digital transformation}
|
||||
\caption*{Quelle: \cite{bib:Parviainen_Tihinen_Kaariainen_Teppola_2022}}
|
||||
\captionof{figure}{Modell um digitale Transformation in Angriff zunehmen, Quelle: \cite{bib:Parviainen_Tihinen_Kaariainen_Teppola_2022}}
|
||||
\label{fig:model-digital-transformation}
|
||||
\end{nicepic}
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=0.5\textwidth]{images/plan-do-check-act.png}
|
||||
\captionof{figure}{\acf*{PDCA}}
|
||||
\caption*{Quelle: \cite{bib:abraham2005sustainability}}
|
||||
\includegraphics[width=0.45\textwidth]{images/plan-do-check-act.png}
|
||||
\captionof{figure}{Das Plan-Do-Check-Act-Modell, Quelle: \cite{bib:abraham2005sustainability}}
|
||||
\label{fig:model-digital-transformation}
|
||||
\end{nicepic}
|
||||
|
||||
\paragraph*{Im zweiten Schritt} wird der Ist-Zustand des Unternehmens ermittelt. Dazu wird die aktuelle
|
||||
\textbf{Im zweiten Schritt} wird der Ist-Zustand des Unternehmens ermittelt. Dazu wird die aktuelle
|
||||
Positionierung des Unternehmens im Hinblick auf den Zielzustand mit Fokus auf die Digitalisierungsziele betrachtet. Dazu wird
|
||||
der Ist-Zustand im Kontext des Soll-Zustandes anhand definierter Fragen bewertet. Die Auswahl der Fragen unterscheidet sich je
|
||||
nach Art der Ziele. Der gesamte Fragenkatalog kann im Detail der Ausarbeitung von Parviainen et al. entnommen werden.
|
||||
|
||||
\paragraph*{Im dritten Schritt} werden konkrete Schritte festgelegt, die für den Übergang vom
|
||||
\\
|
||||
\\
|
||||
\textbf{Im dritten Schritt} werden konkrete Schritte festgelegt, die für den Übergang vom
|
||||
Ist-Zustand in den Soll-Zustand erforderlich sind. Dazu muss zunächst die Lücke zwischen dem Ist- und dem Soll-Zustand
|
||||
identifiziert werden. Relevant ist dabei der aktuelle Stand der Technik und welche Veränderungen notwendig sind, um den
|
||||
Zielzustand zu erreichen. Anschließend sollten die konkreten Schritte identifiziert werden, die erforderlich sind, um diese
|
||||
Lücke zu schließen. Wenn zum Beispiel ein Treiber \enquote{interne Effizienz} ist, könnten die Schritte darin bestehen, neue digitale
|
||||
Werkzeuge zu integrieren. Schließlich werden diese Schritte analysiert und priorisiert. Prädestiniert dafür sind
|
||||
Kosten-Nutzen-Analysen, Analysen der Umsetzbarkeit, des Wartungsaufwands und der Mitarbeiterschulung.
|
||||
\clearpage
|
||||
|
||||
\paragraph*{Der vierte Schritt} befasst sich mit der Umsetzung der in Schritt drei geplanten Maßnahmen und
|
||||
\textbf{Der vierte Schritt} befasst sich mit der Umsetzung der in Schritt drei geplanten Maßnahmen und
|
||||
der Bewertung der erzielten Ergebnisse. Diese Bewertung der Ergebnisse sollte z.B. soziokulturelle Barrieren berücksichtigen,
|
||||
die sich aus den Reaktionen bestimmter Stakeholder ergeben, die möglicherweise negativ auf Veränderungen reagieren
|
||||
oder Schwierigkeiten bei der Einführung neuer Technologien haben. Wenn diese Analyse zeigt, dass die Ziele der Digitalisierung
|
||||
@@ -66,10 +66,10 @@ werden \cite{bib:Parviainen_Tihinen_Kaariainen_Teppola_2022}.
|
||||
Nach Verhoef et al. lässt sich der hier sogenannte \enquote{Prozess der Digitalisierung} in drei Phasen unterteilen.
|
||||
Diese drei Phasen sind \textit{Digitization}, \textit{Digitalization} und \textit{Digital Transformation}
|
||||
\cite{bib:verhoef}.
|
||||
Die Phase \textit{Digitization} befasst sich mit der Umwandlung analoger Datenstrukturen und Modellen in digitale Datenmodelle,
|
||||
Die Phase \textit{Digitization} befasst sich mit der Umwandlung analoger Datenstrukturen und Modelle in digitale Datenmodelle,
|
||||
sodass diese digital, in Form von Nullen und Einsen, gespeichert und elektronisch\break weiterverarbeitet werden können
|
||||
\cite{bib:dougherty}\break\cite{bib:loebbecke}.
|
||||
\quotecite{Examples concern the use of digital forms in ordering processes, the use of digital surveys, or the use digital applications for internal financial declarations.} \cite{bib:verhoef}.
|
||||
\quotecite{Examples concern the use of digital forms in ordering processes, the use of digital surveys, or the use digital applications for internal financial declarations.} \cite[S. 891]{bib:verhoef}.
|
||||
\textit{Digitalization} beschreibt den Prozess der Veränderung bestehender Geschäftsprozesse, um mit digitalen Werkzeugen
|
||||
und Datenmodellen zu arbeiten \cite{bib:fengli}. Beispielsweise der Verwendung von Robotern in der Produktion \cite{bib:verhoef}.
|
||||
Die letzte Phase, die \textit{Digitale Transformation}, beschreibt eine firmenweite Veränderung, die beispielsweise
|
||||
@@ -77,11 +77,11 @@ Ergründungen neuer Geschäftsmodelle mit sich bringen könnte \cite{bib:pagani}
|
||||
|
||||
\section{Abwägung in Bezug auf die Problemstellung}
|
||||
In Bezug auf die hier betrachteten Methodiken ist es wichtig zu erwähnen, dass der betrachtete Kontext
|
||||
lediglich die Digitalisierungs \textbf{eines} Geschäftsprozesses behandelt.
|
||||
lediglich die Digitalisierung \textbf{eines} Geschäftsprozesses behandelt.
|
||||
Diese Ausarbeitung befasst sich nicht
|
||||
mit firmenweiten Veränderungen, wie sie von den nahegelegten Modellen abgedeckt ist.
|
||||
Daher sind geringfügige Anpassungen der Methodiken unabdinglich.
|
||||
Des Weiteren ist Resourcenintensivität ein relevanter Gesichtspunkt dieser Abwägung, da eine solche Digitalisierung
|
||||
Des Weiteren ist Ressourcenintensität ein relevanter Gesichtspunkt dieser Abwägung, da eine solche Digitalisierung
|
||||
effizient und profitabel sein soll.
|
||||
|
||||
\subsection{Parviainen et al.}
|
||||
@@ -98,7 +98,7 @@ Digitalisierung bestimmter
|
||||
Geschäftsprozesse befassen. Phase drei befasst sich mit firmenweiten Veränderungen,
|
||||
die über Geschäftsprozesse hinausgehen \cite{bib:verhoef}.
|
||||
Firmenweite Veränderungen befinden sich außerhalb des Rahmens dieser Ausarbeitung.
|
||||
Der Autor empfindet das Modell nach Verhoef et al. als agiler, unrestriktiver, weniger overheadlastig und somit als effizienter.
|
||||
Der Autor empfindet das Modell nach Verhoef et al. als agiler, unrestriktiver, weniger overheadlastig und somit effizienter.
|
||||
|
||||
\subsection{Fazit}
|
||||
Aufgrund des kleinen Projektumfanges und der großen Wahrscheinlichkeit, dass sich Anforderungen ändern werden,
|
||||
@@ -109,8 +109,7 @@ die nahelegen, dass Projekte dieser Art idealerweise nach \enquote{extreme progr
|
||||
Nachdem Phase drei des Verhoef-Modells ausgeklammert wurde, sieht das zu verfolgende Modell aus wie folgt:
|
||||
|
||||
\begin{nicepic}
|
||||
\includegraphics[width=0.55\textwidth]{images/umsetzungsdiagramm.png}
|
||||
\captionof{figure}{Umsetzungsplanung}
|
||||
\caption*{Quelle: Eigene Darstellung}
|
||||
\includegraphics[width=0.45\textwidth]{images/umsetzungsdiagramm.png}
|
||||
\captionof{figure}{Umsetzungsplanung, Quelle: Eigene Darstellung}
|
||||
\label{fig:umsetzungsplanung}
|
||||
\end{nicepic}
|
||||
|
||||
@@ -1,73 +1,73 @@
|
||||
\chapter{Stand der Technik}
|
||||
\label{chap:stand-der-technik}
|
||||
Der Stand der Technik bezieht sich auf bestehende, praktische Umsetzungen der erforderlichen Technologien.
|
||||
Im Wesentlichen gibt es drei Arten von Technologien, die untersucht werden müssen: Die bestehende Website von \ac{WM},
|
||||
Im Wesentlichen gibt es drei Arten von Technologien, die untersucht werden müssen: Die bestehende Webseite von \ac{WM},
|
||||
Bibliotheken zur Erzeugung von QR-Codes und Bibliotheken zur Erzeugung von PDF-Dateien.
|
||||
|
||||
\section{Die bestehende Webseite}
|
||||
Als Mitentwickler des Projektes ist dem Autor bekannt, dass die bestehende Webseite ein TYPO3-Redaktionssystem ist. Das Frontend der Webseite wird mit Webpack und Sass übersetzt.
|
||||
Webpack ist ein Modulbundler \cite{bib:smashmagazine-webpack} und Sass ein CSS-Präprozessor
|
||||
\break\cite{bib:w3schools-sass}.
|
||||
TYPO3 ist ein Redaktionssystem und PHP-Rahmen\-werk, das Daten- und Inhaltspflege in einem geschützten Bereich
|
||||
TYPO3 ist ein Redaktionssystem und PHP-\break{}Rahmenwerk, das Daten- und Inhaltspflege in einem geschützten Bereich
|
||||
ermöglicht.
|
||||
Außerdem steuert TYPO3 Frontend-, Backend-Nutzer und deren Berechtigungen \cite{bib:typo3-docs-getting-started}.
|
||||
Über die Systemerweiterung
|
||||
\enquote{Extbase} wird eine mächtige Entwicklerschnittstelle bereitstellt,
|
||||
\enquote{Extbase} wird eine mächtige Entwicklerschnittstelle bereitgestellt,
|
||||
um hochindividualisierte Funktionalitäten zu ermöglichen.
|
||||
\\\cite{bib:typo3-docs-extbase-reference}
|
||||
|
||||
\section{QR-Code-Bibliotheken}
|
||||
Um mit QR-Codes zu arbeiten, ist es unabdinglich, QR-Codes zu erstellen, da dieselben sonst nicht vorhanden sind.
|
||||
Um mit QR-Codes zu arbeiten, ist es unabdinglich, QR-Codes zu erstellen.
|
||||
Im Folgenden werden einige Implementationen von QR-Code-Generator-Bibliotheken im Detail betrachtet. Es wird sich
|
||||
auf bereits vom System verwendete Programmiersprachen begrenzt.
|
||||
|
||||
\subsection{Javascript-Implementationen}
|
||||
\subsubsection*{Jquery-qrcode}
|
||||
\enquote{Jquery-qrcode} ist ein Plugin für JQuery um dynamisch QR-Codes auf Browserseite zu generieren.
|
||||
\subsection{JavaScript-Implementationen}
|
||||
\subsubsection*{jquery-qrcode.js}
|
||||
\enquote{jquery-qrcode.js} ist ein Plugin für jQuery, um dynamisch QR-Codes auf Browserseite zu generieren.
|
||||
Jedoch verweist diese Bibliothek selbst auf ihren desolaten Zustand und empfielt stattdessen \enquote{kjua} zu verwenden
|
||||
\cite{bib:larsjung-jquery-qrcode}. Somit scheidet \enquote{jquery-qrcode} für nähere Evaluationen aus, da die Software nicht mehr
|
||||
gepflegt wird. \enquote{Jquery-qrcode} wurde bis Januar 2023 853 mal von Nutzern mit einem Stern
|
||||
\cite{bib:larsjung-jquery-qrcode}. Somit scheidet \enquote{jquery-qrcode.js} für nähere Evaluationen aus, da die Software nicht mehr
|
||||
gepflegt wird. \enquote{jquery-qrcode.js} wurde bis Januar 2023 853 mal von Nutzern mit einem Stern
|
||||
markiert \cite{bib:larsjung-jquery-qrcode}.
|
||||
Wenn ein Nutzer ein Github-Repository mit einem Stern markiert, zeigt sich der Nutzer interessiert genug,
|
||||
um über Neuigkeiten auf dem Laufenden gehalten werden zu wollen \cite{bib:github-stars}. \enquote{Jquery-qrcode} ist MIT-lizensiert
|
||||
um über Neuigkeiten auf dem Laufenden gehalten werden zu wollen \cite{bib:github-stars}. \enquote{jquery-qrcode.js} ist MIT-lizensiert
|
||||
\cite{bib:larsjung-jquery-qrcode}.
|
||||
|
||||
\subsubsection*{Kjua}
|
||||
\enquote{Kjua} ist eine Javascript-Bibliothek, die dynamisch QR-Codes auf Browserebene generiert.
|
||||
Im Gegensatz zu \enquote{jquery-qrcode} funktioniert \textit{kjua} auch ohne JQuery. Es werden diverse Stilattribute für gestaltete
|
||||
QR-Codes unterstützt \cite{bib:larsjung-kjua}. \enquote{Kjua} kann QR-Codes über HTML-Canvas, Bilder und Vektorgrafiken umsetzen.
|
||||
Das ist bei näherer Betrachtung der Kjua Tech Demo \enpointy{https://larsjung.de/kjua/latest/demo} ersichtlich, jedoch
|
||||
\subsubsection*{kjua}
|
||||
\enquote{kjua} ist eine JavaScript-Bibliothek, die dynamisch QR-Codes auf Browserebene generiert.
|
||||
Im Gegensatz zu \enquote{jquery-qrcode.js} funktioniert \textit{kjua} auch ohne jQuery. Es werden diverse Stilattribute für gestaltete
|
||||
QR-Codes unterstützt \cite{bib:larsjung-kjua}. \enquote{kjua} kann QR-Codes über HTML-Canvas, Bilder und Vektorgrafiken umsetzen.
|
||||
Das ist bei näherer Betrachtung der Kjua-Tech-Demo \enpointy{https://larsjung.de/kjua/latest/demo} ersichtlich, jedoch
|
||||
nicht explizit erwähnt. Nach dem aktuellen Stand (Januar 2023) wurde \enquote{kjua} von 243 Nutzern mit einem Stern markiert.
|
||||
\enquote{Kjuas} letzte Codeänderung liegt circa zwei Jahre zurück. Es gibt eine unbeantwortete, sieben Jahre alte Pull-Request und
|
||||
Issues scheinen ignoriert zu werden. \enquote{Kjua} ist MIT-lizensiert \cite{bib:larsjung-kjua}.
|
||||
Issues scheinen ignoriert zu werden. \enquote{kjua} ist MIT-lizensiert \cite{bib:larsjung-kjua}.
|
||||
|
||||
\subsubsection*{Soldair/node-qrcode}
|
||||
\enquote{Soldair/node-qrcode} ist eine Node.js-basierte Implementation eines QR-Code-Generators und bietet somit Funktionialität
|
||||
\subsubsection*{soldair/node-qrcode}
|
||||
\enquote{soldair/node-qrcode} ist eine Node.js-basierte Implementation eines QR-Code-Generators und bietet somit Funktionialität
|
||||
serverseitig, als Kommandozeilenwerkzeug, sowohl auch browserseitig an. Die Readme-Datei ist umfangreich, reich an Beispielen
|
||||
und detailreichen Erklärungen. Der letzte Commit ist zu diesem Zeitpunkt knapp älter als ein halbes Jahr. Somit macht das
|
||||
Projekt einen moderat gepflegten Eindruck. Die Readme-Datei verweist auf Unit-Tests bei Travis, jedoch lief die letzte Pipeline
|
||||
vor etwa zwei Jahren, Februar 2021, durch und schlug fehl. Einige Pull-Requests und Issues werden seit Jahren ignoriert
|
||||
Februar 2021 durch und schlug fehl. Einige Pull-Requests und Issues werden seit Jahren ignoriert
|
||||
\cite{bib:soldair-node-qrcode}.
|
||||
Die Bibliothek wurde 74 Millionen mal heruntergeladen und mit 6.308 Sternen markiert.
|
||||
\enquote{Soldair/node-qrcode} ist MIT-lizensiert \cite{bib:npmjs-soldair-node-qrcode}.
|
||||
|
||||
\subsection{PHP-Implementationen}
|
||||
\subsubsection*{Chillerlan/php-qrcode}
|
||||
Eine arrivierte Lösung für QR-Code-Generierung in PHP ist \enquote{chillerlan/php-qrcode}, umgesetzt durch
|
||||
Eugen Rochko et al.. \enquote{Chillerlan/php-qrcode}s Etabliertheit zeigt sich durch den zu diesem
|
||||
\subsubsection*{chillerlan/php-qrcode}
|
||||
Eine arrivierte Lösung für QR-Code-Generierung in PHP ist \break\enquote{chillerlan/php-qrcode}, umgesetzt durch
|
||||
Eugen Rochko et al.. \break\enquote{chillerlan/php-qrcode}s Etabliertheit zeigt sich durch den zu diesem
|
||||
Zeitpunkt (Januar 2023) auf 5 Millionen stehenden Downloadzähler,
|
||||
mehreren Entwicklern und dem letzten Commit, der zu diesem Zeitpunk nicht älter als einen Monat ist.
|
||||
Insgesamt erfolgten bis dato 808 Commits von 6 Entwicklern. Das Projekt verfügt über Unit-Tests,
|
||||
die 90\% der Zeilen der Codebase abdecken. Rochko übernahm Teile der Codebase aus
|
||||
dem Java-Projekt \enquote{ZXing} und übersetzte diese zu PHP.
|
||||
Es gibt zu diesem Zeitpunkt keine unbeantworteten Issues oder Pull-Requests.
|
||||
\enquote{Chillerlan/php-qrcode} basiert auf einer angepassten Version von \textit{kazuhikoarase/qrcode-generator}.
|
||||
\enquote{chillerlan/php-qrcode} basiert auf einer angepassten Version von \enquote{kazuhikoarase/qrcode-generator}.
|
||||
Einzig auffällig sind die Commitnachrichten, die zuteils nur aus einem Emoji bestehen.
|
||||
\enquote{Chillerlan/php-qrcode} wurde von 1.212 Github-Nutzern mit einem Stern markiert.
|
||||
Die Bibliothek ist MIT-\break{}lizensiert
|
||||
\enquote{chillerlan/php-qrcode} wurde von 1.212 Github-Nutzern mit einem Stern markiert.
|
||||
Die Bibliothek ist MIT-lizensiert
|
||||
\cite{bib:chillerlan-php-qrcode}.
|
||||
|
||||
\subsubsection*{Kreativekorp/barcode}
|
||||
\subsubsection*{kreativekorp/barcode}
|
||||
\enquote{kreativekorp/barcode} ist eine PHP-Bibliothek zur Generierung von QR-Codes, bereitgestellt von
|
||||
\enquote{Kreative Software}, R.G. Bettencourt.
|
||||
Diese Implementation umfasst etablierte Barcode-Formate und unterstützt eine Vielzahl an Anpassungsmöglichkeiten.
|
||||
@@ -82,9 +82,9 @@ Die Bibliothek verwendet die MIT-Lizenz.
|
||||
|
||||
\subsubsection*{Bacon/BaconQrCode}
|
||||
\enquote{Bacon/BaconQrCode} ist eine PHP-Bibliothek zur Generierung von QR-Codes, bereitgestellt von Ben Scholzen, hinter
|
||||
der Github-Organisation \enquote{Bacon}, dessen einziges Mitglied Scholzen darstellt. Verlinkt ist eine Homepage,
|
||||
der Github-\break{}Organisation \enquote{Bacon}, dessen einziges Mitglied Scholzen darstellt. Verlinkt ist eine Homepage,
|
||||
die zu einer Nginx-\enquote{Hello World}-Seite führt. Begleitet wird \enquote{BaconQrCode} von etlichen weiteren \enquote{Bacon-Projekten}
|
||||
wie Beispielsweise \enquote{BaconPdf}, \textit{BaconStringUtils} und \textit{BaconUser} um nur einige zu nennen.
|
||||
wie Beispielsweise \enquote{BaconPdf}, \enquote{BaconStringUtils} und \enquote{BaconUser} um nur einige zu nennen.
|
||||
Insgesamt machen die stichprobenartig betrachteten Projekte einen desolaten Eindruck mit zuteils aktuellesten Commits
|
||||
von vor zehn Jahren. \enquote{BaconQrCode} stellt das beliebteste und gepflegteste Projekt von Scholzen mit 1.508 Sterne-Markierungen und
|
||||
einem aktuellsten Commit von vor zwei Monaten dar. \enquote{BaconQrCode} fällt mit siebzehn Entwicklern auf, die jeweils zumindest
|
||||
@@ -103,13 +103,13 @@ Im Folgenden werden subjektive Einschätzungen und Meinungen des Autors über di
|
||||
Bibliotheken vorgestellt.
|
||||
Um eine Bibliothek als \enquote{am geeignetsten} für einen Anwendungsfall unter den betrachtenen Bibliotheken zu kurieren,
|
||||
müssen die konkreten Anforderungen für diesen Anwendungsfall beachtet werden.
|
||||
Das ist so, da verschiedene Eigenschaften der Bibliotheken verschiedene Auswirkung in Gewichtung und Richtung
|
||||
Das ist so, da verschiedene Eigenschaften der Bibliotheken verschiedene Auswirkungen in Gewichtung und Richtung
|
||||
je nach Anwendungsfall aufweisen.
|
||||
Hierfür werden die zuvor vorgestellten Bibliotheken zur Erstellung von QR-Codes in den folgenden Attributen gegenübergestellt:
|
||||
\begin{description}
|
||||
\item [Funktionialität] \hfill \\
|
||||
Der Umfang, der unterstützten Funktionen, in Annahme dessen, dass die Bibliothek
|
||||
syntaktisch und pragmatisch korrekt \cite{bib:heinemann-vorlesung-re} ist.
|
||||
syntaktisch und semantisch korrekt ist.
|
||||
|
||||
\item [Gepflegtheit] \hfill \\
|
||||
Das Ausmaß, in dem das Projekt aktiv gepflegt wird und ordnungsgemäß entwickelt zu sein scheint.
|
||||
@@ -119,26 +119,26 @@ Hierfür werden die zuvor vorgestellten Bibliotheken zur Erstellung von QR-Codes
|
||||
Downloads bzw. Installationen, falls verfügbar.
|
||||
|
||||
\item [Workflow-Eignung] \hfill \\
|
||||
Die Eignung einer Bibliothek in existierende Workflows und Constraints übernommen zu werden. Maßgeblich ist,
|
||||
Die Eignung einer Bibliothek in existierende Workflows und Randbedingungen übernommen zu werden. Maßgeblich ist,
|
||||
ob und mit wie viel Aufwand eine Bibliothek in das Projekt übernommen werden kann.
|
||||
Beispielsweise ist es deutlich aufwänder eine JavaScript-Bibliothek in einem PHP-Projekt zu verwenden, als eine native PHP-Bibliothek.
|
||||
Beispielsweise ist es deutlich aufwändiger eine JavaScript-Bibliothek in einem PHP-Projekt zu verwenden, als eine native PHP-Bibliothek.
|
||||
Ebenfalls ist relevant, ob die Lizenz einer Bibliothek eine Verwendung gestattet, bzw. welche Bedingungen gelten.
|
||||
\end{description}
|
||||
|
||||
Hierbei werden den verschiedenen Bibliotheken Punkte ($[0,10]$) in den drei zuvor genannten
|
||||
Hierbei werden den verschiedenen Bibliotheken Punkte $[0,10]$ in den drei zuvor genannten
|
||||
Kategorien vergeben. Nicht ermittelte Werte werden in ihrer Kategorie durch \enquote{$-$} repräsentiert, wodurch
|
||||
eine weitere Verwendung ausgeschlossen wird.
|
||||
Die Kumulativpunktzahl $[0,30]$ einer Bibltiothek beschreibt deren Gesamteignung, nach subjektivem
|
||||
Empfinden des Autors.
|
||||
|
||||
\subsubsection*{Kjua}
|
||||
\enquote{Kjua} ist funktional für dieses Projekt gut aufgestellt, da es optisch ansprechende QR-Codes mit Logo unterstützt. Das wird
|
||||
\subsubsection*{kjua}
|
||||
\enquote{kjua} ist funktional für dieses Projekt gut aufgestellt, da es optisch ansprechende QR-Codes mit Logo unterstützt. Das wird
|
||||
mit acht Punkten in \enquote{Funktionalität} bemessen.
|
||||
\enquote{Kjua} macht andererseits einen eher desolaten Eindruck und lässt somit begründete Zweifel an dessen Zukunftssicherheit zu.
|
||||
\enquote{kjua} macht andererseits einen eher desolaten Eindruck und lässt somit begründete Zweifel an dessen Zukunftssicherheit zu.
|
||||
Eine knappe Dokumentation ist verfügbar. Für die Dokumentation werden zwei Punkte in \enquote{Gepflegtheit} angerechnet.
|
||||
\enquote{Kjua} ist als JavaScript-Bibliothek nur schwer mit den Anforderungen vereinbar,
|
||||
\enquote{kjua} ist als JavaScript-Bibliothek nur schwer mit den Anforderungen vereinbar,
|
||||
da der QR-Code in einem PDF eingebunden werden soll. Hierfür ist ein serverseitiger PDF-Generator vorgesehen.
|
||||
\enquote{Kjuas} Lizenz erlaubt Verwendung in kommerziellen, Closed-Source-Projekten \cite{bib:opensource-license-mit}.
|
||||
\enquote{kjuas} Lizenz erlaubt Verwendung in kommerziellen, Closed-Source-Projekten \cite{bib:opensource-license-mit}.
|
||||
Die Exklusivität für Nutzung in Webbrowsern schließt eine Einbindung in den Workflow aus.
|
||||
\begin{table}[htbp]
|
||||
\centering
|
||||
@@ -149,18 +149,18 @@ Die Exklusivität für Nutzung in Webbrowsern schließt eine Einbindung in den W
|
||||
8 & 2 & 0 & 10\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Subjektive Evaluation: Kjua}
|
||||
\caption{Subjektive Evaluation zur Eignung als QR-Code-Bibliothek: kjua}
|
||||
\end{table}
|
||||
|
||||
\subsubsection*{Soldair/node-qrcode}
|
||||
\subsubsection*{soldair/node-qrcode}
|
||||
Soldairs Lösung sieht dokumentativ und funktional vielversprechend aus.
|
||||
Hierdurch bilden sich acht Punkte in \enquote{Funktionalität} ab.
|
||||
Da diese Bibliothek eine Node.js-Bibliothek ist und Node.js ohne Browser, als Kommandozeilenapplikation, ausgeführt werden
|
||||
kann \break\cite{bib:nodejs-api-cli}, bietet sich
|
||||
\enquote{Soldair/node-qrcode} als serverseitige Anwendung an. Die Lizenz spricht nicht gegen eine Verwendung. Dennoch wäre es
|
||||
\enquote{soldair/node-qrcode} als serverseitige Anwendung an. Die Lizenz spricht nicht gegen eine Verwendung. Dennoch wäre es
|
||||
ein vermeidbarer Mehraufwand generierte QR-Codes aus einer Node.js-Applikation in eine PHP-Umgebung zu
|
||||
übertragen. Das bildet sich mit vier Punkten in \enquote{Workflow-Eignung} ab.
|
||||
Darüberhinaus macht \enquote{Soldair/node-qrcode} einen verbesserungswürdigen Eindruck der Projektpflege, wofür es lediglich
|
||||
Darüberhinaus macht \enquote{soldair/node-qrcode} einen verbesserungswürdigen Eindruck der Projektpflege, wofür es lediglich
|
||||
drei Punkte gibt.
|
||||
\begin{table}[htbp]
|
||||
\centering
|
||||
@@ -171,10 +171,10 @@ drei Punkte gibt.
|
||||
8 & 3 & 4 & 15\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Subjektive Evaluation: Soldair/node-qrcode}
|
||||
\caption{Subjektive Evaluation zur Eignung als QR-Code-Bibliothek: soldair/node-qrcode}
|
||||
\end{table}
|
||||
|
||||
\subsubsection*{Chillerlan/php-qrcode}
|
||||
\subsubsection*{chillerlan/php-qrcode}
|
||||
Rochkos Lösung macht einen aktiv gepflegten Eindruck und wird von großen Downloadzahlen gestützt.
|
||||
Rochko stellt eine ausführliche Dokumentation und Codebeispiele bereit.
|
||||
Hierfür wird die volle Punktzahl in \enquote{Gepflegtheit} vergeben.
|
||||
@@ -182,9 +182,9 @@ Der Funktionsumfang übersteigt weit die Anforderungen und gestattet so ausführ
|
||||
\cite{bib:chillerlan-php-qrcode-demo},
|
||||
die somit die hedonische Qualität fördern \cite{bib:koenig-vorlesung-ux}.
|
||||
Bewertet wird das mit einer vollen Punktzahl in \enquote{Funktionalität}.
|
||||
\enquote{Chillerlan/php-qrcode} lässt sich nahtlos in das existierende Projekt eingliedern,
|
||||
\enquote{chillerlan/php-qrcode} lässt sich nahtlos in das existierende Projekt eingliedern,
|
||||
da es als PHP-Bibliothek über Composer eingebunden werden kann und eine eigene API bereitstellt \cite{bib:chillerlan-php-qrcode}.
|
||||
Die von Rochko verwendete Lizenz gestattet eine unkomplizierte Verwendung. \enquote{Chillerlan/php-qrcode} funktioniert sowohl mit
|
||||
Die von Rochko verwendete Lizenz gestattet eine unkomplizierte Verwendung. \enquote{chillerlan/php-qrcode} funktioniert sowohl mit
|
||||
PHP- $7.x$ als auch $8.x$. Die Bibliothek benötigt zwei weitere Abhängigkeiten. Eine dieser Abhängigkeiten ist ebenfalls von Rochko
|
||||
bereitgestellt \cite{bib:chillerlan-php-qrcode-composerjson} und weist eine ähnlich gute Projektpflege auf
|
||||
\cite{bib:chillerlan-php-settings-container}. Das wird mit der Maximalwertung in \enquote{Workflow-Eignung} berechnet.
|
||||
@@ -197,13 +197,13 @@ bereitgestellt \cite{bib:chillerlan-php-qrcode-composerjson} und weist eine ähn
|
||||
10 & 10 & 10 & 30\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Subjektive Evaluation: Chillerlan/php-qrcode}
|
||||
\caption{Subjektive Evaluation zur Eignung als QR-Code-Bibliothek: chillerlan/php-qrcode}
|
||||
\end{table}
|
||||
|
||||
\subsubsection*{Kreativekorp/barcode}
|
||||
\subsubsection*{kreativekorp/barcode}
|
||||
Kreativekorp beeindruckt in der Readme-Datei durch Nutzungsbeispiele und Dokumentation,
|
||||
sowie einer Vielzahl unterstützter Barcode-Formate, darunter auch QR-Codes und einiger improvisierter Tests.
|
||||
In Anbetracht dessen, dass die Bibliothek de-facto sechseinhalb Jahre alt ist und seit vier Jahren nicht mehr
|
||||
In Anbetracht dessen, dass die Bibliothek de facto sechseinhalb Jahre alt ist und seit vier Jahren nicht mehr
|
||||
angepasst wurde, wird eine geringe Wertung von drei Punkten in \enquote{Gepflegtheit} vergeben.
|
||||
Null Punkte in \enquote{Workflow-Eignung} rechtfertigen sich durch die Abwesenheit jeglicher
|
||||
Unterstützung für Paketmanager, wodurch eine saubere Verwendung in dem Brown-Field-Projekt
|
||||
@@ -219,7 +219,7 @@ da eine Verwendung selbst mit guter Funktionalität nicht infrage käme.
|
||||
- & 3 & 0 & -\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Subjektive Evaluation: Kreativekorp/barcode}
|
||||
\caption{Subjektive Evaluation zur Eignung als QR-Code-Bibliothek: Kreativekorp/barcode}
|
||||
\end{table}
|
||||
|
||||
\subsubsection*{Bacon/BaconQrCode}
|
||||
@@ -228,10 +228,11 @@ Es werden Rasterbilder und verschiedene Vektorformate als Renderziel unterstütz
|
||||
die andere Bibliotheken bereitstellen, werden lediglich fünf von zehn Punkten in \enquote{Funktionalität} vergeben.
|
||||
Die Projektgepflegtheit ist inkonsistent. Manche Stellen, beispielsweise die Mitwirkenden, Alter des neuesten Commits, Tests
|
||||
und Nutzerzahlen machen einen guten Eindruck, während Punkte wie die Dokumentation, die Organisationswebseite und andere
|
||||
Projekte Sorgen begründen. Weil der Programmcode an sich gut gepflegt aussieht und große Downloadzahlen von
|
||||
Projekte von Scholzen Sorgen begründen. Weil der Programmcode an sich gut gepflegt aussieht und große Downloadzahlen von
|
||||
häufiger Verwendung sprechen, werden für die \enquote{Gepflegtheit} acht Punkte vergeben.
|
||||
Da es sich hierbei um eine PHP-Bibliothek handelt, die über Composer in PHP- $7.x$ und $8.x$ Projekte geladen werden kann
|
||||
und das Projekt eine API bereitstellt, ist die technische Workflow-Eignung gut. Die BSD-2-Clause-Lizenz verkompliziert eine Integration,
|
||||
und das Projekt eine API bereitstellt, ist die technische Workflow-Eignung gut.
|
||||
Die BSD-2-Clause-Lizenz verkompliziert eine Integration,
|
||||
da somit eine Copyright-Notiz an Nutzer gezeigt werden müsste \cite{bib:opensource-license-bsd-2}.
|
||||
Dadurch werden drei Punkte einer vollkommenen Workflow-Eignung abgezogen, wodurch sieben Punkte vergeben werden.
|
||||
\begin{table}[htbp]
|
||||
@@ -243,39 +244,40 @@ Dadurch werden drei Punkte einer vollkommenen Workflow-Eignung abgezogen, wodurc
|
||||
5 & 8 & 7 & 20\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Subjektive Evaluation: Bacon/BaconQrCode}
|
||||
\caption{Subjektive Evaluation zur Eignung als QR-Code-Bibliothek: Bacon/BaconQrCode}
|
||||
\end{table}
|
||||
|
||||
\subsection{Fazit}
|
||||
Nach Evaluation der verschiedenen QR-Code-Bibliotheken im Kontext der vorliegenden Problemstellung erweist sich aus Sicht des Autors
|
||||
\break\enquote{chillerlan/php-qrcode} mit 30 Gesamtpunkten als die am besten geeignetste Bibliothek.
|
||||
\break\enquote{chillerlan/php-qrcode} mit 30 Gesamtpunkten als die am besten geeignetste Bibliothek unter den Betrachteten.
|
||||
Somit wird \enquote{chillerlan/php-qrcode} als QR-Code Technologie in der Lösung dieser Problemstellung verwendet.
|
||||
|
||||
\begin{table}[htbp]
|
||||
\centering
|
||||
\begin{tabular}{|l||l|l||l|l|}
|
||||
\begin{tabular}{|l|l|l|l|l|}
|
||||
\hline
|
||||
\textbf{Bibliothek} & \textbf{Funkt.} & \textbf{Gepflegtht.} & \textbf{WF.-Eignung} & \textbf{$\Sigma$}\\
|
||||
\hline
|
||||
\hline
|
||||
chillerlan/php-qrcode & 10 & 10 & 10 & 30\\\hdashline
|
||||
baconqrcode & 5 & 8 & 7 & 20\\\hdashline
|
||||
Bacon/BaconQrCode & 5 & 8 & 7 & 20\\\hdashline
|
||||
soldair/node-qrcode & 8 & 3 & 4 & 15\\\hdashline
|
||||
kjua & 8 & 2 & 0 & 10\\\hdashline
|
||||
kreativekorp/barcode & - & 3 & 0 & -\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Gesamtübersicht: Subjektive Evaluation der QR-Code Bibliotheken}
|
||||
\caption{Gesamtübersicht: Subjektive Evaluationen zur Eignung von QR-Code Bibliotheken}
|
||||
\label{tbl:qrlib-compare-barchart}
|
||||
\end{table}
|
||||
\clearpage
|
||||
|
||||
\section{PDF-Generator}
|
||||
Firmenintern ist der PDF-Generator \enquote{mpdf/mpdf} \cite{bib:mpdf} etabliert und wird bereits
|
||||
Firmenintern ist der PDF-Generator \enquote{mpdf/mpdf} etabliert und wird bereits
|
||||
in zahlreichen Projekten verwendet.
|
||||
Um die projektübergreifende Kontinuität der Technik zu wahren und um somit die
|
||||
Wartbarkeit und Nachhaltigkeit des hier behandelten Softwareproduktes
|
||||
zu fördern, wird sich für den PDF-Generator entschieden, der bereits firmeninterner Standard ist.
|
||||
Unabhängig dessen ist \enquote{mpdf} ein gut gepflegtes Projekt mit einem Alter von mehr als acht Jahren,
|
||||
Sponsoren, 72 Entwicklern, über 31 Millionen Downloads, über 3.900 Sterne-Markierungen, über 800 Commits
|
||||
und regelmäßigen Updates \cite{bib:mpdf-github}. \enquote{Mpdf} ein Composer-Paket und für verschiede PHP-Versionen verfügbar.
|
||||
und regelmäßigen Updates. \enquote{Mpdf} ein Composer-Paket und für verschiede PHP-Versionen verfügbar.
|
||||
Mpdf verwendet eine GPL-2.0 Lizenz \cite{bib:mpdf}.
|
||||
|
||||
@@ -17,7 +17,7 @@ Studiengang \cfgUniversityDegreeCourse\\
|
||||
\cfgDocSubTitle\\
|
||||
\vspace{15mm}
|
||||
\normalsize
|
||||
Version \cfgDocVersion
|
||||
%Version \cfgDocVersion
|
||||
\end{center}
|
||||
|
||||
\vfill
|
||||
@@ -26,11 +26,10 @@ Studiengang \cfgUniversityDegreeCourse\\
|
||||
\cfgAuthorName, \cfgAuthorMatriculationNum\\
|
||||
\cfgAuthorContact\\
|
||||
mit Medienagenten Stange \& Ziegler oHG\\
|
||||
Im \cfgSemesterName\\
|
||||
\cfgDateLastModification\\
|
||||
\cfgAuthorCity\\
|
||||
\vspace{3mm} \ \\
|
||||
bei \cfgUniversitySupervisorName\\
|
||||
\cfgUniversitySupervisorContact\\
|
||||
\cfgUniversityCity\\
|
||||
Erstbetreuer: Prof. Dr. Volker Schwarzer\\
|
||||
Zweitbetreuerin: Prof. Dr. Elisabeth Heinemann\\
|
||||
|
||||
\end{titlepage}
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
%
|
||||
|
||||
% Document title
|
||||
\newcommand{\cfgDocTitle}{Bachelorarbeit}
|
||||
\newcommand{\cfgDocTitle}{Bachelor of Science}
|
||||
\newcommand{\cfgDocSubTitle}{Wie kann die Anmeldung und Zustellung von Weinen für Weinproben des Regionalverbunds für Weine in der Weinregion Mosel effizient und profitabel durch eine TYPO3-Erweiterung realisiert werden?}
|
||||
|
||||
% Document classification
|
||||
\newcommand{\cfgDocClassification}{Abschlussarbeit}
|
||||
\newcommand{\cfgDocClassification}{Thesis zur Erlangung des akademischen Grades}
|
||||
|
||||
% Document version
|
||||
\newcommand{\cfgDocVersion}{2.4}
|
||||
\newcommand{\cfgDocVersion}{3}
|
||||
|
||||
% Last modification date
|
||||
\newcommand{\cfgDateLastModification}{30. März 2023}
|
||||
\newcommand{\cfgDateLastModification}{31. März 2023}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
\nocite{*} % Show all references, even unused ones
|
||||
|
||||
\bibliography{dexes/literature}
|
||||
\bibliographystyle{apalike}
|
||||
\bibliographystyle{apalike-german}
|
||||
|
||||
@@ -7,7 +7,9 @@
|
||||
\begin{description}
|
||||
|
||||
\item [Frontend] \hfill \\
|
||||
\quotecite{Das Frontend einer Webseite ist der Teil der Webseite, der Endnutzern präsentiert wird. Ein Frontend besteht aus HTML und Cascading Style Sheets} \cite{bib:udjaja}.
|
||||
\quotecite{Front-end website is a combination of
|
||||
hypertext markup language (HTML), cascading style sheets (CSS) and JavaScript that generates pages that can be
|
||||
viewed and interacted directly with the user.} \cite[S. 294]{bib:udjaja}.
|
||||
|
||||
\item [TYPO3-Backend] \hfill \\
|
||||
\quotecite{The backend's main role is to enable users to create and publish
|
||||
@@ -36,6 +38,10 @@
|
||||
Mitglieder profitieren von einer Reihe an
|
||||
Vorteilen, wie beispielsweise einer Auflistung auf Weinland Mosels Internetauftritt.
|
||||
Durch diesen Auftritt sind bereits Stammdatensätze vorhanden.
|
||||
Durch eine Teilnahme an einer Jahresauswahlprobe ist ein Unternehmen kein Mitglied.
|
||||
Nur durch eine Teilnahme an einer Jahresauswahlprobe ist ein Unternehmen kein Mitglied.
|
||||
|
||||
\item [Flight] \hfill \\
|
||||
Pro Tisch einer Jahresauswahlprobe werden sechs Weine gleichzeitig eingeschenkt und bewertet.
|
||||
Das ist ein Flight. Pro Tisch gibt es mehrere aufeinanderfolgende Flights.
|
||||
|
||||
\end{description}
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
title = {EKSPANPIXEL BLADSY STRANICA: Performance Efficiency Improvement of Making Front-End Website Using Computer Aided Software Engineering Tool},
|
||||
journal = {Procedia Computer Science},
|
||||
volume = {135},
|
||||
pages = {292-301},
|
||||
pages = {{292-301}},
|
||||
year = {2018},
|
||||
note = {The 3rd International Conference on Computer Science and Computational Intelligence (ICCSCI 2018) : Empowering Smart Technology in Digital Era for a Better Life},
|
||||
issn = {1877-0509},
|
||||
@@ -275,28 +275,12 @@
|
||||
note = {Zugriff: Januar 2023}
|
||||
}
|
||||
|
||||
@article{bib:christoph-ebert-vorwort-systematisches-re,
|
||||
title = {Vorwort zu Systematisches RE},
|
||||
@article{bib:christoph-ebert-systematisches-re,
|
||||
title = {Systematisches Requirements Engineering: Anforderungen ermitteln},
|
||||
year = {2019},
|
||||
author = {Christoph Ebert},
|
||||
publisher = {dpunkt Verlag}
|
||||
}
|
||||
|
||||
@book{bib:basiswissen-re,
|
||||
author={Pohl, Klaus and Rupp, Chris},
|
||||
title={Basiswissen Requirements Engineering},
|
||||
subtitle={Aus- und Weiterbildung nach IREB-Standard zum "Certified Professional for Requirements Engineering" : Foundation Level nach IREB-Standard},
|
||||
edition={4., {\"u}berarbeitete Auflage},
|
||||
publisher={dpunkt.verlag},
|
||||
address={Heidelberg},
|
||||
year={2015},
|
||||
pages={1 Online-Ressource (xix, 171 Seiten)},
|
||||
language={ger},
|
||||
isbn={978-3-86491-673-1 and 978-3-86491-674-8 and 3-86491-674-7},
|
||||
note={Description based upon print version of record},
|
||||
keywords={CPRE},
|
||||
url={https://ebookcentral.proquest.com/lib/ub-heidelberg/detail.action?docID=2029882},
|
||||
library={UB},
|
||||
publisher = {dpunkt Verlag},
|
||||
volume = {6}
|
||||
}
|
||||
|
||||
@article{bib:kleine-re-fibel,
|
||||
@@ -355,7 +339,7 @@
|
||||
@misc{bib:qrbot,
|
||||
author = {{TeaCapps}},
|
||||
howpublished = "\url{https://qrbot.net}",
|
||||
title = {{QRBot | QRCode und Barcode Scanner}},
|
||||
title = {{QRBot | QRCode und Barcode Scanner}},
|
||||
year = {2023},
|
||||
note = {Zugriff: März 2023}
|
||||
}
|
||||
@@ -402,8 +386,8 @@
|
||||
|
||||
@misc{bib:typo3-docs-managing-extensions,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/tutorial-getting-started/main/en-us/Extensions/Management.html}",
|
||||
title = {{Managing Extensions}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/tutorial-getting-started/11.5/en-us/Extensions/Management.html}",
|
||||
title = {{Managing Extensions - Getting Started 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: Februar 2023}
|
||||
}
|
||||
@@ -411,31 +395,31 @@
|
||||
@misc{bib:typo3-docs-getting-started,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/tutorial-getting-started/11.5/en-us/Index.html}",
|
||||
title = {{Getting started}},
|
||||
title = {{TYPO3 - Getting Started Tutorial - Getting Started 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: Februar 2023}
|
||||
}
|
||||
|
||||
@misc{bib:typo3-docs-modules,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/tutorial-getting-started/11.5/en-us/Concepts/Index.html#concepts}",
|
||||
title = {{Getting started}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/tutorial-getting-started/11.5/en-us/Concepts/Index.html}",
|
||||
title = {{TYPO3 Concepts - Getting started 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: Februar 2023}
|
||||
}
|
||||
|
||||
@misc{bib:typo3-docs-file-structure,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Index.html}",
|
||||
title = {{TYPO3 Extension Development File Structure}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/11.5/en-us/ExtensionArchitecture/FileStructure/Index.html}",
|
||||
title = {{File structure - TYPO3 Explained 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: Februar 2023}
|
||||
}
|
||||
|
||||
@misc{bib:typo3-docs-content-elements-plugins-introduction,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/ContentElements/Introduction.html}",
|
||||
title = {{What are Content Elements?}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/11.5/en-us/ApiOverview/ContentElements/Introduction.html}",
|
||||
title = {{Introduction - TYPO3 Explained 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: Februar 2023}
|
||||
}
|
||||
@@ -443,30 +427,30 @@
|
||||
@misc{bib:typo3-docs-extbase-reference,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/11.5/en-us/ExtensionArchitecture/Extbase/Reference/Index.html}",
|
||||
title = {{Extbase reference}},
|
||||
title = {{Extbase reference - TYPO3 Explained 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: Februar 2023}
|
||||
}
|
||||
|
||||
@misc{bib:typo3-docs-extdev-tut-tea-repositories,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/Tutorials/Tea/Repository.html}",
|
||||
title = {{Extension development / Tutorials / Tea in a nutshell / Repository}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/11.5/en-us/ExtensionArchitecture/Tutorials/Tea/Repository.html}",
|
||||
title = {{Repository — TYPO3 Explained 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: Februar 2023}
|
||||
}
|
||||
|
||||
@misc{bib:typo3-docs-sys-category,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Categories/Index.html}",
|
||||
title = {{System categories}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/11.5/en-us/ApiOverview/Categories/Index.html}",
|
||||
title = {{System categories - TYPO3 Explained 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: März 2023}
|
||||
}
|
||||
|
||||
@misc{bib:typo3-docs-femanager,
|
||||
author = {{in2code}},
|
||||
howpublished = "\url{https://docs.typo3.org/p/in2code/femanager/main/en-us/Introduction/Index.html}",
|
||||
howpublished = "\url{https://docs.typo3.org/p/in2code/femanager/11.5/en-us/Introduction/Index.html}",
|
||||
title = {{femanager}},
|
||||
year = {2023},
|
||||
note = {Zugriff: März 2023}
|
||||
@@ -474,16 +458,16 @@
|
||||
|
||||
@misc{bib:typo3-docs-felogin,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/c/typo3/cms-felogin/main/en-us/Configuration/Index.html}",
|
||||
title = {{cms-felogin}},
|
||||
howpublished = "\url{https://docs.typo3.org/c/typo3/cms-felogin/11.5/en-us/Configuration/Index.html}",
|
||||
title = {{Configuration - Frontend Login 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: März 2023}
|
||||
}
|
||||
|
||||
@misc{bib:typo3-docs-extbase,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/Extbase/Index.html}",
|
||||
title = {{Extension development / Extbase}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/11.5/en-us/ExtensionArchitecture/Extbase/Index.html}",
|
||||
title = {{Repository - TYPO3 Explained 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: März 2023}
|
||||
}
|
||||
@@ -491,7 +475,7 @@
|
||||
@misc{bib:typo3-docs-di,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/11.5/en-us/ApiOverview/DependencyInjection/Index.html}",
|
||||
title = {{Dependency Injection}},
|
||||
title = {{Dependency injection - TYPO3 Explained 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: März 2023}
|
||||
}
|
||||
@@ -499,7 +483,7 @@
|
||||
@misc{bib:typo3-docs-fluid-form-viewhelpers,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/other/typo3/view-helper-reference/11.5/en-us/typo3/fluid/latest/Form/Index.html}",
|
||||
title = {{form - Fluid ViewHelper Reference 11.5 Documentation}},
|
||||
title = {{form - Fluid ViewHelper Reference 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: März 2023}
|
||||
}
|
||||
@@ -507,7 +491,7 @@
|
||||
@misc{bib:typo3-docs-model-explained,
|
||||
author = {{TYPO3 Contributors}},
|
||||
howpublished = "\url{https://docs.typo3.org/m/typo3/reference-coreapi/11.5/en-us/ExtensionArchitecture/Extbase/Reference/Domain/Model.html}",
|
||||
title = {{Model - Typo3 explained 11.5 documentaion}},
|
||||
title = {{Model - TYPO3 Explained 11.5 documentation}},
|
||||
year = {2023},
|
||||
note = {Zugriff: März 2023}
|
||||
}
|
||||
@@ -530,7 +514,7 @@
|
||||
|
||||
@misc{bib:pixelant-typo3-data-export,
|
||||
author = {{Pixelant}},
|
||||
howpublished = "\url{https://www.typo3manual.com/typo3-basics/tips-and-functions/exporting-data-through-list-view/}",
|
||||
howpublished = "\url{https://www.typo3manual.com/typo3-basics/tips-and-functions/exporting-data-through-list-view}",
|
||||
title = {{Tutorial on exporting Data from TYPO3}},
|
||||
year = {2023},
|
||||
note = {Zugriff: März 2023}
|
||||
|
||||
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 164 KiB |
@@ -1 +1 @@
|
||||
<mxfile host="Electron" modified="2023-03-27T15:38:18.711Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="PAhar_P2aHQsZCkSiz7f" version="20.8.16" type="device"><diagram name="Seite-1" id="c5J236jw9uxX1O-q0mKY">7VtZc+I4EP41VO0+sIVtMPBIzs0mmZ2ZTM2xb8JubAXZYmURIL9+W7YcX1wzQOxs5SVYLdmS+utPfdhpWefB8lqQmX/PXWAts+MuW9ZFyzQNY9jFHyVZJZKBqQWeoK4elAke6DNoYUdL59SFqDBQcs4knRWFDg9DcGRBRoTgi+KwCWfFWWfEg4rgwSGsKv1GXemnu+hn8j+Ben46s2EPk56ApIP1TiKfuHyRE1mXLetccC6Tq2B5DkwpL9VLct/Vht6XhQkI5T43nNk3i79XZ/JzYH26vfp+c3cRjtqpmiO5SncMLipAN7mQPvd4SNhlJj0TfB66oB7bwVY25o7zGQoNFD6ClCuNJplLjiJfBkz34orF6ru+P278UI0/emnzYpnvvFjp1oSHUj/USHrdkcIY22PGnWkiuqKM6RuqOtJqi/hcOLBNMdrWiPBAbhlnJuOU0nITaASugQeAG8ABAhiR9KloVUQbp/cyLsMPLzSEPwNn8twnwuZ6plsFlTJHYC5uxOx8AxriDw8ZDVUHCSsWUMR34VMJDzMSq2uBLC9iOUFtn3PGRXyv5RIYTByUR1LwKeR6bGcA40kJRXMbSE8gJCy3qjXttbQd61PG7Or2IuOskcr8HF/tzqmQMCpqfSdWjjA7iWU1ilhmhViaRzRSpKJBy7QZbudsLAqg2//O1fkeK7gdxRoe4QDDnC1jLab9eOWp34dVJCFQRkpDCYIBSt8+PS2zcfTs10vPjJE/CoSsnZ5Hp52+9SNHg84swuwULcLqlpBOzgd9VwY2bpuscsNmakC0eZ7eoDRPOUjata7ieLxIVpBZ3otOft0YrU2Hy4IKNyFahPjC/+Eo6BlNOwrShOTdU5cU0983BG5WDNyvsOlGcen+oX25dOLsdAHCBSX7i/gCIjKPFsRnM8HHsdSDGSPxoYAYq9mU8AuNHB/jZZsEilbJ3yum7DNSu5hPUElA2aEcPb3z7b0m4+6nI/nPdYd9+nzm0hFnxuNHu22+2aTTPC3jBnsybtgowg0qhLugKrO8xF2MQxpFkOecYtPWUHnMcaRoO4k/GsVPFr+123n577GaO/tG1emM0UxluweE548QgsgdJu07jP8hoWMAYirTmVCRyWTpAhp2KJQTZrt2NzzcYUUs0fRRsiwdV83mY0afKSqtcfiUD+368TGrtaUXNPYCo7uDnGr8QQ+6BnTRrXOrNepOZITu/Bki5ZtD4vg+6LOk6vJzlE2WUFwWiscbaYxoyqItFIPpkIdQiry1iGDoEGLTAZXno0DZBnUIG+mOgLpu7PjWGV/RPPP21z2N/Rm9qv1Zxhr7s04WNNRSUHtF55+G0Tu9/+DY3v8ombX9k5m1/RqZdarTilfZfAwcx7WQsQc+YRIOra6fPgOvPx94L5VvOPKqB8Lacd260oFtq85R7iuIiKj6FZ0iJK20rnUUvj1xFdGrehnm7Ip59zxSSf5RHo5P9TCoIGGIlvb2a2/loN+qnfnWO/O3MXon8+1GMb9bYX7lJVnn5QUXYXHdDAk25UEQlwayJPrNU60cP9dPtWG9VGvCC69tFNpJtX6jqGZvopqOP2PPxYgX1zZeu9yWlM0DGqfzuJK4ZHYLYRjOkemipd9o+QcHx01gejmcrp/phv1WqX68DHsbhXdS3WhWQF19oaW47pI4ucwK64lDPX/4qla+nCGER6hsNpFh3foZ1qlA8gHwysTHdVzqUam+H8Vgx/EFlapsXR8IWymzPwj9Uvlm7Xv7zhoQyh92HA+EzQXpvUvJmzzYHXjqg4t41Ibq8NErwQwmsnF14ArsZhX24RrUjZOhXi0vfKCOr+D+AjT+9pxCFAcZo3lExBionGMwdCAFX4FQw9oJ1as3bvj1bPzEcYOxJh3f9ulJQ+IGo5qPY3TQXhs80NInMjQ4UgBx+irWKevX2Mz+QSN5KZH9m4t1+R8=</diagram></mxfile>
|
||||
<mxfile host="Electron" modified="2023-03-30T16:24:11.739Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="uJLDwojdT_EOwQ1EVR7a" version="20.8.16" type="device"><diagram name="Seite-1" id="c5J236jw9uxX1O-q0mKY">7VtZc6M4EP41rtp98BaHg51H59xsktmZ8dQc+yZDGxQL5BVybOfXbwtEuHzNxA5kKy8xaglJ9Nef+oB07PNweS3ILLjnHrCOZXjLjn3Rsaye3cO/SrBKBbZhpAJfUC8VmblgRJ9AC7Nhc+pBXBooOWeSzspCl0cRuLIkI0LwRXnYhLPyqjPiQ00wcgmrS79RTwapdGD1c/mfQP0gW9l0TtOekGSD9ZPEAfH4oiCyLzv2ueBcplfh8hyY0l2ml/S+qw29zxsTEMl9bjhzbhZ/r87k59D+dHv1/ebuIhp2MzXHcpU9MXioAN3kQgbc5xFhl7n0TPB55IGa1sBWPuaO8xkKTRQ+gJQrjSaZS46iQIZM9+KOxeq7vj9p/FCNP06y5sWy2Hmx0q0Jj6Se1Ex7vaHCGNtjxt1pKrqijOkb6jrSaov5XLiwTTHa1ojwQW4ZZ6XjlNIKC2gEroGHgA+AAwQwIulj2aqINk7/eVyOH15oCH8GznTeR8LmeqVbBZUyR2AePohlfAMa4Q+PGI1UB4lqFlDGdxFQCaMZSdS1QJKXsZygts854yK51/YIDCYuymMp+BQKPY47gPGkgqK1DaRHEBKWW9Wa9drajvUpY/V0e5Fz1sxkQYGvjnEsJMyaWt+JVSDMTmLZrSKWVSOW5hGNFalo2LEcho9zNhYl0J1/5+p8TxTcjRMND3GAac2WiRazfrzy1e9oFUsIlZHSSIJggNK3T0/bah09+83SM2fkjxIhG6fnwWmnb/3I0aBzi7CMskXYvQrS6fmg78rBxscmq8KwmRoQb17nZFBZpxok7dpXeTxepDvILe9ZJ79ujPamw2VBhZcSLUZ84f9wFJyYbTsKrN67p16rmP6+IXC7YuB+jU03ikv3o+7l0k2S0wUID5TsLxIIiMk8XpCAzQQfJ1IfZowkhwJirFZTwi80dgOMlx0SKlqlf6+Yss9YPcV8gkoCyl7K0eM735PXZNz9dCj/uTbYp89nHh1yZj58dLrWm006reMybrAn405bRbhBjXAXVGWWl/gU44jGMRQ5p9i0NVQecxwpum7qj4bJzOK3brco/z1Rs7FvVJ2tGM9UtvuC8PwBIhCFw6R7h/E/pHQMQUxlthIqMl0s20DLDoVqwuw07oZPd1gRSzV9kCxLx1Wz+ZjRJ4pKax0+1UO7eXysem3pGY29wOjtIKca/6KJrgFddOfc7gx7ExmjO3+CWPnmiLhBAPosqbv8AmXTLZS3heLxRhojmrJsC+VgOuIRVCJvLSIYOkTYdEHl+ShQtkFdwoa6I6Selzi+dcZXNs+i/fWOY3/mSd3+bHON/dlHCxoaKai9ovPPwuid3n9waO9/kMza+cnM2nmNzDrTac2rbD4GDuNayNiHgDAJL62uHz8Dbz4feC+Vbzjy6gfC2nG9ptKBbbsuUO4riJio+hWdIiSdrK51EL49chXRq3oZ5uyKefc8Vkn+QSbHWX0MKkgUoaW9/dpbNei3G2e+/c78bYzeyXynVczv1Zhfe0lmPL/gIiypmyHBpjwMk9JAnkS/eapV4+fmqXbaLNXa8MJrG4V2Uq3fKqo5m6im48/EczHiJ7WN1y63pWXzkCbpPO4kKZndQhRFc2S66Og3WsGLg+M2ML0aTjfPdNN5q1Q/XIa9jcI7qW62K6Cuv9BSXPdIklzmhfXUoZ6PvqqdL2cI4QEqm21kWK95hhk1SD4AXlk4neFRn0r1/SgGO24gqFRl6+ZA2EqZ/UHoV8o3a9/bG2tAqH7YcTgQNhek9y4lb/Jgd+CrDy6SURuqwwevBDOYyNbVgWuwW3XYT9egbh4N9Xp54QN1AwX3F6DJp+cU4iTIGM5jIsZA5TzyX8jAV+DTaeN8Omk2bPj1ZPzIYYO5Jhvf9uVJS8IGs56OY3DQXRs70MoXMjQ8UPxw/CLWMcvX2Mz/PyN9J5H/k4t9+R8=</diagram></mxfile>
|
||||
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 116 KiB |
@@ -1 +1 @@
|
||||
<mxfile host="Electron" modified="2023-03-26T17:28:06.834Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="hIg8A2igoXO-HTw_ShVI" version="20.8.16" type="device"><diagram id="k7iwBMskrYiuqxr37yBD" name="Seite-1">5Vxbc5s4FP41nuk+OAOIi/2YxGk6u71s291p2jfZyECDkSvkOM6vX2EkgxCx3VhcvMlDCwIJcb5z+c6R8ABcLx5vCVyGH7CP4oFl+I8DMBlYlmmObfZf1rLJW4bAdvKWgEQ+v6to+Bo9Id5o8NZV5KNUupFiHNNoKTfOcJKgGZXaICF4Ld82x7H81CUMkNLwdQZjtfVb5NMwbx1ZXtH+DkVBKJ5suuP8ygKKm/mbpCH08brUBG4G4JpgTPOjxeM1ijPpCbnk/d4+c3U3MYISekyHj2trgn/8Qre3d7HlAjOdT/4dZh2yYR5gvOJvzGdLN0IEBK8SH2WjGANwtQ4jir4u4Sy7umaos7aQLmJ2ZrJDdVZ8og+IUPRYauKzvEV4gSjZsFv4VYdLkKuM6QglWhcAuCM+bFgSPhCihhz0YDd2IRd2wEXzG2ICilCQz9SEn2JCQxzgBMY3ReuVLLbinvcYL7mwfiJKN1zn4YpiWZRMgmRzx/tvT75nJxeOOJ08li9ONvzsWQhSvCIztOc1+X3Zu+0FiqAY0uhBNpE6ofOuf+OITaUEcBVhUAGOQhIgyrtVsNvN4+Vw2orSx4NrMLi00zSb5tOqFu73cMq8mwQRjKMgYcczJmpEWEOm5RHzHpf8wiLy/VwbUBo9wel2vAykZfZu27d1rgbOpBa2faqomNPOBfKHSF6mzsyMC9O1JByG/PREeIfCd1eGFSPg+TxFjeAq1KgErHlxkbwOND3XtWW5Az1wurWjtoCmqaD5KqAcGhcjYI5kqZunYdm6KarY/QlDJmu4StcwjJcET1HnTAMA2VOZjmEoVMO0XZVquE0xDVN1YUm0WGQYUhTF58RD0GNE78QY7LjUi50VnbKT07kLt5ecOXTPcSxjfDEu/9kVTatSnvwFFcqjDMxI7oVR/nMPDNwwlwJqBtFnL72zLy1uWqD6UmVpIYgCBR7zVcDD0HE9Rw6imvitVztqCzG1HrnW3H/h8b9LDl93GnqsK3e8dny561Zogj0+zsdeEgI3pdu4WTz7INOuPsip1HQOzux3OwjGU6hqPmm9iqvGCEoiuvWASfZPnPbZJz3HK18SMizXkp2SHp80AnWDNu+SrNF5hRdtULLwUokuJ2Zou+KJPGhr2bY1VpDsNY/TaZQj0AyWcg5vmw1g+et9+PEHeIc+kZvlT+sODb98XgydI42yI+ZgHmAOc5xQPqiZX/Uvs6WcTMNimKbRLG98G8UHiwEvIRu1Mj02b9z5B8dx3NPUqHlFcRVFCSHtwuqrkKt47lV0De4cuI7sek8tuTWP3vh/btSigFQUjXZ5RzsFpFqpN5N0NJ4qWN7+Dicz/3qvWVPOPCP/IjiRDro4AhVqp4VjyGM2wfvrcVXr++cVOTQi641EDVQPsnwUpwEs9zm+EpTfUKRaaduLM6Nj1mbEjo9W1mYsVekJWhK+dYC9acRertuY/HsrNCkLdlSNwtvmchwuQnWCEyTF6fYXesxxIwG4ZgXHlhZaLLnEYnqGLQ959AqO7R0Yqeklm/Mq2jzrOl6S6nujkeysT6X5wlu15a2BWqd5HeAxCuWM5IpKnzK0+hUKdadZSlm/7OkPmHQRKySfz9152eE3XnBpy38rGZJTJQZNrdo44/2p2KEOzSzCOGpVsM8F3p3p6GDoYNx87tVapd5Rq3Z9jgD6gMzC99gEOpFsYdFejdcDy2URAFz50QM7DLLDf1AUJyhcIDKcQIqSFNIncduUiLtEC5tIqa+CfdeZmuupG/ZbztTUslON0G9Yxkbz7C3ThTcLyIIzIWiGif/H2Ugf2KB34ldpT4DCTNJXLtmzw76npevOKZOILQd3xAiU9XGrk/TAVs2wz5HK0kg5HFssqGvafNZ8pBLr0+fz9YQ+wIZ1iOmp41ZqOw3u4HA7darm4OW1x347VadXTlV8eloyU6b/DLlMq4wpivpssCJ10WGwMu3RVMfb8fUW/K11XtFRJ3auZ3lNwGcaraF3Xhvr9aFXB96JXxq2vmtVxa4mPbxiT4nQ9FzSvpHRedqnVhhrxCqa0uV273chQvfXCm8zbji7D7biHM5wjJl9XGZPTiIawTgfgN8phrz0mZ2kqIRUPrj8wN5n8tU6SveI2s8jOlVLVyWxTvUIdc6I3nWuAwVHJPgeVRo1CN/yqmWUGunvJN2O9NV1Wsa/w2yjwTx66mqzQefEXXyPe27VEPe8qiE77dOxAGPr3WBfIY3NMwa3pjbyKrDLvo6wDL3fUbZN92x1wYxulpj5e2NOMAOFMY1VWsSvgii8uSWr5RLlDKQIdH/oi2o+msNVTPXEMNfo3UqMo1YrajjhX5CiADO23VNmpgjWEUI8JNjGfpJK/HbPcWR7x8c+TX+ie5pbLovdST1nqwfh8OjZxtEYMnP6gNPtL8HdsPMIzRFZJUG6RuT+Ca2CvYT84CzOlU+Cmv2rjfHJfZ8w7deYW5TOwgVLwVKYBHDaV4us5kpg3KJB1kr3KHvMDSQ4G6l6qlTrVLYxoR5VqPmCpmlW/+6pUJXtXp1LVV2e/7xiLFXshUhTupp3/+tMijI6XZu4ymUye2ZPRglzmnCu5uNty8wyW/SL7LT4+dKcrBe/Agtu/gM=</diagram></mxfile>
|
||||
<mxfile host="Electron" modified="2023-03-30T17:26:57.235Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="qHh66gKnss4mO05uyrej" version="20.8.16" type="device"><diagram id="k7iwBMskrYiuqxr37yBD" name="Seite-1">5VxZd5s4FP41Pqd9cA4gFvsxW9Mz023azmnaN9nIhhYjV8hxkl8/kpEMQsR2Y7F4kocWZCTE/e7y3SvBAFwu7m8IXEbvcYiSgWOF9wNwNXAc2x677D/e8pC3DIHr5S1zEofiqqLhS/yIRKMlWldxiDLlQopxQuOl2jjFaYqmVGmDhOC1etkMJ+pdl3COtIYvU5jord/ikEZ568gJiva3KJ5H8s62P85/WUB5sXiSLIIhXpeawPUAXBKMaX60uL9ECZeelEve780Tv24nRlBKD+nwYe1c4R+/0c3NbeL4wM5mV/8OeQc+zB1MVuKJxWzpgxQBwas0RHwUawAu1lFM0ZclnPJf1wx11hbRRcLObHaoz0pM9A4Riu5LTWKWNwgvECUP7BLxqyckKFTG9qQSrQsA/JEYNioJH0hRQwH6fDt2IRd2IETzB2ICmlBQyNREnGJCIzzHKUyui9YLVWzFNe8wXgph/USUPgidhyuKVVEyCZKHW9F/c/Kdn5x58vTqvvzj1YM4exKCDK/IFO14THEdf7adQBGUQBrfqSZSJ3TR9ROO2VRKAFcRBhXgKCRzREW3CnbbeTwfTldT+mRwCQbnbpbxaT6uauF+ByfMuykQwSSep+x4ykSNCGvgWh4z73EufljEYZhrA8riRzjZjMdBWvJn2zytdzHwrmph26WKmjltXaC4ieJl6szMOrN9R8FhKE6PhHcofXdlWDkCns0y1AiuUo1KwNpnZ+nLQDPwfVeVOzADp187agto2hqaLwLKoXU2AvZIlbp9HJatm6KO3V8wYrKGq2wNo2RJ8AR1zjQAUD2V7VmWRjVs19epht8U07B1F5bGiwXHkKI4OSUegu5jeivHYMelXuys6MRPjucuwl5y5tA9x3Gs8dm4/OdWNK1KefIH1CiPNjAjuWdW+c/fM3DDXAroGUSfvfTWvoy4aYnqc5WlhSAKNHjsFwEPQ8cPPDWIGuK3Qe2oLcTUeuRac/+Fx/+uOHzTaeihrtwL2vHlvl+hCe74MB97Tgh8KF0mzOLJG9lu9UZepaazd2Z/2kEynkJV80mbVVw9RlAS040HTPk/SdZnn/QUr3xOyHB8R3VKZnzSCNQN2rxLckanFV6MQcnCSyW6HJmhbYsn6qCtZdvOWEOy1zzOpFGOQDNYqjm8azeA5e930Ycf4C36SK6XP51bNPz8z2LoHWiUHTEHew9zmOGUikHt/NfwnC/lcA1LYJbF07zxTZzsLQY8h2zUyvTQvHHrHzzP849To+YVxdcUJYK0C6uvQq7juVPRDbhz4Huq6z225NY8euP/uVHLAlJRNNrmHe0UkGql3kzS0Xiq4AS7OxzN/Ou9Zk0584T8i+REJujiCFSonRGOoY7ZBO+vx1Wv759W5DCIbDCSNVAzyIpRvAaw3OX4SlB+Q7FupW0vzowOWZuROz5aWZtxdKUnaEnE1gH2pDF7uG5j8p+t0GQs2FE9Cm+ay3G4CNUpTpESp9tf6LHHjQTgmhUcV1locdQSix1YrjrkwSs4brBnpKaXbE6raPOk63hOqh+MRqqzPpbmS2/VlrcGep3mZYDHKJQ3UisqfcrQ6lco9J1mGWX9+N3vMOkiVig+X7jzssNvvODSlv/WMiSvSgyaWrXxxrtTsX0dmlmE8fSqYJ8LvFvTMcHQwbj53Ku1Sr2nV+36HAHMAcnD99gGJpFsYdFej9cDx2cRAFyE8R07nPPDryhOUhQtEBleQYrSDNJHedmEyKtkC5tIqa+GfdeZmh/oG/ZbztT0slON0K9Zxkbz7I3rwqsFZMGZEDTFJHx9MtIHLuid+HXaM0cRl/SFT3bssO9p6bpzyiRjy94dMRJlc9zqKD1wdTPsc6RyDFIOz5UL6oY2nzUfqeT69Om8PWEOsGEdYmbquJXaToM7OPxOnao9eH7tsd9O1euVU5WvnpbMlOk/Q45rlTVBcZ8NVqYuJgxWpT2G6nhbvt6Cv3VOKzqaxM4PnKAJ+GyrNfROa2O9OfTqwDvyTcPWd63q2NWkhxfsLjGanEraN7I6T/v0CmONWGVTttzs/S5E6P9e4U3GDae/5htxDqc4wcw+zvmd05jGMMkHEFfKIc9DZicZKiGVD67esPeZfLWO0j2i7tOITvTSVUmsEzNCnTGid5nrQMERCf6FKo0GhO8E1TJKjfS3km5H+vo6LePfEd9oMIsfu9ps0Dlxl+/jnlo1xD+tashW+0wswLhmN9hXSGPzjMGvqY28COz42xGOZfY9yrbpnqsvmH39/ukj8/fWjGAGCmMaq6yIXwVReHVDVsslyhlIEehem4tqIZrBVULNxDDf6t1KjKdXK2o44d+QojlmbLunzEwTrCeFuE+wjX2SSn675zCyveVjHyc/0S+aWy6L3elGtetoWz0O+2/A944mkFnUe5xtPganf/cjXSPy6xGt5juZ+d65nAqx9CpfaAA1G1kd+SUB00a5612m3apzg7JptGC5WAbTOZz01TSrSRMYt2iZtdI9yDBzM5mfjFQDXap1uVBjQj2oYvMZTTJeCO+pULV9X51LVV+n/2fF6KrcFJFldDXr/jNNmjJ6XZu4Tmq4PbM7o5Q5TTjTE/O2ZebYLfpFdlp8xzRn7cXnYMH1fw==</diagram></mxfile>
|
||||
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 119 KiB |
@@ -1 +1 @@
|
||||
<mxfile host="Electron" modified="2023-03-29T11:24:04.410Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="P_FsIsnh0ajq8UttcqSZ" version="20.8.16" type="device"><diagram name="Seite-1" id="4AvssoyQ3F2APBzfr0LI">7VpZc+I4EP41VO0+ZMoHGHgkENip2t2wm52ZzaOwG1uJbFGyOH/9SLZ8YQ4zxBxT85JY7ZYld39fd6tNw+z7qxFDM+8v6gBpGJqzapiDhmHoercp/knJOpZ0DCVwGXaUUiZ4wRtQQk1J59iBsKDIKSUcz4pCmwYB2LwgQ4zRZVFtSklx1RlyoSR4sREpS79hh3vJW7Qz+R+AXS9ZWbe68R0fJcrqTUIPOXSZE5lPDbPPKOXxlb/qA5HGS+wSzxvuuZtujEHAq0z4520UfP7yL3rrLMzuV2c0GiwmD0ZLbY6vkzcGRxhADSnjHnVpgMhTJn1kdB44IB+riVGm8yelMyHUhfANOF8rb6I5p0LkcZ+ou2LHbP2/nP+plQxf1eOiwWBVGK3VqPzKygohnTMbDr2ngg5iLvADenonVpRGyK2gLDoC6oPYkFBgQBDHiyJKkAKbm+pl/hAXyiWnuCd+7gKRuVpp7KEQhEiYsSf+DbCLOd6IrdCg5MlwiX2CAumypYc5vMxQZKSloGrRIXsNuwDGYXXQEuqumeB8vTVeZrQxNCXzcpQx2lpN1tPNK4PbOBPdhzBxFPJmVcgbHw35aGqPMbTOKcwoDniYe/JYCjL8WEX46NvR7CR1cRGvn4EnfZEfx5NZZqOg1zxwG3L1YURH5DLk+xCx0yLC7o8TJq5cefU8eYN3HpuRBiAI29+nJPgBQWh7aMr36P095xtg00bfbDz2PRbvYiGjgDZAYpIvUzGRk7Xf/nsdP5sPj8h+h8D5XTzuG0wehpT5cyLQViJJkQInh46DkaxyPNkKJ81yNNGtHdFE12uLJtZ9p8qzgkkSJI5Hk9ZNJdBk3znODgGciaCCkI6f7wL7ersi+M3asN+8BvZrwvAHJ7pSatKbW+5rbbklJpGalXnm1IxZWsc6nDKP6NeTM5N4kCPgFz8EvokTVj5VicyGfMmw+O995SdjR7l7YY627zs/VT3KtSpmog9n+1neKdOgF0wpc0BWbqEo5FAYRpS4pTNct+IRTu/WBeruVTC9wjwHaTF6zd3JAC0H6zy666vTkjbNMXJYFcnRvilyWCVyfA44sAWGpeykYX65Wi3had3nlPrSgFay0y/KHKJMuyJlbqsz2C5RZsiQC5OoH2C50blfNQeYuHzh6B08SkS+uQsa7cg8l6VRp2Tf8ZRg2xPlqgdTfhdG1K8fjHaYUTWwjVwDG5GbbGFbO+y3u4XdrM2A1ymAam5hJ7A4/tlGqxicjXrO9j9hEzsx6Q93sWVS6fYnwCYMB248T36iNbQRhLYnb/eaUx7OGN1AGEJ4kViZRpq6C7dOXVRPD8B3en4/k+lGVaY3b6oOS/Z91Qbz2eC/fqVgXOVbbV0ovniL2djyS10tZvPEFrN5iYzWLFEwqSpDDCzJUGxvhroTjl79TGSU+zRpeZBUB2lzP5ylVUWAhNFLdcRXYB6FqWSLRBAin6Lv3Krd0wtmcUdUnmTjqWLP6TIllwmb8qJfQs7oO/QpoUxIAhodIqaYkC2RgIkbiKENsuckBNJD2Eakp2742HHIvhNIESplLJx8CEndty56M+d1s/MxXhfD7OdnMRuzH/GZT98B</diagram></mxfile>
|
||||
<mxfile host="Electron" modified="2023-03-30T16:13:26.473Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="NBkm3Zraic1t1MOXaLR9" version="20.8.16" type="device"><diagram name="Seite-1" id="4AvssoyQ3F2APBzfr0LI">7VpZc9s2EP41mmkfnOGh81GWLDUzba3WTVI/QuSKhA0CGhA6f30AEbxEHVRk6sjkxSaWCwLc/b7dxVI1uxcshxxN/b+YC6RmGe6yZvdrlmUa7Yb8pySrSNKqdyKBx7GrlVLBC15DPFNLZ9iFMKcoGCMCT/NCh1EKjsjJEOdskVebMJJfdYo8KAheHESK0m/YFX4kbVutVP4HYM+PVzab+v0CFCvrNwl95LJFRmQ/1eweZ0xEV8GyB0QZL7ZLNG+w526yMQ5UlJnwz9uQfv7yL3prz+3OV3c47M/HD5Z2TyhW8RuDKw2gh4wLn3mMIvKUSh85m1EX1GMNOUp1/mRsKoWmFL6BECvtTTQTTIp8ERB9V+6Yr/5X8z814uGrftxm0F/mRis9Kr6ytkLIZtyBQ++poYO4B+KAntmOFJURMitoiw6BBSA3JBU4ECTwPI8SpMHmJXqpP+SFdskp7omeO0dkplca+SgEKZJm7Mp/fexhgddyK4wWPBkucEAQVS5b+FjAyxRtjLSQVM07ZK9h58AFLA9aQt+1Y5yvtsaLlDaWoWV+hjJWy6jIeqZ9ZXBbZ6L7ECaOQt4uC3nroyG/mdrlHK0yClOGqQgzTx4pQYqfZh4+5nY0O0ldXkTrp+BJXuTH8WQX2SjpNaNeTa0+2NAReRwFAWzY2STS7o9jLq88dfU8foN3EZmRUZCE7e1TkvwAGjo+mog9en/PxBr4pNaza489n0e7mKsoYPSRnBSoVEzUZOO3/15Hz/bDI3Legbq/y8d9g/HDgPFgRiTaCiTJU+Dk0HEwkpWOJ1vhpF6MJmZzRzQxzcqiSfO+U+VZwSQOEsejSeOmEmi87wxnBwDuWFJBSkfPd4F9s1US/HZl2K9fA/sVYfiDE10hNZn1Lfc1ttwSkUjPSj1zasYsrNM8nDKP6FeTM+N4kCHglyAEsY4SVjZVycyGAsWw6O995SdrR7l7YY627js/lT3KNUpmog9n+1neKdKgSyeMu6Aqt1AWcigMN5S4pTNcp+QRzuxUBerOVTC9xCIDaTl6zdxJAa0Gqyy6q6vT4jbNMXI0S5KjdVPkaBbI8ZkK4HMMC9VJw+JytVrM06rPKdWlAaNgp1+UOUSZVknK3FZnsFWgzIAjD8bM2xz5dV+Ay8sXgd7BZ0Smmrtg0I6kc1kGtQumHU0IdnxZqfowEXdhRPP6cWiHGXXv2sr0rhG5ye51c4f9dnev65UZ8Dq1T8Xd6xgWx7/YGCXjslXNsf4n7F/HJv3hBrZKKp3eGPiYY+pF89TXWcsYQuj46na3PhHhlLM1hCGEF4mVSaSpumZrV0X15Ox7p0f3M5lulWV6/aZKsHjfV+0tnw3+61cK1lU+01aF4ot3l60tv1TVXbZP7C7bl8ho9QIF46oyxMDjDMX3Zqg74ejVz0RWsUWTlAdxdZD09cNpUlVQJI1eqCO+AvcZTBRbFIIQ+bT5xK07PV06jZqh6iQbTZV7TpYpuEzaVOT9EgrO3qHHCONSQtnmEDHBhGyJJEw8KocOqHaTFCgPYQeRrr4RYNcl+04geagUsXDyISRx3yrvzYzX7fbHeF0O01+eRWxMf79nP30H</diagram></mxfile>
|
||||
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 133 KiB |
@@ -1 +1 @@
|
||||
<mxfile host="Electron" modified="2023-03-27T14:42:48.179Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="hAVuMy2DVt5H_X7tBGfx" version="20.8.16" type="device"><diagram name="Seite-1" id="OQF_a6zVYjKttAf1AJ-S">5Vnbkto4EP0aHr0FNhj8CAyQzUIqW2Qzl5eUsBtbQUisLHOZr1/Zlm/YMFADA8lOFTV0q2W1u0+flkTN6C+3I45W3oQ5QGp63dnWjIearjcaVlP+CzU7pbEsI9a4HDtKlymm+BWUsq60AXbALxgKxojAq6LSZpSCLQo6xDnbFM3mjBRXXSEXSoqpjUhZ+4gd4cXajt7O9J8Au16ycsO04pElSozVm/gectgmpzIGNaPPGRPxt+W2DySMXhKXeN7wwGjqGAcqTpkwHfP2aLL6PEXTPnTWf9HH0UAzVDZ8sUveGBwZACUyLjzmMorIINP2OAuoA+Fj61LKbMaMraSyIZU/QYidyiYKBJMqTyyJGpUe892Tmh8Jz6HwRysRH7b5wYddKjndMKdSnBFmL2LVEBOiDMoxUWHyWcBtOBIIXWELcRfEsYCpbIZRyq2gQj4CtgTpsTTgQJDA6yKMkEKjm9qpqfK10C5nsGKYCj/35K+hQhqoytI7yo+krvRWMfnn2csvsQeJlHuVTBUB6gxwqZiuEQlUGL4BJhS8JfCwQmp9o9YzbU9ATTeJjHpvJvWmG357BEzDeNAlEAdoCaUZBkNAbTwsYLpCUYo3koqKeJszKhQYGzKiPZcg31eQ8QVni7S2Q+u0UMPhuQRXnxHGo2UNiP7SabkRwzQswzmGwTVwAdujoElG68VsWUrcZAzUMJXOy7FPu34YZrlUn5/JZimTX6L8vJM6cimqIIxKYsmnsnEKJUhJ2XfezjZBMyA9ZC/cyNEkvZRReAdtHUTEmySSVKvK63mckpFAYsLmc1+y21GiaBWhl66dPCNmSDVrD1YX4AyzhDTFBNgXZZZA1IWIIMT/myAaH8kQn+joh2i3vljaZObMF4tvL8FIa5QScMf7iHy6r7yvSPYLb24smqdywskk8C7GT/zOFWLYri1zPpdcqNc/I4+DjwJ/gzyy4mwGVBvLGgWKqI9lT39fQV6gRtKueYMm+mf/weptWQ+9THotZzTdju1OUiL5iCpCc/A6YbSU4wrBM/8NWKRNW5Nmx8zSDVelWGBE4tnKMnneP0/akEhk63VNfkIujbdUAXVzq8n3me17IHUVfl3R1dA5gqT9hPnRMXIgZQxz4NJZfwN88QqBe8zlrDEceomDmKyf0CRyTK92BEWSV8oLYHcPuppexq5ehV3zWvR+22NiKtwfvVun0rt5X/RulchoGB3H+oSAIgqtXFYPSBK8j8Rr6FPg35zjm/vH2pvvg/RbFMoHAj7Zprx9UWLdFeCbld1XdSB1xOimlw3JgDZB/qLidmLNaOUeqKIRRXcc4abpnXcYV6iWmxeL9bsXi3lisdxXc2iWD+FDxpcBQeG1HZr5toftxR0Aen+f9KH0H4jJoLv7/vLifG3Y5OfL33zcqtjjT2Xy5WFoOKDOKqCLy11UdH6Be4rmfoLK+WlXpEe/VnrKN9LdhcDsctfLZyblAiFutW8W4hmd69tdf/r8nW9MqztePj3/qKiAMbiSUCE6AO6FWb6jKMay8kRVcfJCBLtUiraMHPCwJcuIYRuRrhpYYseJGkZV8opNZL8jXAH4WkVaWpdJixSzHxHja9jst1hj8B8=</diagram></mxfile>
|
||||
<mxfile host="Electron" modified="2023-03-30T16:34:31.425Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" etag="TQ0JShpZqPYf8JSQ05lG" version="20.8.16" type="device"><diagram name="Seite-1" id="OQF_a6zVYjKttAf1AJ-S">5Vnbkto4EP0aHr2FbTD4kXs2C6lskc3M8JIStrAVhMTKMpf5+pVs+YYNAzUwkOxUUYNaLUvuc/q0JGpmb7UbMbD2J9SFuGbU3V3N7NcMQ9fthvgnLXtlsW0ztngMucqWGaboFSpjXVlD5MKg4MgpxRyti0aHEgIdXrABxui26LaguDjrGniwZJg6AJetT8jlfmxtG63M/gkiz09m1i077lmBxFm9SeADl25zJnNQM3uMUh5/W+16EMvoJXGJxw2P9KYLY5DwcwZMx6w1mqw/T8G0B9ubv8jTaKCZCo2A75M3hq4IgGpSxn3qUQLwILN2GQ2JC+Vj66KV+YwpXQujLow/Ied7hSYIORUmn6+w6hUrZvtnNT5qvMjGH82k2d/lO/v7tOV2JKaiOcfUWcamIcJYOZRjosIU0JA58EQgDMUtwDzITwVMoSmjlJtBhXwE6QqKFQsHBjHgaFOkEVBs9FI/NVS8FtjnHNYUER7knvxVGoSDyiyjrdaR5JXRLIJ/mb/4Eq8gaeVeJTNFhLqAXCqmG4BDFYZvEGEC/RVkMkNqPbPWtRyfw5phYRH17lzYLU9+e4KIyHiQFcQuJCWWZhyUhNr6iMPpGkQQb4UUFfm2oIQrMuoiol0PgyBQlAk4o8s0t6V3mqiyeyHI1aOYsmhaE0Z/6bBcj2mZtume4uAGMg53J0mT9NaLaNmquc0USLeUzc+pT6t+nGY5qC9HslFC8kuEzzulIwdRhWBUCkseSv0cSRAt5d9+G20M5hB3gbP0ooUm8BJK4Dtk6ygj3hSRJFsVrpdpSiYCiQtdLAKhbieFolmkXjp38oxYIdWoA1pdQTOsEtOUEqCAl1UCEA9GAsH/3wKhf6RCfCKjH7zV/GJrk7m7WC6/zcKRppcAeOB9RB7uG+8rkv3CmxuLxrmacLYIvEvxk3XnElGWa9taLIQWGvXPwGcwAGGwBT5eMzqHRBuLHIUEkACJmv6+hLxCjqRV8w5F9M9e3+7uaBfMJt2mO5ruxk47SZF8RJWguWiTKFqqcYXgWf+GNLKmpUlzYmXpyFkJ4gjgeLTyTJ73z7M2xILZRl0TH6ml8ZYqJF40OJ5NvM/8cAXCVrGuGy5VLg4D4T+hQXSMrODYFrLlKwy9UwvPysOxVznKzPoZpSKn92pfUJR6ZbwCgw8IrBllBptmBYOtW4n8fQ+LaePxRN4+V+StxxJ5uyRJw+hQ1sMYKrnQymnVB0LmA8Bf5ZrC4O5K3zg83N59N2TcI1E+kPDJZuXt6xL7oQjfqKzBqg6pg0YnvXJIOrQJCJYVdxQbSiqrVEUhim465NbpnTcZN8iWuyeL/bsni3VmsjxWcWiUj+JDylYhBvLyDswDx0fO8gEIfbhP+lD5D/lk0Nl/n83cr7qDf87+ZuNmxU5/KsAXR6LhgLjrkCyvd13R/gVuKxqHAJXxaVXAY9wKnvK9dGfJEb3eJfOFoFwhxM3W3UI8Jwtjt+9NX76zrWV3xqvnlx8VGTCGnhBUGB0DD8Is3pEXY1l5oqo4eQGMPCKajogcZLIki4ghB+CO6lgh140KRhV4xSJyWBFuQHytApbmdWARzeynxPgyNvtF1hz8Bw==</diagram></mxfile>
|
||||
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 78 KiB |
@@ -2,21 +2,21 @@
|
||||
% Selbstständigkeitserklärung
|
||||
%
|
||||
|
||||
\includepdf[pages=-]{images/selbststaendigkeitserklaerung.pdf}
|
||||
%\includepdf[pages=-]{images/selbststaendigkeitserklaerung.pdf}
|
||||
|
||||
%\chapter*{Selbstständigkeitserklärung}
|
||||
%
|
||||
%Hiermit erkläre ich, dass ich die vorliegende Arbeit selbstständig und ohne Benutzung anderer als der angegebenen Hilfsmittel angefertigt habe.
|
||||
%Alle Stellen, die wörtlich oder sinngemäß aus veröffentlichten und nicht veröffentlichten Schriften
|
||||
%entnommen wurden, sind als solche kenntlich gemacht. Die Arbeit ist noch nicht in
|
||||
%gleicher oder ähnlicher Form oder auszugsweise im Rahmen einer anderen Prüfung
|
||||
%vorgelegt worden.
|
||||
%\\
|
||||
%\\
|
||||
%\\
|
||||
%\hspace*{\fill}\cfgAuthorCity, \cfgDateLastModification
|
||||
%\\
|
||||
%\\
|
||||
%\\
|
||||
%\\
|
||||
%\hspace*{\fill}\cfgAuthorName\ \ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
\chapter*{Selbstständigkeitserklärung}
|
||||
|
||||
Hiermit erkläre ich, dass ich die vorliegende Arbeit selbstständig und ohne Benutzung anderer als der angegebenen Hilfsmittel angefertigt habe.
|
||||
Alle Stellen, die wörtlich oder sinngemäß aus veröffentlichten und nicht veröffentlichten Schriften
|
||||
entnommen wurden, sind als solche kenntlich gemacht. Die Arbeit ist noch nicht in
|
||||
gleicher oder ähnlicher Form oder auszugsweise im Rahmen einer anderen Prüfung
|
||||
vorgelegt worden.
|
||||
\\
|
||||
\\
|
||||
\\
|
||||
\hspace*{\fill}\cfgAuthorCity, \cfgDateLastModification
|
||||
\\
|
||||
\\
|
||||
\\
|
||||
\\
|
||||
\hspace*{\fill}\cfgAuthorName\ \ \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||