Finanzielles Risiko bei der Programmentwicklung muß eingegrenzt werden:

Kostenminimierung durch portable Software

23.09.1983

Der Preisverfall bei elektronischen Schaltungen in VLSI-Technik hat auch die Konstruktion von kostengünstigen und leistungsfähigen Kleinrechnern ermöglicht. Der heutige Computermarkt zeichnet sich inzwischen durch ein vielfältiges Angebot an billiger Hardware aus. Als Folge davon hat sich bei der Realisierung von Informationssystemen in kommerziellen und technischen Bereichen das Kostenverhältnis von der Hard- zur Software krass zu Ungunsten der Software verschoben.

Die Reduktion der Softwarekosten stellt heute eine vordringliche Aufgabe dar. Bisher schauten sich die Benutzer meist vergebens bei Rechnerlieferanten für eine Lösung dieses Problems um. Wenig befriedigend war die Behelfslösung, sich auf einen bestimmten Rechnertyp auszurichten und der Versuch, die selbst entwickelte Software über mehrere Rechnergenerationen hinweg wieder zu verwenden, was je nach Hersteller unterschiedlich gelang. Durch das beschränkte Softwareangebot der Rechnerhersteller hatte der Anwender einen Großteil der benötigten Software selbst herzustellen. Unterstützt wurde er dabei häufig von User-Groups, die den Austausch von Programmen eines bestimmten Herstellers förderten und von den Softwarehäusern, die sich auf Softwarepakete für bestimmte Rechnerhersteller und Anwendungsbereiche spezialisierten.

Tiefere Systemkosten interessieren mittlerweile auch etablierte Softwarehäuser, ermöglichen sie doch die Erschließung neuer Applikationen. Heute versuchen Entwickler von Softwarepaketen und Systemlieferanten, die Erwartungen an kostengünstigen Informationssystemen zu erfüllen, letztere durch Integration von Software für kommerzielle und technische Anwendungen in die auf dem Markt eingekaufte

Hardware.

Die Anbieter stehen vor dem Problem, eine Softwarelösung für verschiedene Rechner- und Betriebssysteme zu erstellen und sie über den ganzen Lebenszyklus zu unterstützen.

Die eingeschlagenen Lösungswege sind:

1. Erstellen selbständiger Softwarepakete in einer maschinenunabhängigen Form und Umsetzen in die jeweilige Programmiersprache für die Zielmaschine mit anschließender Kompilation (Portable Software).

2. Schaffen eines standardisierten Systems für einen bestimmten Anwenderbereich und Generieren des kundenspezifischen Systems mit einer Anzahl zugeschnittener Programm-Modulen, was nur für ein an einen bestimmten Rechnertyp gebundenes System bisher möglich war. (Wiederverwendbare, aber nicht unbedingt portable Software)

HLL-Sprache als einzige Möglichkeit

Softwareportabililität ist maßgebend für die Nutzung des Marktangebots an kostengünstiger Hardware und führt auch am schnellsten zu einer Senkung der Softwarekosten. Abgesehen von den gestalterischen Problemen, ergeben sich bei der Erstellung von portablen Programmen praktische Schwierigkeiten.

- Umsetzen von maschinenunabhängigen Programmen für eine Zielmaschine (Hardware)

- Integration der Programme in das Betriebssystem der jeweiligen Zielmaschine (Softwareumgebung)

Das Umsetzen der Programme ist zur Zeit praktisch nur mit einer der weitverbreiteten HLL-Sprachen (High Level Logik) möglich. Die für die Zielmaschinen zur Verfügung stehenden HLL-Compiler verwenden abweichende Sprachdefinitionen (verschiedene Sprachdialekte), was zu Unverträglichkeiten mit dem Programm-Quellcode führt. Das bedeutet neben erhöhten Aufwendungen für das Anpassen auch eine Verminderung der Programmgüte, da dabei neue Fehler entstehen können.

Umgebung färbt auf Programme ab

Bei der Integration von Programmen in verschiedene Betriebssysteme liegen die Schwierigkeiten auf einer anderen Ebene: Jedes Betriebssystem schafft eine softwarespezifische Umgebung, welche mehr oder weniger stark auf die Programme abfärbt. Hier gilt es wie bei der strukturierten Programmierung eine geeignete Methode anzuwenden. Diese besteht unter anderem darin, eine Standardumgebung zu kreieren, welche die Schnittstellen zum jeweiligen Betriebssystem enthält. Auf diese Weise bleibt die Programmumgebung zwischen den verschiedenen Rechnersystemen stabil. Für wirklich portable Software, die mit vertretbarem Aufwand auf dem gewünschten Rechnersystem benützt werden kann, ist man auf Mittel, die die Portabilität aktiv unterstützen, angewiesen.

Dazu gehören:

- Ein wiederverwendbarer Compiler mit Codegeneratoren für verschiedene Rechnersysteme. (Für eine neue Zielmaschine soll der Compiler lediglich mit einen neuen Codegenerator bestückt werden müssen)

- Vom Compiler unterstützte Standardumgebung, die den Programmen logische Schnittstellen für den Verkehr mit der äußeren Welt bieten. Die Umgebung muß portabel sein, das heißt, zwecks leichter Anpassung in einen logischen, systemunabhängigen Teil und in systemunabhängige Teile für Betriebsystem und Maschine strukturiert werden.

Die Standardumgebung kann als Routinebibliothek, als Kernel einer virtuellen Maschine oder als portables Betriebsystem realisiert werden.

Um das finanzielle Risiko der Softwareentwicklung in Grenzen zu halten, sollte die für Programmherstellung benützte Software portabel sein. Nur dann verdient sie die Bezeichnung Werkzeug. In jedem Fall sollte aber der Programm-Quellcode käuflich sein.

Diese Forderungen werden beispielsweise von den portablen Compilern und der Betriebssystem-Software der Firma Whitesmiths, Ltd. USA erfüllt. In Europa gibt es eine Anzahl Firmen, die Whitesmith-Software unterstützen und eigene Produkte, basierend auf dem "Whitesmith C Compiler", herstellen. Der vertrieb von Codegeneratoren für immer mehr Zielmaschine gehört zu den aktivsten Geschäftszweigen dieser Firmen.

Whitesmith, Ltd. haben Compiler für eine große Gruppe von Mini- und Mikrocomputern geschaffen, eingeschlossen LSI-11, PDP-11 und VAX von Digital Equipment Corporation, MC68000 von Motorola sowie 8080, 8085 und 8086 von Intel Corporation. Um den Anwendungsbereich von Pascal und Compilern zu ergänzen, werden Bibliotheken und Schnittstellen zur Verfügung gestellt, welche den Benützern von Cross-

Compilern erlauben, die Systemaufrufe der Betriebssysteme wie Unix, RT-11, RSX-11 M, RSTS/E, IAS, CP/M, CDOS, ISIS-II, VAX/VMS und VERSAdos zu verwenden. Neu ist die Unterstützung für P/OS (DEC-Professional), MSDOS (IBM Personal), CP/M-86, RMX/86, RMX/88, VDI (Intel).

Spürbare Senkung der Kosten möglich

Der Whitesmith Compiler erlaubt das Erstellen von portablen Programmen für 8-, 16- und 32-Bit Maschinen mit der Run-time-Bibliothek CLIB. CLIB bietet eine Unix-ähnliche Umgebung zur Unterstützung der Programmportabilität an. Der Compiler unterstützt auch das portable Betriebssystem Idris, ein Unix ähnliches System, dessen Binär-Version auf mehreren Maschinen zur Verfügung steht (LSI-11, PDP-11, Intel 8080 mit Cromenco-Stil Bankumschaltung, Motorla MC68000 mit VERSAbus und EXORmacs Memory-Management sowie neuestens VAX).

Diese Werkzeuge erscheinen zur Durchführung eigener Softwareprojekte geeignet, um einerseits die Softwarekosten niedrig zu halten und andererseits kostengünstige Hardware zu verwenden. Zusammen mit dem Vorteil einer einheitlichen Umgebung für die Programmentwicklung führt dies letztlich zu einer spürbaren Senkung der Systemkosten.

*Ronald Wakefield und Christoph Hörler sind als Projektleiter beziehungsweise als Softwareingenieur bei der RETIS Realtime Software AG aus Aarau/Schweiz tätig.