Mobile-App-Entwicklung
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. Bis 2022 sollen die Umsätze in den App Stores auf 157 Milliarden Dollar steigen. Das entspricht in etwa 26 Dollar pro Endgerät.[1]
Abgrenzung
Mobile-App-Entwicklung wird von der Softwareentwicklung für Desktop-Computer oder eingebettete Systeme in der Literatur unterschiedlich abgegrenzt.[2][3][4][5] 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 den 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, das 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.
Während 2011 noch kein eigener Studiengang für App-Entwickler existierte[6], wird inzwischen Mobile-App-Entwicklung als Studium oder Studiengang angeboten.[7][8] Auch auf Jobportalen wird der Beruf des Mobile-App-Entwicklers von der allgemeinen Softwareentwicklung abgegrenzt.[9]
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-Prototypen anfertigen. Diesen für User Akzeptanztests verwenden.[10]
- 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.[11][12] 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 empfohlen und es werden die Programmiersprachen Kotlin, Java, sowie C und C++ unterstützt.[13][14] Bei iOS wird die Programmierumgebung XCode empfohlen und es werden die Programmiersprachen Swift und Objective-C unterstützt.[15]
Hybride App
Hybride Apps verwenden hybride Frameworks und kommen vorrangig bei kleineren App-Projekten ohne komplexe technologische Anforderungen zum Einsatz. Eine hybride App muss nur einmal entwickelt werden und steht dann gleich für beide Betriebssysteme bzw. Plattformen, also Android und iOS, zur Verfügung. Wird die mobile App weiterentwickelt, dann treten oft die Einschränkungen des Frameworks in den Vordergrund und der Preisvorteil schwindet. Die App von Airbnb basierte ursprünglich auf dem Framework React Native. Inzwischen hat AirBnB diese aber durch eine native App ersetzt.[16]
Web App
Web Apps entsprechen, technisch gesehen, mobile Webseiten die über einen Webbrowser aufgerufen werden, sind aber in ihren Bedienung einer nativen App ähnlicher als einer Webseite. Web Apps werden nur einmal entwickelt und können mit jedem Betriebssystemen verwendet werden. Progressive Web Apps (PWA) erlauben erweiterte Offline-Funktionen und liefern eine noch bessere Nutzererfahrung (User Experience). PWA funktionieren auch offline und werden häufig ergänzend zu einer Webseite und zu einer mobilen App eingesetzt.
Literatur
- Florian Siebler-Guth: Der Prozess mobiler Entwicklungsprojekte: Muster agiler Methoden. Springer Vieweg, Wiesbaden 2019, ISBN 978-3-658-26730-8.
- Tejinder Randhawa: Mobile Applications: Design, Development and Optimization. Springer International Publishing, 2019, ISBN 978-3-030-02389-8.
Einzelnachweise
- ↑ Die Hälfte des gesamten Internet-Traffics kommt von Apps – und 64 weitere App-Statistiken | Kroker's Look @ IT. Abgerufen am 6. August 2020 (deutsch).
- ↑ Anthony Wasserman: Software engineering issues for mobile application development. Proceedings of the FSE/SDP Workshop on the Future of Software Engineering Research, 2010, S. 397–400, doi:10.1145/1882362.1882443.
- ↑ M. Nagappan and E. Shihab: Future Trends in Software Engineering Research for Mobile Apps. International Conference on Software Analysis, Evolution, and Reengineering (SANER), 2016, S. 21–32, doi:10.1109/SANER.2016.88.
- ↑ V. Giedrimas and S. Omanovič: The impact of mobile architectures on component-based software engineering. Workshop on Advances in Information, Electronic and Electrical Engineering (AIEEE), 2015, S. 1–6, doi:10.1109/AIEEE.2015.7367317.
- ↑ Ghita Mostefaoui and Tariq, Faisal: Mobile Apps Engineering: Design, Development, Security, and Testing. 1. Auflage. Chapman and Hall/CRC Press, 2018, ISBN 1-138-05435-6.
- ↑ Jürgen Hoffmann: Kleine Programme, große Chancen. Süddeutsche Zeitung, 14. Mai 2011, abgerufen am 8. Dezember 2020.
- ↑ Mobile Software Development. FH Joanneum, abgerufen am 8. Dezember 2020.
- ↑ Mobile App Development. In: lmu.de. Ludwig-Maximilians-Universität München, abgerufen am 8. Dezember 2020.
- ↑ Das Berufsprofil: App Developer. karrieresprung.de, abgerufen am 8. Dezember 2020.
- ↑ Das Geheimnis erfolgreicher Apps: UX Design. In: Ackee Blog. 23. August 2019, abgerufen am 6. August 2020 (deutsch).
- ↑ Android-Entwickler. Abgerufen am 31. August 2020 (englisch).
- ↑ Apple Developer Documentation. Abgerufen am 31. August 2020.
- ↑ Application Fundamentals. Abgerufen am 31. August 2020 (englisch).
- ↑ Android NDK. Abgerufen am 31. August 2020 (englisch).
- ↑ Adam Sinicki: Developing for Android vs developing for iOS – in 5 rounds. 9. Juni 2016, abgerufen am 31. August 2020.
- ↑ Gabriel Peal: Sunsetting React Native. In: medium.com - Airbnb Engineering & Data Science. 19. Juni 2018, abgerufen am 8. Dezember 2020 (englisch).