From 602a30774f8ae57840f4453e242cf2aea2881af7 Mon Sep 17 00:00:00 2001 From: Jonas Franz Date: Mon, 21 Mar 2022 21:14:42 +0100 Subject: [PATCH] Finish presentation --- presentation/mobx.png | Bin 0 -> 44571 bytes presentation/presentation.tex | 146 +++++++++++++++++++++++++++++++++- 2 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 presentation/mobx.png diff --git a/presentation/mobx.png b/presentation/mobx.png new file mode 100644 index 0000000000000000000000000000000000000000..c0d8304f556667950b7cb15a1047db6c19c7d1b4 GIT binary patch literal 44571 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 literal 0 HcmV?d00001 diff --git a/presentation/presentation.tex b/presentation/presentation.tex index e0c35a3..5f08050 100644 --- a/presentation/presentation.tex +++ b/presentation/presentation.tex @@ -290,11 +290,155 @@ \end{tabular} \end{table} \end{frame} +\begin{frame}{Provider} + \begin{itemize} + \item Bibliothek basierend auf InheritedWidgets + \item Nutzung von u.a. ChangeNotifier für Zustandsklassen \autocite{stateManagementThesis} + \item Vereinfachung der Erstellung und Benutzung von Zustandsklassen + \item Zugriff auf Zustände via Generic (z.B. \texttt{Provider.of(context)}) + \end{itemize} +\end{frame} +\begin{frame}{Ergebnisse: Provider} + \begin{table} + \centering + \begin{tabular}{cc} + \hline + Metrik & Ergebnis \\ + \hline + Änderbarkeit/Skalierbarkeit & teilweise erfüllt \\ + Testbarkeit & vollständig erfüllt \\ + Effizienz & Warenkorb-Button: 3; Anmeldeschalter: 4 \\ + Komplexität/Wartbarkeit & 83 \\ + Verständlichkeit/Lesbarkeit & teilweise erfüllt \\ + Dokumentierung & vollständig erfüllt \\ + Strukturbestimmung & nicht erfüllt\\ + \hline + \end{tabular} + \end{table} +\end{frame} +\begin{frame}{Riverpod} + \begin{itemize} + \item Bibliothek erweitert den Provider-Ansatz + \item Einführung des StateNotifier für die Zustandsklassen + \begin{itemize} + \item Trennung von Zustandsdaten und Zustandslogik + \end{itemize} + \item Zugriff auf Zustände über globale Variablen + \end{itemize} +\end{frame} +\begin{frame}{Ergebnisse: Riverpod} + \begin{table} + \centering + \begin{tabular}{cc} + \hline + Metrik & Ergebnis \\ + \hline + Änderbarkeit/Skalierbarkeit & vollständig erfüllt \\ + Testbarkeit & vollständig erfüllt \\ + Effizienz & Warenkorb-Button: 3; Anmeldeschalter: 4 \\ + Komplexität/Wartbarkeit & 80 \\ + Verständlichkeit/Lesbarkeit & vollständig erfüllt \\ + Dokumentierung & vollständig erfüllt \\ + Strukturbestimmung & nicht erfüllt\\ + \hline + \end{tabular} + \end{table} +\end{frame} +\begin{frame}{Redux} + \begin{itemize} + \item Ansatz stammt aus dem React-Ökosystem + \item Ein Zustand für die gesamte Anwendung + \item Der Gesamtzustand (Store) ist unveränderlich + \item Der Store kann nur durch Reducer ersetzt werden \autocite[Kap.1.3.2f]{redux} + \end{itemize} + + \begin{figure} + \includegraphics[width=\textwidth]{../chapters/basics/reduxflow.jpg} + \caption{Datenfluss in Redux \autocite[Kap.1.3.3]{redux}} + \end{figure} +\end{frame} +\begin{frame}{Ergebnisse: Redux} + \begin{table} + \centering + \begin{tabular}{cc} + \hline + Metrik & Ergebnis \\ + \hline + Änderbarkeit/Skalierbarkeit & nicht erfüllt \\ + Testbarkeit & teilweise erfüllt \\ + Effizienz & Warenkorb-Button: 8; Anmeldeschalter: 10 \\ + Komplexität/Wartbarkeit & 82 \\ + Verständlichkeit/Lesbarkeit & teilweise erfüllt \\ + Dokumentierung & vollständig erfüllt \\ + Strukturbestimmung & vollständig erfüllt\\ + \hline + \end{tabular} + \end{table} +\end{frame} +\begin{frame}{MobX} + \begin{itemize} + \item Ansatz stammt ebenfalls aus dem React-Ökosystem + \item Ziel: Vereinfachung von Ableitungen von Informationen aus dem Anwendungs-Zustand + \end{itemize} +\end{frame} +\begin{frame}{MobX: Grundkonzepte} + \begin{columns} + \column{\dimexpr\linewidth-80mm-18mm} + \blockcquote[130]{mobx}{\begin{itemize}\item Observables [...] + \item Computed Values [...] + \item Reactions [...] + \item Actions [...] + \end{itemize}} + \column{80mm} + \begin{figure} + \includegraphics[width=80mm]{mobx.png} + \caption{Ablaufdiagramm \autocite{mobxDocs}} + \end{figure} + \end{columns} +\end{frame} +\begin{frame}{Ergebnisse: MobX} + \begin{table} + \centering + \begin{tabular}{cc} + \hline + Metrik & Ergebnis \\ + \hline + Änderbarkeit/Skalierbarkeit & vollständig erfüllt \\ + Testbarkeit & vollständig erfüllt \\ + Effizienz & Warenkorb-Button: 4; Anmeldeschalter: 4 \\ + Komplexität/Wartbarkeit & 83 \\ + Verständlichkeit/Lesbarkeit & vollständig erfüllt \\ + Dokumentierung & vollständig erfüllt \\ + Strukturbestimmung & teilweise erfüllt\\ + \hline + \end{tabular} + \end{table} +\end{frame} \section{Fazit} +\begin{frame}{Zusammenfassung} + \begin{itemize} + \item Fast alle Systeme konnten evaluiert werden + \item Metriken waren größtenteils aufschlussreich + \item Riverpod und MobX haben die besten Bewertungen erzielt + \end{itemize} +\end{frame} +\begin{frame}{Empfehlungen} + \begin{itemize} + \item Große Anwendungen: MobX + \item Mittelgroße Anwendungen: Riverpod + \item Kleine Anwendungen: InheritedWidget / Provider + \end{itemize} +\end{frame} +\begin{frame}{Ausblick} + \begin{itemize} + \item Ersetzung der Maintainability Index Metrik + \item Evaluation von anderen Zustandsverwaltungssystemen + \item Vergleich mit Zustandsverwaltung unter React + \end{itemize} +\end{frame} \begin{frame}[noframenumbering,plain,allowframebreaks]{Quellen} \AtNextBibliography{\tiny} \printbibliography[heading=none] \end{frame} - \end{document}