bearbeitet von: Adrian Meister
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 AppDie 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.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.formulate requirements here (together with your adviser)
Milestone no. | Past | CW | Goals | accomplished | |
---|---|---|---|---|---|
1 | 1 | CWXX | Goals | accomplished |