Mobile App-Entwicklung ist der Vorgang oder Prozess, durch den eine mobile App für mobile Endgeräte, wie bspw. Tablets oder Smartphones, entwickelt wird. Wie allgemein bei der Softwareentwicklung muss bei der Erstellung von mobilen Apps eine große Anzahl an unterschiedlichen Endgeräten berücksichtigt werden.
Die Entwicklung mobiler Apps ist ein Wachstumsmarkt und mobile Apps generierten 2019 mehr als die Hälfte des weltweiten Internet-Datenaufkommens. Im Jahr 2022 sollen die Umsätze im App-Markt bei 385,2 Milliarden US-Dollar liegen und bis 2026 auf über 500 Milliarden US-Dollar steigen.
Abgrenzung
Mobile-App-Entwicklung wird von der Softwareentwicklung für Desktop-Computer oder eingebettete Systeme in der Literatur unterschiedlich abgegrenzt. Mit dem technischen Fortschritt verschwimmen diese Grenzen auch zusehends.
- Batteriebetrieb: Im Gegensatz zu Desktop-Geräten haben mobile Geräten oft nur eine Batterie als Energiequelle und mobile Betriebssysteme (Android, iOS etc.) sind auf minimalen Energieverbrauch optimiert. Apps von Drittanbietern sollten ebenfalls entsprechend „schonend“ mit dem begrenzten Energievorrat umgehen.
- Sensoren: Im Gegensatz zu Desktop-Geräten haben mobile Geräte oft eine große Anzahl von unterschiedlichen Sensoren, die mit einer App direkt interagieren können. Bekannte Sensoren sind GPS, Kompass, Beschleunigungssensor oder Neigungsmesser.
- Konnektivität: Im Gegensatz zu Desktop-Geräten haben mobile Geräte oft große Anzahl von Verbindungsmöglichkeiten, wie GSM, UMTS, LTE, WLAN, Bluetooth, NFC. Dadurch, dass die mobilen Geräte nicht standortgebunden sind, ergeben sich große Herausforderungen für die Software, da Verbindungen jederzeit (auch unbeabsichtigt) abgebrochen oder überlagert werden können.
- Sicherheit: Durch die hohe Konnektivität ergeben sich auch besondere Anforderungen an die Sicherheit von mobilen Apps, da eine Vielzahl an „Einbruchszenarien“ denkbar ist.
- App Stores: Während „eingebettete Systeme“ meist ausschließlich mit werkseitiger Software laufen, können auf mobilen Betriebssystemen eine Vielzahl von Apps (Programme, Applikationen) vom Benutzer installiert und auch wieder entfernt werden.
- User-Interaktion: Mobile Apps werden meist mit Gestensteuerung bedient, im Gegensatz zu klassischen Desktop-Geräten, die meist mit Tastatur und Keyboard bedient werden. Bei der App-Entwicklung muss Rücksicht auf die kleine Bildschirmgröße mobiler Geräte genommen werden und die Bedienung entsprechend an die Ein- und Ausgabemöglichkeiten angepasst werden.
Anders als bisherige Generationen macht die überwiegende Mehrheit der Generation Alpha und Teile der Generation Z ihre ersten Erfahrungen mit Software und Computern mit mobilen Endgeräten und Mobile Apps. Bisherige Generationen kamen in der Regel als erstes mit PCs, Laptops und Desktop-Software in Berührung. Dieser Trend führt dazu, dass auch Desktop-Softwares immer häufiger Eigenschaften wie etwa das Design von Mobile Apps übernehmen. Während 2011 noch kein eigener Studiengang für App-Entwickler existierte, wird inzwischen Mobile-App-Entwicklung als Studium oder Studiengang angeboten. Auch auf Jobportalen wird der Beruf des Mobile-App-Entwicklers von der allgemeinen Softwareentwicklung abgegrenzt.
Entwicklungsprozess
Die Entwicklung mobiler Apps entspricht im Wesentlichen der Entwicklung von Software im Allgemeinen. Je nach Vorgehensmodell kann die Reihenfolge und Gewichtung der folgenden Prozesse unterschiedlich ausfallen: Planung, Analyse, Entwurf, Programmierung, Validierung und Verifikation.
Ein möglicher Ablauf könnte folgendermaßen aussehen:
- Analyse
- Projektumfang: Zielgruppe, Projektziele, Zwischen- und Endergebnisse definieren.
- Projekt-Roadmap: Projektziele, Meilensteine und Ergebnisse im Zeitplan einordnen.
- Use Case: Funktionsanforderungen und User Interaktionen festlegen.
- Projekt-Architektur: Strukturieren der beteiligten Systeme – Applikationen, Server, Datenbanken – und deren Beziehungen untereinander
- UX Design
- Wireframes: Inhalte und Funktionalitäten der App-Seiten in einer Grundstruktur organisieren.
- Klickbarer Prototyp: Auf Basis der Wireframes einen klickbaren App-Prototyp anfertigen. Diesen für User Akzeptanztests verwenden.
- UI Design
- Softwareentwicklung
- Minimum Viable Produkt (MVP): Minimal funktionstüchtiges Produkt veröffentlichen und testen.
- Frameworks: Je nach Use Case ein Framework wählen oder die App nativ programmieren. Dabei die vorgegebenen Programmiersprachen der App Stores verwenden.
- Programmiersprachen: Android Apps in Kotlin (früher: Java) und iOS Apps in Swift (früher: Objective-C) programmieren.
- Agile Entwicklung: Mobile App agil entwickeln. Dabei Unstimmigkeiten im UX Design beseitigen und weitere Funktionen hinzufügen.
- Tests: Die App nach jedem Entwicklungsschritt (Meilenstein) testen und verbessern.
Technologie
Native App
Unter nativen Apps versteht man normalerweise Apps, die mit jenen Werkzeugen und Programmiersprachen erstellt wurden, die von den Herstellern der jeweiligen Plattformen empfohlen und unterstützt werden. Durch die direkte Unterstützung der Entwicklungswerkzeuge durch die Hersteller haben native Apps meist als erster Zugriff auf neue Funktionen (z.B: neue Sensoren, spezielle Kamerafunktionen etc.) der jeweiligen Plattform. Weiters weisen native Apps ein gut ausbalanciertes Verhältnis von Ressourcenverbrauch und Geschwindigkeit auf. Bei Android wird die Programmierumgebung Android Studio empfohl