Weg von Insellösungen und Brückenchaos:

Unix entlastet den Zentralrechner

09.09.1983

MÜNCHEN - Ein überlasteter Hostrechner ist ein schlechter Gastgeber für Software-Entwickler. Angesichts der rasanten Entwicklung im Bereich der Mikros und Supermikros bietet sich eine dedizierte Software-Entwicklung geradezu an.

In der Vergangenheit sind viele Ansätze im Bereich der Software-Engineering-Methoden und -Werkzeuge gemacht worden, von denen die meisten nicht den Sprung vom wissenschaftlichen Experimentierstadium in die kommerzielle Praxis schafften.

Unbestritten bleibt jedoch, daß nicht wenige Produkte dieser Entwicklungsperiode isolierte Teile eines Softwareentwicklungsprozesses mit beachtlicher Leistung unterstützen.

Diese Produkte werden auch teilweise in kommerzieller und technisch-wissenschaftlicher Anwendungsumgebung bei der Softwareentwicklung eingesetzt, aber sie sind größtenteils untereinander inkompatibel und erlauben kein durchgängiges, konsistentes Arbeiten.

Diese isolierten Inseln einer softwaretechnischen Unterstützung wirken heute fast wie Anachronismen in einer Welt der leistungsstarken, kostengünstigen Fertigungsstraßen.

Sollte man deshalb für diese Inseln Brücken softwaretechnischer Unterstützung konstruieren, um ihre Lücken zu schließen, um quasi industrielle Software-Engineering-Systeme zu erhalten?

Wohl kaum, wie die finanziell schmerzhaften Erfahrungen mit isolierten Insellösungen und einem fast unüberschaubaren Brückenchaos bei kommerziellen Anwendungssystemen gezeigt haben, es sei denn, man wollte die Ergebnisse des Software-Engineerings ad absurdum führen.

Isolierte Teile lassen sich nicht integrieren

Aus isolierten Teilen läßt sich bottom up kein kostengünstiges, funktional geschlossenes und Maintenance-freundliches Gesamtsystem erstellen, wenn man den dazu notwendigen Integrationsprozeß nicht top down durch eine in sich geschlossene Entwicklungsphilosophie steuert. Auch die systematische Realisierung modularer kommerzieller Anwendungssysteme bedarf einer integrierten Entwicklungsphilosophie.

Die Vorteile solcher modularen Anwendungssystemen lassen sich wie folgt zusammenfassen:

- Die Ersterstellung eines modularen Anwendungssystems wird durch die Verwendung von fertigen, kompatiblen Komponenten kostengünstiger. Die Entwicklung beschränkt sich auf die für eine maßgeschneiderte Problemlösung individuellen Ergänzungsmodule.

- Die Maintenance reduziert sich hauptsächlich auf einzelne wenige Komponenten. Damit sinkt der Maintenance-Aufwand, und die Systemlebensdauer steigt. Eine Überalterung läßt sich aber auch so nicht vermeiden.

- Beim notwendigen Generationswechsel lassen sich viele der existierenden Komponenten für die neue Systemversion verwenden. Damit sinkt der Entwicklungsaufwand.

Modulare Anwendungssysteme sind von Natur aus integrierte Software-/Hardwaresysteme (das heißt, es ist Software-/Hardwareunabhängigkeit erforderlich, damit die oben getroffenen Aussagen für beide Teile gelten können), sie können selbst Teile von modularen Anwendungssystemen sein (wie zum Beispiel ein Software-Engineering-System in einem unternehmensspezifischen Anwendungsgesamtsystem), und sie sind in die Organisation eines Unternehmens einzubetten.

Welche Auswirkungen diese Aussagen auf die Entwicklungsphilosophie eines Software-Engineering-Systems haben können, soll dieser Artikel aufzeigen. Die Realisierung dieser Aussagen ist ein aktueller Trend zu pragmatischen Problemlösungen, der sich abzuzeichnen beginnt.

Der kleine Informatikcartoon soll nicht nur beweisen, daß man sich sehr wohl Insellösungen ohne Brückenchaos vorstellen kann (dieses ist wohl auch kein Wunder bei dem Namen seines Autors), sondern auch den wohl wichtigsten Trend bei Software-Engineering-Systemen verdeutlichen, den Weg zu kostengünstigen, hardwareunabhängigen und dedizierten Softwareentwicklungsinseln, die ohne Brückenchaos in ein Gesamtsystem integriert werden können.

Nur so läßt sich die Softwareentwicklung aus dem stürmischen Fahrwasser des RZ-Produktionsbetriebes herausnehmen, und das ist notwendig, um die unangenehmen Performance-Interferenzen zwischen diesen beiden Anwendungsinseln vermeiden zu können.

Ausgelastete Hostrechner sind keine zuvorkommenden Gastgeber für Softwareentwickler. Sie lassen ihre Gäste oft wegen zu langer Wartezeiten verdursten, und wenn ein Hostrechner einmal gar streikt, dann sitzen auch alle Softwareentwickler auf dem trockenen. Ein teurer Spaß für den, der diese Party finanzieren muß.

Die Idee der dedizierten Software-Engineering-Systeme liegt eigentlich

auch schon in der Vergangenheit der Software-Methoden und -Tools, aber es ist eine sehr hardwareabhängige Vergangenheit.

Hardware veraltet schnell

Angesichts der rasanten Entwicklung im Bereich der Mikros und Supermikros, sind diese Systeme wegen Hardwareüberalterung mehr oder minder zum Sterben verurteilt, so gut sie auch softwaretechnisch sein mögen. Der Umstellungsaufwand auf eine neue inkompatible Hardware ist ein finanziell nicht zu unterschätzender Faktor.

Hardwareunabhängigkeit war natürlich auch ein Schlüsselwort der Vergangenheit, nur zeigt sich erst jetzt ein möglicher Weg in eine hardwareunabhängige Zukunft, und dieser Weg führt in den Unix-Bereich.

Die notwendige Basis für die Realisierung einer neuen Generation von offenen, modularen, hardwareunabhängigen und integrierten Arbeitssystemen kann die gleiche pragmatische, professionelle Entwicklungsphilosophie sein, wie sie für kommerzielle Anwendungssysteme gefordert wird.

Die Schlüsselworte für diese Systeme sind:

- Nutzung des breiten Spektrums von leistungsstarken und kostengünstigen 16/32-Bit-Computern für die das Betriebssystem Unix (eine Entwicklung der Bell Laboratories) zum Quasistandard geworden ist. Unix, oder die mit einer Lizenz von AT & T entwickelten Unix-Derivate, sind schon auf einer Vielzahl dieser Rechner verfügbar, und die Zahl wächst stetig weiter. Damit wird die Hardware beliebig ausbaubar beziehungsweise austauschbar, und Unix ist selbst ein elementares Software-Engineering-System.

- Nutzung von ergonomischen und kostengünstigen Hardwarekomponenten im Peripheriebereich (Terminals, Drucker etc.), denn Softwareentwickler sind auch Menschen, für die die Anforderungen an Bildschirmarbeitsplätzen im Bürobereich gelten sollten.

- Nutzung von Kommunikationsbausteinen, wie etwa Protokollkonverter, beim Brückenbau zu Hostsystemen und Vernetzung dedizierter Systeme.

- Nutzung von kommerziellen Softwarebausteinen bei der Realisierung des Entwicklungssystems. Äußerst nützliche Bausteine sind dabei unter anderem: ein modulares Textsystem, das sowohl einen Texteditor für Schreibkräfte als auch einen Texteditor für Programmierer mit einer einheitlichen Benutzeroberfläche besitzt. Damit lassen sich allgemeine Textverarbeitung und Programmierung in der Softwareentwicklung standardmäßig lösen. Eine relationale Datenbank mit einem integrierten Data Dictionary, multiuserfähig, mit interaktiven Werkzeugen wie zum Beispiel Menü-Handler, Bildschirmmaskengenerator, Dateneingabe mit automatischer Konsistenzprüfung sowohl auf Datenformat als auch auf Gültigkeit der Keywerte in Abhängigkeit der Datenbankoperationen, Abfrage mittels Bildschirmmasken, vollrelationaler Standarddatenbankabfragesprache SQL, Reportgenerator und Programmierspracheninterface. Diese Datenbank dient zur Abspeicherung der durch schrittweise Verfeinerung, phasenweise anfallenden Entwicklungsdaten, zur Sicherung der internen Konsistenz eines Softwareentwicklungssystems und zur einfachen Informationsauwertung. Eine solche Datenbank ist damit sogar der entscheidende Kern eines Software-Engineering-Systems der neuen Generation und sie unterstützt zusätzlich auf einfache Weise das Rapid Prototyping für Anwendungssysteme. Nutzung und Bereitstellung von Softwarewerkzeugen. Hierzu gehören die elementaren Softwaretools von Unix, wie zum Beispiel das SCCS (Source Code Control System), das zur Versionskontrolle und -verwaltung von dem Programmcode dient, der mit einem Texteditor für Programmierer erstellt wurde. Das SCCS läßt sich aber auch auf die Dokumentation anwenden, die mit einem Texteditor für Schreibkräfte erstellt wurde. Ein weiteres Unix-Tool ist Make, das auch dazu verwendet werden kann, baumartig modularisierte Textdokumente die unter SCCS verwaltet werden, versionsgesteuert zu einem Dokument zu verdichten. Damit hat Unix eine allgemeine Standardversionsverwaltung für Textdokumente. Neben diesen elementar

Softwaretools werden die Systeme der neuen Generation grafische Analyse- und Designmethoden wie etwa SADT (Structured Analysis and Design Technique von SofTech), Datenstrukturanalyse im Entity-Relationship-Modell, abstrakte Entwurfsspezifikationssprache für das Modul- und Interfacedesign, Pseudocode für die schrittweise Modulverfeinerung, automatische Codiervorbereitung sowie Generierung von Testabdeckung und Testrahmen softwaretechnisch durchgängig unterstützen.

- Letztendlich werden die Software-Engineering-Systeme der neuen Generation modulare Systeme sein, deren Komponenten wie:

- Projektmanagement,

- Qualitätssicherung,

- Konfigurationskontrolle und Produktverwaltung,

- flexibles toolunterstütztes Projektphasenkonzept,

- Textverarbeitung und Dokumentation

auch in einer anderen Anwendungsumgebung einsetzbar sein werden. Ein abgestimmtes Schulungsangebot und die Möglichkeiten der projektbegleitenden Unterstützung durch erfahrene Methodenberater werden diese Systeme organisatorisch abrunden.

Wer aber nun behauptet mit den Software-Engineering-Systemen der neuen Generation beginne de Zeit des Schlaraffenlandes für die Anwender der unterschlägt die immer noch notwendigen Vorleistungen, die die Anwender selber erbringen müssen, um eine erfolgreiche Einführung sicherzustellen. Dazu sind folgende Schritte erforderlich:

- Schaffung einer firmenspezifischen Entwicklungsphilosophie.

- Schulung in den so festgelegten Software-Engineering-Methoden und Tools.

- Klare organisatorische Integration der Projektarbeit in die allgemeine Organisation eines Unternehmens.

- Training on the Job durch geplante Pilotprojekte und Unterstützung durch Methodenberater.

- Vollständige Übernahme eines effizienten Entwicklungssystems mit einer Mannschaft, die dahintersteht.

Der Erfolg der dedizierten Sofware-Engineering-Systeme der neuen Generation auf Unix-Basis baut natürlich auch auf die Begeisterung, Kreativität und Selbstdisziplin der Sofwareentwickler. Die Flexibilität dieser Systeme wird beweisen, daß diese Hoffnung nicht auf Sand gebaut wurde.

Bernd Insel ist Mitarbeiter des SCS Systemhauses in München.