Skip to content

Technologieauswahl

Alexander Strutz edited this page Jul 17, 2021 · 14 revisions

Aus dem Anwendungsszenario der Anwendung ergibt sich, dass sie als mobile Anwendung umgesetzt werden muss. Daher wurden die Wireframes für mobile Endgeräte umgesetzt. Im Folgenden werden verfügbare Technologien zur Umsetzung der PoCs auf Smartphones aufgelistet und verglichen. Daraufhin wird eine Technologie ausgewählt, in welcher die PoCs und auch die spätere Anwendung umgesetzt werden sollen. Zur Auswahl einer Technologie werden Architectural Decision Records, kurz ADRs verwendet, die dazu dienen verschiedene Lösungen anhand ihrer Vorteile für ein Projekt gegeneinander abzuwägen, um so eine Entscheidung treffen zu können. Als Vorlage wird das Markdown Architectural Decision Records (MADR) verwendet und auf Deutsch übersetzt.

Durch die in Systemarchitektur vorgestellte Struktur sind Frontend und Backend getrennt. Daher werden für das Frontend und das Backend zwei unabhängige ADRs erstellt.

Nutzung von Flutter als Frontend-Technologie

  • Status: akzeptiert
  • Entscheider: Svend Becker, Alexander Strutz, Miriam Wiedmann
  • Datum: 14.07.2021

Mögliche Optionen

  • Flutter
  • Kotlin
  • Swift
  • JavaScript
  • React Native

Entscheidung

Gewählte Option: Flutter

Positive Konsequenzen

  • Eine Codebasis kann für verschiedene Betriebssysteme (Android, iOS) wiederverwertet werden
  • Der Code kann auch als Web-Client verwendet werden
  • Durch "Hot Reload" wird die Entwicklungszeit verlängert
  • Testframeworks sind verfügbar

Negative Konsequenzen

  • Nicht alle Teammitglieder sind damit vertraut

Vor- und Nachteile der Optionen

Flutter

Flutter ist ein UI-Framework für die Programmiersprache Dart. Flutter ermöglicht es mit einer Codebasis Anwendungen für verschiedene Plattformen wie Android, iOS, Windows, Linux und den Browser zu erstellen.

  • Gut, weil verschiedene mobile Plattformen addressiert werden können
  • Gut, weil die Design Frameworks Material Design (Android) und Cupertino (iOS) integriert sind
  • Gut, weil für iOS entwickelt werden kann, ohne dass ein Apple-Gerät notwendig ist
  • Gut, weil verschiedene Entwicklungshilfen, wie Hot Reload, verfügbar sind
  • Schlecht, weil die verfügbaren Module noch begrenzt sind

Kotlin

Kotlin ist eine plattformübergreifende objektorientierte Sprache, die auf Java basiert und auf die Entwicklung von Android spezifiziert ist.

  • Gut, weil sie gut dokumentiert ist
  • Gut, weil sie für Android einen umfangreichen Support bietet
  • Schlecht, weil sie nur für Android nutzbar ist
  • Schlecht, weil sie große Ressourcen auf der Entwicklungsmaschine benötigt

Swift

Swift ist eine von Apple entwickelte Sprache, die ausschließlich für die Entwicklung von iOS-Geräten verwendet werden kann

  • Gut, weil sie Open-Source ist
  • Schlecht, weil sie ein iOS-Gerät zur Entwicklung benötigt
  • Schlecht, weil sie nur für iOS nutzbar ist
  • Schlecht, weil sie die Entwicklungsumgebung vorgibt

JavaScript

JavaScript ist eine Programmiersprache zur Entwicklung von Web-Frontends im Browser.

  • Gut, weil sie einfache Unterstützung für HTTP-Requests bietet
  • Schlecht, weil sie langsamer ist
  • Schlecht, weil sie nur im Browser ausgeführt werden kann
  • Schlecht, weil sie nicht Offline nutzbar ist

React Native

React Native ist eine auf React.js basierende Web-Programmiersprache, die zur Entwicklung von nativen Anwendungen verwendet werden kann.

  • Gut, weil verschiedene mobile Plattformen addressiert werden können
  • Schlecht, weil keine Design-Frameworks vorhanden sind
  • Schlecht, weil sie nicht Open-Source ist, sondern von Facebook betreut wird
  • Schlecht, weil sie langsamer als Flutter (als vergleichsbare cross-plattform Sprache) ist

Links

Nutzung von Node.js als Backend-Technologie

  • Status: akzeptiert
  • Entscheider: Svend Becker, Alexander Strutz, Miriam Wiedmann
  • Datum: 14.07.2021

Mögliche Optionen

  • Node.js
  • C#
  • PHP
  • Kotlin (Ktor)

Entscheidung

Gewählte Option: Node.js

Positive Konsequenzen

  • Einüben von Frameworks, die für andere Projekte relevant sind
  • Keine explizite Schulung, da die Technologien gängig sind
  • Testframeworks verfügbar

Negative Konsequenzen

  • Gängige Technologien werden wiederverwendet, anstatt neue Technologien auszuprobieren
  • Nicht alle Teammitglieder sind damit vertraut

Vor- und Nachteile der Optionen

Node.js

Node.js ist ein Server-seitiges JavaScript Web Framework zur Erstellung von HTTP Servern und REST APIs.

  • Gut, weil es einen eigenen Package Manager gibt
  • Gut, weil die erweiterbar ist
  • Gut, weil es wenig "Boilerplate-Code" gibt
  • Gut, weil sie einfach gehostet oder in der Cloud genutzt werden kann
  • Schlecht, weil sie große Projektdateien erzeugt

C#

C# ist eine objektorientierte Sprache, die HTTP Server in Kombination mit dem ASP.NET Core-Webframework bereitstellt.

  • Gut, weil sie eine stabile Sprache ist
  • Schlecht, weil sie Overhead erzeugt
  • Schlecht, weil sie typspezifisch ist
  • Schlecht, weil sie dem Team unbekannt ist

PHP

PHP ist eine serverseitige Sprache zum Einrichten von HTTP-Webservern.

  • Gut, denn die Dokumentation ist gründlich und vollständig
  • Gut, weil sie eine stabile Sprache ist
  • Gut, weil sie einfach gehostet oder in der Cloud genutzt werden kann
  • Schlecht, weil es viel "Boilerplate-Code" gibt

Kotlin (Ktor)

Ktor ist ein von JetBrains entwickeltes Framework zum Erstellen von Webanwendungen in Kotlin, das Co-Routinen für eine hohe Skalierbarkeit verwendet und eine idiomatische API bietet.

  • Schlecht, weil sie typspezifisch ist
  • Schlecht, weil es nur einen kleinen Paketmanager bietet

Links

Clone this wiki locally