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. 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.[1][2]
Abgrenzung
BearbeitenMobile-App-Entwicklung wird von der Softwareentwicklung für Desktop-Computer oder eingebettete Systeme in der Literatur unterschiedlich abgegrenzt.[3][4][5][6] 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[7], wird inzwischen Mobile-App-Entwicklung als Studium oder Studiengang angeboten.[8][9] Auch auf Jobportalen wird der Beruf des Mobile-App-Entwicklers von der allgemeinen Softwareentwicklung abgegrenzt.[10]
Entwicklungsprozess
BearbeitenDie 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.[11]
- 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
BearbeitenNative App
BearbeitenUnter 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.[12][13] 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.[14][15] Bei iOS wird die Programmierumgebung XCode empfohlen und es werden die Programmiersprachen Swift und Objective-C unterstützt.[16]
Hybride App
BearbeitenHybride Apps verwenden hybride Frameworks wie Ionic Capacitor und Apache Cordova.[17] Sie kommen vorrangig bei kleineren App-Projekten ohne komplexe technologische Anforderungen zum Einsatz und werden in HTML, CSS und JavaScript entwickelt.[18] Hybride Apps werden mithilfe eines Wrapper verpackt, sind also von ihm umgeben. Der Wrapper öffnet Webseiten und stellt diese dann in einem App-Container bereit.[19] Ein ähnlicher, wrapper-basierter, Aufbau findet sich auch bei kommerzieller Software, die Websites in Apps umwandelt, wieder. Diese Ansätze sind von neuartigen hybriden Frameworks wie Flutter zu unterscheiden. Dort erfolgt die App-Entwicklung mit der Programmiersprache Dart und es wird kein webbasierter Wrapper mehr verwendet.[20] 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.[21]
Web App
BearbeitenWeb Apps entsprechen, technisch gesehen, mobile Webseiten, die über einen Webbrowser aufgerufen werden, sind aber in ihrer Bedienung einer nativen App ähnlicher als einer Webseite. Web Apps werden nur einmal entwickelt und können mit jedem Betriebssystem verwendet werden. Progressive Web Apps (PWA) erlauben erweiterte Offline-Funktionen, können dementsprechend auf Schnittstellen der Endgeräte zugreifen, um mit ihnen zu interagieren und liefern eine noch bessere Nutzererfahrung (User Experience). Der Zugriff auf die Schnittstellen wird durch JavaScript Frameworks und HTML 5 realisiert. PWA funktionieren auch offline und werden häufig ergänzend zu einer Webseite und zu einer mobilen App eingesetzt.
Literatur
Bearbeiten- 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
Bearbeiten- ↑ 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).
- ↑ App – Weltweit | Statista Marktprognose. Abgerufen am 2. November 2022.
- ↑ 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 978-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. (PDF) 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.
- ↑ What is Hybrid Mobile App Development: Hybrid vs Native vs Web. 6. Februar 2019, abgerufen am 2. November 2022 (englisch).
- ↑ Houcem: Die Vor- und Nachteile von Hybrid und Nativer App-Entwicklung. In: Fabware Blog. 17. August 2019, abgerufen am 2. November 2022 (deutsch).
- ↑ Grundwissen App-Entwicklung. Abgerufen am 2. November 2022 (deutsch).
- ↑ FAQ. In: Flutter. Abgerufen am 14. Januar 2023 (englisch).
- ↑ Gabriel Peal: Sunsetting React Native. In: medium.com – Airbnb Engineering & Data Science. 19. Juni 2018, abgerufen am 8. Dezember 2020 (englisch).