diff --git a/chapters/realisation/cart.png b/chapters/realisation/cart.png new file mode 100644 index 0000000..b7e1a0c Binary files /dev/null and b/chapters/realisation/cart.png differ diff --git a/chapters/realisation/product_list.png b/chapters/realisation/product_list.png new file mode 100644 index 0000000..76d0007 Binary files /dev/null and b/chapters/realisation/product_list.png differ diff --git a/chapters/realisation/realisation.tex b/chapters/realisation/realisation.tex index 04d7915..42b0f84 100644 --- a/chapters/realisation/realisation.tex +++ b/chapters/realisation/realisation.tex @@ -73,14 +73,45 @@ Hierfür wird das Versionsverwaltungssystem Git eingesetzt. Die einzelnen Anwend Außerdem wird in dem gemeinsamen Arbeitszweig die Versuchsvorrichtung für die Effizienz-Messung bereits vorbereitet, damit für alle Zustandsverwaltungssysteme das gleiche Messverfahren zum Einsatz kommen kann. Der gesamte Quelltext wird in einem Git-Repository \autocite{repo} öffentlich zur Verfügung gestellt. - +\newpage \section{Ergebnis der Beispielanwendung} +Die Beispielanwendung wurde im Material-Design mit Flutter in der Version 2.10.1 erstellt. Das Design weicht dabei nur leicht von dem in den Wireframes konzipierten Design ab, wie in \autoref{fig:realisation} zu sehen ist. + +Die Funktionen sind abgesehen von der Navigation noch nicht implementiert, da dies, wie beschrieben, durch die Implementierung mit den Zustandsverwaltungssystemen erfolgt. + +\begin{figure}[h]% + \centering + \subfloat[\centering Produktliste]{{\includegraphics[width=.4\linewidth]{chapters/realisation/product_list.png} }}% + \qquad + \subfloat[\centering Warenkorb]{{\includegraphics[width=.4\linewidth]{chapters/realisation/cart.png} }}% + \caption{Umsetzung der Wireframes in Flutter unter iOS}% + \label{fig:realisation}% +\end{figure} + +\subsection{Versuchsaufbau} + +Neben den sichtbaren Elementen der Anwendung wurde auch eine Infrastruktur zur Durchführung der Messung für die \nameref{sec:efficiency} und \nameref{sec:complexity} geschaffen. + +Die Messung der \nameref{sec:complexity} erfolgt über die Metrik des \acl{mi}. Dieser Wert wird mit dem Tool \texttt{dart\_code\_metrics} ermittelt. Um die Berechnung unabhängig von der Laufzeitumgebung zu machen, wird die Berechnung in einem Docker-Container mit einem \ac{ci} durchgeführt. Die einzelnen Durchführungsschritte sind dabei in der \ac{ci}-Konfigurationsdatei \autocite[.drone.yml]{repo} im Unterschritt \texttt{generate\_metrics} dokumentiert. Die vollständigen Testergebnisse sind dieser Ausarbeitung im Anhang beigefügt. + +Für die Messung der \nameref{sec:efficiency} wird an zwei Messpunkten gemessen, wie oft ein Widget neu gebaut werden muss. Dazu wird ein Zähler erhöht, wenn die Build-Methode des entsprechenden Widgets aufgerufen worden ist. Zur Messung wird ein automatisierter Test \autocite[test/efficiency\_bechmark\_test.dart]{repo} durchgeführt, welcher mehrere Produkte zum Warenkorb hinzufügt und wieder entfernt, und die An- und Abmeldung des Benutzenden auslöst. Im letzten Schritt wird zur Warenkorbansicht navigiert. + +Die beiden Messpunkte wurden dabei an folgenden Stellen angebracht. Der erste Messpunkt \texttt{cartButton} wird ausgelöst beim Rendern des Warenkorb-Buttons und der zweite Messpunkt \texttt{userSwitch} wird ausgelöst beim Rendern des Schalters zum An- und Abmelden. Diese beiden Widgets wurden gewählt, da sie von Zustandsänderungen betroffen sind, allerdings nicht von allen Zustandsänderungen der Anwendung und außerhalb einer Listenansicht sind. + +Beim Ausführen des Tests für die beschriebene Basisanwendung ohne Zustandsverwaltung wurde folgendes Ergebnis ermittelt: + +Anzahl der Render-Vorgänge: +\begin{itemize} + \item \texttt{cartButton}: 1 + \item \texttt{userSwitch}: 2 +\end{itemize} +Diese Ergebnisse stellen die Minimalwerte für den Test dar. % * Anforderungen an die Beispielanwendung (/) % * Beschreibung der Beispielanwendung (/) % * Skizze der Beispielanwendung (/) % * Vorgehen beim Implementieren (/) -% * Ergebnis der Beispielanwendung +% * Ergebnis der Beispielanwendung (/) % * Beschreibung des Versuchsaufbaus \ No newline at end of file diff --git a/classicthesis-config.tex b/classicthesis-config.tex index be8a9df..876522b 100644 --- a/classicthesis-config.tex +++ b/classicthesis-config.tex @@ -112,6 +112,7 @@ \usepackage{scrhack} % fix warnings when using KOMA with listings package \usepackage{xspace} % to get the spacing after macros right \usepackage{mparhack} % get marginpar right +\usepackage{subfig} %\usepackage{fixltx2e} % fixes some LaTeX stuff --> since 2015 in the LaTeX kernel (see below) % \usepackage[latest]{latexrelease} % emulate newer kernel version if older is detected \PassOptionsToPackage{printonlyused,smaller}{acronym} diff --git a/frontbackmatter/Acronyms.tex b/frontbackmatter/Acronyms.tex index 4f965bc..16f2109 100644 --- a/frontbackmatter/Acronyms.tex +++ b/frontbackmatter/Acronyms.tex @@ -13,5 +13,6 @@ \begin{acronym}[BLoC] \acro{bloc}[BLoC]{Business Logic Components} \acro{mi}[MI]{Maintainability Index} + \acro{ci}[CI]{Continous-Integration-System} \end{acronym} \cleardoublepage