\chapter{Evaluation}

Nachdem nun das Grundgerüst der Beispielanwendung sowie deren Anforderungen definiert worden sind, können die Ansätze zur Zustandsverwaltung anhand der definierten Kriterien evaluiert werden.

Dafür wird für jedes Zustandsverwaltungssystem die Anwendung vollständig implementiert, und anschließend die Tests und Untersuchungen für die Bewertung durchgeführt.

Im darauf folgenden Kapitel werden dann die kumulierten Ergebnisse analysiert und ein Fazit gezogen. 

\section{setState}
\label{eval:setstate}

Das Erste zu evaluierende Zustandsverwaltungssystem stellt die in  \autoref{sec:setState} beschriebe Vorgehensweise zur Verwaltung des Zustands dar.

Mit diesem Ansatz kann nicht die Mindestanforderungen an die Beispielanwendung umgesetzt werden, da es unmöglich ist, mit ihm einen konsistenten Zustand über mehre Seiten hinweg zu erzeugen. Dabei war es immer nur möglich, Zustandsänderungen auf einer Seite zu haben, sobald man auf eine andere Seite navigiert, wurden auf der alten Seite die Änderungen nicht übernommen.

%Navigation per Routen-Namen nicht möglich, da es erforderlich ist, dass a

\input{chapters/evaluation/inheritedwidget.tex}
\input{chapters/evaluation/bloc.tex}
\input{chapters/evaluation/provider.tex}
\input{chapters/evaluation/riverpod.tex}
\input{chapters/evaluation/redux.tex}
\input{chapters/evaluation/mobx.tex}

\newpage
\section{Übersicht}

Die Ergebnisse der Evaluation sind in der \autoref{tbl:results} übersichtlich zusammengestellt. Als Vergleichsgröße wurden zusätzlich die Ausgangsmesswerte ohne Zustandsverwaltungssystem in der ersten Zeile ergänzt. Die Ergebnisse werden im nachfolgenden Fazit-Kapitel näher gedeutet und analysiert.

\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\begin{longtable}[]{@{}l|ccccccc@{}}
    \caption{Ergebnisse der Evaluation
    \label{tbl:results}}\\
    \toprule
    Zustandsverwaltung & \rot{Änderbarkeit/Skalierbarkeit} & \rot{Testbarkeit} &
    \rot{Effizienz (in Rendervorgängen)} & \rot{Komplexität/Wartbarkeit (in MI)} & \rot{Verständlichkeit/Lesbarkeit} &
    \rot{Dokumentierung} & \rot{Strukturbestimmung} \\
    \midrule
    \endhead
    ohne Zustandsverwaltung & n. a. & n. a. & 1;2 & 83 & n. a. & n. a. & n.a.  \\
    setState & \multicolumn{7}{c}{nicht umsetzbar} \\
    Inherited\-Widget & / & / & 8;6 & 83 & \xmark & / & \xmark  \\
    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 & / & 8;10 & 82 & / & \cmark & \cmark  \\
    MobX & \cmark & \cmark & 4;4 & 83 & \cmark & \cmark & /  \\
    \bottomrule
    \multicolumn{8}{c}{Legende: \cmark=vollständig erfüllt; /=teilweise erfüllt; \xmark=nicht erfüllt;}\\
    \multicolumn{8}{c}{n.a. = nicht anwendbar}
\end{longtable}