Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

09.05.1980 - 

Dezentralisierte Entwicklung bei IBM:

Datenbanken sollen Softwarekosten senken

Die Programmierung von DOS/VSE findet weltweit im Verbund der IBM-Entwicklungszentren statt, wobei lokale Schwerpunkte für die technische Kompetenz gesetzt sind. Im Entwicklungszentrum Böblingen liegt neben der Verantwortung für die gesamt DOS-Entwicklung der Schwerpunkt auf dem Steuerprogramm, während beispielsweise in Lidingo (Schweden) der Assembler und in Endicott (USA) die Zugriffsprogramme für Benutzerdateien entwickelt werden.

Programmeinheiten oder Moduln werden von einzelnen Programmierern entwickelt. Die Moduln werden in größere Einheiten integriert, die jeweils einem Projekt zugeordnet sind. Diese Einheiten werden anschließend in die Komponente des lokalen Entwicklungszentrums eingefügt und nach einem abschließenden Test zum Zentrum der weltweiten Entwicklung (bei das nach Böblingen) gesandt, wo sie zum Gesamtprodukt zusammengefaßt und getestet werden. Parallel dazu wird die Programmdokumentation erstellt, integriert und international überprüft.

Dies zeigt bereits, daß ähnliche Aufgaben parallel in den verschiedenen Entwicklungszentren oder Gruppen stattfinden, welche an einer zentralen Stelle vielleicht besser durchzufahren wären. Eine reale Dezentralisation würde bedeuten, daß alle gemeinsamen Arbeiten (zum Beispiel Integration und Test) in der Zentrale stattfinden und nur einmalige Arbeiten (wie die Kodierung der Moduln) in den dezentralen Stellen.

Abzuleiten ist zunächst, daß sich hierarchisch-modulare Strukturen von Programmen für die Dezentralisation eignen. Die Organisation solcher Entwicklungsarbeiten läßt sich durchführen; es gibt jedoch noch sicherlich Verbesserungsmöglichkeiten. Dabei ist auch zu folgern, daß ein Entwicklungszentrum neben der Entwicklung der Programme auch versuchen sollte, die Verfahren für diese Entwicklungsarbeiten optimal zu entwerfen und gestalten. Es zeigt nämlich, daß die Qualität von Programmen nicht, zuletzt auch von den verwendeten Verfahren bei deren Erstellung (zum Beispiel Datenbanken) abhängt.

Kriterien für einen optimalen Entwicklungsprozeß

Bei der Entwicklung von größeren Programmsystemen ist es zweckmäßig, eine örtliche und technische Verteilung der Programmentwicklung vorzunehmen.

Was sind nun die Kriterien, welche in den einzelnen örtlichen Entwicklungszentren maßgebend sind? Zunächst entscheidet die Anzahl der Leute (Manpower) welche für ein Projekt zur Verfügung stehen. Damit verbunden sind Angaben über die Produktivität des einzelnen Programmierers; wieviel Anweisungen kann ein Programmierer pro Zeiteinheit (Woche/Monat/Jahr) programmieren. Damit ist es zunächst möglich, die Anzahl und Größe der zu entwickelnden Programmen über einen Zeitraum festzulegen. Dezentralisation, wie schon erwähnt aus Personalgründen notwendig, wird auf dem Gebiet der Programmierung zu keinen Verbesserungen der Produktivität führen können.

Das eigentliche Gebiet, auf dem Rationalisierung ist erster Linie möglich ist, ist das Spektrum der möglichen Programmiersprachen, Datenbanken, Datenfernverarbeitungssysteme und Computer-Netzwerke. Verbesserungen auf diesem Gebiet verbessern auch die Produktivität.

Programmiersprachen

Es zeigt sich, daß höhere Programmiersprachen besser geeignet sind, Programme in örtlich und technisch unterschiedlichen Entwicklungszentren zu kodieren. Die Vorteile dabei sind:

1. Die Produktivität eines Programmierers ist höher als bei maschinenorientierten Sprachen.

2. Die Austauschbarkeit der Programme zwischen verschiedenen Programmierern ist leichter, da die Darstellung des logischen Ablaufs leichter zu erkennen ist.

Höhere Programmiersprachen sind daher bei den meisten Anwendungen vorzuziehen.

Nun aber zu den verwendbaren Datenbanken und Datenbankkommunikationsverfahren. Um dezentral an verschiedenen Orten Programme zu entwickeln, müssen folgende Voraussetzungen gegeben sein:

1. Ein gemeinsames Datenbanksystem ist vorhanden.

2. Die Kommunikation zwischen den Datenbanken muß leicht möglich sein.

3. Die verwendeten Hardware-Konfigurationen sollten kompatibel sein.

4. Ein Kontrollsystem über die Datenbanken (einschließlich der Möglichkeit zu Statistiken und Berichten) ist notwendig.

Am Beispiel der Betriebssystementwicklung von DOS/VSE lassen sich obige Kriterien beleuchten. Zunächst ist das Kriterium 1 erfüllt, ein gemeinsames technisches und organisatorisches Datenbanksystem wird benutzt. Ebenso sind die Hardware-Konfigurationen kompatibel. Die Erfahrung zeigt aber auch, daß dabei Probleme, wie sie jeder Benutzer eines Computers hat, auftreten können. Datenbanksysteme entwickeln sich natürlich weiter, es gibt neue Versionen, in diesen Fällen muß dafür gesorgt sein, daß alle Beteiligten immer die gleiche Version installiert haben. Für das Kontrollsystem (Kriterium 4) gilt das gleiche; die Erfahrung zeigt aber auch hier, daß Kontrollsysteme verschieden oder gar nicht eingesetzt werden können. Wiederum ist daher auch für die Kontrollsysteme eine Vereinheitlichung der verwendeten Kontrollen und Berichte notwendig. Die Praxis zeigt, daß bei gleichen Kontrollsystemen die eigentliche Kontrolle dennoch erst in der Zentrale stattfindet. Dies ist aber sicherlich der aufwendigste Weg, um Fehler zu finden. Er führt zu mehrmaligen Durchläufen in den Filialen (Satelliten) und der Zentrale.

Bezüglich der Kommunikation zwischen den Datenbanken muß bemerkt werden, daß uns die Entwicklungen der Vergangenheit von einem Paketversendungssystem (ich meine den Postweg) zu interaktiven Datenfernverarbeitungssystemen geführt haben. Der durch diese Systeme mögliche Zeitgewinn, auch wenn die Systeme zeitweilig unterbrochen sind, hat sehr stark zur ökonomischen Entwicklung von Programmen in örtlich verschiedenen Entwicklungszentren beigetragen.

Versucht man Software-Produktivität zu messen, dann gibt es die verschiedensten Ansichten. Dies reicht von der reinen Anzahl der Anweisungen bis zur Messung des Nutzens für den Anwender (wenn dies Oberhaupt möglich ist). Dies sollte hier nicht diskutiert werden. Interessant ist es jedoch, zu vergleichen, wie sich die Meßzahl der Hardware - Ausgeführte Instruktionen pro Kosteneinheit und eine Meßzahl für Software - Programmierte Instruktionen pro Kosteneinheit - in den letzten Jahrzehnten entwickelt haben (Bild 1). Die Kosten für die Ausführung von Programmen auf einem Rechner haben sich um den Faktor 1000 reduziert, die Programmierproduktivität jedoch nicht in gleichem Umfang. Das Schließen dieser Schere wird eine neue Aufgabe der Zukunft sein, einerseits bei der Entwicklung neuer Programmiermethoden und andererseits bei der notwendigen Unterstützung durch Datenbanken und Kommunikationsverfahren.

Wie lassen sich nun die Forderungen für einen Entwicklungsprozeß möglichst ökonomisch und rationell erfüllen.

Durch die Einführung neuer Verfahren in der Programmierung (zum Beispiel Strukturierte Programmierung, Benutzung von höheren Programmiersprachen, Inspektionen) wird bereits ein Beitrag zur Erhöhung der Produktivität beigetragen. Der Anstieg in der Produktivität eines Programmierers (Bild 2) zeigt, daß die Fortschritte der Meßzahl eher langsam und kontinuierlich verlaufen. "Programmierte Anweisungen pro Zeiteinheit" ist eine Meßzahl, die wirtschaftlich einleuchtend ist, jedoch auch eine gewisse Problematik beinhaltet, Jede Art von Programmen ist sicher nicht technisch immer gleich schwierig zu entwickeln; über eine größere Menge von Programmierern gesehen, kann diese Meßzahl jedoch wieder vernünftig sein.

Neben den neuen Verfahren zur Programmierung spielen jedoch auch noch die verwendeten Hardware-Konfigurationen, Datenbanksysteme und deren Zugriffsmethoden eine wichtige Rolle. Schlecht funktionierende Systeme zur Unterstützung des Programmierers führen zu Demotivation und Zeitverlust und in weiterer Folge zu einer geringeren Produktivität. Das Datenbanksystem muß auf den Benutzer freundlich wirken, das heißt, es muß einfach und leicht zu bedienen sein. Betrachtet man dann noch die Integration der Programme, dann wird das Datenbanksystem von noch größerer Bedeutung. Die gemeinsame kompatible Hardware ist die Basis für die gemeinsame Software der Datenbanken. Das Betriebssystem MVS/TSO erlaubt die Eingabe und Speicherung der Programme für einzelne Komponenten A, B und C. Ebenso ist es möglich, damit das Gesamtsystem zu erstellen. Dies geschieht durch Übertragung der entwickelten Programme, von den Filialen zur Zentrale, wobei die Programme nur in Objekt-Format in der Zentrale gebraucht werden. Das fertige System wird wieder den einzelnen Filialen zur Verfügung gestellt. Damit ist gewährleistet, daß die Arbeiten logisch und funktionell getrennt sind und keinerlei oder nur geringe Überlappungen auftreten. Die Erfahrung zeigte, daß die Prozesse des Übersendens und Empfangens der Teile eines Systems gravierend die notwendigen Resourcen beeinflussen. Manuelle Eingriffe und Verfahren erhöhen die Fehlerhäufigkeit maßgeblich. Das Vorhandensein eines technisch und administrativ hochwertigen Datenbanksystems garantiert erst die ökonomische Verwendung eines Entwicklungsprozesses mit verteilten Verantwortlichkeiten (Komponenten). In diesem System müssen die notwendigen und austauschbaren Kontrollinformationen ebenso genau definiert sein.

Verbesserungen dieser Datenbanksysteme haben auch die Erhöhung der Produktivität in erster Linie erlaubt. Bei diesen Verbesserungen ist einerseits die Erfahrung der Entwickler und Anwender ein treibender Faktor andererseits auch die technologischen Fortschritte der Hardware. Es zeigt sich sehr deutlich, daß Software-Engineering eine Ingenieurwissenschaft mit eher empirischen Fortschritten ist. Eine solche empirisch gewonnene Tatsache ist es auch, daß es in einem Entwicklungsprozeß für, Programme (zum Beispiel im Rahmen eines Betriebssystems) kostengünstiger ist, verteilte Datenverarbeitung zu benutzen. Das Zentralisieren in einem Entwicklungsort (vor 5 Jahren üblich) wurde mit zunehmend verbesserten Datenbanksystemen und Datenfernverarbeitungsverfahren zunehmend resourcenfeindlicher. Der zweite Aspekt, der damit gleichzeitig erfüllt wurden ist, daß die Tätigkeit zu den Menschen an ihren Arbeitsplatz zurückkehrte.

Ausblick

Die Fortschritte der verteilten Datenverarbeitung haben gezeigt, daß sie sinnvoll und ökonomisch zur Entwicklung von Programmen in einem größeren Programmsystem (zum Beispiel ein Betriebssystem) eingesetzt werden kann. Die Verbesserung der Konzepte der Arbeitsaufteilung war zunächst in erster Linie, auf organisatorischen Strukturen aufbauend, durch empirisch gewonnene Ergebnisse möglich. Es wird die Aufgabe der nächsten Schritte sein, die existierenden mathematisch-formalen Modelle mit pragmatischen Ansätzen zu ergänzen.

*Heinz Hoja ist Manager der Abteilung "System Integration" der IBM, Böblingen. Auszug aus einem Vortrag des ADV-Kongresses, Wien, 17 bis 21. März 1980.