Muster im User Interface Reengineering in ein deklaratives User Interface Framework

bearbeitet von: Adrian Meister

1. Einleitung

1.1 Foolography GmbH

Foolography GmbH ist ein Berliner Startup, welches sich für die Entwicklung von Kamera-Zubehör spezialisiert. Darunter gehören BLE (Bluetooth Low Enemnergy) Module wie das Unleashed, welche dem Nutzer die Steuerung und Programmierung einer Kamera über eine Mobile Applikation ermöglichen. Seit 2018 bin ich für die Entwicklung von iOS Applikationen bei Foolography zuständig.

1.2 Unleashed App

Die Unleashed App dient zur Steuerung von den Unleashed Kamera Modulen. Die Applikation bietet mehrere spezifische Modi an, welche die Programmierung von Kameraeinstellungen für das Aufnehmen von Bildern, Videos oder die Aufzeichnung von Zeitraffer dem Nutzer über sein Smartphone erleichtern soll. Die Applikation baut auf vielen nicht nativen UI-Komponenten auf.

1.3 Motivation

Die Entwicklung dieser Applikation verlief nicht immer reibungslos, wodurch viele der heutigen Probleme entstanden sind. Dazu gehört zum Beispiel, dass Teile des Quellcodes sehr oft vervielfältigt wurden, welche die weitere Entwicklung oder die Wartung der App enorm erschweren. Daher soll nun die bereits entwickelte imperative UI-Basis mittels eines deklarativen UI-Frameworks (SwiftUI) neu entwickelt werden. Hierfür sollen Entwurfsmuster erstellt werden, welche die Transformation vom UIKit User Interface in das deklarative SwiftUI Framework erleichtern sollen.

1.4 SwiftUI

SwiftUI ist ein deklaratives UI-Framework. Der Fokus des Frameworks liegt auf der Beschreibung der erwarteten Benutzeroberfläche, welche dann von der internen Engine ermittelt und umgesetzt wird. Die deklarative Syntax von SwiftUI ist mittels einer Swift DSL (Domain Specific Language) aufgebaut. Im vergleich zum imperativen UIKit Framework wird erwartet, dass SwiftUI die Quellcodebasis stark reduzieren wird, viele Komponente vereinfacht und die Wartung sowie die Weiterentwicklung der App beschleunigen wird.

2. Herangehensweise

Im Rahmen dieser Bachelorarbeit sollen (Entwurfs- / Prozess-) Muster gefunden werden, welche im Prozess der Transformation von UIKit-Komponenten in SwiftUI-Komponente vorkommen könnten. Zu Beginn werden potentielle Muster erarbeitet und deren Vorkommen im weiterem Prozess vermutet. Es wird angenommen, dass im Laufe der Arbeit weitere Muster aufgedeckt werden können.

2.1 Technologie

Der Implementierungsprozess wird mittels der Programmiersprache Swift erfolgen. Dabei wird der Fokus zuerst auf den Einsatz von UIKit und anschließend von SwiftUI liegen. Es ist nicht auszuschließen, dass auch das imperative UIKit-Framework an Stellen zum Einsatz kommen wird, an welchen das deklarative SwiftUI Framework noch keine Lösung bietet.

2.2 Implementierung

Es wird nur eine vorausgewählte Teilmenge der Benutzeroberfläche der Unleashed App re-implementiert. Die Implementierung mit SwiftUI soll sich an MVVM (Model View ViewModel) Entwurfsmuster halten. Da aber die Ursprungsarchitektur nicht auf dem gleichen Muster aufgebaut wurde, soll eine abstrakte Zwischennotation für die UI-Komponente in UIKit gegeben werden, welche den Transformationsschritt in das Zielframework erleichtern soll.

2.3 Ermittlung der Muster

Nach mehrfacher Re-Implementierung der UI-Komponente in UIKit sowie SwiftUI erfolgt die Musteranalyse im Quellcode sowie im eigentlichen Entwicklungsprozess. Die dabei auftretenden Muster werden herausgearbeitet und so weit wie möglich vereinfacht dargestellt.

2.4 Dokumentation

Der Entwicklungsprozess soll gründlich dokumentiert werden, damit nicht nur Muster im Quellcode erkennbar gemacht werden können sondern auch solche Muster mit Tendenz zu Prozessmustern. Deshalb sollen die technischen Entscheidungen sowie potentiell interessante Gedankengänge ebenfalls dokumentiert werden.

Thesis Requirements

formulate requirements here (together with your adviser)

Milestones and Planning

A milestone is a scheduled event signifying the completion of a major deliverable or a set of related deliverables. A milestone has zero duration and no effort -- there is no work associated with a milestone. It is a flag in the workplan to signify some other work has completed. Usually a milestone is used as a project checkpoint to validate how the project is progressing and revalidate work. (Source: http://www.mariosalexandrou.com/definition/milestone.asp)

Milestone no. Past days CW Goals target accomplished wrench
1 DONE 1 CWXX Goals accomplished

Weekly Status

Week 1 (CW XX)

Activities

  • been there, done that

Results

  • achieved XYZ

Next Steps

  • planning …

Problems