14. Okt 2019
Lesedauer 23 Min.
Im Dschungel der Möglichkeiten
Überblick zu Plattformen und Arten von Applikationen
Den Kunden bei der Wahl von Plattform und Softwaretechnologie besser beraten.

Es gibt Applikationen für den Windows-Desktop, Apps für die UWP, für iOS und für Android, native Apps, hybride Apps und Webapplikationen. Die Ansätze zur Entwicklung sind genauso unübersichtlich, und die Auswahloptionen scheinen unendlich. Hier deshalb ein Versuch, etwas Ordnung ins Chaos zu bringen. Ein Szenario aus der Praxis:
- Kunde: „Wir brauchen eine Software (Applikation, App, was auch immer …), um das nachfolgend beschriebene Problem zu lösen. Können Sie dazu ein Konzept und ein Angebot unterbreiten?“
- Softwareschmiede: „Welche Plattform setzen Sie denn ein? Welches Betriebssystem? Legen Sie Wert auf eine native App, oder genügt eine Web-App?“
Nutzerpräferenzen
Software wird für die Anwender erstellt. Diese wollen damit Probleme lösen (Textverarbeitung, Datenbanken), Spaß haben (Spiele) oder die Kommunikation vereinfachen (Chat, E-Mail) und so weiter. Das bedeutet, dass man alle Aspekte des Nutzerverhaltens erforschen muss. Aus technischer Hinsicht ist zu klären, mit welchen Geräten und Betriebssystemen die Anwender arbeiten möchten. Der Blick in die Statistik ist hilfreich. Man ist heute auf allen drei entscheidenden Gerätekategorien – Desktop, Smartphone und Tablet – unterwegs (Bild 1). Auch zwischen den Altersgruppen gibt es keine wesentlichen Unterschiede. Es zeigt sich aber auch eine Dominanz der mobilen Systeme. Das Smartphone hat man stets dabei und kann jederzeit auf die App und das Internet zugreifen.
Anwender:Nutzung der Gerätekategorien(Bild 1)
www.bluecorona.com/blog/mobile-marketing-statistics
Im Verlauf des Tages ändert sich die Präferenz der Gerätekategorie (Bild 2). Für ein produktives Arbeiten setzt man nach wie vor auf größere Bildschirme und leistungsfähigere Hardware. Zu den typischen Bürozeiten wird an Desktop-Geräten am meisten gearbeitet. Am Morgen dominiert die Nutzung des Smartphones. Hier können E-Mail und soziale Netzwerke auf neue Nachrichten geprüft werden. Aber auch über den gesamten Tagesablauf ist das Smartphone ein Begleiter des Anwenders. In den Abendstunden liegt der Höhepunkt der Nutzung von Tablet-PCs. Moderne Tablets sind leistungsfähig und bieten eine annehmbare Bildschirmgröße für die individuelle Unterhaltung, zum Beispiel zum Videoschauen oder zum Surfen im Internet, ganz gemütlich im heimischen Wohnzimmer.

Nutzerpräferenzenim Laufe eines Tages(Bild 2)
comScore Device Essentials, UK, 21. Jan. 2013
Was schlussfolgern wir daraus? Man ist heute flexibel unterwegs. Innerhalb eines Vorgangs wird durchaus der Gerätetyp gewechselt. Die Fahrkarte wird am PC ausgesucht und gebucht. Die digitale Version wird dem Zugbegleiter als Nachweis vorgezeigt. Der Versicherungsfachmann kalkuliert das Angebot bei Kunden auf dem Tablet und bittet diesen auch gleich zur digitalen Unterschrift. Im Backoffice werden die Dokumente zusammengestellt und dem Kunden im Webportal zur Ansicht zur Verfügung gestellt. Andererseits gibt es auch weiterhin Applikationen, die an eine Geräteklasse gebunden sind.Auch bezüglich der Betriebssysteme gibt es unterschiedliche Präferenzen, die mit den Gerätetypen einhergehen. Auf dem Desktop sind es Windows, macOS und Linux und für mobile Geräte Android und iOS (Bild 3).

Marktanteileder Desktop-Betriebssysteme im Juli 2019(Bild 3)
https://netmarketshare.com/operating-system-market-share.aspx
Vor dem Treffen von Entscheidungen muss man als Entwickler die Nutzerpräferenzen genau analysieren. Daraus lassen sich dann erste Hinweise zu den App-Typen und zum Vorgehen bei der Entwicklung ablesen.
Vielfalt im Windows-Lager
Bei Desktop-Applikationen hat man grundsätzlich die Wahl zwischen den folgenden App-Plattformen (Tabelle 1):Tabelle 1: Plattformen für Windows-Applikationen
|
- Universal Windows Platform (UWP),
- WPF (.NET),
- Windows Forms (.NET),
- Win32.
Apps für macOS
Anwendungen für macOS werden auch als Apps bezeichnet. Der Store dient als zentraler Ort der Verteilung. Dennoch können Anwendungen auch ohne den Store auf macOS installiert werden. Viele typische macOS-Anwendungen stehen auch für andere Systeme bereit, das heißt, dass sie plattformübergreifend programmiert sind. Im Bereich Grafik und Design wird aufgrund der Leistung der Hardware (hochauflösende Bildschirme) traditionell mit Apple-Computern gearbeitet. Native macOS-Applikationen programmiert man in der Entwicklungsumgebung Xcode und als Programmiersprache wird Swift verwendet, der modernisierte Nachfolger von Objective-C.Anwendungen für Linux
Bei Anwendungen für Linux liegen die Dinge ähnlich wie bei macOS. Es gibt eine Reihe von Applikationen und Softwaresuiten (zum Beispiel Libre Office), die unter allen Betriebssystemen zur Verfügung stehen. Ausgewählte Software unter Linux wird meist als Open Source lizenziert, deshalb lassen sich die Aufwendungen für die Entwicklung unter Linux schwerer refinanzieren als unter Windows und macOS. Hinzu kommt der Umstand, dass es „das Linux“ nicht gibt, sondern eine große Anzahl von Distributionen. Für die Darstellung der Oberfläche (das Fenstermanagement) gibt es für Linux unterschiedliche Desktops. Die bekanntesten Vertreter sind KDE, Gnome und Unity. Mit der Wahl des Desktops wird nicht nur die Art und Weise der Bedienung bestimmt, sondern auch, welche Tools und Applikationen zur Verfügung stehen.Ähnlich vielfältig und offen sind die Optionen zur Softwareentwicklung unter Linux. Die meisten Entwicklungsumgebungen sind Open Source. Der gewählte Desktop hat auch Einfluss auf die Vorgehensweise zum Erstellen der Benutzeroberfläche. Eine Vielzahl von integrierten Entwicklungsumgebungen (IDEs) stehen damit auch für Linux zur Verfügung, zum Beispiel Eclipse. Ebenso gibt es Tools und IDEs, welche explizit nur auf Linux angeboten werden, wie etwa KDevelop.Zusammenfassend ist also festzustellen, dass Linux als exklusives System im Unternehmensbereich für Clientsoftware eher die Ausnahme darstellen dürfte. Typischer sind plattformübergreifende Applikationen, die dann auch auf Linux-Distributionen eingesetzt werden können.Wenig Auswahl im mobilen Bereich
Im Bereich Mobile Computing ist die Auswahl noch weiter eingeschränkt als für den Desktop. Hier gibt es bekanntermaßen nur die Betriebssysteme Android und iOS. An dieser Verteilung wird sich auch künftig nicht allzu schnell etwas ändern, wenn man den Aussagen der Marktforschung glaubt (Bild 4). Drei Arten von Apps kann man für mobile Geräte unterscheiden:
Marktanteile(aktuelle und künftige) der mobilen Systeme(Bild 4)
IDC Worldwide Quarterly Mobile Phone Tracker, May 2019
- native Apps,
- Web-Apps,
- hybride Apps.
Möglichkeiten der App-Entwicklung
Nun zu den Möglichkeiten der App-Entwicklung. Erfreulicherweise ist hier die Zahl der Ansätze inzwischen recht groß. Das hat zur Folge, dass man als Entwickler das passende Vorgehen wählen kann.Es ist sinnvoll, die Entwicklungsansätze grob nach den Arten der App einzuteilen (Bild 5). Zur nativen App gelangt man üblicherweise auf dem Weg, den das Betriebssystem dafür vorsieht. Plattformübergreifende Lösungen ermöglichen es, native Apps für mehrere Systeme simultan aus einer Codebasis zu erstellen. Hier liegt im Moment das Feld der größten Innovationen. Dazu später mehr. Native Apps für Android werden mit Java oder Kotlin erstellt. Das UI wird mithilfe einer XML-Datei deklariert. Als Entwicklungsumgebung empfiehlt Google Android Studio, das einen grafischen Designer anbietet. Ein wichtiger Aspekt bei der Programmentwicklung von Apps für Android ist die SDK-Version, für welche die App entwickelt wird. Neuere Features setzen eine aktuelle Version des SDK voraus. Nutzt man diese, so läuft die App eventuell aber nicht auf Geräten mit einer nicht aktuellen Version des Betriebssystems. Abhilfe kann eine Android Support Library schaffen. Deren Ziel ist es, neuere Features auch auf ältere Versionen von Android einsetzen zu können. Diese Vorgehensweise hat verständlicherweise Grenzen. In der Praxis macht dies es erforderlich, einen guten Kompromiss zwischen der minimal unterstützten Android-Version und der Aktualität der Plattform zu wählen.
Systematisierungder Entwicklungsansätze zur mobilen App(Bild 5)
Autor
Web-Apps sind, wie bereits beschrieben, eine besonders an die mobilen Devices angepasste Form einer Webapplikation. Sie werden über den Browser des jeweiligen Systems gestartet. Das UI basiert auf HTML und CSS, und die Geschäftslogik wird mittels JavaScript realisiert. Der Einsatz von Frameworks kann den Entwicklungsaufwand reduzieren. Mithilfe der Erweiterung zu einer Progressive Web App (PWA) kann ein teilweiser Offline-Betrieb auch bei Web-Apps erreicht werden. Eine PWA ist gewissermaßen eine Symbiose aus einer Webseite und einer App. In einer PWA wird ein sogenannter Service Worker genutzt, um über Caching einen Offline-Betrieb zu ermöglichen.Hybride Apps basieren in der Regel ebenfalls auf den Technologien HTML, CSS (UI) und JavaScript (Logik). Damit die Web-App sich für das System wie eine native App „anfühlt“, wird sie in eine Art Container gepackt. Für die Entwicklung stehen Frameworks wie zum Beispiel Cordova zur Verfügung. Die App öffnet beim Starten ein Browserfenster im Vollbildmodus, sodass der Browser als solcher nicht identifizierbar ist. Die Webadresse kann nicht geändert werden. In dieser Web-View wird die mit HTML, CSS und JavaScript erstellte App angezeigt. Über das Framework bekommt die App mithilfe von Plug-ins Zugriff auf Systemfunktionen, etwa auf die Kamera oder den GPS-Sensor.Zusammenfassung: Aus technischer Perspektive ergibt sich ein klarer Vorteil für native Apps. Sie können die gesamte Hardware des jeweiligen Systems nutzen, was bedeutet, dass sie uneingeschränkten Zugriff auf die Gerätefunktionen haben und die beste Performance aufweisen. Auch die Anpassung an die Systemumgebung in Sachen Design und Bedienung ist optimal.
Vielfalt bei Webapplikationen
Applikationen werden heute sehr oft als Webapplikationen erstellt. Sie sind das Gegenstück zu oft „schwerfälligen“ Desktop-Anwendungen und weisen die folgenden Vorzüge auf:- Installation: Setzt man eine Webapplikation ein, dann ist nur ein Installationsvorgang erforderlich. Dieser findet üblicherweise auf dem Server statt. Der Client greift über das Netzwerk mithilfe eines Browsers auf die Anwendung zu. Lokal auf dem Client sind (gegebenenfalls mit Ausnahme von Plug-ins) keine Installationen notwendig. Oft genügt ein beliebiger Webbrowser, der auf jedem System ohnehin bereits vorhanden ist.
- Aktualität: Webanwendungen sind aus Sicht des Anwenders stets aktuell. Darum muss sich der Benutzer nicht kümmern. Man erhält meist im Rahmen einer vertraglichen Vereinbarung die aktuellen Updates. Diese werden direkt über den Server installiert und es bedarf keiner Eingriffe auf Seiten des Clients.
- Mehrbenutzerbetrieb: Ein Mehrbenutzerbetrieb ist für eine Webapplikation in der Regel Standard.
- Systemanforderungen: Man kann in der Regel von jedem System aus mit nahezu jedem beliebigen Browser arbeiten. Die Applikation läuft auf dem Server, was bedeutet, dass die Daten- oder Internetverbindung für eine performante Ausführung wichtiger ist als die lokale Software oder Hardware. Man kann Webanwendungen auch auf weniger leistungsfähiger Hardware ausführen.
- Kosten: Bei gelegentlicher oder einmaliger Nutzung sind Webanwendungen oft günstiger als Desktop-Anwendungen, denn Sie zahlen in der Regel nur für die Dauer der Nutzung oder den Ressourcenverbrauch.

Client-Server-Architektur(Bild 6)
Hauser/Wenz, PHP 7 und MySQL, 2019
Auf Seiten des Servers kann die dafür notwendige Infrastruktur schon umfassender aussehen und wird üblicherweise auch in weitere Teilkomponenten gegliedert. Die Kommunikation wird auf Serverseite durch einen HTTP-Server abgewickelt. Dieser Teil der Serverstruktur stellt gewissermaßen die Präsentationschicht serverseitig dar. Er liefert im Ergebnis den HTML-Code für den Webbrowser. Komplexere Anwendungssysteme teilen die Verantwortung auf Serverseite neben dem HTTP-Server noch auf einen Anwendungs- und einen Datenbankserver auf. Sämtliche Kommunikation zwischen Client und Server erfolgt über das Web. Das Web basiert auf der Infrastruktur des Internets, das heißt:
- Protokoll: Die Datenübertragung erfolgt über das Transmission Control Protocol / Internet Protocol (TCP/IP).
- Adressierung: Die Adressen werden als Uniform Resource Locator (URL) angegeben.
- Darstellung: Die Darstellung der Inhalte erfolgt mittels HTML und CSS im Browser.

Architektureiner serverseitigen PHP-Webapplikation(Bild 7)
Hauser/Wenz, PHP 7 und MySQL
Bei clientseitigen Webapplikationen werden die Skripte allerdings nicht vom Server, sondern vom zugreifenden Client ausgeführt und verarbeitet. Zu diesem Zweck werden die Skripte entweder in das HTML-Dokument eingebettet oder in eigene Dateien ausgelagert. Ruft der Nutzer eine Webanwendung mit einem solchen clientseitigen Skript auf, sendet der Webserver das HTML-Dokument sowie das Skript an den Browser. Der Browser führt das Skript aus und präsentiert wiederum das Ergebnis.Oftmals werden Webanwendungen als sogenannte Single-Page-Applikationen (SPA) erstellt. Hier kommt lediglich ein einziges HTML-Dokument zum Einsatz. Innerhalb des Dokuments werden neue oder veränderte Daten dynamisch geladen. Die Aktualisierung der Darstellung erfolgt dann zum Beispiel auf der Basis einer DOM-Manipulation. Zur Vereinfachung der clientseitigen Programmierung stehen eine Reihe von Klassenbibliotheken und Frameworks zur Verfügung. Sie dienen der Wiederverwendung und der Lösung bekannter Programmieraufgaben. Klassenbibliotheken bieten dabei Methoden und Funktionen zur universellen Nutzung in der eigenen Applikation an. Frameworks stellen dem Entwickler ein Gerüst für eine Anwendungsarchitektur bereit, das von der eigenen Anwendung genutzt wird. Nicht immer ist eine trennscharfe Abgrenzung möglich.
Vorgehen: Klassisch – RAD – Low Code
Die für die Entwicklung der Anwendungen eingesetzten Werkzeuge sollen dabei helfen, das ursprüngliche Ziel leichter zu erreichen. Gerade in der Softwareentwicklung kann es aber dazu kommen, dass man sich durch den Einsatz von zu vielen Tools von der eigentlichen Aufgabe eher ablenken lässt, als dass man sie leichter erledigt. Dieses „Overtooling“ ist genauso wenig hilfreich wie ein nur sehr minimalistischer Werkzeugeinsatz. Nicht für jede Aufgabe benötigt man ein spezielles Programm. Eine integrierte Entwicklungsumgebung (IDE) vereint unter einer gemeinsamen Oberfläche typischerweise die folgenden Bestandteile:- Editor mit Quelltextformatierung und Syntaxhervorhebung,
- Compiler/ Interpreter/ Linker,
- Debugger,
- Werkzeuge zum Erstellen grafischer Benutzeroberflächen (UI-Builder),
- Versionsverwaltung.
- Je nach Entwicklungsumgebung werden weitere Funktionen bereitgestellt. Wir alle kennen beispielsweise die kaum zu überblickende Funktionsvielfalt von Visual Studio.
Low Code, No Code
In eine vollständig andere Richtung geht der Trend, dass man die Entwicklung von Business-Anwendungen ein Stück in die Richtung der Fachabteilungen verschieben möchte. Die Gründe sind vielfältig. Zum einem sind Entwicklungskapazitäten knapp, das heißt, der Arbeitsmarkt der Softwareentwickler ist teilweise leergefegt, und zum anderen steigt der Bedarf an individuellen Softwarelösungen in Unternehmen. Technikbegeisterte und versierte Anwender (sogenannte Citizen Developer) in den Fachabteilungen sind durchaus in der Lage, einen Teil der Entwicklungsaufgaben zu übernehmen. Dazu werden ihnen hochintegrierte Tools an die Hand gegeben, die das weitgehende Erstellen von Softwarelösungen erlauben. Diese Tools werden als Low-Code- beziehungsweise im Sonderfall auch als No-Code-Plattformen bezeichnet. Low Code – so sagt es bereits der Name – steht für möglichst wenig Code beim Erstellen von Software. Typische Einsatzgebiete sind Anwendungen aus den Bereichen Vertrieb, Marketing oder Produktionsplanung. Low-Code-Plattformen haben also das Ziel, wiederkehrende Aufgaben der Softwareentwicklung zu standardisieren. Dabei setzen diese nicht auf technischer Ebene an, es geht also nicht um die Wiederverwendung von Programmcode, sondern ihr Fokus ist die Ebene der Funktionen einer Software (Use Cases). Hier gibt es ein großes Potenzial zur Standardisierung. Typische sich wiederholende Aufgaben sind zum Beispiel: formularbasierte Datenerfassung, Validierung der Daten, Bereitstellen der Benutzeroberfläche, lokale Datenhaltung, Umsetzung eines spezifischen Workflows und die Anbindung der neuen Software an die bestehende Unternehmens-IT. Meist bieten Low-Code-Plattformen folgende Möglichkeiten:- Quellcodearmes oder quellcodefreies Realisieren der Benutzeroberfläche.
- Umsetzen der Geschäftslogik zum Beispiel auf Basis einer grafischen Modellierung der Geschäftsprozesse.
- Anbinden der Datenhaltung.