From fc43ee2dae519128a6932e71aefc0d60a625fca1 Mon Sep 17 00:00:00 2001 From: Leon Etienne Date: Wed, 29 Mar 2023 21:59:19 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20feedback=20au=C3=9Fer=20schlussteil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chapters/einleitung.tex | 4 ++-- chapters/konzeption-entwicklung.tex | 8 ++++---- chapters/stand-der-forschung.tex | 2 +- chapters/stand-der-technik.tex | 12 ++++++------ main.pdf | Bin 4329535 -> 4329536 bytes 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/chapters/einleitung.tex b/chapters/einleitung.tex index 7d8722c..41fdeed 100644 --- a/chapters/einleitung.tex +++ b/chapters/einleitung.tex @@ -14,9 +14,9 @@ Hierbei werden sämtliche auf das Weingut bezogene Daten redundant ausgefüllt. 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. -Abgesehen davon, dass solche Redundanzen auf Weinguts- und Verbandsseite die hedonische Qualität schädigen, +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: +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, könnte das unbemerkt bleiben, da der Prozess für das Weingut mit dem Versand endet und der Prozess für \ac{WM} diff --git a/chapters/konzeption-entwicklung.tex b/chapters/konzeption-entwicklung.tex index 12a97ed..4edfb5a 100644 --- a/chapters/konzeption-entwicklung.tex +++ b/chapters/konzeption-entwicklung.tex @@ -59,7 +59,7 @@ Nachdem in Erfahrung gebracht wurde, welche konkreten Datenobjekte benötigt wer wurden Attribute dieser Objekte dem Pflichtenheft entnommen. Diese wurden 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 Wettbewerbskategorien 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. @@ -199,7 +199,7 @@ werden jedoch nach dem \enquote{Inversion of Control}-Prinzip via Dependency Inj der ActionController-Klasse über eine Methode übergeben \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 +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 @@ -276,7 +276,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. @@ -467,7 +467,7 @@ 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, diff --git a/chapters/stand-der-forschung.tex b/chapters/stand-der-forschung.tex index 915d8c9..e407e21 100644 --- a/chapters/stand-der-forschung.tex +++ b/chapters/stand-der-forschung.tex @@ -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, diff --git a/chapters/stand-der-technik.tex b/chapters/stand-der-technik.tex index d69c460..b5e016a 100644 --- a/chapters/stand-der-technik.tex +++ b/chapters/stand-der-technik.tex @@ -12,7 +12,7 @@ TYPO3 ist ein Redaktionssystem und PHP-Rahmen\-werk, das Daten- und Inhaltspfleg 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} @@ -23,7 +23,7 @@ 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. +\enquote{Jquery-qrcode} 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 @@ -46,7 +46,7 @@ Issues scheinen ignoriert zu werden. \enquote{Kjua} ist MIT-lizensiert \cite{bib 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 +vor etwa zwei Jahren durch, Februar 2021 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}. @@ -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 pragmatisch korrekt ist\\\cite{bib:heinemann-vorlesung-re}. \item [Gepflegtheit] \hfill \\ Das Ausmaß, in dem das Projekt aktiv gepflegt wird und ordnungsgemäß entwickelt zu sein scheint. @@ -121,7 +121,7 @@ Hierfür werden die zuvor vorgestellten Bibliotheken zur Erstellung von QR-Codes \item [Workflow-Eignung] \hfill \\ Die Eignung einer Bibliothek in existierende Workflows und Constraints ü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} diff --git a/main.pdf b/main.pdf index 0f38dc715f90e2e5a9fee9f8cee299a63fc830db..2a83287c69112f19c1fcbe032f80e91bb15286c4 100644 GIT binary patch delta 5157 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 delta 5154 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