Portability (Softwareportabilität)
Was ist Portability (Softwareportabilität)?
Software-Portabilität (Portability, Übertragbarkeit) ist eine Eigenschaft, die einem Computerprogramm zugeschrieben wird, wenn es mit minimaler Nacharbeit auf anderen Betriebssystemen als dem, für das es entwickelt wurde, ausgeführt werden kann. Die Portabilität von Software ist wichtig für Anwendungen, da die Fähigkeit, auf anderen Desktop- und Mobilplattformen zu arbeiten, die Flexibilität der Benutzer und den potenziellen Benutzerkreis der Anwendung erhöht. Die Entwicklung von Software unter Berücksichtigung der Portabilität spart Entwicklern Zeit und Aufwand, wenn sie neue Software in einer anderen Umgebung einsetzen.
Unter Portierung (Porting) versteht man alle Arbeiten, die notwendig sind, um das Computerprogramm in der neuen Umgebung zum Laufen zu bringen. Ebenso ist der Begriff Portabilität selbst ein Maß dafür, ob Software ohne größere Nacharbeiten portiert werden kann.
Eine portierbare Anwendung könnte zum Beispiel auf Plattformen wie Windows, Linux, iOS und Android laufen. Der Portierungsprozess kann die Übertragung der installierten Programmdateien auf ein anderes System oder die Erstellung desselben Programms unter Verwendung eines anderen Quellcodes umfassen.
Im Allgemeinen sind Programme, die sich an Standardprogrammschnittstellen halten, portabel. Im Idealfall muss ein solches Programm nur für das Betriebssystem kompiliert werden, auf das es portiert werden soll. Erweiterungen müssen möglicherweise entfernt oder durch vergleichbare Funktionen im neuen Betriebssystem ersetzt werden. Zusätzlich zu den Sprachunterschieden kann die Portierung auch eine Datenkonvertierung und eine Anpassung an neue Systemverfahren zur Ausführung einer Anwendung erfordern.
Arten der Softwareportabilität
Im Folgenden werden drei grundlegende Arten der Softwareportabilität beschrieben:
- Die Anwendungsportabilität bezieht sich auf Anwendungen, die mit Blick auf die Portabilität entwickelt wurden. Portierbare Anwendungen werden von einer Umgebung in eine andere konvertiert.
- Quellcode-Portabilität bedeutet, dass ein Programm so erstellt wird, dass derselbe Quellcode in verschiedenen Umgebungen funktioniert. Allerdings müssen alle Plattformen die gleiche Programmiersprache unterstützen.
- Datenportabilität bezieht sich auf Daten, die von einer Datenbank oder einem Rechenzentrum in ein anderes übertragen werden können. Wenn die Daten nicht ohne weiteres in eine andere Umgebung übertragen werden können, müssen sie für das andere System neu erstellt werden.
Andere, spezifischere Beispiele für Portabilität sind containerisierte Anwendungen. Eine containerisierte Anwendung kann beispielsweise auf jeder Host-Plattform ausgeführt werden, die Container unterstützt und auf der die gleichen Betriebssysteme laufen.
Wie man Softwareportabilität implementiert
Die Implementierung der Softwareportabilität kann sich je nach dem, was erstellt wird, unterscheiden. Als allgemeiner Prozess besteht der erste Schritt jedoch darin, alle Systemanforderungen und Abhängigkeiten zu dokumentieren, die die Software für den Umzug in eine neue Umgebung benötigt. Möglicherweise kann ein Tool wie AWS Data Migration Service verwendet werden, um Daten automatisch zwischen zwei Umgebungen zu verschieben. Auch Automatisierungs-Tools wie Red Hat Ansible können den Portierungsprozess unterstützen.
Wenn die Anwendung oder Software zu viel Arbeit erfordert, um portiert zu werden, sollte sie so umgestaltet werden, dass sie die Portabilität unterstützt, oder sie muss in einer separaten Umgebung neu erstellt werden.
Zur Portierung von Quellcode gehört zum Beispiel die Neukompilierung des Quellcodes. Wenn dies zu schwierig ist oder wenn es zusätzliche Hürden gibt, die die Portierung erschweren, müssen Teile des Codes möglicherweise neu geschrieben werden. Andere potenzielle Hindernisse könnten darin bestehen, dass bestimmte Dateipfade nicht portierbar sind oder dass Bibliotheken von Drittanbietern auf einem Betriebssystem nicht verfügbar sind.
Vor- und Nachteile der Softwareportabilität
Die Portabilität von Software bietet die folgenden Vorteile:
- Erhöhte Flexibilität für Endanwender. Endbenutzer können wählen, welche Plattform oder welches Betriebssystem sie für den Zugriff auf eine bestimmte Anwendung oder Software verwenden möchten.
- Geringerer Zeit- und Arbeitsaufwand. Die Entwicklung einer Anwendung unter dem Aspekt der Portabilität trägt dazu bei, den Zeit- und Arbeitsaufwand für eine spätere Portierung der Anwendung zu verringern.
- Größere Benutzerbasis. Wenn eine Webanwendung sowohl auf Desktop- als auch auf mobilen Webbrowsern verfügbar ist, vergrößert sich der potenzielle Nutzerkreis im Vergleich zu einer Anwendung, die nur auf Desktop-Browsern verfügbar ist.
Zu den potenziellen Nachteilen der Softwareportabilität gehören jedoch folgende:
- Neuentwicklung erforderlich. Einige Software, Codes oder Anwendungen erfordern möglicherweise zu viel Arbeit, um als portabel zu gelten, was bedeutet, dass wichtige Teile des Programms neu entwickelt werden müssen.
- Grad der Portabilität. Der Grad der Portabilität einer Software kann je nach Umgebung unterschiedlich sein, was möglicherweise mehr Arbeit bedeutet.
- Langsamere Portabilität. Die Portierung von Software kann langsamer sein, weil die Software nicht für die andere Umgebung optimiert ist.
Strategien der Softwareportabilität
Es gibt drei Strategien oder Dimensionen für den Softwareportabilitätsprozess: vertikal, horizontal und tief.
- Vertikal. Vertikal, auch Entwicklungslebenszyklus genannt, ist ein Prozess, der die Portabilität während des gesamten Softwareentwicklungszyklus gewährleistet. Um die Konsistenz einer Anwendung zu gewährleisten, wird die Portabilität durch Entwicklungs-, Test-, Qualitätssicherungs- und Produktionsumgebungen hergestellt. Dadurch wird sichergestellt, dass sich die Software in Umgebungen funktioniert, die der Produktionsumgebung entsprechen.
- Horizontal. Horizontal, auch Plattform oder Anbieter genannt, konzentriert sich auf Abhängigkeit und Flexibilität, in der Regel durch Cloud-Migrationen oder Multi-Cloud-Bereitstellungen. Horizontal portable Systeme können auf Infrastrukturen wie Windows oder Linux oder auf Cloud-Service-Anbietern wie AWS oder Microsoft Azure laufen.
- Tief. Deep, auch Replikation genannt, konzentriert sich auf die Unterstützung von Code, Architekturen oder Software in großem Maßstab. Dies bedeutet, dass ein Dienst geschaffen wird, der mehrere Instanzen gleichzeitig verwalten kann. Zu den Methoden, die eine tiefe Portabilität ermöglichen, gehören der Lastausgleich (Load Balancing), API-Gateways oder Service-Meshes.