Update presentation

main
Jonas Franz 2 years ago
parent 56a46d371a
commit ad7e4466a9
  1. 327
      presentation/bibliography.bib
  2. 80
      presentation/presentation.tex

@ -0,0 +1,327 @@
@misc{osDist,
title = {Mobile Operating System Market Share Worldwide},
url = {https://gs.statcounter.com/os-market-share/mobile/worldwide},
journal = {StatCounter Global Stats},
month = {12},
year = {2021},
publisher = {StatCounter},
urldate = {2021-12-25}
}
@misc{flutterFirstRelease,
author = {Bracken, Chris},
url = {https://github.com/flutter/flutter/releases/tag/v0.0.6},
title = {v0.0.6: Rev alpha branch version to 0.0.6, flutter 0.0.26},
year = {2017},
urldate = {2022-01-04}
}
@misc{flutterSupportedPlatforms,
author = {{Google LLC}},
title = {Supported platforms},
url = {https://docs.flutter.dev/development/tools/sdk/release-notes/supported-platforms},
year = {2022},
urldate = {2022-01-04}
}
@misc{flutterStateManagement,
author = {{Google LLC}},
title = {List of state management approaches},
year = {2021},
url = {https://docs.flutter.dev/development/data-and-backend/state-mgmt/options},
urldate = {2022-01-07}
}
@InProceedings{experienceOfDevelopingFlutter,
author="Kuzmin, Nikita
and Ignatiev, Konstantin
and Grafov, Denis",
editor="Kim, Kuinam J.
and Kim, Hye-Young",
title="Experience of Developing a Mobile Application Using Flutter",
booktitle="Information Science and Applications",
year="2020",
publisher="Springer Singapore",
address="Singapore",
pages="571--575",
abstract="The development of mobile applications always implies the development of two versions---for Android and for iOS. Flutter, new technology from Google, allows you to build applications for both systems from single code base. At the same time it saves possibility to create native part of applications. In this article we describe our experience of using this technology to create a mobile application for investment hotels.",
isbn="978-981-15-1465-4"
}
@Book{flutterInAction,
author = {Windmill, Eric},
publisher = {Manning Publications},
title = {Flutter in Action},
year = {2020},
address = {New York, Vereinigte Staaten von Amerika},
isbn = {9781617296147},
}
@Book{managingStateInFlutter,
author = {Arshad, Waleed},
publisher = {Packt Publishing},
title = {Managing State in Flutter Pragmatically},
year = {2021},
isbn = {1801070776},
month = nov,
ean = {9781801070775},
pagetotal = {246},
url = {https://www.ebook.de/de/product/41926143/waleed_arshad_managing_state_in_flutter_pragmatically.html},
}
@misc{sdkPopular,
author = {{Appfigures}},
title = {The Most Popular Development SDKs},
year = {2022},
month = {jan},
url = {https://appfigures.com/top-sdks/development/all},
urldate = {2022-01-12}
}
@Article{flutterFirstBeta,
author = {Ron Amadeo},
journal = {Ars Technica},
title = {{Google starts a push for cross-platform app development with Flutter SDK}},
year = {2018},
month = feb,
timestamp = {2018-02-27},
url = {https://arstechnica.com/gadgets/2018/02/google-starts-a-push-for-cross-platform-app-development-with-flutter-sdk/},
urldate = {2022-01-12},
}
@MastersThesis{reactNativeVsFlutter,
author = {Wu, Wenhao},
school = {Metropolia University of Applied Sciences},
title = {{React Native vs Flutter, cross-platform mobileapplication frameworks}},
year = {2018},
month = mar,
type = {Bachelorthesis},
}
@Misc{dartTypes,
author = {{Google LLC}},
title = {{The Dart type system}},
url = {https://dart.dev/guides/language/type-system},
urldate = {2022-01-12},
year = {2021},
}
@Misc{flutterArch,
author = {{Google LLC}},
title = {Architectural overview},
url = {https://docs.flutter.dev/resources/architectural-overview},
urldate = {2022-01-12},
year = {2021},
}
@Misc{inheritedModel,
author = {{Google LLC}},
title = {InheritedModel class - widgets library - Dart API},
year = {2021},
url = {https://api.flutter.dev/flutter/widgets/InheritedModel-class.html},
urldate = {2022-01-23},
}
@Misc{changeNotifier,
author = {{Google LLC}},
title = {ChangeNotifier class - foundation library - Dart API},
year = {2021},
url = {https://api.flutter.dev/flutter/foundation/ChangeNotifier-class.html},
urldate = {2022-01-27},
}
@PhdThesis{Faust,
author = {Sebastian Faust},
school = {Technische Hochschule Köln},
title = {Using Google´s Flutter Framework for the Development of a Large-Scale Reference Application},
year = {2020},
type = {Bachelor Thesis},
language = {en},
pages = {85},
url = {https://nbn-resolving.org/urn:nbn:de:hbz:832-epub4-14989},
}
@Conference{blocTalk,
author = {Paolo Soares},
booktitle = {DartConf 2018},
title = {{Flutter / AngularDart – Code sharing, better together}},
year = {2018},
url = {https://www.youtube.com/watch?v=PLHln7wHgPE},
urldate = {2022-01-23},
}
@PhdThesis{stateManagementThesis,
author = {Dmitrii Slepnev},
school = {South-Eastern Finland University of Applied Sciences},
title = {State management approaches in Flutter},
year = {2020},
type = {Bachelor Thesis},
language = {en},
url = {https://nbn-resolving.org/urn:nbn:de:hbz:832-epub4-14989},
}
@Article{riverpodArticle,
author = {Greenberg, Benjamin L and Howell, Spencer L and Miles, Tucker R and Tang, Vicki and Troutman, Daniel N},
journal = {Chancellor’s Honors Program Projects},
title = {Attendio: Attendance Tracking Made Simple},
year = {2021},
url = {https://trace.tennessee.edu/utk_chanhonoproj/2432},
urldate = {2022-01-30},
}
@Book{redux,
author = {Garreau, Marc and Faurot, Will},
title = {Redux in action},
publisher = {Manning Publications Co},
year = {2018},
address = {Shelter Island, NY},
isbn = {9781617294976}
}
@Inbook{mobx,
author="Mezzalira, Luca",
title="MobX: Simple State Management",
bookTitle="Front-End Reactive Architectures: Explore the Future of the Front-End using Reactive JavaScript Frameworks and Libraries",
year="2018",
publisher="Apress",
address="Berkeley, CA",
pages="129--158",
abstract="After a deep dive into the first reactive framework, we can continue our journey discovering others' reactive architectures, reviewing a flexible and easy-to-use state management system like MobX.",
isbn="978-1-4842-3180-7",
doi="10.1007/978-1-4842-3180-7_5",
url="https://doi.org/10.1007/978-1-4842-3180-7_5"
}
@Inbook{Balzert2009,
author="Balzert, Helmut",
title="Anforderungen und Anforderungsarten",
bookTitle="Lehrbuch der Softwaretechnik: Basiskonzepte und Requirements Engineering",
year="2009",
publisher="Spektrum Akademischer Verlag",
address="Heidelberg",
pages="455--474",
abstract="Bevor ein Softwaresystem entwickelt werden kann, muss festgelegt werden, welche Anforderungen es erf{\"u}llen soll.",
isbn="978-3-8274-2247-7",
doi="10.1007/978-3-8274-2247-7_16",
url="https://doi.org/10.1007/978-3-8274-2247-7_16"
}
@article{rosenberg1997software,
title={Software quality metrics for object-oriented environments},
author={Rosenberg, Linda H and Hyatt, Lawrence E},
journal={Crosstalk journal},
volume={10},
number={4},
pages={1--6},
year={1997},
url={http://people.ucalgary.ca/~far/Lectures/SENG421/PDF/oocross.pdf},
urldate={2022-02-08}
}
@article{mi,
author = {Welker, Kurt D. and Oman, Paul W. and Atkinson, Gerald G.},
title = {Development and Application of an Automated Source Code Maintainability Index},
journal = {Journal of Software Maintenance: Research and Practice},
volume = {9},
number = {3},
pages = {127-159},
keywords = {software metrics, source code degradation, maintainability index, software quality assurance, re-engineerng, maintainability case studies},
doi = {https://doi.org/10.1002/(SICI)1096-908X(199705)9:3<127::AID-SMR149>3.0.CO;2-S},
url = {https://onlinelibrary.wiley.com/doi/abs/10.1002/%28SICI%291096-908X%28199705%299%3A3%3C127%3A%3AAID-SMR149%3E3.0.CO%3B2-S},
eprint = {https://onlinelibrary.wiley.com/doi/pdf/10.1002/%28SICI%291096-908X%28199705%299%3A3%3C127%3A%3AAID-SMR149%3E3.0.CO%3B2-S},
year = {1997}
}
@misc{miDart,
author = {Krutskikh, Dmitry},
title = {Maintainability Index - Dart Code Metrics},
year = {2021},
url = {https://dartcodemetrics.dev/docs/metrics/maintainability-index},
urldate = {2022-01-11}
}
@misc{repo,
author = {Franz, Jonas},
title = {thesis\_shop: An example application to evaluate state management in Flutter},
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}
}
@misc{providerReadme,
author = {Rousselet, Remi},
title = {Provider's README.md},
year = {2022},
url = {https://github.com/rrousselGit/provider/blob/eac827630a5f330c86857e4e13113aacdca759bc/README.md},
urldate = {2022-02-22},
}
@misc{riverpodDocs,
author = {Rousselet, Remi},
title = {Getting Started - Riverpod},
year = {2022},
url = {https://riverpod.dev/de/docs/getting_started/},
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}
}
@misc{mobxDocs,
author = {Podila, Pavan},
title = {Core Concepts - mobx.dart},
year = {2021},
url = {https://mobx.netlify.app/concepts},
urldate = {2022-02-25},
}
@phdthesis{testingThesis, title={Evaluation of The Software Development Process for A Multi-Platform Solution in Flutter}, url={http://urn.kb.se/resolve?urn=urn:nbn:se:hj:diva-54302}, urldate={2022-02-25}, author={Andersson, Dennis and Axelsson, Axel}, year={2021},
type = {Bachelor Thesis} }
@misc{flutterTesting,
author = {{Google LLC}},
title = {Testing Flutter apps},
year = {2021},
url = {https://docs.flutter.dev/testing},
urldate = {2022-02-25},
}
@misc{providerPub,
author = {{Google LLC}},
title = {pub.dev Entry of Provider},
year = {2022},
url = {https://pub.dev/packages/provider},
urldate = {2022-02-25},
}
@misc{pubRanking,
author = {{Google LLC}},
title = {Liste der Flutter-Packete auf pub.dev sortiert nach Anzahl der Likes},
url = {https://pub.dev/packages?q=sdk%3Aflutter&sort=like},
urldate = {2022-02-25},
}
@misc{appState,
author = {{Google LLC}},
title = {Differentiate between ephemeral state and app state},
year = {2022},
url = {https://docs.flutter.dev/development/data-and-backend/state-mgmt/ephemeral-vs-app},
urldate = {2022-03-19},
}
@Comment{jabref-meta: databaseType:bibtex;}

@ -11,12 +11,18 @@
\usepackage{csquotes}
\usepackage{tikz}
\usepackage[natbib=true, style=alphabetic,dateabbrev=false]{biblatex}
\addbibresource{../bibliography.bib}
\addbibresource{bibliography.bib}
\usetikzlibrary{positioning}
\usetikzlibrary{matrix}
\usetikzlibrary{arrows}
\usetikzlibrary{fit}
\usepackage{amssymb}% http://ctan.org/pkg/amssymb
\usepackage{pifont}% http://ctan.org/pkg/pifont
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\usetheme{metropolis}
\title{Evaluation von Zustandsverwaltungssystemen für das mobile Cross-Plattform-Framework Flutter}
@ -218,6 +224,78 @@
\item Metrik: qualitativ (nicht-/teilweise-/vollständig erfüllt)
\end{itemize}
\end{frame}
\section{Versuchsaufbau}
\begin{frame}{Versuchsaufbau}
\begin{itemize}
\item Implementierung einer Beispiel-Anwendung
\item Ziel: Grundlage für die Evaluation anhand der Bewertungskriterien
\item Maintainability Index wird automatisiert erfasst
\item Die Effizienz wird über eine automatisierte Teststrecke gemessen
\begin{itemize}
\item zwei Messstellen: Warenkorb-Button und Anmeldeschalter
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Demo}
Demonstration
\end{frame}
\section{Ergebnisse}
\begin{frame}{setState}
\begin{itemize}
\item Verwendung des \texttt{StatefulWidget} zum Speichern des Zustands
\item Zustände müssen im Widget-Baum durchgereicht werden
\item Umsetzung der Beispielanwendung war nicht möglich, da ein Zustand nicht über mehrere Seiten hinweg konsistent gehalten werden konnte
\end{itemize}
\end{frame}
\begin{frame}{InheritedWidget}
\begin{itemize}
\item Verwendung des \texttt{InheritedWidget} zum Speichern des Zustands
\item Verwendung von \texttt{StatefulWidget}s zum aktualiseren des \texttt{InheritedWidget}
\end{itemize}
\end{frame}
\begin{frame}{Ergebnisse: InheritedWidget}
\begin{table}
\centering
\begin{tabular}{cc}
\hline
Metrik & Ergebnis \\
\hline
Änderbarkeit/Skalierbarkeit & teilweise erfüllt \\
Testbarkeit & teilweise erfüllt \\
Effizienz & Warenkorb-Button: 8; Anmeldeschalter: 6 \\
Komplexität/Wartbarkeit & 83 \\
Verständlichkeit/Lesbarkeit & nicht erfüllt \\
Dokumentierung & teilweise erfüllt \\
Strukturbestimmung & nicht erfüllt\\
\hline
\end{tabular}
\end{table}
\end{frame}
\begin{frame}{Business Logic Components (BLoC)}
\begin{itemize}
\item Komplette Trennung von Geschäftslogik und Benutzeroberfläche \autocite{Faust}
\item Verwendung von \texttt{StatefulWidget}s zum aktualiseren des \texttt{InheritedWidget}
\end{itemize}
\end{frame}
\begin{frame}{Ergebnisse: BLoC}
\begin{table}
\centering
\begin{tabular}{cc}
\hline
Metrik & Ergebnis \\
\hline
Änderbarkeit/Skalierbarkeit & teilweise erfüllt \\
Testbarkeit & teilweise erfüllt \\
Effizienz & Warenkorb-Button: 8; Anmeldeschalter: 6 \\
Komplexität/Wartbarkeit & 83 \\
Verständlichkeit/Lesbarkeit & nicht erfüllt \\
Dokumentierung & teilweise erfüllt \\
Strukturbestimmung & nicht erfüllt\\
\hline
\end{tabular}
\end{table}
\end{frame}
\section{Fazit}
\begin{frame}[noframenumbering,plain,allowframebreaks]{Quellen}
\AtNextBibliography{\tiny}
\printbibliography[heading=none]

Loading…
Cancel
Save