Complete redux

pull/3/head
Jonas Franz 2 years ago
parent f01d4f108d
commit ef51068e13
  1. 7
      bibliography.bib
  2. 2
      chapters/evaluation/evaluation.tex
  3. 30
      chapters/evaluation/redux.tex
  4. 2
      chapters/realisation/realisation.tex

@ -273,5 +273,12 @@ url = {https://git.jonasfranz.software/KoSI/thesis_shop}
urldate = {2022-02-24},
}
@misc{reduxDocs,
author = {Egan, Brian},
url = {https://github.com/fluttercommunity/redux.dart/blob/master/doc/basics.mdhttps://github.com/fluttercommunity/redux.dart/blob/f7590336d1b564aa05f7bf7bf87e6ac7c0d30f75/doc/basics.md},
urldate = {2022-02-25},
title = {Redux.dart Basics},
year = {2018}
}
@Comment{jabref-meta: databaseType:bibtex;}

@ -40,7 +40,7 @@ Dieser Ansatz konnte nicht die Mindestanforderungen an die Beispielanwendung ums
\ac{bloc} & \cmark & \cmark & 8;4 & 82 & \xmark & \cmark & / \\
Provider & / & \cmark & 3;4 & 83 & / & \cmark & \xmark \\
Riverpod & \cmark & \cmark & 3;4 & 80 & \cmark & \cmark & \xmark \\
Redux & \xmark & TBD & 8;10 & 82 & TBD & TBD & TBD \\
Redux & \xmark & / & 8;10 & 82 & / & \cmark & \cmark \\
MobX & TBD & TBD & TBD & TBD & TBD & TBD & TBD \\
\bottomrule
\multicolumn{8}{c}{Legende: \cmark=vollständig erfüllt; /=teilweise erfüllt; \xmark=nicht erfüllt;}\\

@ -27,15 +27,37 @@ Um die Reducer besser strukturieren zu können, bietet die Bibliothek, Reducer e
Zusammenfassend wird die Skalierbarkeit und Änderbarkeit mit \textquote{nicht erfüllt} bewertet.
\paragraph{\nameref{sec:testability}}
\paragraph{\nameref{sec:testability}} Für die Testbarkeit werden zum einen Tests der Geschäftslogik und zum anderen Tests von Widgets, die auf den Store zugreifen bewertet.
Für die Tests der Geschäftslogik ist es ausreichend, den Store manuell zu erstellen und die gewünschte Action zu depeschieren. Anschließend kann anhand des zentralen Zustands geprüft werden, ob das gewünschte Ergebnis eingetreten ist.
Die Tests der Middlewares hingegen stellen sich als schwierig heraus, da hier asynchrone nicht-wartende Aktionen durchgeführt werden, womit es erforderlich wäre, auf die gewünschte Action zu warten, ohne zu wissen, ob diese tatsächlich jemals depeschiert wird.
Der zentrale Zustand sollte selbst keine Geschäftslogik beinhalten und lässt sich somit bei Widget-Tests ohne Probleme durch einen Platzhalter ersetzen.
Aufgrund der Probleme beim Testen der Middlewares, wird die Testbarkeit mit \textquote{teilweise erfüllt} bewertet.
\paragraph{\nameref{sec:efficiency}} Nach der Ausführung der Teststrecke, ergaben die Zähler folgendes Ergebnis:
\lstinputlisting[caption={Anzahl der Render-Vorgänge bei Redux}]{results/redux/benchmarks.txt}
\paragraph{\nameref{sec:complexity}} Die Auswertung der Metriken (vgl. \autoref{metrics:redux}) ergab eine \ac{mi} von 82 für das gesamte Projekt.
\paragraph{\nameref{sec:readability}}
\paragraph{\nameref{sec:readability}} Die Verständlichkeit und Lesbarkeit wird anhand der definierten Aspekte bewertet.
Redux bringt mit dem aus dem React-Ökosystem stammenden Konzept ein völlig neues Konzept in das Flutter-Ökosystem. Begriffe wie Reducer, Action und Middlewares spielen außerhalb von Redux in Flutter sonst nur eine untergeordnete Rolle. Somit müssen Entwickler*innen hier sich vor der Benutzung zuerst mit diesem Konzept beschäftigen, was für die Verständlichkeit nicht dienlich ist.
Auf der anderen Seite bietet Redux mit der klaren Aufteilung in Action, Reducers, Middlewares und State eine klare Struktur und macht den Quelltext aufgrund der relativ kleinen Methoden lesbar. Es mag allerdings bezweifelt werden, ob diese Lesbarkeit bei einem in der Theorie immer weiter wachsenden zentralen Store auf Dauer gewährleistet werden kann, da diese Klasse mit der Anwendung mitwachsen würde.
Das Problem der tiefen Verschachtlung findet bei Redux keine Anwendung, da hier auf einen Zustandsverwaltungsmechanismus außerhalb des Widget-Baums gesetzt wird und der Store lediglich an einer zentralen Stelle in den Widget-Baum injiziert wird.
Die Verständlich und Lesbarkeit wird abschließend mit \textquote{teilweise erfüllt} bewertet.
\paragraph{\nameref{sec:documentation}} Die Dokumentation \autocite{reduxDocs} von Redux beschreibt die grundlegenden Konzepte sowie verweist für detaillierte Erklärungen auf die Dokumentation von Redux für React. Zudem existieren in der Dokumentation detaillierte Anwendungsbeispiele. Zusätzlich zur offiziellen Dokumentation, gibt es eine große Zahl an Publikationen für Redux für React, die in großen Teilen anwendbar auf die Flutter-Umsetzung von Redux sind.
Die Dokumentierung wird daher mit \textquote{vollständig erfüllt} bewertet.
\paragraph{\nameref{sec:structure}} Redux bestimmt die Struktur der Anwendung klar mit, da durch die feste Aufteilung in die bereits bestehenden Elemente wie Reducer oder Action, eine Struktur sich impliziert.
\paragraph{\nameref{sec:documentation}}
Technisch wird diese zusätzlich forciert, indem über die Bibliothek geprüft wird, ob beispielsweise die Reducer der geforderten Struktur entsprechen. Zusätzlich kann damit sichergestellt werden, dass Reducer immer ausschließlich synchrone Prozeduren durchführen.
\paragraph{\nameref{sec:structure}}
Daher wird die Strukturbestimmung mit \textquote{vollständig erfüllt} bewertet.

@ -53,7 +53,7 @@ Um die Messung der Effizienz umsetzen zu können, wird ein Button hinzugefügt,
\subsection{Wireframes}
Nachdem nun der Funktionsumfang der Anwendung beschrieben wurde, wird daraus eine Benutzer*innenoberfläche konzipiert. Dazu werden vor der Umsetzung in Flutter ein Entwurf anhand von Wireframes erstellt. Diese zeigen, wie in \autoref{fig:wireframes} dargestellt, die einzelnen Seiten (engl. screens) der App mit einem konsistenten Beispielzustand sowie die Navigationsmöglichkeiten, welche hier mit einem roten Pfeil angedeutet werden.
Nachdem nun der Funktionsumfang der Anwendung beschrieben wurde, wird daraus eine Benutzeroberfläche konzipiert. Dazu werden vor der Umsetzung in Flutter ein Entwurf anhand von Wireframes erstellt. Diese zeigen, wie in \autoref{fig:wireframes} dargestellt, die einzelnen Seiten (engl. screens) der App mit einem konsistenten Beispielzustand sowie die Navigationsmöglichkeiten, welche hier mit einem roten Pfeil angedeutet werden.
\begin{figure}[h]
\centering

Loading…
Cancel
Save