klassendiagramm und wording digitization

This commit is contained in:
Leon Etienne 2023-03-15 11:16:38 +01:00
parent 6f3161370e
commit 4e18b44d43
Signed by: leonetienne
SSH Key Fingerprint: SHA256:hs2AZKjRTbd2kYg44u89rM19UT2LyBOpSbIShsdkkfg
6 changed files with 112 additions and 29 deletions

View File

@ -54,26 +54,41 @@ Nachdem in Erfahrung gebracht wurde, welche konkreten Datenobjekte benötigt wer
wurden Attribute dieser Objekte dem Pflichtenheft entnommen. Diese wurden in einem wurden Attribute dieser Objekte dem Pflichtenheft entnommen. Diese wurden in einem
formalen Klassendiagramm festgehalten und in Rücksprache mit dem \ac{PO} formalen Klassendiagramm festgehalten und in Rücksprache mit dem \ac{PO}
weiter bis zu festen Datentypen und Auswahlmöglichkeiten konkretisiert. weiter bis zu festen Datentypen und Auswahlmöglichkeiten konkretisiert.
Beispielsweise, dass Wettbewerbskategorien als TYPO3-Categories verschachtelt gepflegt
werden und dass Geschmacksrichtungen, Qualitätsstufen, Rebsorten, Weinlagen und Beispielsweise, dass Wettbewerbskategorien durch TYPO3-Categories repräsentiert werden sollen.
Weineigenschaften eigene Datenobjekte Das hat den Vorteil, dass TYPO3-Categories bereits native Bestandteile eines TYPO3-Redaktionssystemes sind
sein sollen. Geschmack und Qualität sollen daher eigene Objekte sein, damit sich Nutzer und bereits alle relevanten Attribute anbieten. Diese sind ein Titel,
für einen festen, nominalen Eintrag via einem Dropdown-Menü entscheiden müssen, eine Parentkategorie und eine Beschreibung.
diese allerdings immer noch im TYPO3-Backend pflegbar sind. Weinlagen sind allerdings im Brown-Field bereits vorhanden, also sollen hierfür Das Parent-Attribut ist benötigt, da $n$ dieser Attribute einen Attributbaum bilden
existierenden Einträge verwendet werden. Weineigenschaften sollen pro Wein beliebig viele \cite{bib:typo3-docs-sys-category}.
auswählbar sein, Wettbewerbskategorien, etc, jeweils genau ein Element. Somit ist es möglich Unterkategorien zu erstellen. Beispiele hierfür sind die
Notizen zu diesem Gespräch sind im Anhang unter \fullref{chap:anhang-notizen-digitization} Unterkategorien \enquote{Trockener Riesling} und \enquote{Halbtrockener Riesling} für die Überkategorie
\enquote{Riesling}.
Rebsorten, Geschmack, Weineigenschaften und Qualität sollen eigene Datentypen
anstatt einfacher Zeichenfolgen sein.
Ziel davon ist, dass sich Nutzer für einen vorgefertigten, nominalen Eintrag in einem Dropdown-Menü
entscheiden müssen und diese Auswahlmöglichkeiten immer noch im TYPO3-Backend pflegbar sind.
Weinlagen sind im Brown-Field-Projekt bereits vorhanden, also sollen hierfür existierenden Daten
eingebunden werden.
Pro Wein sollen beliebig viele Weineigenschaften auswählbar sein, Wettbewerbskategorien,
Geschmacksrichtung, etc, jeweils nur ein Element.
Weitere Notizen zu diesem Gespräch sind im Anhang unter \fullref{chap:anhang-notizen-digitization}
zu finden. zu finden.
\\ \\
\\ \\
Da das Klassendiagramm gegeben lesbarer Schrift nicht auf eine Textseite passt, Da das Klassendiagramm gegeben lesbare Schrift nicht auf eine Textseite passt,
befindet es sich vollseitig im Anhang unter \fullref{chap:anhang-class-diagram}. befindet es sich vollseitig im Anhang unter \fullref{chap:anhang-class-diagram}.
Die weitere Implementation der Datenobjekte ist unkompliziert und besteht hauptsächlich aus Die weitere Implementation der Datenobjekte ist unkompliziert und besteht hauptsächlich aus
repetitivem Schreiben von SQL-Tabellen, Domain-Model-Klassen und \acp{TCA}. repetitivem Schreiben von SQL-Tabellen, Domain-Model-Klassen und \acp{TCA}.
Um $m,n$-Beziehungen wie Beispielsweise der Menge der für eine Probe zugelassenen Weinlagen Um $m,n$-Beziehungen wie Beispielsweise der Menge der für eine Probe zugelassenen Kategorien
\enquote{allowedVinesites} zwischen \enquote{Jahresauswahlprobe} und \enquote{Vineyardsite} zu \enquote{allowedCategories} zwischen $m$ \enquote{Jahresauswahlprobe}-Objekten und
ermöglichen, werden MM-Tabellen (many-to-many) benötigt, die diese Beziehungen in Form zweier $n$ \enquote{Category}-Objekten zu ermöglichen, werden MM-Tabellen (many-to-many) benötigt,
Foreign Keys speichern. Die Repository-Klassen können \enquote{leer} gelassen werden, diese Beziehungen in Form zweier Foreign Keys speichern.
Die Repository-Klassen können \enquote{leer} gelassen werden,
da zu diesem Zeitpunkt keine erweiterte Auswahllogik für Datenbankanfragen benötigt wird. da zu diesem Zeitpunkt keine erweiterte Auswahllogik für Datenbankanfragen benötigt wird.
Wichtig ist hierbei, dass eine Repository-Klasse existiert. Alle unverzichtbaren Wichtig ist hierbei, dass eine Repository-Klasse existiert. Alle unverzichtbaren
Schnittstellen werden über die Basisklasse \enquote{Repository} geerbt Schnittstellen werden über die Basisklasse \enquote{Repository} geerbt

View File

@ -86,8 +86,10 @@ Spezielle Styles sind nicht erwähnt. Ein Großteil der Issues und Pull-Requests
BaconQrCode ist mit einer BSD-2-Clause-Lizenz lizensiert BaconQrCode ist mit einer BSD-2-Clause-Lizenz lizensiert
\cite{bib:bacon-baconqrcode}. \cite{bib:bacon-baconqrcode}.
\subsection{Vergleich in Bezug auf die Problemstellung} \subsection{Subjektiver Vergleich in Bezug auf die Problemstellung}
Um eine Bibliothek als \enquote{die Beste} für einen Anwendungsfall kurieren zu können, Im Folgenden weden subjektive Einschätzungen und Meinungen des Autors über die Eignung der beleuchteten
Bibliotheken vorgestellt.
Um eine Bibliothek als \enquote{am geeignetsten} für einen Anwendungsfall kurieren,
müssen die konkreten Anforderungen und Constraints für diesen Anwendungsfall beachtet werden. müssen die konkreten Anforderungen und Constraints 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 Auswirkung in Gewichtung und Richtung
je nach Anwendungsfall aufweisen. je nach Anwendungsfall aufweisen.
@ -110,8 +112,9 @@ Hierfür werden die zuvor vorgestellten Bibliotheken zur Erstellung von QR-Codes
ob die Lizenz einer Bibliothek überhaupt deren Einbundung gestattet, bzw. welche Bedingungen gelten. ob die Lizenz einer Bibliothek überhaupt deren Einbundung gestattet, bzw. welche Bedingungen gelten.
\end{description} \end{description}
Hierfür werden den verschiedenen Bibliotheken Punkte ($[0,10]$) in den zuvor genannten Kategorien vergeben. Dabei werden den verschiedenen Bibliotheken Punkte ($[0,10]$) in den drei zuvor genannten Kategorien vergeben.
Die Kumulativpunktzahl einer Bibltiothek beschreibt deren Gesamteignung. Die Kumulativpunktzahl ($[0,30]$) einer Bibltiothek beschreibt deren Gesamteignung, nach subjektivem
Empfinden des Autors.
\subsubsection*{kjua} \subsubsection*{kjua}
Kjua ist funktional für dieses Projekt gut aufgestellt, da es optisch ansprechende QR-Codes mit Logo unterstützt. Das wird Kjua ist funktional für dieses Projekt gut aufgestellt, da es optisch ansprechende QR-Codes mit Logo unterstützt. Das wird
@ -122,6 +125,16 @@ Kjua ist als Javascript-Bibliothek nur schwer mit den Anforderungen vereinbar,
da der QR-Code in einem PDF eingebunden werden soll. Hierfür wäre ein serverseitiger Generator prädestiniert. da der QR-Code in einem PDF eingebunden werden soll. Hierfür wäre ein serverseitiger Generator prädestiniert.
Kjuas Lizenz erlaubt Verwendung in kommerziellen, Closed-Source Projekten \cite{bib:opensource-license-mit}. 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. Die Exklusivität für Nutzung in Webbrowsern schließt eine Einbindung in den Workflow aus.
\begin{table}[htbp]
\centering
\begin{tabular}{|l|l|l|l|}
\hline
\textbf{Funktionalität} & \textbf{Gepflegtheit} & \textbf{Workflow-Eignung} & \textbf{$\Sigma$}\\
\hline
8 & 2 & 0 & 10\\
\hline
\end{tabular}
\end{table}
\subsubsection*{soldair/node-qrcode} \subsubsection*{soldair/node-qrcode}
Soldairs Lösung sieht dokumentativ und funktional vielversprechend aus. Soldairs Lösung sieht dokumentativ und funktional vielversprechend aus.
@ -133,6 +146,16 @@ ein vermeidbarer Mehraufwand und ggf. imperformant generierte QR-Codes aus einer
übertragen. Das bildet sich mit vier Punkten in \enquote{Workflow-Eignung} ab. übertragen. Das bildet sich mit vier Punkten in \enquote{Workflow-Eignung} ab.
Darüberhinaus macht Soldair/node-qrcode einen verbesserungswürdigen Eindruck der Projektpflege, wofür es lediglich Darüberhinaus macht Soldair/node-qrcode einen verbesserungswürdigen Eindruck der Projektpflege, wofür es lediglich
drei Punkte gibt. drei Punkte gibt.
\begin{table}[htbp]
\centering
\begin{tabular}{|l|l|l|l|}
\hline
\textbf{Funktionalität} & \textbf{Gepflegtheit} & \textbf{Workflow-Eignung} & \textbf{$\Sigma$}\\
\hline
8 & 3 & 4 & 15\\
\hline
\end{tabular}
\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. Rochkos Lösung macht einen aktiv gepflegten Eindruck und wird von großen Downloadzahlen gestützt.
@ -148,6 +171,16 @@ Die von Rochko verwendete Lizenz gestattet eine unkomplizierte Verwendung. Chill
PHP $7.x$ und $8.x$. Die Bibliothek benötigt zwei weitere Abhängigkeiten. Eine dieser Abhängigkeiten ist ebenfalls von Rochko PHP $7.x$ und $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 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. \cite{bib:chillerlan-php-settings-container}. Das wird mit der Maximalwertung in \enquote{Workflow-Eignung} berechnet.
\begin{table}[htbp]
\centering
\begin{tabular}{|l|l|l|l|}
\hline
\textbf{Funktionalität} & \textbf{Gepflegtheit} & \textbf{Workflow-Eignung} & \textbf{$\Sigma$}\\
\hline
10 & 10 & 10 & 30\\
\hline
\end{tabular}
\end{table}
\subsubsection*{kreativekorp/barcode} \subsubsection*{kreativekorp/barcode}
Kreativekorp beeindruckt durch Nutzungsbeispiele und Dokumentation in der Readme-Datei, sowie einer Vielzahl unterstützter Kreativekorp beeindruckt durch Nutzungsbeispiele und Dokumentation in der Readme-Datei, sowie einer Vielzahl unterstützter
@ -158,6 +191,16 @@ Unterstützung für Paketmanager, wodurch eine saubere Verwendung in dem Brownfi
selbst erfordern würde. selbst erfordern würde.
Die Funktionalität wurde aufgrund der desaströsen Gepflegtheit und Eignung nicht näher untersucht, Die Funktionalität wurde aufgrund der desaströsen Gepflegtheit und Eignung nicht näher untersucht,
da eine Verwendung selbst mit guter Funktionalität nicht infrage käme. da eine Verwendung selbst mit guter Funktionalität nicht infrage käme.
\begin{table}[htbp]
\centering
\begin{tabular}{|l|l|l|l|}
\hline
\textbf{Funktionalität} & \textbf{Gepflegtheit} & \textbf{Workflow-Eignung} & \textbf{$\Sigma$}\\
\hline
0 & 3 & 4 & 7\\
\hline
\end{tabular}
\end{table}
\subsubsection*{Bacon/BaconQrCode} \subsubsection*{Bacon/BaconQrCode}
BaconQrCode nennt keine speziellen Optionen um näheren Einfluss auf den generierten QR-Code auszuüben. BaconQrCode nennt keine speziellen Optionen um näheren Einfluss auf den generierten QR-Code auszuüben.
@ -170,15 +213,36 @@ Da es sich hierbei um eine PHP-Bibliothek handelt, die über Composer in PHP- $7
und eine API bereitstellt, ist die \enquote{Workflow-Eignung} gut. Die BSD-2-Clause-Lizenz verkompliziert eine Integration, und eine API bereitstellt, ist die \enquote{Workflow-Eignung} gut. Die BSD-2-Clause-Lizenz verkompliziert eine Integration,
da dadurch eine Copyright-Notiz an Nutzer gezeigt werden muss \cite{bib:opensource-license-bsd-2}. da dadurch eine Copyright-Notiz an Nutzer gezeigt werden muss \cite{bib:opensource-license-bsd-2}.
Dadurch werden drei Punkte einer vollkommenen Workflow-Eignung abgezogen, wodurch sieben Punkte vergeben werden. Dadurch werden drei Punkte einer vollkommenen Workflow-Eignung abgezogen, wodurch sieben Punkte vergeben werden.
\begin{table}[htbp]
\centering
\begin{tabular}{|l|l|l|l|}
\hline
\textbf{Funktionalität} & \textbf{Gepflegtheit} & \textbf{Workflow-Eignung} & \textbf{$\Sigma$}\\
\hline
5 & 8 & 4 & 17\\
\hline
\end{tabular}
\end{table}
\subsection{Fazit} \subsection{Fazit}
\begin{nicepic} \begin{table}[htbp]
\includegraphics[width=1\textwidth]{images/qrlib-compare-barchart.png} \centering
\captionof{figure}{Vergleichsergebnisse QR-Code Bibliotheken} \begin{tabular}{|l||l|l||l|l|}
\caption*{Quelle: Eigene Darstellung} \hline
\label{fig:qrlib-compare-barchart} \textbf{Bib.} & \textbf{Funkt.} & \textbf{Gepflegtht.} & \textbf{WF.-Eignung} & \textbf{$\Sigma$}\\
\end{nicepic} \hline
\hline
chillerlan/php-qrcode & 10 & 10 & 10 & 30\\\hdashline
baconqrcode & 5 & 8 & 4 & 17\\\hdashline
soldair/node-qrcode & 8 & 3 & 4 & 15\\\hdashline
kjua & 8 & 2 & 0 & 10\\\hdashline
kreativekorp/barcode & 0 & 3 & 4 & 7\\
\hline
\end{tabular}
\caption{Subjektive Evaluation der QR-Code Bibliotheken}
\label{tbl:qrlib-compare-barchart}
\end{table}
Nach Evaluation der verschiedenen QR-Code-Bibliotheken im Kontext der vorliegenden Problemstellung erweist sich Nach Evaluation der verschiedenen QR-Code-Bibliotheken im Kontext der vorliegenden Problemstellung erweist sich aus Sicht des Autors
\textit{chillerlan/php-qrcode} mit 30 Gesamtpunkten als die am besten geeignetste Bibliothek. \textit{chillerlan/php-qrcode} mit 30 Gesamtpunkten als die am besten geeignetste Bibliothek.
Somit wird \textit{chillerlan/php-qrcode} als QR-Code Technologie in der Lösung dieser Problemstellung verwendet werden. Somit wird \textit{chillerlan/php-qrcode} als QR-Code Technologie in der Lösung dieser Problemstellung verwendet werden.

View File

@ -351,3 +351,11 @@
year = {2023}, year = {2023},
note = {Zugriff: Februar 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}},
year = {2023},
note = {Zugriff: März 2023}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 KiB

After

Width:  |  Height:  |  Size: 298 KiB

View File

@ -156,12 +156,8 @@ class Jahresauswahlprobe #IMPLEMENTED_COLOR {
-dateAllowRegistration_end: Date -dateAllowRegistration_end: Date
-dateAllowShow_start: Date -dateAllowShow_start: Date
-dateAllowShow_end: Date -dateAllowShow_end: Date
+getAllowedVinesites(): List<Vinesite>
+setAllowedVinesites(allowedVinesites: List<Vinesite>): void
+getAllowedCategories(): List<Category> +getAllowedCategories(): List<Category>
+setAllowedCategories(allowedCategories: List<Category>): void +setAllowedCategories(allowedCategories: List<Category>): void
+getAllowedGrapes(): List<Grape>
+setAllowedGrapes(allowedGrapes: List<Grape>): void
+getName(): String +getName(): String
+setName(name: String): void +setName(name: String): void
+getDescription(): String +getDescription(): String

BIN
main.pdf

Binary file not shown.