Complete evaluation von BLoC

pull/3/head
Jonas Franz 2 years ago
parent 6af0fdcd81
commit 854f9f89af
  1. 8
      bibliography.bib
  2. 22
      chapters/evaluation/bloc.tex
  3. 2
      chapters/evaluation/evaluation.tex

@ -249,6 +249,14 @@ year = {2022},
url = {https://git.jonasfranz.software/KoSI/thesis_shop}
}
@misc{blocLib,
author = {Angelov, Felix},
title = {Core Concepts (package:bloc)},
urldate = {2022-02-21},
url = {https://bloclibrary.dev/#/coreconcepts},
year = {2021}
}
@Comment{jabref-meta: databaseType:bibtex;}

@ -59,8 +59,24 @@ Aufgrund der einfachen Testbarkeit der Geschäftslogik sowie des möglichen Aust
\paragraph{\nameref{sec:complexity}} Die Auswertung der Metriken (vgl. \autoref{metrics:bloc}) ergab eine \ac{mi} von 82 für das gesamte Projekt.
\paragraph{\nameref{sec:readability}}
\paragraph{\nameref{sec:readability}} Die Verständlichkeit und Lesbarkeit bei \ac{bloc} wird anhand der in \autoref{sec:readability} beschriebenen Fragestellungen bewertet.
\paragraph{\nameref{sec:documentation}}
Zur Verwendung von \ac{bloc} ist es erforderlich, dass man sich mit Konzepten der asynchronen Programmierung beschäftigt, um die Funktionsweise von \texttt{Stream}s und \texttt{Sink}s verstehen zu können. Diese werden in der Flutter-Programmierung sonst selten benötigt. Daher ist davon auszugehen, dass Entwickler*innen diese erst lernen müssen.
\paragraph{\nameref{sec:structure}}
Die Struktur der BLoC selber ist schwer nachvollziehbar, da die Kombination von Streams,, Sinks und Variablen nicht auf den ersten Blick nachvollziehbar ist. Zudem sind die Schnittstellen zur Benutzeroberfläche nicht wie andere Schnittstellen den Sprachfluss angepasst, sondern werden bestimmt durch die jeweiligen Funktionen von \texttt{Stream}s und \texttt{Sink}s. Zudem benötigt dieser Ansatz eine Großzahl von Klassen, um beispielsweise Argumente von Ereignissen und Zustände abbilden zu können. Dies erschwert zusätzlich die Lesbarkeit, wie auch von \citeauthor{experienceofdevelopingflutter} festgestellt wurde. \autocite[573]{experienceofdevelopingflutter}
Die tiefe Verschachtlung von Widgets kann bei \ac{bloc} nicht beobachtet werden, da hier nicht das Widget-System als Grundlage zum Einsatz kommt. Allerdings verlangt die Verwendung von \texttt{Stream}s den Einsatz von \texttt{StreamBuilder}n in der Benutzeroberfläche, wie bereits in \autoref{lst:streambuilder} gezeigt wird. Dies gibt zwar auf der einen Seite große Kontrolle über die Verarbeitung von Zustandsänderungen, macht den Quelltext allerdings schwer lesbar, besonders bei der Verwendung von mehreren \texttt{StreamBuilder}n ineinander.
Zusammenfassend wird die Verständlichkeit und Lesbarkeit mit der Bewertung \textquote{nicht erfüllt} bewertet.
\paragraph{\nameref{sec:documentation}} Die Dokumentation von \ac{bloc} ist schwierig zu bewerten, da es sich bei \ac{bloc} lediglich um ein Konzept handelt. Allerdings gibt es Bibliotheken, welche das Konzept mit Hilfs-Konstrukten versehen und so den Einsatz von \ac{bloc} einfacher machen. Die Dokumentation dieser Bibliotheken umfasst umfangreiche Erklärungen und Beispiele\autocite{blocLib}, die auch auf \ac{bloc} an sich übertragbar sind.
Zusätzlich bestehen eine große Anzahl an Artikeln und anderen Veröffentlichungen zum Thema \ac{bloc}.
Aufgrund der umfangreichen Dokumentation der beschriebenen Bibliothek und der Großzahl an Veröffentlichungen zu \ac{bloc}, wird die Dokumentation mit \textquote{vollständig erfüllt} bewertet.
\paragraph{\nameref{sec:structure}} Zur Strukturbestimmung lässt sich sagen, dass \ac{bloc} strikte Vorgaben zur Konstruktion von \ac{bloc} macht, aber viele Aspekte wie die Injection in Widgets oder die Dependency Injection innerhalb der \ac{bloc}s unbeantwortet bleibt. Eine technische Forcierung der Struktur eines \ac{bloc} ist nur teilweise erkennbar, da die Verwendung von \texttt{StreamBuilder} die Existenz von \texttt{Stream}s voraussetzt. Weitere technische Forcierungen der Struktur sind auch mangels des Einsatzes einer Bibliothek nicht zu erkennen.
Daher wird die Strukturbestimmung mit \textquote{teilweise erfüllt} bewertet.

@ -34,7 +34,7 @@ Dieser Ansatz konnte nicht die Mindestanforderungen an die Beispielanwendung ums
ohne Zustandsverwaltung & n. a. & n. a. & 1;2 & 83 & n. a. & n. a. & n.a. \\
setState & \multicolumn{7}{c}{nicht umsetzbar} \\
InheritedWidget & / & \cmark & 8;6 & 83 & \xmark & / & \xmark \\
\ac{bloc} & \cmark & \cmark & 8;4 & 82 & TBD & TBD & TBD \\
\ac{bloc} & \cmark & \cmark & 8;4 & 82 & \xmark & \cmark & / \\
Provider & TBD & TBD & TBD & TBD & TBD & TBD & TBD \\
Riverpod & TBD & TBD & TBD & TBD & TBD & TBD & TBD \\
Redux & TBD & TBD & TBD & TBD & TBD & TBD & TBD \\

Loading…
Cancel
Save