Was bei der Entwicklung mobiler Lösungen wirklich zählt, Teil 2


12.09.2016 von

https://www.iteratec.de/fileadmin/Bilder/News/iteratec_logo.png https://www.iteratec.de/fileadmin/Bilder/News/iteratec_logo.png iteratec GmbH

In dieser Blogserie möchten wir näher auf Architektur und Entwicklung von Anwendungen für mobile Lösungen eingehen und widmen uns dabei verschiedenen Fragestellungen: 

In Teil 2 der Blogserie stellen wir vor, welche Besonderheiten bei der Anwendungsentwicklung für mobile Lösungen zu beachten sind.

Drei zentrale Unterschiede zu klassischen Anwendungen

Die Entwicklung von mobilen Anwendungen folgt anderen Paradigmen als konventionelle Anwendungen.

Bei der Architektur und Entwicklung gibt es viele Besonderheiten, die berücksichtigt werden sollten. Die zentralen Besonderheiten ergeben sich durch das Betriebssystem, die Dynamik im Gerät und die heterogene Gerätelandschaft.

Das zugrundeliegende Betriebssystem schränkt für eine Anwendung den maximalen Verbrauch von Ressourcen ein. Die Besonderheiten, die sich durch das Betriebssystem ergeben, sind unter anderem Speicherverbrauch der Anwendung, Scheduling der Threads bzw. der Prozesse, Rechteverwaltung einer Anwendung und führt zu folgenden Restriktionen:

  • jede Anwendung darf maximal nur einen bestimmten Speicher zu jedem Zeitpunkt allokieren und kann z. B. durch Caching überschritten werden 
  • ein Prozess darf die UI nicht blockieren, z. B. durch einen Netzwerkzugriff
  • Systemereignisse haben eine höhere Priorität, bspw. versetzt ein Anruf eine Anwendung in den Hintergrund
  • der Anwendung können bestimmte Rechte, wie z. B. Zugriff auf die Mediengalerie entzogen werden

Ein mobiles Endgerät zeichnet sich zudem durch eine innere Dynamik aus, Ereignisse treten ein, Sensoren werden de-/aktiviert und die Konnektivität zum Internet ist variabel. Folgende Szenarien stellen keine Ausnahme dar: 

  • die Verbindung zum Internet bricht während der Benutzung ab
  • Sensoren stehen wegen geringer Energie nicht zur Verfügung
  • das System schaltet sich aufgrund geringer Energie ab, der Akkustand ändert sich permanent
  • der Benutzer betätigt die Standby-Taste

Der Status eines mobilen Endgeräts ist in stetiger Änderung, eine Reaktion auf diese Änderungen sollte in der Architektur berücksichtigt werden. Hierzu stellt das SDK der jeweiligen Plattform Zugriffe auf den Status des mobilen Endgerätes zur Verfügung, auf die reagiert werden kann.

Es gibt Problemfälle, die im produktiven Einsatz oder durch Feldtests der Anwendung erst entstehen können und nur sehr schwer zu simulieren sind. Um diese Fehler zu identifizieren und die Robustheit der Anwendung zu erhöhen, sollten Maßnahmen zum Monitoring ergriffen werden. Das sichere Versenden der Monitoring-Information im Fehlerfall an einen Server und die Integration in den Entwicklungsprozess sind nicht trivial. Auf dem Markt existieren einige Frameworks, wie z. B. Crashlytics, die hierfür eine gute Hilfestellung bieten. 

Des Weiteren gibt es Faktoren bei der Entwicklung einer mobilen Anwendung, die unabhängig von der Programmiersprache und/oder der Entwicklungsumgebung zu beachten sind. Eine der größten technischen Besonderheiten ist die im Allgemeinen sehr heterogene Gerätelandschaft. Die Heterogenität bezieht sich auf:

  • unterschiedliche Hardwareausstattung, z. B. Displaygröße, Prozessor, Arbeitsspeicher, etc.
  • Unterschiede in den Verfügbaren Schnittstellen, GPS, LTE, NFC, etc.
  • unterschiedliche Betriebssystem-Versionen, iOS7,iOS8, Android 4.4, Android 5, Windows 8, Windows 10, etc.

Eine mobile Anwendung muss sich der Herausforderung stellen, dass sie auf den meisten Gerätekonfiguration gleichermaßen gut funktioniert muss. Eine mobile Anwendung, die auf einem mobilen Gerät performant ist, kann auf einem anderen mobilen Gerät ziemlich langsam sein, wie z. B. Verbindung über LTE, unterschiedliche Prozessoranzahl und/oder –geschwindigkeit (z.B. iPhone 5, iPhone 6, Android 4.4, Android 5). Die meisten Unterschiede weist hier Android auf. iPhone und Windows haben dieselbe Größenordnung. 

Die schnellen Release-Zyklen der Betriebssysteme sind ebenfalls zu berücksichtigen. Mit diesen nahezu jährlichen Updates können neue Funktionen bereitgestellt werden, vorhandene geändert oder alte abgeschaltet werden. Dies führt dazu, dass mindestens bei jedem Betriebssystems-Update die Anwendung auf Funktionsfähigkeit getestet werden oder modernisiert werden sollte, wie z.B. Material Design bei Android bzw. Google. Erschwerend bei der Entwicklung kommt hinzu, dass unterschiedliche Versionen derselben Anwendung und des Betriebssystems im Umfeld koexistieren. Es gibt keinen Standardmechanismus, der einen Nutzer zu einem Update von beidem zwingt.

Im nächsten Teil der Blogserie geht es um Unterschiede in der Anwendungsentwicklung bei iOS, Android und Windows.

Diesen Artikel bewerten
 
 
 
 
 
 
 
1 Bewertungen (100 %)
Bewerten
 
 
 
 
 
 
1
5
5
 

Artikel im Warenkorb:

0