<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Beiträge von Mario Zeller - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/it201527/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/it201527/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Thu, 03 Mar 2022 14:45:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://mobile.fhstp.ac.at/wp-content/uploads/2025/03/icon-120x120.webp</url>
	<title>Beiträge von Mario Zeller - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/it201527/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Sensor Library</title>
		<link>https://mobile.fhstp.ac.at/development/sensor-library/</link>
		
		<dc:creator><![CDATA[Mario Zeller]]></dc:creator>
		<pubDate>Thu, 03 Mar 2022 09:59:13 +0000</pubDate>
				<category><![CDATA[Cross Plattform]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9852</guid>

					<description><![CDATA[<p>Sensor Library Innerhalb des 3ten Semesters haben wir, die Masterklasse Mobile, die Aufgabe ein Gruppenprojekt umzusetzten. Zusammen wurde entschieden, dieses mit Flutter umzusetzen. Eine Flutter Library, welche verschiedene Sensoren auslesen kann und roh oder interpretiert zurückgibt. https://github.com/hraschan/flutter_sensor_library Außerdem haben wir uns hier entschieden, dass es eine “Beispiel App” dafür geben soll, die die Anwendung der <a class="read-more" href="https://mobile.fhstp.ac.at/development/sensor-library/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/sensor-library/">Sensor Library</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Sensor Library</h1>



<p>Innerhalb des 3ten Semesters haben wir, die Masterklasse Mobile, die Aufgabe ein Gruppenprojekt umzusetzten. Zusammen wurde entschieden, dieses mit Flutter umzusetzen. Eine Flutter Library, welche verschiedene Sensoren auslesen kann und roh oder interpretiert zurückgibt.</p>



<p><a href="https://github.com/hraschan/flutter_sensor_library">https://github.com/hraschan/flutter_sensor_library</a></p>



<p>Außerdem haben wir uns hier entschieden, dass es eine “Beispiel App” dafür geben soll, die die Anwendung der Library präsentiert.</p>



<p><a href="https://github.com/hraschan/flutter_sensor_library_app">https://github.com/hraschan/flutter_sensor_library_app</a></p>



<h2 class="wp-block-heading">Flutter</h2>



<p>Da wir alle zuvor kaum bis gar keine Erfahrung mit Flutter gemacht haben, wurde von Mario und Maximilian ein Workshop vorbereitet, der uns die Grundlagen präsentiert hat und in welchem wir gemeinsam das Setup des Projekts durchführten.</p>



<p>Flutter an sich ist ein Open-Souce-Framework von Google, das zur Erstellung von nativ kompilierten Anwendungen verwendet wird. Bei Flutter gibt es viele Bibliotheken für Standard-UI-Elemente, die bei Android oder iOS benötigt werden. Für Desktop Webanwendungen kann das Framework auch eingesetzt werden.</p>



<p>Das Framework wird also primär für iOS und Android Applikationen verwendet. Für die Entwicklung wird die Programmiersprache “Dart” verwendet, diese wurde ebenfalls von Google entwicklet.</p>



<h2 class="wp-block-heading">Was kann die Library</h2>



<p>Die Library bietet verschiedene Klassen und Methodensammlungen an, um die Sensoren eines Mobilgeräts nutzen zu können. Dabei beruht sie bei den meisten Sensoren auf bereits vorhandenen Librarys, verarbeitet diese und gibt die Daten, wenn gewünscht, gesammelt an eine Flutter App weiter. Zudem bietet die Library auch interpretierte bzw. aus mehreren Sensoren zusammengefasste Daten, wie bspw. die Höhenmeter an, die aus dem aktuellen Luftdruck (Barometer) und dem Luftdruck auf Seehöhe ausgerechnet werden.</p>



<p>Aufgerufen kann die Funktionalität über gewisse Wrapper-Klassen, je nachdem ob Bewegungs-Daten (Movement), Positions-Daten (Position) oder Umgebungs-Daten (Environment) benötigt werden. Außerdem können die nativen Sensoren einzeln aufgerufen werden. Dabei muss immer angegeben werden, in welchem Zeitintervall die jeweilige Klasse Daten zurückliefern soll.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
Movement mvmnt = Movement(inMillis: 2000);
mvmnt.getMovementType(true).forEach((element) {print(element.fwd);});

</pre></div>


<p>Mit diesem einfachen Code-Beispiel kann alle 2 Sekunden abgefragt werden, ob sich das Gerät in den letzten zwei Sekunden nach vorne bewegt hat. Mit der Übergabe des Boolean (in dem Fall true) kann festgelegt werden, ob die aktuelle Fortbewegung zum Zeitpunkt der Abfrage oder die interpolierten Daten seit der letzten Abfrage wiedergegeben werden sollen.</p>



<h2 class="wp-block-heading">Die Bespielapplikation</h2>



<p>Um die Andwendung der Library zu vereinfachen, wurde ein Beispielapplikation geschaffen, welche die einzelnen Verwendungszwecke zeigen soll. Hier einige Screenshots der Anwendung:</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="257" height="529" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/03/grafik-2.png" alt="" class="wp-image-9856"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="258" height="529" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/03/grafik-1.png" alt="" class="wp-image-9855"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="313" height="643" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/03/grafik-3.png" alt="" class="wp-image-9857"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="313" height="643" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/03/grafik-5.png" alt="" class="wp-image-9859"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="313" height="643" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/03/grafik-7.png" alt="" class="wp-image-9862"/></figure>
</div>
</div>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="289" height="642" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/03/grafik-4.png" alt="" class="wp-image-9858"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="290" height="643" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/03/grafik-8.png" alt="" class="wp-image-9863"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="289" height="643" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/03/grafik-9.png" alt="" class="wp-image-9864"/></figure>
</div>
</div>



<h2 class="wp-block-heading">Personal Learnings</h2>



<h3 class="wp-block-heading">Armin</h3>



<p>Mein Learning aus dem Gruppenprojekt ist die Einführung in Flutter. Ich habe mit diesem Framework zuvor noch keine Projekte umsetzen können. Ehrlichgesagt finde ich das Framework recht unübersichtlich und ich finde es gibt Frameworks, die um Einiges besser konzipiert sind als Flutter. Dennoch habe ich dieses Learning für die Zukunft mitnehmen können und da Flutter recht bekannt ist, ist auch diese Erfahrung von Wert.</p>



<h3 class="wp-block-heading">Bettina</h3>



<p>Für mich war Flutter vollkommenes Neuland. Bei diesem Projekt konnte ich hier einiges lernen. Von Projektstruktur über Codeaufbau, Widget Aufbau, Verwendung von Libraries sowie die Nutzung verschiedener Simulatoren.</p>



<h3 class="wp-block-heading">Mario</h3>



<p>Die Vertiefung der Kenntnisse in Flutter nach dem gemeinsamen Workshop mit Maximilian ist bestimmt ein großer Lernzugewinn. Die Nutzung der Sprache Dart ist doch etwas ungewohnt, obwohl sie sehr an JavaScript angelehnt ist. Außerdem konnte ich bei der Konzeption einer Library sehr viel dazulernen. Die Erarbeitung einer Library und die Vorstellung anderer Entwickler<em>innen als Nutzer</em>innen des eigenen Programms stellt einen Lerneffekt dar, den man in anderen Projektkontexten so nicht hat.</p>



<h3 class="wp-block-heading">Maxi</h3>



<p>Für mich hat dieses Projekt vor allem einen tieferen Einblick in Flutter ermöglicht. Auch habe ich das aufbauen einer eigenen Library bis jetzt noch nicht in dieser Form kennengelernt. Ich denke jedoch das es noch einiger Zeit bedarf um gute Lösungen mit der Technologie Flutter entwickeln zu können</p>



<h3 class="wp-block-heading">Thomas</h3>



<p>Bis zum Workshop von Mario und Maxi kannte ich weder Flatter noch Dart. Durch den Workshop konnte ich mir ein gutes Grundwissen aneignen und anschließend im Rahmen des Projekts tiefer in die Materie einsteigen. Im Großen und Ganzen habe ich einen guten Überblick über Flutter, Dart und verschiedener Sensoren bekommen.</p>



<h3 class="wp-block-heading">Sebastian</h3>



<p>Die Zusammenarbeit mit Mario und Maxi während der Ausarbeitung des Backends hat mir einige neue Erkenntnisse gebracht. Sowohl mit Flutter als auch mit Dart hatte ich vor diesem Projekt wenig zu tun gehabt. Daher war es für mich sehr erkenntnisreich, ein Projekt umzusetzen, beziehungsweise daran beteiligt zu sein. Auch der Gedanke eine eigene Library zu erstellen war für mich interessant, da ich diesen Aspekt des Programmierens bis dato nur von der anderen Seite gekannt habe. Ich bin gespannt, ob die Library in irgendeiner Form einen späteren Verwendungszweck finden wird.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/sensor-library/">Sensor Library</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Face it &#8211; Für umweltfreundlichere Mobilität (Projektdoku)</title>
		<link>https://mobile.fhstp.ac.at/studium/studium-projekte/face-it-fuer-umweltfreundlichere-mobilitaet-projektdoku/</link>
		
		<dc:creator><![CDATA[Mario Zeller]]></dc:creator>
		<pubDate>Sun, 20 Feb 2022 18:22:58 +0000</pubDate>
				<category><![CDATA[Cross Plattform]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure App Services]]></category>
		<category><![CDATA[Mobilität]]></category>
		<category><![CDATA[Nachhaltigkeit]]></category>
		<category><![CDATA[Progressive Web App]]></category>
		<category><![CDATA[Strapi]]></category>
		<category><![CDATA[Tailwind CSS]]></category>
		<category><![CDATA[Vue]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9535</guid>

					<description><![CDATA[<p>Dieser Artikel stellt den Entwicklungsprozess der Applikation Face it dar, die für die Testungen im Rahmen meiner Masterarbeit erstellt wurde. Die Applikation soll dazu dienen, die Nutzer*innen dazu zu motivieren, umweltfreundlicher Verkehrsmittel zu nutzen und sich nachhaltiger fortzubewegen. Verwendete Technologien Das Design wurde zunächst in Figma für die benötigten Screens erstellt und mit einigen Kollegen <a class="read-more" href="https://mobile.fhstp.ac.at/studium/studium-projekte/face-it-fuer-umweltfreundlichere-mobilitaet-projektdoku/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studium-projekte/face-it-fuer-umweltfreundlichere-mobilitaet-projektdoku/">Face it &#8211; Für umweltfreundlichere Mobilität (Projektdoku)</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Dieser Artikel stellt den Entwicklungsprozess der Applikation <em>Face it</em> dar, die für die Testungen im Rahmen meiner Masterarbeit erstellt wurde. Die Applikation soll dazu dienen, die Nutzer*innen dazu zu motivieren, umweltfreundlicher Verkehrsmittel zu nutzen und sich nachhaltiger fortzubewegen.</p>



<h2 class="wp-block-heading">Verwendete Technologien</h2>



<p>Das Design wurde zunächst in Figma für die benötigten Screens erstellt und mit einigen Kollegen reviewt. Dabei wurden einige Anpassungen vorgenommen. Darauffolgend wurde anhand der Design-Vorlage mit der Erstellung der Applikation begonnen.</p>



<p>Die App basiert auf einem Backend, welches mit Strapi, einem Headless Content Management System, erstellt wurde. Darin können, wie von einem CMS bekannt, in einem designtem UI beispielsweise Texte und Bilder hochgeladen und bearbeitet werden, die dann auf der Webseite angezeigt werden sollen. Anders als bei normalen CM-Systemen, werden die Seiten aber nicht direkt im CMS gebaut, sondern können per API von einem selbst-gebauten Frontend aufgerufen werden. Das Content-Management-System liefert bei Aufruf der richtigen URL wie eine API die Daten im JSON-Format. Das Frontend, die Annahme und Verarbeitung der JSON-Daten und das Design, müssen selbst in die Hand genommen werden. Dies verlangt wesentlich größere Erfahrung im Umgang mit Webentwicklung, bietet allerdings auch wesentlich mehr Freiheit im Design. Außerdem macht es unabhängig von diversen Bezahlmodellen.</p>



<p>Um die Datenverarbeitung im Frontend gering zu halten, wurde ein DataProvider-Service, welches mit einer .NET 5 API in C# umgesetzt wurde, zwischengeschaltet. Dieses übernimmt die Daten von Strapi, verarbeitet sie für das Frontend und bietet diese über eine weitere API an. Durch die Effizienz der Applikation geht somit nicht viel Zeit verloren, es konnte jedoch einiges an Flexibilität und Wartbarkeit gewonnen werden. </p>



<p>Das Frontend in VueJS der Version 3 enthält somit nicht viel Logik, sondern beschränkt sich hauptsächlich auf die Darstellung der Daten und die Weitergabe der Nutzer-Eingaben ans Backend, die in der ersten Version noch nicht besonders groß ausfallen. Das Styling wurde großteils mithilfe des Styling-Frameworks Tailwind CSS durchgeführt, wodurch nahezu gar keine Zeile CSS notwendig war. Außerdem wurde sich für die Umsetzung mit der Vue 3 Composition API, im Gegensatz zur bisher gebräuchlichen Options API entschieden.</p>



<h2 class="wp-block-heading">Aufbau</h2>



<p>Der Startscreen zeigt das Logo mit dem Titel und Untertitel der App, sowie alle Navigationsmöglichkeiten der App. Man kann sich die Liste an verfügbaren Quizzes anzeigen lassen, sowie seine Challenges zu einer nachhaltigeren Mobilität ansehen. Außerdem befindet sich in der linken oberen Ecke ein Hamburger-Menü, worüber man von jeder Seite aus auf die drei Hauptseiten <em>Home, Quizzes und Challenges</em> wechseln kann.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="378" height="634" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2022/02/image-13.png" alt="" class="wp-image-9546"/><figcaption>Die Startseite</figcaption></figure>



<p>Auf der Quizzes-Seite sieht man alle verfügbaren Quizzes und kann sie starten, indem man den Namen des jeweiligen Quizzes anklickt. Daraufhin öffnet sich das Quiz und die erste Frage wird gestellt. Es besteht in der ersten Version kein Zeitlimit. Nach Anklicken einer Antwortmöglichkeit wird aufgelöst, ob die Antwort korrekt ist und wenn nicht, welche die korrekte Antwortmöglichkeit ist. Außerdem wird eine nähere Erläuterung zum Thema angeboten. Nach Ablauf von 5 Sekunden wird die nächste Frage angezeigt. Wenn alle Fragen beantwortet wurden, kann über einen Button zur Liste der Quizzes zurückgekehrt werden.</p>



<p>Auf der Challenges-Seite sind alle für den jeweiligen Nutzer / die jeweilige Nutzerin verfügbaren Challenges und deren Status zu sehen. Per Klick auf eine Challenge kann diese abgeschlossen bzw. wieder geöffnet werden.</p>



<h2 class="wp-block-heading">Learnings</h2>



<p>Den größten Lerneffekt hatte wohl die Nutzung von Azure App Services als Veröffentlichungsplattform für das Data-Provider-Service basierend auf .NET. Da ich vor diesem Projekt noch nie eine Applikation persönlich auf Azure gehostet habe, konnte ich durch dieses Projekt nun sehr viel dazulernen. Auch einige Herausforderungen mit CORS und der Middleware haben mich Azure und die Möglichkeiten von .NET näher erkunden lassen.</p>



<p>Ein weiteres selbst gestecktes Ziel war die Verringerung der Komplexität des Frontends. Mit einem headless CMS im Backend müssen oft viele Datenanpassungen im Frontend vorgenommen werden. Diese konnten durch das .NET Service als Businesslayer verringert werden. Mithilfe der erstmaligen Nutzung von Tailwind CSS war außerdem nahezu kein selbstgeschriebenes CSS notwendig. Lediglich die Animationen wurden selbst geschrieben. Durch die sprechenden Klassennamen, die Tailwind in HTML verwendet, bleibt der Code weiterhin gut lesbar. Insgesamt wurden ca. 240 Zeilen Javascript-Code und ohne Animation (denn die hätte man auch in Tailwind bauen können) 19 Zeilen CSS benötigt.</p>



<p>Außerdem habe ich mich bei der Implementierung des Frontends mit Vue 3 Großteils auf die Nutzung der neuen Composition API beschränkt, einer neuen Art, Vue zu implementieren. Diese weist große Unterschiede zur bisherigen Options API auf und hat vor diesem Projekt einige Unsicherheiten mit neuem Vue-Code in mir ausgelöst. Diese konnte ich mit diesem Projekt beseitigen.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studium-projekte/face-it-fuer-umweltfreundlichere-mobilitaet-projektdoku/">Face it &#8211; Für umweltfreundlichere Mobilität (Projektdoku)</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Visual Studio 2022 &#8211; Wichtigste Neuerungen und was sie bewirken</title>
		<link>https://mobile.fhstp.ac.at/development/visual-studio-2022-wichtigste-neuerungen-und-was-sie-bewirken/</link>
		
		<dc:creator><![CDATA[Mario Zeller]]></dc:creator>
		<pubDate>Sun, 20 Feb 2022 16:42:23 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Changes]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Visual Studio 2022]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9500</guid>

					<description><![CDATA[<p>Im November 2021 wurde die bereits länger angekündigte neue Version 2022 des IDE-Klassikers Visual Studio veröffentlicht. Damit ergeben sich einige Neuerungen für alle Entwickler*innen, die diese IDE für ihre Arbeit nutzen. Vor allem sind Verbesserungen unter den Änderungen zu finden. In diesem Artikel werden die wichtigsten Neuerungen vorgestellt und welche Auswirkungen diese auf die Arbeit <a class="read-more" href="https://mobile.fhstp.ac.at/development/visual-studio-2022-wichtigste-neuerungen-und-was-sie-bewirken/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/visual-studio-2022-wichtigste-neuerungen-und-was-sie-bewirken/">Visual Studio 2022 &#8211; Wichtigste Neuerungen und was sie bewirken</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Im November 2021 wurde die bereits länger angekündigte neue Version 2022 des IDE-Klassikers Visual Studio veröffentlicht. Damit ergeben sich einige Neuerungen für alle Entwickler*innen, die diese IDE für ihre Arbeit nutzen. Vor allem sind Verbesserungen unter den Änderungen zu finden. In diesem Artikel werden die wichtigsten Neuerungen vorgestellt und welche Auswirkungen diese auf die Arbeit mit VS 2022 haben.</p>



<h2 class="wp-block-heading">Allgemeine Neuerungen</h2>



<h3 class="wp-block-heading">64-bit</h3>



<p>Visual Studio 2022 läuft nun, anders als seine Vorgänger, die nur 32-bit anboten, ausschließlich mit einer <strong>64-bit-Version</strong>. Das soll laut Microsoft vor allem Vorteile für große Solutions, da durch die Verwendung von 64-bit mehr als 4 GB RAM zur Verfügung stehen. Dabei sollen Testungen mit Solutions, die über 16.000 Projekte beinhalten, gemacht worden sein. Gleichzeitig können durch diese Änderung allerdings auch Fehler auftreten. Durch die jahrelange Exklusivität der 32-bit-Version könnten in Projekten z.B. einige Ordnerpfade <em>hardcoded </em>auf 32-bit-Dateien verweisen, die nun nicht mehr gültig sind. Deswegen ist bei dieser Änderung besondere Vorsicht geboten.</p>



<h3 class="wp-block-heading">Öffnen der Solutions schneller</h3>



<p>Zudem werden <strong>Solutions beim Öffnen nun um einiges schneller geladen</strong> und oft erst später benötigte Features im Laufe der Nutzung nachgeladen. In der alltäglichen Nutzung macht sich dies schnell bemerkbar. Vor allem bei großen Solutions mit fast 30 Projekten musste man mit den Versionen 2019 und davor oft minutenlang warten, um vielleicht nur eine einzige Code-Zeile zu betrachten.</p>



<h3 class="wp-block-heading">Unterstützte .NET-Versionen</h3>



<p>Die unterstützten .NET-Versionen haben sich geändert. Beim Urahnen der .NET-Familie .NET Framework wurde die letzte unterstützte Version auf 4.6.2 angehoben. Außerdem bietet Visual Studio 2022 nun vollen Support für das neue .NET 6. Aber was bedeutet das, wenn die IDE eine Version nicht mehr oder nun vollständig unterstützt? Dazu findet man keine klaren Angaben seitens Microsoft. In der Doku über <a href="https://docs.microsoft.com/en-us/visualstudio/ide/visual-studio-multi-targeting-overview?view=vs-2022#framework-targeting-features">Framework Targeting</a> lässt sich allerdings herauslesen, dass der Support hauptsächlich für die korrekte Kompilierung der jeweiligen .NET-Version relevant ist. Denn, wenn die IDE die Version unterstützt, wird auch die richtige Compiler-Version mit den richtigen Optionen angewandt. Weiters kann es sein, dass die Optionen im Kontext-Menü, in den Properties, in der Toolbox und anderen Menüs oder die Vorschläge von IntelliSense nicht an die Verfügbarkeit der jeweiligen .NET-Version angepasst sind. Das bedeutet, dass womöglich Vorschläge angeboten werden, die in der jeweiligen Version noch nicht/nicht mehr funktionieren.</p>



<h3 class="wp-block-heading">Weitere allgemeine Änderungen</h3>



<p>Weitere Änderungen sind der <strong>Multi-Repo-Support</strong>, wonach man nun mehrere Repositories in einer Solution konfigurieren kann. Außerdem verspricht das Visual Studio-Team einen <strong>bessere MacOS-Experience</strong>, <strong>verbesserte GIT-Tools zum Lösen von Konflikten</strong> und <strong>verbesserten C++-Support</strong>.</p>



<h2 class="wp-block-heading">UI/Desing-Anpassungen</h2>



<h3 class="wp-block-heading">Änderung der Standardschriftart</h3>



<p>Die Standardschriftart wurde von <em>consolas </em>auf <em>cascadia code</em> geändert. Die neue Schriftart unterstützt standardmäßig Code-Ligaturen. Dabei werden z.B. die beiden Zeichen ! und = automatisch zu einem Ungleich zusammengefügt. Wem die Schriftartanpassung nicht passt, kann die Schriftarten relativ einfach umstellen. Unter Tools &#8211;&gt; Options &#8211;&gt; Fonts and Colors lässt sich einiges personalisieren.</p>



<figure class="wp-block-image"><img decoding="async" src="https://docs.microsoft.com/en-us/typography/font-list/images/consolas_01.png" alt="Consolas Regular"/><figcaption>Consolas</figcaption></figure>



<figure class="wp-block-image"><img decoding="async" src="https://imgs4.fontbrain.com/imgs/be/44/24ae2b9025062ed0ef751ed23afb/fsl-720-30-333333.png" alt="Cascadia Code Regular free font"/><figcaption>Cascadia Code</figcaption></figure>



<h3 class="wp-block-heading">Night Light</h3>



<p>Außerdem wurde das sogenannte <strong><em>night light</em>-Feature</strong> eingeführt. Somit lässt sich nun das Design von Visual Studio an das derzeit eingestellte Design des Betriebssystems anpassen. Dazu muss in den Einstellungen unter <em>Tools &#8211;> Options &#8211;> General &#8211;> Color Theme </em>die Option &#8220;Use System Settings&#8221; gewählt werden. Visual Studio verspricht damit auch, dass es sich, wenn so im Betriebssystem konfiguriert, je nach Tageszeit automatisch von Light-Mode in den Dark-Mode umschaltet. Leider konnte ich dieses Feature weder in Windows 10 noch in Windows 11 testen, da ich das Timen zum Umschalten des Farbmodus nicht finden konnte. Von Seiten Visual Studio dürfte es funktionieren: Schaltet man den App-Modus von Windows manuell von Light-Theme auf Dark-Theme, passt sich auch Visual Studio dementsprechend an. Bei MacOS funktioniert dieses Feature laut eigenen Testungen einwandfrei.</p>



<h3 class="wp-block-heading">Fokus auf Personalisierung</h3>



<p>Generell wird bei der Entwicklung von Visual Studio 2022 vermehrt der Fokus auf die Personalisierung des Arbeitsplatzes gelegt. Dies gilt vor allem für die Roadmap von 2022, da viele dieser Ideen noch nicht verfügbar sind. Unter anderem ist die Sortierung der Files nicht nur nach Projekt, sondern nach eigener Ordnung geplant. Zudem, dass Tabs je nach Projekt eingefärbt sind und der aktive Tab fettgedruckt ist, dies soll die Verständlichkeit erleichtern. Außerdem soll man die Breite der Tabs anpassen können.</p>



<h2 class="wp-block-heading">Code-Unterstützungen</h2>



<h3 class="wp-block-heading">IntelliCode</h3>



<p>Ein bahnbrechendes Feature dürfte die Einführung von IntelliCode sein. Der Code-Editor bietet einem beim Beginn einer Code-Zeile KI-basierte Vorschläge an, diese Zeile fertigzustellen. Dabei wurde diese KI nicht nur an von Microsoft zur Verfügung gestelltem Code trainiert. Man kann sie auch an der eigenen Solution trainieren lassen, um die Vorschläge zu verbessern. Im Selbsttest erscheint das Feature als relativ zuverlässig und zeitsparend, jedoch ist es schnell &#8220;beleidigt&#8221;, wenn man die Ideen nicht annimmt und schlägt für derartige Zeilen dann nichts mehr vor. Gut veranschaulichen lässt es sich bei der Injection eines Services. Wenn man ein Property als Instanz des Services initialisiert und einen Übergabeparameter für dasselbe Service im Constructor angibt, so wird einem im Body des Constructors die Code-Zeile vorgeschlagen, die das Property auf die Referenz des Übergabeparameters setzt. In diesem Video wird das <a href="http://devblogs.microsoft.com/visualstudio/discover-quick-action-intellicode">Feature ebenfalls vorgestellt</a>.</p>



<h3 class="wp-block-heading">Find in Files verbessert</h3>



<p>Das <strong>Feature <em>Find in Files</em></strong>, welches mit der Tastenkombination Strg + Shift + F aufgerufen werden kann, wurde um das <strong>Dreifache beschleunigt</strong>. In einer Test-Solution mit 28 Projekten konnte ich sogar eine 4-fache Beschleunigung feststellen. In der folgenden Tabelle wird es mit der neuesten Version von Visual Studio 2019 und den Such-Features der Visual Studio-Erweiterung Resharper verglichen:</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<figure class="wp-block-table is-style-stripes"><table><tbody><tr><td>Suche nach Begriff &#8220;xyz&#8221; in 28 Projekten einer Solution</td><td><strong>VS 2019</strong></td><td><strong>VS 2022</strong></td></tr><tr><td><strong>Strg + T (Resharper)</strong></td><td>4,66 s</td><td>5,79 s</td></tr><tr><td><strong>Strg + Shift + F</strong></td><td>43,87 s (davon 20 s &#8220;keine Rückmeldung&#8221;)</td><td>10,05 s</td></tr><tr><td><strong>Strg + T + T + T (Resharper)</strong></td><td>49,16 s</td><td>52,66 s</td></tr></tbody></table><figcaption>Vergleich der Ladezeiten bei der Suche nach einem beliebigen Begriff in der gesamten Solution, kategorisiert nach Suchtyp per Tastenkombination und nach Visual Studio-Version</figcaption></figure>
</div>
</div>



<h3 class="wp-block-heading">Rich Code Navigation</h3>



<p>Unter den derzeitigen Preview Features ist ebenfalls eine tolle Neuerung zu finden, die das Entwickeln mit Visual Studio in Zukunft um einiges erleichtern könnte: die <strong>Rich Code Navigation</strong> lässt es zu, dass über die üblichen Shortcuts (wie z.B. Strg + Klick auf den Typ) durch Code navigiert werden kann, der sich nicht nur wie bisher in den bereits geklonten, sich in der Solution befindlichen Repositorys befindet, sondern aufgerufen werden kann, ohne ein Repository klonen zu müssen. Dieses Feature konnte ich an keinem persönlichen Projekt testen. Es stellt sich somit die Frage, ob die Repositorys dafür öffentlich oder auf einer gewissen Plattform (z.B. Microsofts Github) verfügbar sein müssen bzw. wie dieses Feature im Allgemeinen funktioniert.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Tipp: Preview Features einschalten</p><p>Die Preview-Features können unter Tools &#8211;&gt; Options &#8211;&gt; Environment &#8211;&gt; Preview Features einzeln aktiviert und deaktiviert werden.</p></blockquote>



<p>Dieses Thema soll laut Roadmap in Zukunft auch Verbesserungen beim Debuggen von dekompilierten Files bringen. Außerdem wurden generelle Verbesserungen der Performance des Debuggers angekündigt. Der Fokus der Weiterentwicklung von Visual Studio im Jahr 2022 liegt somit sowohl auf der Personalisierung des UIs wie oben erwähnt, als auch auf der Verbesserung der Diagnostics und des Debuggings.</p>



<h3 class="wp-block-heading">Weitere Code-Features</h3>



<p>Es besteht jetzt die Möglichkeit, <strong><em>dependent Breakpoints</em> </strong>zu setzen, sprich Breakpoints, die nur aufgerufen werden, wenn eine gewisse Bedingung im Code eintritt bzw. ein gewisser Breakpoint davor erreicht wurde. Außerdem wurde ein <strong>Flame Chart</strong> präsentiert, in dem visualisiert werden kann, welcher Code wie oft läuft. Es wurde ein neuer<strong> Razor-Editor</strong> veröffentlicht, der unter anderem verbessertes Refactoring anbietet (z.B. &#8220;Add missing usings&#8221; in cshtml-Files).</p>



<p>Ein weiteres Feature ist die Möglichkeit, <strong>Hot Reload</strong> zu nutzen, wie bereits aus einigen anderen Entwicklungsumgebungen bekannt. Es funktioniert bis Version .NET 5 nur beim Ausführen der App im Debug-Mode (Shortcut F5), ab .NET 6 auch ohne Debugging (Shortcut Strg + F5). Weitere Infos dazu unter: <a href="https://devblogs.microsoft.com/visualstudio/speed-up-your-dotnet-and-cplusplus-development-with-hot-reload-in-visual-studio-2022/">Speed up your .NET and C++ development with Hot Reload in Visual Studio 2022</a> und <a href="https://docs.microsoft.com/en-us/visualstudio/debugger/hot-reload?view=vs-2022">Write and debug code by using Hot Reload</a>.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Vielen Dank an Christian Lascsak für die gemeinsame Ausarbeitung und Testung in Projekten: <a href="https://github.com/Clasc">Christian Lascsak auf</a> <a href="https://github.com/Clasc">Github</a></p></blockquote>
<p>The post <a href="https://mobile.fhstp.ac.at/development/visual-studio-2022-wichtigste-neuerungen-und-was-sie-bewirken/">Visual Studio 2022 &#8211; Wichtigste Neuerungen und was sie bewirken</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Erstellung eines Online-Lebenslaufes &#8211; Eine Projektdoku</title>
		<link>https://mobile.fhstp.ac.at/allgemein/erstellung-eines-online-lebenslaufes-eine-projektdoku/</link>
		
		<dc:creator><![CDATA[Mario Zeller]]></dc:creator>
		<pubDate>Wed, 22 Sep 2021 19:51:34 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9028</guid>

					<description><![CDATA[<p>Im Rahmen des Masterstudiums Interactive Technologies soll bis zum Abschluss des Studiums eine Portfolio-Webseite zur Präsentation der eigenen Projekte erstellt werden. Natürlich zählt zu so einer Seite nicht nur die Zusammenfassung der Projekte, sondern auch ein Impressum, ein Datenschutzhinweis und eine kurze Notiz zur Erstellerin bzw. zum Ersteller selbst. Diese &#8220;About me&#8221;-Seite, wie sie auf <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/erstellung-eines-online-lebenslaufes-eine-projektdoku/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/erstellung-eines-online-lebenslaufes-eine-projektdoku/">Erstellung eines Online-Lebenslaufes &#8211; Eine Projektdoku</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Im Rahmen des Masterstudiums Interactive Technologies soll bis zum Abschluss des Studiums eine Portfolio-Webseite zur Präsentation der eigenen Projekte erstellt werden. Natürlich zählt zu so einer Seite nicht nur die Zusammenfassung der Projekte, sondern auch ein Impressum, ein Datenschutzhinweis und eine kurze Notiz zur Erstellerin bzw. zum Ersteller selbst. Diese &#8220;About me&#8221;-Seite, wie sie auf englischen Seiten gerne heißt, wollte ich definitiv nicht in klassischem Stil halten. Mein Ziel war es, einen interaktiven Lebenslauf zu gestalten, der meine Fähigkeiten mit meinen Projekten verbindet und die Besucherin bzw. den Besucher der Seite von mir erzählt. In diesem Artikel zeige ich, wie ich dieses Ziel erreicht habe.</p>



<h2 class="wp-block-heading">Einzigartiges Design</h2>



<p>Zunächst war wichtig, die Besucherin bzw. den Besucher mit einem einzigartigen, abgestimmten Design mit Wiedererkennungswert zu erwarten. Dazu half das vor Jahren von mir entwickelte Logo in Form eines Z, welches ich auch schon auf meiner ehemaligen Portfolio-Webseite verwendet hatte. Mit Unterstützung durch eine erfahrene UX/UI-Designerin entwickelte ich eine stimmige Farbpalette und entschied mich für eine passende Schriftart. Die verwendeten Icons sind teilweise an den bisherigen Lebenslauf angelehnt, da dieser in Zukunft auch wieder an die neue Webseite angepasst werden können soll.</p>



<h2 class="wp-block-heading">Umsetzung mittels Headless-CMS Strapi und Frontend-JS-Framework Vue</h2>



<p>Die Erstellung des Online-Lebenslaufes dient nicht nur dem Zweck der besseren Präsentation im Web meinerseits. Ich wollte mich auch im Umgang mit Headless Content-Management-Systemen und CSS Styling beschäftigen und meine Fähigkeiten in diesen Bereichen vertiefen. Somit wählte ich für die Umsetzung des CMS die Headless Content Management Plattform Strapi. Dieses CMS ist headless, was bedeutet, dass es ohne Designtool (Sitebuilder) ausgestattet ist, wie man es z.B. von WordPress kennt. Das Content-Management-System liefert bei Aufruf der richtigen URL wie eine API die Daten im JSON-Format. Das Frontend, die Annahme und Verarbeitung der JSON-Daten und das Design, müssen selbst in die Hand genommen werden. Dies verlangt wesentlich größere Erfahrung im Umgang mit Webentwicklung, bietet allerdings auch wesentlich mehr Freiheit im Design. Außerdem macht es unabhängig von diversen Bezahlmodellen.</p>



<p>Mithilfe des Frontend-JavaScript-Frameworks Vue gestaltete ich eine moderne Webapplikation, die auf ihrem Haupteinstiegspunkt der Nutzerin bzw. dem Nutzer zwei Wahlmöglichkeiten lässt. Den Weg zum Portfolio und Lebenslauf und die Übersicht über alle auf der Webseite befindlichen Artikel (Techblog; siehe Titelbild). Die Techblog-Seite, also die eigentliche Sammlung an allen Artikeln über Learnings und eigene Projekte, folgt im Laufe des nächsten Jahres. Im Rahmen dieses Projektes habe ich mich auf die Gestaltung der Lebenslauf-Seite konzentriert. Man findet die wichtigsten Interessen, meine Hard Skills, Soft Skills, berufliche Erfahrung, Ausbildungsweg, Kontaktmöglichkeiten und ein Impressum auf der Seite. Das responsive Design erstellte ich ohne Zuhilfenahme von irgendwelchen Design-Frameworks wie z.B. PrimeVue, um mich in der Arbeit mit Cascading Style Sheets und responsive Design zu vertiefen.</p>



<h2 class="wp-block-heading">Features der Seite</h2>



<p>Folgende Features sind in der Seite enthalten:</p>



<h5 class="wp-block-heading">Full Responsive Design</h5>



<p>Im Vergleich zu meiner bisherigen Seite, welche nur auf Full-HD Bildschirmen gut nutzbar war, ist diese Seite nun auf alle gängigen Bildschirmgrößen abgestimmt und die Designs für die jeweiligen Größen optimiert. So gibt es vier relevante Breakpoints für das Design. XS für alle Smartphones von iPhone 5 bis Pixel 2XL. SM für Tablets im Hochformat. MD für Tablets im Querformat. LG für alle Geräte mit einer größeren Bildschirmweite als 950 Pixel. Außerdem wurden einige Anpassungen gemacht, um die Seite auch auf 4K-Bildschirmen optimal darzustellen.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="409" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/image-4-409x800.png" alt="" class="wp-image-9036"/><figcaption>Darstellung der Website im kleinsten/Mobile-Breakpoint</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="925" height="789" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/image-5.png" alt="" class="wp-image-9037"/><figcaption>Darstellung der Website im MD+-Breakpoint (Tablet quer &amp; Desktop-Version)</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="406" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/image-6-406x800.png" alt="" class="wp-image-9038"/><figcaption>Darstellung der Ausbildung &amp; der Berufserfahrung im mobilen Design</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="879" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/image-7-879x800.png" alt="" class="wp-image-9039"/><figcaption>Darstellung der Ausbildung und der Berufserfahrung im Desktop-Design</figcaption></figure>



<h5 class="wp-block-heading">Alles wartbar</h5>



<p>Alle auf der Seite befindlichen Texte sind im Content-Management-System wartbar und passen sich ausgewählten Profilen an. Außerdem lassen sich auch die Farben der Seite austauschen. In einer zukünftigen Erweiterung könnten auch das Logo und die Icons austauschbar gemacht werden können. So besteht die Möglichkeit, in Zukunft das Code-Snippet als Grundlage für andere Lebenslauf-Seiten verwenden zu können. Die Modifikation des Designs funktioniert dann gänzlich über das CMS.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="877" height="790" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/image-8.jpg" alt="" class="wp-image-9041"/><figcaption>Die Gestaltung der Webseite in einer anderen Farbenwelt und Anordnung der einzelnen Elemente. Es benötigt dafür nur ein paar Klicks im Headless Content Management System Strapi.</figcaption></figure>



<h5 class="wp-block-heading">Sprachen</h5>



<p>Die Webseite präsentiert sich in englischer und deutscher Sprache. Die Sprachen lassen sich über einen Button in der Navigation umschalten, die sich auf der mobilen Version im Footer, ab dem MD-Breakpoint, also auf der Desktop-Version im Header befindet.</p>



<h5 class="wp-block-heading">Dark Mode</h5>



<p>Des Entwicklers Freund darf auf einer Seite eines Software Entwicklers natürlich nicht fehlen. Über einen Button im rechten oberen Eck der Seite kann im Desktop-Modus zwischen dem regulären Light-Mode und dem Dark-Mode umgeschaltet werden.</p>



<h2 class="wp-block-heading">Meine Learnings</h2>



<p>Aus der Arbeit an der Webseite konnte ich einiges für meine zukünftige Arbeit als Webentwickler lernen.</p>



<h5 class="wp-block-heading">Responsive Design mit CSS</h5>



<p>Bisher hatte ich oft einen großen Bogen um das Styling mit Cascading Style Sheets gemacht und die Arbeit anderen, erfahreneren Kolleginnen und Kollegen übergeben. Vor allem das responsive Webdesign zur Optimierung der Seiten für alle Bildschirmgrößen bereitete mir bisher große Sorgen. Dies hat sich durch dieses Projekt geändert. Ich fühle mich selbstbewusst im Umgang mit CSS und traue mir nun zu, eine Webseite für alle Bildschirmgrößen zu optimieren.</p>



<h5 class="wp-block-heading">Erstellung einer vollständig wartbaren Seite mit zwei Sprach-Systemen</h5>



<p>Die Verwendung eines Headless-CMS wie Strapi hat mir aufgezeigt, wie modular und anpassbar eine Webseite gestaltet werden kann, obwohl man das Frontend selbst gestaltet. Durch die Modularität der Webseite lassen sich nun auch zukünftige Anpassungen einfach erfüllen, ohne die Webseite neu programmieren zu müssen.</p>



<h5 class="wp-block-heading">Arbeit mit jsPDF, einer Library zur Erstellung von PDF-Files in JavaScript-Code</h5>



<p>Letztendlich ist mir durch das Projekt ein Einstieg in die Library jsPDF gelungen, womit ich versucht habe, den digitalen Lebenslauf per Knopfdruck in ein analog-fähiges Format als PDF umzuwandeln. Die Arbeit mit der Library und ihren eigenen Design-Vorschriften hat ebenfalls einiges abverlangt. Leider konnte ich dieses Feature nicht abschließen, da ich an die Grenzen der Library gestoßen bin. Ich möchte dieses Feature auf der Webseite in Zukunft aber dennoch umsetzen. Ein Ansatz wäre die Auslagerung dieses Features auf ein Backend-Service. Es gibt zahlreiche Libraries für .NET/C#. Das Endergebnis könnte der Kundin bzw. dem Kunden beispielsweise per E-Mail zugesandt werden.</p>



<p>Die Seite ist derzeit unter ihrer Beta-Versions-Adresse https://zerio.netlify.app/#/about erreichbar.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/erstellung-eines-online-lebenslaufes-eine-projektdoku/">Erstellung eines Online-Lebenslaufes &#8211; Eine Projektdoku</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WildWeek: PubQuiz</title>
		<link>https://mobile.fhstp.ac.at/allgemein/wildweek-pubquiz/</link>
		
		<dc:creator><![CDATA[Mario Zeller]]></dc:creator>
		<pubDate>Mon, 20 Sep 2021 09:41:11 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Express.js]]></category>
		<category><![CDATA[Extreme Programming Week]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[Vue.js]]></category>
		<category><![CDATA[websockets]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9068</guid>

					<description><![CDATA[<p>Bei der WildWeek der Masterklasse Mobile handelt es sich um eine „Extreme Programming Week“ während des zweiten Master Semesters. Durch das Stattfinden von Distance Learning konnten wir diese Woche nicht an der Fachhochschule umgeben von Kaffee und Bildschirmen verbringen, sondern waren mittels Discord miteinander verbunden. So der Begriff WildWeek ist ja nun geklärt. Eine Woche <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/wildweek-pubquiz/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/wildweek-pubquiz/">WildWeek: PubQuiz</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Bei der WildWeek der Masterklasse Mobile handelt es sich um eine „Extreme Programming Week“ während des zweiten Master Semesters. Durch das Stattfinden von Distance Learning konnten wir diese Woche nicht an der Fachhochschule umgeben von Kaffee und Bildschirmen verbringen, sondern waren mittels Discord miteinander verbunden.</p>



<p>So der Begriff WildWeek ist ja nun geklärt. Eine Woche Programmieren. Aber mit der einen Woche ist es nicht getan. Zuerst musste ein Projekt her. Kollektiv entschieden wir, die Masterklasse Mobile, uns für die Umsetzung einer App, dem „Pub Quiz“. Es handelt sich um eine App, mit der man sich ein Gefühl von Gemeinschaft nach Hause holen können, soll. Außerdem soll es möglich sein mit der App direkt in einem Pub an einem solchen Quiz teilnehmen zu können.</p>



<p>Für die Umsetzung wurden die Technologien NodeJs mit ExpressJs für die Entwicklung im Backend, sowie VueJs für die Frontendentwicklung herangezogen. Weiters wurde socket.io für die Verbindung der Spiele herangezogen.</p>



<p>Im Vorfeld war es unsere Aufgabe uns individuell auf die zugeteilten Aufgaben vorzubereiten, Tutorials anzusehen und die einzelnen Anteile vorzubereiten.</p>



<h2 class="wp-block-heading">Bettina</h2>



<p>Meine Aufgaben lagen neben der Backendentwicklung auch in der Organisation und Koordination in der Vorbereitung. Wir mussten einige Vorbereitungen treffen, wie Technologieentscheidungen, Erstellung von Diagrammen und das Design sollte auch im Vorhinein erstellt werden.</p>



<p>Mit dem Start der Woche hatten wir also alle unsere Teile soweit vorbereitet, dass wir mit der Umsetzung starten konnten. Während der Woche war ich Teil des Backendteams für die Organisationsplattform. In diesem Teil der App sollten die Spiele erstellt werden, Freunde eingeladen werden und ein Spiel gestartet werden können. Auch die Statistik sollte ein Teil hiervon sein. Hier hatte ich die Möglichkeit mein Wissen in NodeJs zu vertiefen und auch Kenntnisse im Websocket Bereich zu sammeln.</p>



<p>Mein größter Fortschritt war wohl in Sachen Websockets. Ich war mit dieser Art Kommunikation zwischen Front- und Backend noch nicht in Berührung gekommen und konnte somit ein neues Feld kennen lernen. Für Anwender mag es unbedeutend erscheinen, dass ein Name neben einem andren auftaucht, wenn ein weiterer Spieler teilnimmt, für mich war das wohl der spannendste Fortschritt.</p>



<p>Schwierig war wohl die Kommunikation innerhalb der Gruppe. Da wir alle isoliert zuhause saßen und lediglich online verbunden waren, hatten wir hier einige Anlaufschwierigkeiten. Ich denke aber dennoch lässt sich, das Ergebnis dieser Woche sehen!</p>



<h2 class="wp-block-heading">Mario</h2>



<p>Ich durfte die technische Planung und Leitung des Projektes übernehmen. Zur Vorbereitung dieser intensiven Programmier-Woche kümmerte ich mich um die Zusammenführung einzelner Design- und Architektur-Konzepte. Außerdem bereitete ich die Entwicklungsumgebung für die Arbeit am Projekt vor. Dabei forderte mich am meisten die Einrichtung von Pipelines zur automatischen Testung und Veröffentlichung des Programms auf unserem Server.<br>Während der Woche investierte ich die meiste Zeit in Meetings zur Abstimmung der einzelnen Entwicklungsstränge und mit dem Überprüfen von geschriebenen Code, sowie dem Instandhalten des Environments.<br>Ich durfte aber auch an einigen Features, wie der Erstellung eines Quizzes, mitarbeiten.</p>



<h3 class="wp-block-heading">My Learnings</h3>



<h4 class="wp-block-heading">Arbeit mit Gitlab CI/CD</h4>



<p>Ein System mit Frontend und Backend auf einem Produktiv-System mit funktionierender Kommunikation zum Laufen zu bringen, ist nicht die einfachste Aufgabe. Dafür musste ich schon viel Zeit in der Vorbereitung für die Woche, aber auch an den ersten Tagen der Woche investieren. Den Umgang mit Docker konnte ich außerdem noch vertiefen.</p>



<h4 class="wp-block-heading">Konzeption eines Full Stack Web Projekts</h4>



<p>In einem derart großen und komplexen Projekt mit so vielen Teammitgliedern habe ich gelernt, wie wichtig es ist, das Design, die User Experience und die Usability im Vorhinein zu planen und mit der Entwicklung nicht zu früh anzufangen. Sonst besteht die Gefahr, dass zwei verschiedene Entwicklungsstränge aneinander vorbei arbeiten und nicht dieselbe Vision von der Funktionalität vor sich haben.</p>



<h4 class="wp-block-heading">Zusammenarbeit bei verschiedenen Arbeitsweisen</h4>



<p>Je unterschiedlicher die Arbeitsweisen, desto besser muss die Planung sein. In bisherigen FH-Projekte mit einzelnen Kolleginnen und Kollegen gab es da wenige Probleme. Man sucht sich schließlich Projektpartnerinnen und -partner aus, mit denen man gut zusammenarbeiten kann. In diesem Projekt sind einige unterschiedliche Arbeitsweisen aufeinander getroffen und es hätte zu manchen Zeitpunkten bessere Koordination und womöglich konkretere Pläne benötigt, um stets das Ziel im Auge zu behalten.</p>



<h4 class="wp-block-heading">Discord ist gold wert</h4>



<p>Discord ist ein Tool zur Kommunikation, das aus der Videospielszene hervorgegangen ist. Es erlaubt, einerseits über Textkanäle zu chatten, aber auch in verschiedenen Sprachkanälen zu reden bzw. sogar per Video zu telefonieren und den Bildschirm zu teilen. Dabei sieht man dauerhaft, wer gerade mit wem in einem Gespräch ist und wer verfügbar ist. Die digitale Kommunikation funktioniert besser, wenn Nutzer wissen, wer online ist und wen sie gerade nicht stören mit ihrer Frage. Die Nutzung dieses Tools hat uns meiner Meinung nach besonders geholfen.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/wildweek-pubquiz/">WildWeek: PubQuiz</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Google Charts vs. AMCharts vs. Primefaces &#8211; Mein Data Viz-Library Einsteigerduell</title>
		<link>https://mobile.fhstp.ac.at/allgemein/google-charts-vs-amcharts-vs-primefaces-mein-data-viz-library-einsteigerduell/</link>
		
		<dc:creator><![CDATA[Mario Zeller]]></dc:creator>
		<pubDate>Sat, 18 Sep 2021 21:11:46 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Data Viz]]></category>
		<category><![CDATA[Datenvisualisierung]]></category>
		<category><![CDATA[Diagramme]]></category>
		<category><![CDATA[Diagrams]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Graphen]]></category>
		<category><![CDATA[Graphs]]></category>
		<category><![CDATA[Library]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=9002</guid>

					<description><![CDATA[<p>Titelbild von Carlos Muza on Unsplash Wahrscheinlich würde die flexible Data-Driven Documents Library d3.js alle drei genannten Datenvisualisierungs-Bibliotheken bei weitem schlagen. Jedoch ist der Einstieg in den Umgang mit dieser Bibliothek meiner Meinung nach eine Wissenschaft für sich. Dies hat mich davon abgehalten, in meinem letzten Kundenprojekt d3.js als Lösung für die benötigten Datenvisualisierungen in <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/google-charts-vs-amcharts-vs-primefaces-mein-data-viz-library-einsteigerduell/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/google-charts-vs-amcharts-vs-primefaces-mein-data-viz-library-einsteigerduell/">Google Charts vs. AMCharts vs. Primefaces &#8211; Mein Data Viz-Library Einsteigerduell</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Titelbild von <a href="https://unsplash.com/@kmuza?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Carlos Muza</a> on <a href="https://unsplash.com/s/photos/data-visualization?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>



<p>Wahrscheinlich würde die flexible Data-Driven Documents Library d3.js alle drei genannten Datenvisualisierungs-Bibliotheken bei weitem schlagen. Jedoch ist der Einstieg in den Umgang mit dieser Bibliothek meiner Meinung nach eine Wissenschaft für sich. Dies hat mich davon abgehalten, in meinem letzten Kundenprojekt d3.js als Lösung für die benötigten Datenvisualisierungen in unserem Projekt vorzuschlagen. Ich war also auf der Suche nach Librarys, die einfacher zu erlernen sind, jedoch eine ähnlich große Flexibilität haben. Später kam auf Wunsch der Kundin bzw. des Kunden noch das Kriterium der Offline-Fähigkeit hinzu, was einiges änderte. In diesem Artikel möchte ich die Erkenntnisse präsentieren, die ich in meinem letzten Kundenprojekt über diese drei Chart-Librarys lernen durfte.</p>



<h2 class="wp-block-heading">Vorstellung der Librarys</h2>



<h3 class="wp-block-heading">AMCharts &#8211; Ein kleines Team aus dem Osten</h3>



<p><a href="https://www.amcharts.com/">AMCharts</a> ist eine Library erstellt von einer gleichnamigen siebenköpfigen Teams mit Sitz in Vilnius in Litauen, welche 2004 gegründet wurde. Die Nutzung ist unter allen rechtlichen Umständen kostenlos (soweit ich das der relativ eindeutigen Beschreibung der Seite entnehmen konnte), solange man die Einblendung eines Logos mit Verlinkung zur Seite von AMCharts auf der eigenen Seite erlaubt. Die Pro-Version bietet die Verwendung der Charts ohne Logo, sowie einen über die Dokumentation und das Forum hinausgehenden telefonischen und E-Mail-Support. </p>



<p>Die Seite gibt einen guten Überblick über alle möglichen Varianten an Diagrammen in Form von Beispielen und dem passenden Code. Sie wartet auch mit einem Forum und der Beantwortung von häufigen Problemstellungen auf. Die Graphen selbst zeigen sich in simplem Design. Es besteht die Möglichkeit, die Charts zu animieren. Daten werden über ein Objekt-Array mit bestimmten selbst definierbaren Keywords übergeben. Die Nutzung der Library funktioniert über die Installation von NPM-Packages oder der Einbindung von CDN-Ressourcen.</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/image.png" alt="" class="wp-image-9011" width="735" height="359"/><figcaption>Ein AMCharts Chord diagram. Darunter: Daten werden an die Library übergeben und Keywords für die Werte definiert.</figcaption></figure>



<pre class="wp-block-code"><code>chart.data = &#91;
    { from: "A", to: "D", value: 10 },
    { from: "B", to: "D", value: 8 },
    { from: "B", to: "E", value: 4 },
    { from: "B", to: "C", value: 2 },
    { from: "C", to: "E", value: 14 },
    { from: "E", to: "D", value: 8 },
    { from: "C", to: "A", value: 4 },
    { from: "G", to: "A", value: 7 },
    { from: "D", to: "B", value: 1 }
];

chart.dataFields.fromName = "from";
chart.dataFields.toName = "to";
chart.dataFields.value = "value";</code></pre>



<h3 class="wp-block-heading">Google Charts &#8211; Googles eigene Charting-Library</h3>



<p><a href="https://developers.google.com/chart/">Google Charts</a> ist die Charting-Lösung von Google, die sie laut eigenen Angaben auch selbst verwenden. Sie präsentiert sich als völlig kostenlose Bibliothek. Auch sie bietet eine große Auswahl an unterschiedlichen Charts. Das Design ist noch schlichter als bei AMCharts. Es besteht die Möglichkeit, die Graphen in 3D darstellen zu lassen. Einige Diagramme haben Animationen implementiert, wenn man über das Diagramm hovert. Wer an die Arbeit mit der Google Maps Library gewöhnt ist, wird sich auch schnell mit dem Aufbau der Charts Library anfreunden. Google Chart bietet nur die Möglichkeit einer Einbindung über CDN-Ressourcen.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="451" height="300" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/image-1.png" alt="" class="wp-image-9012"/><figcaption>Ein klassisches PieChart, erstellt mit der Google Library.</figcaption></figure>



<h3 class="wp-block-heading">Primefaces &#8211; ein vollständiges UI-Framework mit Charts</h3>



<p><a href="https://www.primefaces.org/">Primefaces</a> ist der Überbegriff für eine Vielzahl an UI-Frameworks für die Nutzung in Java, Angular, React oder Vue. Es bietet einerseits eine große Anzahl an bereits designten UI-Elementen, wie Buttons, Listen, Formulare und eben auch Charts an. Andererseits werden auf der Seite auch sogenannte Layouts angeboten, die diese UI-Elemente nicht in der Standard-Ausstattung, sondern in extra abgestimmten Farben erstrahlen lassen. Das Design ist auf Business-Web-Auftritte abgestimmt und wirkt minimalistisch elegant. Die Charts decken klassische Business-Fälle. So gibt es z.B. ein Organigramm. Kompliziertere Datenvisualisierungen sucht man allerdings vergebens. Die Charts sind sehr interaktiv gestaltet. Oft kann man Regionen z.B. ein- und ausblendbar gestalten.</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/09/image-3.png" alt="" class="wp-image-9014" width="359" height="320"/><figcaption>Donut Chart umgesetzt in PrimeReact.</figcaption></figure>



<h2 class="wp-block-heading">Flexibilität als entscheidendes Kriterium</h2>



<p>Man kann die Dokumentationen der zahlreichen Charting-Libraries lange nach ähnlichen Problemen, die dem im eigenen Projekt gleichen, durchsuchen. Womöglich findet man sogar genau das passende Diagramm, welches man mithilfe der Dokumentation schnell und einfach umsetzen kann. Jedoch braucht es lediglich einen einzigen Kundenwunsch, der eine Änderung mit sich bringt, die in der Library nicht umsetzbar ist. Außerdem wird man &#8211; außer bei ausschließlich ganz klassischen Diagrammtypen &#8211; selten eine Bibliothek finden, die alle Kundenwünsche bzw. Designvorgaben abdeckt. Daher ist es relativ wichtig auf die Flexibilität der einzelnen Librarys zu achten. Je mehr man im Code selbst verändern kann, desto eher werden sich Kundenwünsche und Designvorgaben umsetzen lassen.</p>



<h3 class="wp-block-heading">Flexibilität und Einsteigerfreundlichkeit &#8211; AMCharts bietet beste Schnittmenge</h3>



<p>In Sachen Flexibilität kann definitiv AMCharts mit den meisten Möglichkeiten aufwarten. Auf den ersten Seiten der Dokumentation wirkt die Personalisierung noch sehr umständlich. Wenn man jedoch im Umgang mit den enthaltenen Funktionen warm wird, merkt man, welches Potenzial diese Bibliothek hat. Von der Farbe, Größe und Lage der einzelnen Datensätze, über die Platzierung und das Styling von verschiedensten Beschriftungen und Symbolen, lässt sich vieles personalisieren. </p>



<p>Google Charts stellt sich von Anfang an recht flexibel dar. Es bietet allerdings in der Tiefe betrachtet bei weitem nicht so viele Personalisierungsmöglichkeiten wie AMCharts. Gerade die Möglichkeit, nicht nur Unicode-Zeichen, sondern auch diverse Icons in die Beschriftung von Charts einzubringen, hat mir bei Google Charts sehr gefehlt.</p>



<p>Einziger Pluspunkt auf Seiten von Primefaces Charts: Die Charts und Teile der Charts bekommen CSS-Klassen zugeordnet, wodurch in CSS zusätzliches Design vorgenommen werden kann und man sich einige Zeilen in JavaScript erspart. Die Auswahl an möglichen Charts ist aber um Weiten geringer als bei Google Charts oder AMCharts. </p>



<h2 class="wp-block-heading">Offline-Fähigkeit und andere Nachteile der Gratis-Nutzung</h2>



<p>Auf Empfehlung eines Kollegen startete das Projektteam in meinem Projekt mit der Nutzung von Google Charts. Wir setzten bereits nahezu alle Diagramme mit der Library um. Wenngleich wir auch einige Einbußen gegenüber dem Design machen mussten (z.B. keine Möglichkeit der Nutzung von Icons in der Beschriftung der Charts), dachten wir nicht über einen Wechsel nach, da diese Einbußen für die Kundin bzw. den Kunden akzeptabel waren. Erst in einer späteren Projektphase stießen wir auf ein Problem, welches uns zu einem Wechsel der Bibliothek zwang. </p>



<h3 class="wp-block-heading">Google Charts ohne Offline-Fähigkeit</h3>



<p>Google Charts bietet keine Möglichkeit, die Charts offline zu nutzen, sondern verlangt andauernden Zugriff auf auf Google Servern befindlichen minimierte JavaScript-Files, wo sich die Logik der Library befindet. Weder kann man die Files herunterladen und in das Projekt einbinden, noch lässt sich ein einfacher Workaround dazu finden. Man kann diese Files zwar im Browser anzeigen lassen, während der Generierung eines einzelnen Diagramms werden aber zig verschiedene dieser Files vom Google Server aufgerufen und es lässt sich nicht nachverfolgen, welche Files man kopieren und einbinden müsste. Die kostenlose Library hat ihren Preis: Google möchte über diese Verbindung womöglich Daten sammeln.</p>



<h3 class="wp-block-heading">AMCharts mit Logo-Link zur Website</h3>



<p>Auch bei AMCharts gibt es einen Nachteil, solange man die Bibliothek gratis verwenden möchte. Im linken unteren Bereich des Charts wird das Logo von AMCharts angezeigt, welches außerdem ein Link zur Webseite der Bibliothek ist. Dieser Nachteil ist allerdings meiner Ansicht nach wesentlich angenehmer zu ertragen als ein Verlust der Offline-Fähigkeit wie bei Google Charts. Zudem kann er mittels Kauf der Nutzungsrechte umgangen werden. Auch die Kundin bzw. der Kunde in meinem Projekt haben sich für diese Lösung entschieden. Die Applikation soll nicht im Kundinnen- und Kundenbetrieb, sondern lediglich von Mitarbeiterinnen und Mitarbeitern genutzt werden. In diesem Fall sei das Logo nicht störend.</p>



<h3 class="wp-block-heading">Primefaces ohne Einschränkungen unter Auflagen nutzbar</h3>



<p>Die Komponenten von Primefaces im Allgemeinen (also auch die Diagramme) sind für die nicht kommerzielle Nutzung ohne Auflagen gratis nutzbar. Lediglich für die kommerzielle Nutzung bzw. für die Verwendung von bereits vorab designten Layouts müssen Zahlungen an die Ersteller geleistet werden.</p>



<h2 class="wp-block-heading">Fazit</h2>



<p>Mit der Kenntnis von nur drei Diagramm-Bibliotheken für JavaScript kann ich nicht für alle Anwendungsfälle und alle Librarys sprechen. Solange ich mit diesen Tools nicht an meine Grenzen stoße, habe ich aus dem Projekt Folgendes gelernt und werde die Bibliotheken wie folgt in zukünftigen Projekten nutzen.</p>



<p>Bildet das Design sehr simple Diagramme ab, die sich mit der Palette an Möglichkeiten von Primefaces umsetzen lässt, und ist das Projekt nicht für die kommerzielle Nutzung geplant, so wähle ich Primefaces Charts. Die Flexibilität von Primefaces reicht womöglich ohnehin aus. Außerdem wird einem ein tolles Gesamtpaket an weiteren Designelementen geboten, die mit dem Design der Diagramme übereinstimmen und ebenso genutzt werden können. Die Dokumentation ist übersichtlich und die Elemente sind einfach zu nutzen.</p>



<p>Verlangt das Projekt kompliziertere Diagramme bzw. besondere Änderungen von geläufigen Graphen, so greife ich zu AMCharts, welches eine gute Dokumentation zur Manipulation der Elemente bietet. Der Einstieg verlangt ein wenig Übung. Danach hat man allerdings ein mächtiges Werkzeug zur Umsetzung von Datenvisualisierungen in der Hand.</p>



<h4 class="wp-block-heading">Mit Google Charts könnte doppelte Arbeit auf einen zukommen!</h4>



<p>Von der Nutzung von Google Charts würde ich abraten. Der Einstieg ist zwar einfacher als bei AMCharts, jedoch bietet es nicht so viel Flexibilität. Die Tatsache, dass die Library nicht offline verwendbar ist, bereitet wohl in einigen Anwendungsfällen große Umstände. Man stelle sich ein Szenario vor, wo die Kundin bzw. der Kunde erst im Laufe des Projektes angibt, dass die Applikation offline verfügbar sein muss. Spätestens dann muss bei Google Charts die Chart-Library gewechselt und die Visualisierungen ein weiteres Mal mit einer anderen Bibliothek umgesetzt werden.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/google-charts-vs-amcharts-vs-primefaces-mein-data-viz-library-einsteigerduell/">Google Charts vs. AMCharts vs. Primefaces &#8211; Mein Data Viz-Library Einsteigerduell</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Die Effektivität von Test Driven Development</title>
		<link>https://mobile.fhstp.ac.at/allgemein/effektivitaet-von-tdd/</link>
		
		<dc:creator><![CDATA[Mario Zeller]]></dc:creator>
		<pubDate>Mon, 15 Feb 2021 20:02:25 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Softwaretesting]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=8783</guid>

					<description><![CDATA[<p>Photo by Clément Hélardot on Unsplash Agiles Arbeiten ebnet den Weg für testgetriebene Entwicklung Im Agilen Manifest, welches im Jahre 2001 von den Begründern der agilen Software Entwicklung formuliert wurde (Beck et al., 2001), nannte man testgetriebene Entwicklung neben&#160; Kundenakzeptanztests als eine der beiden wichtigsten Testpraktiken. Auch beim Extreme Programming ist testgetriebene Entwicklung eine zentrale Instanz (Khanam &#38; <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/effektivitaet-von-tdd/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/effektivitaet-von-tdd/">Die Effektivität von Test Driven Development</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Photo by <a href="https://unsplash.com/@clemhlrdt?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Clément Hélardot</a> on <a href="https://unsplash.com/s/photos/coding?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>



<h2 class="wp-block-heading">Agiles Arbeiten ebnet den Weg für testgetriebene Entwicklung</h2>



<p>Im Agilen Manifest, welches im Jahre 2001 von den Begründern der agilen Software Entwicklung formuliert wurde (Beck et al., 2001), nannte man testgetriebene Entwicklung neben&nbsp; Kundenakzeptanztests als eine der beiden wichtigsten Testpraktiken. Auch beim Extreme Programming ist testgetriebene Entwicklung eine zentrale Instanz (Khanam &amp; Ahsan, 2017). Somit rückten die Vertreter agiler Methoden in den letzten Jahrzehnten auch das Test Driven Development (TDD) ins Rampenlicht.</p>



<p>Testgetriebene Entwicklung sieht den bisher sehr verbreiteten <em>Code then test</em>-Ansatz als veraltet an, bei dem das Programm zunächst entwickelt wird und im Nachhinein die Tests dazu erstellt werden. Viel effektiver sei es, die Testfälle jeweils für einen kleinen Teil des Programms im Vorhinein zu entwickeln. Der darauffolgend geschriebene Programmcode wird so lange bearbeitet, bis die Tests erfolgreich abschließen. Nach jeder kleinen Erweiterung des Programms (<em>Increment</em>) wird der Code refactored, um die Tests nicht nur mit einem grünen Häkchen zu versehen, sondern auch gute Code-Qualität zu erreichen (Shull et al., 2010).</p>



<p>Khanam und Ahsan (2017) merken an, dass es wichtig sei, zwischen Unit Testing und der Gesamtheit des Test Driven Developments zu unterscheiden. Unit Testing garantiert das Verhalten von Code, während TDD darüber hinaus maßgeblich die Entwicklung der Software beeinflusst.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p>David Astels beschreibt in seinem Buch <em>Test Driven Development: A Practical Guide </em>(2003) testgetriebene Entwicklung als eine Software-spezifische Entwicklungsmethode,</p>



<ul class="wp-block-list"><li>wo eine große Anzahl an Software Tests durchführt wird,</li><li>wo kein Code ohne zugehörige Tests in das Produktiv-System gelassen wird,</li><li>wo die Tests vor dem Code geschrieben werden und</li><li>wo die Tests bestimmen, welcher Code geschrieben werden muss.</li></ul>



<p></p>
</div></div>



<p>Dieser <em>Test-First</em>-Ansatz sei laut Erdogmus et. al (2005) das zentrale Element von testgetriebener Entwicklung. Außerdem sei wichtig, dass die Tests von derselben Person bzw. von demselben Team entwickelt würden, die auch den Code zur Lösung des Tests schreiben. Damit setzt es sich klar von der <em>Cleanroom</em>-Technik ab, wo zwar auch Tests vor der Entwicklung der Software erstellt werden, die Tests jedoch von einem eigenen Team mithilfe von zukünftigen Nutzerinnen und Nutzern durchgeführt werden und statistischer Natur sind. Meist sind die Tests bei Test Driven Development eher mit geringem Aufwand erstellt und decken lediglich die Funktionalität der zu erfüllenden User Stories ab.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="459" height="639" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2021/02/image.png" alt="" class="wp-image-8785"/><figcaption>Abbildung 1: Test-Last (links) im Vergleich zu Test-First (rechts) (Erdogmus et al., 2005).</figcaption></figure>



<p>Dieser Artikel fasst die Ergebnisse einiger wissenschaftlicher Arbeiten zum Thema testgetriebene Software-Entwicklung zusammen und präsentiert die Stärken und Schwächen. Den Abschluss bildet ein Fazit und eine Bewertung der Effektivität von Test Driven Development.</p>



<h2 class="wp-block-heading">Auswirkungen auf die Qualität des Produkts</h2>



<p>Forrest Shull und seine Kolleginnen und Kollegen haben in ihrem Artikel, erschienen in der IEEE Software (2010), bereits zahlreiche Studien zur testgetriebenen Entwicklung erfasst und deren Ergebnisse ausgewertet.&nbsp; In Anbetracht von acht Pilotstudien, sechs überwachten Experimenten und sieben Branchenstudien kommen sie zu dem Schluss, dass die Ergebnisse von über 60 % der Studien (13 Werke) auf eine Verbesserung durch Test Driven Development (TDD) hindeuten. Sechs Arbeiten stellen keinen Unterschied zwischen den bisherigen Programmierpraktiken und TDD fest. Nur zwei Arbeiten behaupten, eine Verschlechterung zu erkennen.</p>



<p>Aber was macht testgetriebene Entwicklung so erfolgreich? Zunächst liefert es direktes Feedback. Tests, die vor der Entwicklung eines Features geschrieben wurden, bieten der Programmiererin / dem Programmierer sofortige Rückmeldung, ob die Funktionalität des Features erreicht wurde und ob sich die neue Funktionalität auf bisherige negativ auswirkt, sprich ob bereits implementierte Funktionalität bei der Implementierung der neuen Funktionalität beschädigt wurde (Erdogmus et al., 2005; Khanam &amp; Ahsan, 2017).</p>



<p>Durch Test Driven Development wird das Schreiben von Tests ein zentraler Teil der Entwicklung. Es wird nicht erst im Nachhinein eingeplant oder gar darauf verzichtet. Es treten weniger Fehler auf und das Projekt wird somit effizienter (Maximilien &amp; Williams, 2003).</p>



<p>TDD lässt das Entwicklerteam den Code in lösbare, ausführlich formulierte Aufgaben herunterbrechen, was den Fokus auf die Funktionalität erhält und den Fortschritt besser messbar macht (Erdogmus et al., 2005; Khanam &amp; Ahsan, 2017). Außerdem bringt es die Entwicklerinnen und Entwickler dazu, von Beginn an von einer Endnutzer-Perspektive aus zu denken (Khanam &amp; Ahsan, 2017).</p>



<p>Testgetriebene Entwicklung trägt zur Qualitätssicherung bei. Wenn man zahlreiche Tests auf dem neuesten Stand parat hat und diese regelmäßig ausführt, garantiert dies ein gewisses Grundlevel an Qualität des geschriebenen Programmcodes (Erdogmus et al., 2005). Die Tests können als Dokumentation dienen (Khanam &amp; Ahsan, 2017). Durch die regelmäßige Testung des <em>Increments</em> werden Spätfolgen bei einer Zusammenführung der Features am Schluss vermieden (Maximilien &amp; Williams, 2003).</p>



<p>Es unterstützt außerdem das architekturelle Design der Software, indem anhand der Funktion, die getestet werden soll, Entscheidungen über den Aufbau der Klassen und Methoden, deren Nomenklatur und deren Schnittstellen mit Fokus auf die Funktionalität getroffen werden können (Erdogmus et al., 2005; Khanam &amp; Ahsan, 2017; Maximilien &amp; Williams, 2003).</p>



<p>Refactoring ist ein wichtiger Aspekt, der durch testgetriebene Entwicklung erleichtert wird. Es beschreibt das Verändern von bereits existierendem, funktionierendem Code, ohne die Funktionalität zu verändern. Das Ziel ist es, die interne Struktur des Codes zu verbessern. Dieser Refactoring-Prozess dient dazu, nach der Erfüllung der Akzeptanzkriterien, sprich der Erfüllung der Tests, die Qualität des Codes zu erhöhen. Mithilfe von Test Driven Development kann das Refactoring ohne Angst vor Verlust des Funktionsumfangs durchgeführt werden, da die Tests die Funktionalität des Codes absichern (Astels, 2003; Khanam &amp; Ahsan, 2017).</p>



<p>Kent Beck schreibt in seinem Werk <em>Test Driven Development By Example </em>(2003)<em>, </em>dass dieser Effekt des Testens und des Refactorings sogar so wichtig sei, dass es sich lohne, dafür Aufwand zu betreiben. Für bessere Testmöglichkeiten zahle es sich aus, die Code Struktur zu verändern und somit testbar zu halten, wenn das mit der bisherigen Struktur nicht gewährleistet wäre (z.B. zu große Test-Fälle).</p>



<p>Für David Astels (2003) sei es vor allem wichtig, dass TDD, gemeinsam mit dem Einsatz agiler Methoden einen <em>denken-bevor-man-handelt</em>-Ansatz forciert. Außerdem führe der Gedanke, wie man gewisse Anforderungen testen kann, zu mehr Testfällen, die das Programm ausfallssicherer machen.<br></p>



<h2 class="wp-block-heading">Auswirkungen auf die Produktivität</h2>



<p>Es ist anhand dieser zahlreichen Vorteile einfach sich vorzustellen, dass testgetriebene Entwicklung die Produktqualität verbessert. Dass es jedoch auch die Produktivität des Entwicklungsteams erhöht, widerspricht den Stimmen vieler erfahrener Software Experten alter Schule. Entgegen deren Annahme, dass Tests einen Overhead die Zeit und das Budget betreffend erzeugen und deswegen von einem eigenen Qualitätssicherungsteam durchgeführt werden sollen, biete TDD laut Erdogmus et al. (2005) auch klare Vorteile für die Produktivität des Teams, wenn es direkt von den Entwicklerinnen und Entwicklern durchgeführt wird.</p>



<p>So ergibt die Auswertung des Experiments in der Arbeit von Erdogmus et. al (2005) einen linearen Zusammenhang zwischen der Anzahl der Tests und der Produktivität des Teams. Dies sei auf ein besseres Verständnis der Aufgabenstellung, einen besseren Fokus auf die Funktionalität, schnelleres Lernen aus und Ersetzen von falsch gewählten durch effektivere Strategien und weniger Aufwand beim Ausbessern von Fehlern zurückzuführen. Diesen geringeren Aufwand belegt auch das Experiment von Maximilien and Williams (2003), bei dem durch Anwendung von TDD 50% weniger Fehler im Programm aufgetreten sind. Der Einsatz von TDD mag den Entstehungsprozess zunächst verlangsamen, unterstützt das Team aber und treibt die Produktivität auf lange Sicht gesehen an (Khanam &amp; Ahsan, 2017).</p>



<p>In der Arbeit von Erdogmus et al. (2005) kommen die drei Autoren sogar zu dem Schluss, dass die Auswirkung von Test Driven Development (im Vergleich zu normalem Software Testing nicht im Vergleich zur Entwicklung ohne Testung!) auf die Qualität schwieriger nachgewiesen werden kann und bestätigen nur die Auswirkung auf die Produktivität des Teams. Warum die Andeutung auf eine Verbesserung der Qualität des Produkts so undeutlich ausgefallen ist, erklären die Autorinnen und Autoren unter anderem dadurch, dass der Umfang des beobachteten Programmes zu klein gewesen sei und in dieser Größenordnung auch die Erfahrung und Design-Fähigkeit des Entwicklungsteams eine große Rolle spielen könnten. So können die Entwicklerinnen und Entwickler bei kleinen Applikationen etwa mit Leichtigkeit selbst den Funktionsumfang eines Features überblicken und durch Ausprobieren manuell testen, bevor die Tests nach der Entwicklung ergänzt werden.</p>



<p>Aber auch bei der Produktivität käme es auf das Team und dessen Erfahrung an, wie sehr sich jene steigern lässt. Da testgetriebene Entwicklung ein gewisses Grundverständnis benötigt und einer komplexen Implementierung bedarf, gelangen unerfahrene Entwicklerinnen und Entwickler zu einem geringeren Anstieg der Produktivität (Erdogmus et al., 2005). Die oben genannte anfängliche Verlangsamung könnte bei unerfahrenen Teams größer ausfallen.</p>



<h2 class="wp-block-heading">Für testgetriebene Entwicklung ungeeignete Systeme</h2>



<p>Aus den oben genannten Punkten lässt sich schließen, dass Test Driven Development nicht für jedes Projekt geeignet ist. Khanam und Ahsan (2017) erwähnen einige Beispiele:</p>



<p>Wenn das System Design zu Beginn der Entwicklung noch nicht klar ist. &nbsp;Die Änderung des Designs während der Entwicklung würde eine ständige Überarbeitung und Anpassung der Tests an die neue Funktionalität bedürfen und damit in einem großen Zeitverlust resultieren (siehe auch: Dogša &amp; Batič, 2011).</p>



<p>Nicht alle Systeme lassen sich an eine Testumgebung mit Unit Tests anpassen und es könnte mehr Zeit kosten, die Tests und das System aneinander anzupassen, als der Vorteil der Tests an Zeit und Qualität wieder einbringt. In solchen Sonderfällen ist also auch Vorsicht geboten. Jedoch sei laut Beck (2003) ein größerer Aufwand in der Implementierung der Testumgebung durch den Vorteil, den diese Testungen bringen, durchaus gerechtfertigt.</p>



<p>Wenn die gewählten Programmiersprachen und Frameworks keine sinnvollen Unit-Testing-Frameworks unterstützen, wird sich die Implementierung von TDD womöglich als schwierig herausstellen. Genauso ist die Testung von grafischen Userinterfaces deutlich schwieriger und zeitaufwändiger als die Testung von Libraries und APIs.</p>



<p>Wie bereits im Kapitel Produktivität genannt, kommt es auch auf die Erfahrung der Entwicklerinnen und Entwickler an. Nicht jede Entwicklerin bzw. jeder Entwickler ist ein erfahrener Test- und Refactoring-Experte. Dabei kann TDD die Produktion verlangsamen.</p>



<p>Khanam und Ahsan (2017) schlagen aufgrund dieser genannten Fälle vor, Test Driven Development beim Einbau an das System anzupassen und nicht das System so zu verändern, dass sich TDD anwenden lässt.</p>



<h2 class="wp-block-heading">Fazit</h2>



<p>Testgetriebene Entwicklung stellt, mit zahlreichen Belegen (Erdogmus et al., 2005; Khanam &amp; Ahsan, 2017; Maximilien &amp; Williams, 2003; Shull et al., 2010), eine Verbesserung für den Entstehungsprozess in Anbetracht von Software Qualität und Team-Produktivität dar. Es bedeutet im Entwicklungsprozess des Systems einen wiederverwendbaren und erweiterbaren Bestand an Tests zu generieren, der die Qualität des Software Systems über dessen Lebenszeit stätig verbessern wird (Maximilien &amp; Williams, 2003). Der Anstieg der Software Qualität gegenüber der traditionellen Software Testung kann in wenigen der in dieser Arbeit beschriebenen Studien wie in der Pilotstudie von Erdogmus et al. (2005) nicht belegt werden, jedoch könnte dies laut Erstellerinnen und Erstellern und auch laut Khanam und Ahsan (2017) am Versuchsaufbau derartiger Pilotstudien zu diesem Thema liegen.</p>



<p>Im Einzelfall bedarf es womöglich einer Abwägung, ob Test Driven Development für die jeweilige Umgebung geeignet ist. Khanam und Ahsan (2017) nennen da einige Beispiele (siehe Kapitel 4 <em>Ungeeignete Systeme</em>). Für manche Projekte könnten andere ähnliche Methoden wie Behaviour Driven Development (BDD) oder Acceptance TDD (ATDD) passender sein.</p>



<p>Gerade der als größter Nachteil zu erwartende Zeitaufwand stellt sich zumindest bei erfahrenen Teams als Vorteil heraus, steigert die testgetriebene Entwicklung doch letztendlich die Produktivität des Teams (Erdogmus et al., 2005).</p>



<p>Testen trägt zur Qualität der Software und das Framework Test Driven Development zur Produktivität des Teams bei. Bei der Entscheidung über den Test-Last- oder den Test-First-Ansatz (wie in TDD) sind die jeweiligen Gegebenheiten des Projekts zu bedenken und sich für ein passendes Framework zu entscheiden. Jedoch ist eine ordentliche Integration von Testungen in den Entwicklungsalltag eines Produkts durch die zahlreichen oben genannten Vorteile in jedem Fall empfehlenswert.</p>



<h2 class="wp-block-heading">Quellen</h2>



<p>Astels, D. (2003). <em>Test-driven development: A practical guide</em> (3. print). Prentice Hall PTR.</p>



<p>Beck, K. (2003). <em>Test-driven development: By example</em>. Addison-Wesley.</p>



<p>Beck, K., Beedle, M., Van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., Grenning, J., Highsmith, J., Hunt, A., Jeffries, R., Kern, J., Marick, B., Martin, R. C., Mellor, S., Schwaber, K., Sutherland, J., &amp; Thomas, D. (2001). <em>Manifesto for Agile Software Development</em>. Manifesto for Agile Software Development. https://agilemanifesto.org/</p>



<p>Erdogmus, H., Morisio, M., &amp; Torchiano, M. (2005). On the Effectiveness of the Test-First Approach to Programming. <em>IEEE Transactions on Software Engineering</em>, <em>1</em>(31), 14.</p>



<p>Khanam, Z., &amp; Ahsan, M. N. (2017). <em>Evaluating the Effectiveness of Test Driven Development: Advantages and Pitfalls</em>. <em>12</em>(18), 12.</p>



<p>Maximilien, E. M., &amp; Williams, L. (2003). Assessing test-driven development at IBM. <em>25th International Conference on Software Engineering, 2003. Proceedings.</em>, 564–569. https://doi.org/10.1109/ICSE.2003.1201238</p>



<p>Shull, F., Melnik, G., Turhan, B., Layman, L., Diep, M., &amp; Erdogmus, H. (2010). What Do We Know about Test-Driven Development? <em>IEEE Software</em>, <em>27</em>(6), 16–19. https://doi.org/10.1109/MS.2010.152</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/effektivitaet-von-tdd/">Die Effektivität von Test Driven Development</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
