Complete chapter 3

pull/3/head
Jonas Franz 2 years ago
parent f925851c3e
commit 50d0d719c4
  1. 51
      chapters/analyse/analyse.tex
  2. 2
      chapters/basics/flutter.tex

@ -72,7 +72,7 @@ Ausgehend von der Prüfung dieser Eigenschaften, wird eine Bewertung von einer S
Die Effizienz eines Zustandsverwaltungssystem lässt sich auch dadurch messen, wie effizient es das Neubauen von Widgets nach Veränderungen orchestriert. So sollte ein Widget nur dann neugebaut werden, wenn dies durch eine das Widget betreffende Änderung des Zustands es verlangt. Andere Betrachtungen der Performance sind nur schwer zu messen, da sich andere Variablen wie die Architektur oder Verwendung innerhalb der Anwendung einen großen Einfluss darauf haben.
Geprüft werden soll dieses Verhalten an x verschiedenen Prüfstellen in der Anwendung, indem durch Breakpoints untersucht wird, wann das Widget neu gebaut wird. Davon ausgehend wird eine Bewertung in einer Prozentskala gewählt, die sich an den bestandenen Prüfungen orientiert.
Geprüft werden soll dieses Verhalten an x verschiedenen Prüfstellen in der Anwendung, indem an diesen stellen Zähler eingesetzt werden, die zählen, wann das Widget neu gebaut wird. Dabei wird eine für alle Zustandsverwaltungssysteme gleiche automatische Teststrecke erstellt, welche sicherstellen soll, dass immer die exakt gleichen Bedienhandlungen vorgenommen werden. Damit lässt sich dann abschätzen, wie effizient die Zustandsverwaltungssysteme die Zustandsänderungen an die Widgets propagieren. Erstrebenswert hierbei ist es, ein möglichst geringen Wert bei den Zählern zu erreichen, wobei sichergestellt werden muss, dass dabei alle Systeme die Funktionalität richtig implementieren.
\subsection{Komplexität / Wartbarkeit}
@ -94,6 +94,7 @@ Um diese Metrik für die einzelnen Systeme zu bestimmen, wird das Werkzeug \text
\end{split}
\end{equation}
Diese Metrik wird dabei als Bewertungsmaßstab verwendet und mit erklärenden Auslegungshinweisen ergänzt.
%Kombination mit quantitativer
%Bewertung
@ -101,13 +102,15 @@ Um diese Metrik für die einzelnen Systeme zu bestimmen, wird das Werkzeug \text
\subsection{Verständlichkeit / Lesbarkeit}
Gibt es neue Konzepte neben den in Flutter bekannten?
Die Lesbarkeit und Verständlichkeit eines Quelltext lassen sich nur schwer quantifizieren. Daher erfolgt hier eine begründete qualitative Bewertung anhand von mehreren Fragestellungen.
Ist die Struktur nachvollziehbar?
So ist beispielsweise für die Verständlichkeit dienlich, wenn bereits in Flutter eingeführte Konzepte verwendet werden, sodass Entwickler*innen, die noch keine Erfahrungen mit dem Zustandsverwaltungssystem haben, ihre bereits existierenden Kenntnisse anwenden können.
Gibt es Nesting über 3 Ebenen?
Eine weitere Eigenschaft von lesbaren und verständlichen Quelltext ist es, dass die Struktur nachvollziehbar und klar ist. Bei der Einschätzung muss berücksichtigt werden, dass der Einfluss des Zustandsverwaltungssystem auf diese Eigenschaft unterschiedlich stark ausgeprägt ist.
begründete qualitative Bewertung
In Flutter werden Widget-Bäume wie in \autoref{sec:widgets} gezeigt durch das Instanziieren von Widgets durch Konstruktor-Aufrufe erzeugt. Dabei kann es zu einer tiefen Verschachtlung (engl. nesting) kommen, die die Lesbarkeit erschwert. Daher sollten die Zustandsverwaltungssysteme diesem Problem mit geeigneten Maßnahmen entgegenwirken.
Abschließend wird auch hier eine Skala von \textquote{nicht erfüllt}, \textquote{teilweise erfüllt} bis \textquote{vollständig erfüllt} verwendet.
\subsection{Dokumentierung}
@ -120,7 +123,43 @@ Von diesen Kriterien ausgehend wird eine qualitative Bewertung anhand einer Skal
Die Strukturbestimmung bewertet, inwiefern ein System Vorgaben an die Struktur der Anwendung stellt. Zusätzlich sollte untersucht werden, ob diese auch technisch forciert werden.
Dies wird auch mit einer qualitativen Bewertung von \textquote{nicht erfüllt}, \textquote{teilweise erfüllt} bis \textquote{vollständig erfüllt} bewertet.%
Dies wird auch mit einer qualitativen Bewertung von \textquote{nicht erfüllt}, \textquote{teilweise erfüllt} bis \textquote{vollständig erfüllt} bewertet.
\pagebreak
\section{Zusammenfassung}
Zusammengefasst ergibt sich aus den Anforderungen und den Bewertungskriterien eine Bewertungsmatrix, wie in \autoref{tab:criteria} zu sehen ist, welche im folgenden Teil auf einen Entwurf für jedes Zustandsverwaltungssystem angewandt werden soll.
\newcommand{\bracketCriteria}{$\left.\begin{tabular}{@{}l@{}}
nicht \\
teilweise \\
vollständig
\end{tabular}\right\}\text{erfüllt}$}
\begin{table}[h]
\myfloatalign
\begin{tabularx}{\textwidth}{cXX} \toprule
\tableheadline{Anforderung} & \tableheadline{Metrik}
& \tableheadline{Skala} \\ \midrule
Änderbarkeit / Skalierbarkeit & qualitativ & \bracketCriteria \\
\midrule
Testbarkeit & qualitativ & \bracketCriteria \\
\midrule
Effizienz & Anzahl der Widget-Rebuilds & $\mathbb{N}$ \\
\midrule
Komplexität/Wartbarkeit & \ac{mi} & 0-100 \\
\midrule
Verständlichkeit / Lesbarkeit & qualitativ & \bracketCriteria \\
\midrule
Dokumentierung & qualitativ & \bracketCriteria \\
\midrule
Strukturbestimmung & qualitativ & \bracketCriteria \\
\bottomrule
\end{tabularx}
\caption{Bewertungsmatrix}
\label{tab:criteria}
\end{table}
% Was passiert bei einem Timeout?
% Änderbarkeit/Skalierbarkeit:
% - Wie gut lassen sich diverse Stores verknüpfen?

@ -43,7 +43,7 @@ Die obere \texttt{Framework}-Schicht setzt auf den beiden unteren Schichten auf
Das Konzept des Widgets, welches bereits öfters bisher erwähnt worden ist, wird in dem folgenden Kapitel näher beleuchtet.
\subsection{Widgets}
\label{sec:widgets}
Eines der wichtigsten Bestandteile des Flutter-Frameworks sind die sogenannten Widgets. Der Satz \textquote[{\cite[Kap.1.9]{flutterinaction}}]{Everything is a widget} wird in der Literatur oft verwendet, und bringt gut zum Ausdruck, dass Flutter das Konzept des Widgets für viele Anwendungsfälle nutzt. So kann ein Widget diverser Aufgaben übernehmen wie beispielsweise das Rendern einer UI-Komponente, Animationen oder das anordnen von anderen Widgets. Zur Darstellung der Benutzeroberfläche benutzen also Widgets Kompositionen von diversen Widgets. So lassen sich beispielsweise mit einer \texttt{Row}, wie im \autoref{lst:dartExample} zu sehen ist, mehrere Widgets nebeneinander anzeigen.
\begin{lstlisting}[caption={Vereinfachte Darstellung eines Widgets als Methode \cite{flutterinaction}}, label={lst:widgetFunction}]

Loading…
Cancel
Save