Ihre Herausforderungen bei der Entwicklung von Mobile Apps

In der heutigen Zeit sind Apps kaum wegzudenken. Sie ermöglichen dem Nutzer einen schnellen, bequemen Zugang mit intuitiver Bedienung – egal an welchem Ort. Wie nutzen Sie diese Möglichkeiten von Apps im Rahmen der Digitalisierung Ihrer Geschäftsprozesse und beim Angebot für Ihre Kunden? Wir würden Ihnen dazu gerne einige Fragen stellen:

  • Verlieren Sie Kunden an Ihre Wettbewerber, weil diese zusätzliche Funktionen mittels einer App anbieten können? Verlangen Ihre Kunden von Ihnen eine App, weil mobil angebotene Dienste heute schlichtweg zum guten Ton gehören?
  • Sie haben zwar bereits eine mobile Webseite und bieten darüber Ihren Kunden bereits Dienste an. Aber Ihre weitergehenden Ideen für neue Funktionen sind damit nicht umsetzbar, da diese den Zugriff auf die Sensoren des Endgerätes benötigen?
  • Sie besitzen bereits eine App, sind aber mit dem Ergebnis nicht zufrieden: Ihre App bekommt schlechte Bewertungen in den Stores, da sie zu viele Bugs enthält und häufig abstürzt? Ihre App lässt sich nur schwer updaten, weil in der bisherigen Entwicklung der Fokus eher auf neuen Features als auf Codequalität lag? Die Oberfläche der App ist nicht ansprechend und Ihre Kunden haben Probleme bei der Nutzung, da Funktionalitäten versteckt sind? Unterschiedliche Endgeräte oder aktualisierte Versionen der Betriebssysteme sorgen immer wieder für Probleme sowohl bei der Nutzung als auch der Stabilität Ihrer App?
  • Sie stellen ein Hardware-Produkt her und würden dieses gerne um intelligente Softwarelösungen erweitern? Sie wollen Ihr Produkt beispielsweise fernsteuern?

Eine App kann den entscheidenden Unterschied für Ihre Kunden ausmachen. Aber nicht jede App löst alle Probleme und Anforderung gleichermaßen gut. Egal in welchem Szenario Sie sich oben wiederfinden: Wir kennen die Probleme, vor denen Sie stehen und unterstützen Sie gerne bei deren Lösung.

Ihre Vorteile beim Mobile App Development

Wieso sollten Sie für Ihre Kunden überhaupt eine Mobile App entwickeln? Genügt nicht einfach eine mobile Webseite? Oder eine Webapp? Wir sind der Meinung, dass Sie das beste Ergebnis für Ihre Kunden mit einer Mobile App erreichen.

Das sind unsere Gründe dafür

  • Im Gegensatz zu einer mobilen Webseite ist eine Mobile App viel näher am Kunden: Dieser sieht mehrmals täglich das App-Icon Ihres Produktes auf dem Homescreen und wird daran erinnert. So erreichen Sie eine Steigerung der Nutzung Ihrer angebotenen Dienste.
  • Eine wirkliche Systemintegration ist nur bei Mobile Apps gegeben. Beispiele dafür sind Widgets, Push-Mitteilungen, Watch-Apps oder die Offline-Nutzung.
  • Mit Mobile Apps haben Sie den Zugriff auf alle Funktionen der Smartphones, beispielsweise die Nutzung von GPS im Hintergrund oder den Zugriff auf eingebaute Sensoren.
  • Über die AppStores steigern Sie die Sichtbarkeit Ihrer angebotenen Dienste – beispielsweise über die Apps-Charts – und schaffen außerdem einen zusätzlichen Marketing-Kanal.
  • Sie erreichen mit einer Mobile App eine Performance, die mit mobilen Webseiten oder einer Webapp nicht zu erreichen ist.

Wie Sie sehen gibt es zahlreiche gute Gründe für die Entwicklung einer Mobile App. Und genau dabei helfen wir Ihnen gerne. Durch unser iteratives Vorgehen haben Sie immer den kompletten Überblick, unabhängig davon, ob Sie mit uns eine neue App entwickeln oder ob wir eine bestehende App erweitern. Die nachfolgende Abbildung visualisiert unsere Vorgehensweise sowie wichtige Kernaufgaben bei der iterativen Entwicklung von Mobile Apps.

Kernaufgaben und Themen

Iterative Entwicklung von Mobile Apps.Quelle: eigene Darstellung

Werfen wir einen genaueren Blick auf diese Kernaufgaben und die Themen, die darin eine wichtige Rolle spielen:

UI/UX

Es kann losgehen, die ersten Features stehen in den Startlöchern. In diesen frühen Schritten sollten Konzept und Gestaltung enthalten sein, denn Design und User Experience haben für mobile Anwendungen einen besonderen Stellenwert. Die Oberfläche des Bildschirms ist begrenzt und die Zeit der mobilen Anwender knapp. Informationen müssen schnell und klar transportiert werden. Wir beherrschen die User Guidelines für iOS und Android aus dem Effeff und kennen die aktuellen Trends. So kann unser interdisziplinäres Team mit Ihnen Konzepte entwickeln, die auf die Bedürfnisse Ihrer Nutzer abgestimmt sind und die Wirkung zeigen werden.

Implementierung

Der Rahmen ist abgesteckt – jetzt geht es in die Entwicklung. Was Sie von uns erwarten können? Den Entwurf einer tragfähigen und langlebigen Architektur sowie tiefgehende Erfahrungen mit allen Arten der App-Entwicklung. Sei es nativ mit Swift und Kotlin oder mit Crossplattform Frameworks wie beispielsweise React Native – wir haben die neuesten Technologien immer im Blick. Um Ihr Projekt so kosteneffizient und flexibel wie möglich zu gestalten arbeiten unsere zertifizierten Scrummaster eng mit den Entwicklern zusammen. In kurzen Feedbackzyklen passen wir die App an Ihre aktuellen Herausforderungen an. Durch Code Reviews stellen unsere Entwickler sicher, dass alle Qualitätsanforderungen erfüllt werden, der Code lesbar und wartbar bleibt und das Wissen über das Projekt breit verteilt ist – denn vier Augen sehen mehr als zwei.

Testing

Bei der Implementierung hören wir allerdings noch lange nicht auf. Selbstverständlich ist für uns eine umfangreiche Qualitätssicherung. Profitieren Sie von unserer Expertise in modernen Verfahren um Funktion, Kompatibilität, Performance und Sicherheit zu testen – von statischer Codeanalyse bis hin zu automatisierten Tests auf realen Geräten. Das garantiert kurze Entwicklungszyklen ohne böse Überraschungen.

CI/CD

Ist ein Feature getestet, kann es zum Kunden. Damit alle Zahnräder perfekt ineinander greifen setzen wir auf automatisierte Prozesse für Integration und Deployment. Wir verwenden CI/CD-Infrastrukturen, die Stabilität garantieren, Entwicklungszeit optimieren und Kosten einsparen. Mit jedem Entwicklungsschritt durchläuft die Applikation mehrere Teststadien. Feedback gelangt direkt an die Entwickler und kann zeitnah berücksichtigt werden. Auch die Verteilung an Tester und die Veröffentlichung im Store findet mittels automatisierter Prozesse statt. So kann sich das Entwicklungsteam voll auf die Realisierung Ihrer Anwendung konzentrieren.

Analytics

Doch wird die neue Funktion auch angenommen? Damit Sie die Entwicklung des Erfolgs Ihrer App im Blick haben, integrieren wir für Sie Monitoring Tools nach europäischen Datenschutzrichtlinien. Wir erfassen dabei anonymisiert die wichtigsten Kennzahlen und Erfolgsfaktoren. Auch nach dem Release haben wir stets unsere Qualitätsstandards auf dem Schirm. Bei Problemen reagieren wir schnell und fokussiert. So können Sie früh und fundiert die nächsten Schritte planen: Wird es die Kommentarfunktion oder die Anbindung von Push Notifications?

Die Funktionsweise von Mobile App Development

Was sind nun die entscheidenden Weichenstellungen bei der Entwicklung von Apps? Lassen Sie uns zur Beantwortung dieser Fragen wichtige Bereiche des Mobile App Developments betrachten.

Frameworks

Die erste wegweisende Entscheidung bei der Entwicklung einer App ist die Wahl des Frameworks. Ein solches Framework legt den Grundstein für die komplette App. Dabei ist es kein Leichtes, sich im Dschungel der Frameworks zurecht zu finden, zumal alle paar Monate ein neues, verheißungsvolles Produkt auf dem Markt erscheint. Die Einen schwören auf die native Entwicklung um die bestmögliche App erstellen zu können. Andere sehen Cross-Compiling klar im Vorteil, womit Apps für beide führenden Plattformen entwickelt werden können.

Hierbei gibt es jedoch kein generelles Richtig oder Falsch: Sowohl native Entwicklung als auch der Einsatz von Cross-Compiling haben ihre Daseinsberechtigung mit jeweils anderen Stärken und Schwächen.

Native (Swift, Kotlin)
  • Natives Look und Feel der Plattform
  • Beste Performance
  • Neue Plattform-Funktionen können sofort eingesetzt werden
Cross-Compiling (React-Native, Xamarin, Flutter, ...)
  • Zeitersparnis da UI oder Businesslogik
    wiederverwendet werden können
  • Ein Entwicklungsteam für beide Plattformen

Um Ihnen einen Einblick zu geben, vor welchen Fragestellungen wir bei der Entwicklung Ihrer Mobile App stehen, stellen wir nachfolgend einige wichtigen Frameworks gegenüber. Dazu zeigen wir auch Vor- und Nachteile der verschiedenen Arten der App-Entwicklung sowie deren Haupteinsatzgebiet. Selbstverständlich ist diese Aufstellung weder vollständig bezüglich der verfügbaren Frameworks noch bei der Bewertung der Besonderheiten. Was Sie aber bereits hier erkennen können ist, dass die Auswahl des für Sie richtigen Frameworks von grundlegender Bedeutung ist.

Frameworks im Vergleich

Entwickler
Google

Besonderheiten

+ Schnelle Entwicklung ohne Vorkenntnisse in iOS und Android möglich
+ Eigenständiges Look und Feel einfach umsetzbar
+ Schnelle App-Entwicklung für iOS und Android

– Kein natives UI

Einsatzgebiet
App-Entwicklung für Einsteiger.

 

Entwickler
JetBrains

Besonderheiten

+ Native Performance ohne zusätzlichen Laufzeit-Overhead
+ Verschmelzen bereits vorhandener native Apps in einer gemeinsamen Codebasis
+ Einmal implementierte Geschäftslogik läuft auf iOS und Android
+ Natives Look und Feel der Plattform

– Es können nur Komponenten benutzt werden, die KMM-kompatibel sind

Einsatzgebiet
Es gibt bereits eine native Android App und nun soll die iOS Plattform bedient werden. Wiederverwendung der bestehenden Geschäftslogik.

 

Entwickler
Apple/Google

Besonderheiten

+ Natives Look und Feel der Plattform
+ Beste Performance
+ Neue Plattform-Funktionen können sofort eingesetzt werden (Watch-Apps, Widgets, etc.)
+ Früher Zugriff auf Third-Party Technologien
+ Zukunftssicher

– Aufwendig, sofern für beide Plattformen entwickelt werden soll

Einsatzgebiet
Maximale Freiheitsgrade für jede Art von Use Case inklusive tiefer Integration in das jeweilige Ökosystem.

 

Entwickler
Facebook

Besonderheiten

+ Eigenständiges Look und Feel einfach umsetzbar
+ Schnelle App-Entwicklung für iOS und Android
+ Große Auswahl an Frameworks, da Web-Frameworks mitbenutzt werden können
+ Wiederverwendung von Webseiten, sofern diese in React implementiert sind

– Geschäftslogik läuft in einer JavaScript-Engine, so dass langlaufende Algorithmen nicht von der Performance profitieren können
– Komplizierte Einrichtung

Einsatzgebiet
Erstellung einer komplexen App mit eigenem Design.

 

Entwickler
Microsoft

Besonderheiten

+ Weite Verbreitung von C# und dem Ökosystem von Microsoft
+ Schnelle Entwicklung ohne Vorkenntnisse in iOS und Android möglich

– Eingeschränkte Möglichkeiten in den Bereichen UI und API-Zugriffe
– Abhängigkeiten können bei Xamarin-Update nicht mehr kompatibel sein

Einsatzgebiet
App-Entwickler sind im C#/Microsoft Umfeld zu Hause.

 

Um das passende Framework zu bestimmen, spielen aber nicht nur technische Vor- und Nachteile eine Rolle. Mindestens genauso wichtig sind die Rahmenbedingungen und Anforderungen der App. Gibt es bereits eine Web-Anwendung? Benötigt die App ein Custom-Design? Wird der Zugriff auf neue Plattform-Funktionen benötigt? All dies berücksichtigen wir bei der Vorbereitung einer Entscheidungsgrundlage und wählen gemeinsam mit Ihnen das bestmögliche Framework mit der passenden Vorgehensweise aus.

Architektur

Die Programmiersprache, die Technologie und die Anforderungen an die App haben Einfluss auf die Wahl der Architektur. Und der Entwurf der richtigen Architektur ist die Königsdisziplin beim Bau von Software. Das gilt auch für das Mobile App Development, prägt der Architekturentwurf doch die Umsetzung neuer Features und die Wartbarkeit der App über Jahre hinweg. Mit der Wahl des Frameworks ergeben sich bereits bestimmte Architekturmuster, die unterstützt werden. Im React-Native Umfeld zum Beispiel ist Redux weit verbreitet. Mit Redux lässt sich eine reaktive Architektur umsetzen. Reaktiv bedeutet, dass Daten asynchron fließen und Objekte auf diesen Datenfluss reagieren können. Dadurch ergibt sich ein unidirektionaler Datenfluss durch die gesamte App.

Datenfluss in einer reaktive Architektur.Quelle: eigene Darstellung

Ein solcher Ablauf kann beispielsweise durch folgende, in der obigen Grafik visualisierten Schritte dargestellt werden:

  1. Aktion: Benutzer klickt den Login Button
  2. Effekt: Geschäftslogik löst die Kommunikation zum Server aus um die Benutzerdaten abzurufen
  3. Zustandsveränderung: Geschäftslogik speichert Benutzerdaten im Modell
  4. Darstellung: Änderung des Zustandes löst eine Navigation auf eine vorgegebene Seite aus

Der Vorteil einer solchen reaktiven Architektur ist, dass die Oberfläche der Applikation von jeglicher Logik entkoppelt ist. Die Oberfläche ist allein dafür zuständig, Aktionen auszulösen oder auf asynchrone App-Zustandsänderungen zu reagieren. Dadurch können u.a. die UI-Komponenten leicht wiederverwendet werden. Der unidirektionale Datenfluss verhindert außerdem, dass App-Zustand und UI voneinander abweichen: Das UI stellt immer den App-Zustand dar und kann durch Aktionen nicht direkt verändert werden. Nicht zuletzt vereinfacht die reaktive Architektur auch die Testbarkeit, da die Komponenten keine gegenseitige Abhängigkeit haben. Dies ermöglicht die Bestückung der Oberflächen innerhalb von UI Tests mit jeder Art von Daten.

Jedoch setzt die Umsetzung einer solchen Architektur entsprechende Erfahrung voraus. Um dabei die richtigen Entscheidungen zu treffen, betrachten wir gemeinsam mit Ihnen wichtige Merkmale, die Auswirkungen auf die umzusetzende Architektur haben:

  • Einen ersten Hinweis gibt der zukünftige Umfang der App: Verwaltet die App eine einfache TODO-Liste oder geht es um eine umfangreiche Banking App?
  • Wie klar werden die benötigten Zuständigkeiten in den Komponenten getrennt? Diese Trennung ermöglicht ein unabhängiges Testen und ist somit entscheidend für die Abdeckung mit Unit-Tests.
  • Gibt es einen unidirektionalen Datenfluss von Nutzereingaben, Geschäftslogik, Server-Kommunikation und Nutzeranzeige? In diesem Fall sind Rücksprünge in vorherige Komponenten nicht möglich, wodurch die Pflege der App erleichtert wird.
  • Werden Funktionen vertikal von anderen getrennt? Ist dies nicht der Fall, muss beim Hinzufügen einer neuen Funktion eventuell eine vorhandene Funktion angepasst werden.
  • Braucht die App einen zentralen Zustand? Handelt es sich um eine komplexe App erleichtert ein zentraler Zustand oft die Arbeit. Bei simplen Apps kann aber auch eine Architektur mit unabhängigen Komponenten ausreichend sein.

Generell muss bei Architektur-Entscheidungen mit Augenmaß herangegangen werden, denn Vor- und Nachteile halten sich oft die Waage. Wir klären gemeinsam mit Ihnen die wesentlichen Fragen, so dass Sie an der darauf aufbauenden Architektur lange Freude haben werden.

Testing

Um schnell zu entwickeln, ohne dabei die Qualität zu vernachlässigen, haben wir uns an der klassischen Testpyramide orientiert. Wir folgen dem Credo „viele schnelle und wenige langsame Tests”. Den unterschiedlichen Fehlerquellen begegnen wir mit vier unterschiedlichen Arten von Tests.

Testpyramide beim Mobile App Development.Quelle: eigene Darstellung

Das Fundament unserer Testvorgehensweise besteht aus Unit-Tests. Sie sind schnell und können damit in großer Anzahl erstellt werden. Die Tests können bei einem TDD Ansatz vor dem eigentlichen Code geschrieben werden und geben schon bei der Entwicklung Rückmeldung auf Fehlerfreiheit. Testumfang ist die Geschäftslogik ohne Benutzerschnittstelle. Ein Beispiel dafür wäre die korrekte Berechnung einer Vertragssumme.

 

Ein weiterer Aspekt bei Apps ist die Benutzerschnittstelle bzw. das UI. Mit Snapshot-Tests wird eine Referenz des UI als Screenshot festgehalten. Bei jeder Ausführung wird überprüft, ob das aktuelle UI der Referenz entspricht, und bei beabsichtigen Anpassungen können neue Referenzen übernommen werden. Damit werden ungewollte Änderungen aufgedeckt: eine Framework-Aktualisierung, die eine Hintergrundfarbe tauscht oder einfach der Entwickler, der einen Fehler gemacht hat. Mit den von uns eingesetzten Werkzeugen entscheiden wir bei Abweichungen innerhalb von Sekunden auf Fehlerfreiheit.

 

Um das Zusammenspiel aller Teile auf einem Gerät zu testen, kommen UI-Tests zum Einsatz. Diese Tests navigieren auf einem Gerät durch die App und prüfen die Ansichten darauf, ob zuvor definierte Information vorhanden sind. Die Anzahl ist begrenzt, da die Laufzeit lang und die Fehleranfälligkeit höher ist. Mit UI-Tests kann sichergestellt werden, dass die App startet oder die Daten vom Server abrufbar sind.

 

Um die agile und schnelle Entwicklung zu unterstützen, haben wir unserer Teststrategie das explorative Testen hinzugefügt. Im Gegensatz zu allen anderen Tests handelt es sich hierbei um keinen exakten Fahrplan, sondern um ein regelmäßig stattfindendes Event. Bei diesem kommen eine begrenzte Anzahl an Teilnehmern, die an der Produktentwicklung beteiligt sind, zusammen und in einem festgelegten Zeitraum wird die App inspiziert. Mit dieser Methodik finden wir unvorhersehbare Fehler.

Beispiele dafür wären Animationen, die beim Wechseln der Ansichten ruckeln oder blockierte Nutzereingaben bei einer schlechten Internetverbindung.

 

CI/CD-Pipeline

Im Sinne der Testautomatisierung sollte die Ausführung der Testpyramide möglichst nahtlos in den Entwicklungsprozess integriert werden. Um diesen und weitere Prozessschritte zu automatisieren, entwerfen wir konsequent eine für das Projekt maßgeschneiderte CI/CD-Pipeline, sodass sich das Team voll und ganz auf die Entwicklung konzentrieren kann.

CI/CD-Pipeline für iOS Mobile App Development.Quelle: eigene Darstellung

Für die Umsetzung der Pipeline werden CI/CD-Tools und -Services für die mobile Entwicklung, wie Fastlane oder Bitrise, mit einem Git-Repository kombiniert. Die folgende Pipeline, mit der in den iOS AppStore veröffentlicht wird, lässt sich auf diese Weise unkompliziert umsetzen.

Betrachten wir die einzelnen Schritte der Grafik im Detail

Nachdem der Review-Prozess im Team abgeschlossen ist, wird das neue Feature für die Veröffentlichung bereitgestellt. Dadurch wird automatisch die Pipeline gestartet.

 

Mit Hilfe von Xcode wird die App gebaut und dabei mit dem AppStore-Zertifikat und Provisioning Profile signiert. Code Signing ist ein notwendiger Schritt bei der Veröffentlichung einer App im AppStore, der sicherstellt, dass die App nach der Signierung nicht verändert wurde.

 

Alle automatisierten Tests, wie Unit-Tests, Snapshot-Tests und UI-Tests werden ausgeführt. Dabei können Dienste genutzt werden, in denen die Tests auf verschiedenen Geräten simultan ausgeführt werden. Mögliche Anbieter sind hier AWS Device Farm oder Visual Studio App Center.

 

Um Probleme frühzeitig zu erkennen, sollte die App bereits vor der Veröffentlichung im AppStore ausgiebig getestet werden. Zu diesem Zweck wird die App in Testflight hochgeladen und ausgewählten Testern zur Verfügung gestellt. Diese erhalten für jede neue Version eine Benachrichtigung und können diese über die Testflight-App auf ihrem Gerät installieren.

 

Bevor die App im AppStore veröffentlicht wird, können weitere Informationen, wie zum Beispiel Beschreibung, Release Notes und Keywords aktualisiert werden. Anschließend wird die gewünschte Version aus Testflight ausgewählt und die Pipeline für die Veröffentlichung gestartet.

 

In diesem Schritt wird ein ungemein hilfreiches Feature ausgeführt: Die automatische Erstellung von Screenshots. Insbesondere wenn die App in unterschiedlichen Sprachen und auf vielen unterschiedlichen Geräten angeboten wird, erhöht sich die Anzahl der zu erzeugenden Screenshots immens – das kann in die Hunderte gehen. Nach deren automatisierter Erzeugung wird die App öffentlich im AppStore zum Download bereitgestellt.

 

Durch diesen Grad an Automatisierung können wir Ihre App mit regelmäßigen Updates versorgen und flexibel reagieren. Auch für die Android Plattform etablieren wir für Sie CI/CD-Pipelines zur Optimierung aller Prozesse, von der sicheren Verwahrung der Zertifikate bis hin zur Verteilung der App an Ihre Kunden. Nutzen Sie unsere Erfahrung und unser Know-how um diese komplexen Vorgänge zu automatisieren, sodass Sie sich auf die Anforderungen Ihrer Kunden konzentrieren können und das Entwicklerteam effektiv und effizient am nächsten wichtigen Feature arbeiten kann.

Unsere Dienstleistungen im Bereich Mobile App Development

Sie wollen eine neue App entwicklen und benötigen hierbei Unterstützung? Ihre bisherige App ist in die Jahre gekommen und Sie wollen diese auf den aktuellen Stand der Technik bringen? Oder Sie benötigen Expertise in Teilbereichen wie Testing oder CI/CD?

Gerne unterstützen wir Sie bei Ihren Vorhaben:

  1. In einem ersten Gespräch oder Workshop sondieren wir zunächst gemeinsam Ihr Anliegen und die Rahmenbedingungen der App, anschließend erarbeiten wir zusammen einen Fahrplan.
  2. Im nächsten Schritt entwerfen wir die Architektur und wählen die passenden Frameworks und Technologien für Ihre Anforderungen aus.
  3. Im letzten Schritt setzen wir Ihr Vorhaben um. Dabei legen wir Wert auf einen iterativen Ansatz, bei dem wir in enger Kooperation mit Ihnen agil zusammenarbeiten. Durch früh gewonnene Erkenntnisse ermöglicht Ihnen dieses Modell auch während der Umsetzung die Richtung anzupassen.

Begeistern Sie Ihre Kunden mit der perfekten App. Wir helfen Ihnen sehr gerne dabei.

Ihr Ansprechpartner

Novatec_Markus-Mueller

Markus Müller

Director Software Engineering
Inhaltsverzeichnis
Ihr Ansprechpartner Markus Müller Director Software Engineering
Novatec_Markus-Mueller