Freitag, 26. Oktober 2018

50 Jahre Software Engineering – Erinnerungen an Garmisch 1968

Es gibt nur wenige Ereignisse, die für die Informatik als ähnlich prägend angesehen werden wie die akademische Anerkennung des Fachgebiets Software-Ingenieurwesens vor 50 Jahren. Für Historiker geschah dies in einem Hotel am Stadtrand von Garmisch im Oktober 1968. Hier wurde ein neues Fachgebiet regelrecht aus der Taufe gehoben. Zumindest erhielt es seine Weihe dadurch, dass eine Gruppe von Akademikern sich mit ihm befasste. Da an der berühmten Tagung nur etwa 60 Kollegen teilnahmen, ist die Wirkung des Ereignisses vor allem dem von Peter Naur und Brian Randell verfassten Bericht zu verdanken. Randell wurde sich der entstehenden Sagenbildung alsbald bewusst und dokumentierte seinerseits die Entstehungsgeschichte der beiden Berichte, nämlich den von Garmisch 1968 und den von Rom 1970. (Auch PDF-Kopien der beiden Berichte erhält man über diesen Link)

Kurze Vorgeschichte

Fast alle Systemprogramme und Anwendungen, mit denen ich seit 1956 zu tun hatte, kann ich nur als solide technische Produkte bezeichnen. Sie waren unter sehr starken Beschränkungen durch die Hardware entstanden, erfüllten jedoch fast immer einen ökonomischen Zweck. Im Laufe der Zeit entstanden immer bessere Hilfsmittel zu ihrer Erstellung, vor allem die so genannten höheren Programmiersprachen. Der Wunsch des Kunden, die Vielfalt der Geräte oder die Komplexität der Anwendung verlangten immer öfter, dass Programme entstanden, die nur mittels ausgefeilter Überlagerungstechnik eine akzeptable Lösung ergaben. Erst die Einführung der virtuellen Speichertechnik brachte eine Erleichterung.

Da der Bedarf an System- und Anwendungs-Software schneller wuchs als alle noch so großen Teams abdecken konnten, entstand das Schlagwort von der Software-Krise. Man lenkte damit die Aufmerksamkeit zu allererst auf ein Mengenproblem. Es könnten noch mehr Rechner eingesetzt werden, wenn es die dafür nötige Software gäbe. Dass es auch ein Qualitätsproblem gab, war nicht vordergründig und für jedermann offensichtlich. Es lag jedoch im Interesse, vor allem von akademischen Autoren, das Qualitätsproblem stärker ins Bewusstsein zu rufen als dies Praktiker taten. Eine Beratergruppe der NATO, zu der unter anderen Friedrich L. Bauer von der TU München gehörte, verstand es, Militärs für dieses Problem zu sensibilisieren. Durch unzuverlässige Software könnte die Schlagkraft des Bündnisses in Mitleidenschaft gezogen werden. Man war daher bereit ein Expertengremien damit zu beauftragen, einen Weg aus dem Software-Dilemma aufzuzeigen.

Teilnehmer und Tagungsstruktur

Die für fünf Tage angesetzte Tagung wurde von einem Triumvirat geleitet. Neben Bauer waren dies H.J. Helms von der TU in Lyngby, Dänemark, und Louis Bolliet von der Universität Grenoble in Frankreich. Drei Gruppenführer sollten die Diskussionen leiten. Sie waren nach Entwickler-Schwerpunkten aufgeteilt: Entwurf unter Alan Perlis, Carnegie-Mellon-Universität Pittsburgh, Produktion unter Peter Naur, Universität Kopenhagen und Service unter Klaus Samelson von der TU München. Nur der Begriff Produktion bedarf hier einer Erklärung. Heute würde man stattdessen Implementierung sagen, also die Überführung eines Entwurfs in ein lauffähiges Produkt. Service umfasst Verteilung, Installation und Wartung.

Die Teilnehmer verteilten sich fast mit gleichem Anteil auf Hochschulen und Industrie in Europa und Nordamerika. Viele damals in Europa ansässigen DV-Hersteller (wie IBM, ICL, CII, Philips, Siemens und Telefunken) und einige amerikanische Software-Häuser waren vertreten. Einige Beobachter des NATO-Stabes oder anderer Behörden ergänzten das Publikum.


Herkunft der Teilnehmer

Zu jedem der drei Schwerpunkte gab es schriftlich eingereichte Stellungnahmen und/oder Impulsvorträge, gefolgt von Plenumsdiskussionen. Alle Veranstaltungen fanden im selben Saal statt. Nur für die Mahlzeiten wechselte man die Räume.

Meine Teilnahme und IBMs Reaktion

Teilnehmen konnte man nur auf Einladung der Tagungsleitung. Meine Einladung verdankte ich Louis Bolliet, den ich aus unserer gemeinsamen Zeit aus New York kannte. Leider war es mir nicht möglich, mir eine ganze Woche freizunehmen. Für Mittwoch hatte sich der IBM-Direktor für Software-Planung angemeldet, der leider früh verstorbene Ted Climis. Ich fuhr also Dienstags Abend nach Hause und am Mittwoch wieder zurück. Als ich Climis sagte, wo ich den Rest der Woche verbrachte, gab es die folgende Belehrung; ‚Sie verschwenden Ihre Zeit. Bilden Sie sich ja nicht ein, dass Hochschulleute Ihnen etwas Brauchbares zum Thema Software-Entwicklung sagen können. Das ist ein industrieller Prozess so wie die Chip-Entwicklung. Da können Hochschulen uns auch nichts sagen.‘ Climis war ein Hüne. Sein Wort hatte Gewicht in der ganzen Firma. Ich fuhr dennoch zurück.

Verlauf und Ergebnisse

Wie eingangs erwähnt, ist diese Tagung ungewöhnlich gut dokumentiert. Ich will daher nicht wiederholen, was anderswo leicht zu erfahren ist. Es waren nicht die normalen Vorträge über akademische Projekte, die mich beeindruckten, noch die spontanen, teils sarkastischen Einwürfe einiger besonders lautstarker Typen.

Einen sehr positiven Eindruck hinterließ bei mir Doug McIlroy. Er war damals Leiter eines Entwicklungsprojekts bei den Bell Laboratories in New Jersey. Er plädierte für die systematische Wiederverwendung von Software durch Baustein-Bibliotheken. Sein Vortrag hieß ‚Mass Produced Software Components‘. McIlroy schlug vor, denselben Weg zu gehen, mit dem die Hardware-Kollegen Erfolg hatten. Zuerst sollte man die Standardfunktionen definieren, die benötigt würden, um daraus große Systeme zusammenzufügen. Dann sollte man von jedem Baustein endlich viele Varianten anfertigen, mal zeit-, mal platzoptimiert, so dass sie unterschiedliche Anforderungen abdecken. Genau diese Idee wandten wir anschließend in Böblingen an, um eine Bibliothek von Bausteinen zu entwickeln, mit denen wir einige Jahre lang großen Erfolg innerhalb der Firma hatten. In den 1990er Jahren gab es einige Alternativ-Vorschläge, die die komponenten-basierte Entwicklung an den Rand drängten. Gemeint sind Muster (engl. pattern) und Plattformen.

Großen Eindruck bei den anwesenden Zuhörern hinterließ der Kollege John Nash aus dem IBM Labor in Hursley, England. Er stellte de facto das Material zur Verfügung, das damals firmenweit zur Schulung von Mitarbeitern in der Software-Entwicklung verwandt wurde. Zum ersten Mal sahen viele der Teilnehmer, vor allem die Hochschulvertreter, welche Faustregeln, Grafiken und Modelle IBM-intern eingesetzt werden. Auch die Kollegen des Forschungslabors in Yorktown Heights, NY, (Andy Kinslow, Ascher Opler, Brian Randell) gewannen Aufmerksamkeit, da sie ausführlich über die Software-Untersuchungen und Modellierungen berichteten, die dort vorgenommen wurden.

Von den akademischen Teilnehmern beeindruckten mich vor allem Alan Perlis und Edsger Dijkstra. Sie trugen weniger Fakten und Daten bei, als wohlüberlegte, teils pointierte Bemerkungen zu den Problemen, die sie erlebt hatten. Einige Dinge, die behandelt wurden, hatten nur einen sehr temporären Charakter. So befasste man sich einen halben Tag lang mit der Frage, ob es sinnvoll sei, Software als kostenpflichtiges Produkt unabhängig von der sie ausführenden Hardware zu verkaufen. Anwesende Vertreter von Software-Häusern konnten sich nicht für die Schöngeister erwärmen, die dafür warben, Software als ‚geistiges Gut‘ anzusehen und nur zu verschenken. Wenige Monate später verkündigte die Firma IBM ihr ‚Unbundling‘. Sie berechnete fortan Software-Produkte separat, reduzierte aber die Hardware-Preise nur geringfügig.

Nachwirkungen und Bewertung

Die Garmischer Tagung hatte ein ganzes Bündel von Nachwirkungen. Sie wirkten auf den verschiedensten Ebenen. Besonders ins Auge fallen mehrere wissenschaftliche Tagungsreihen, die entsprangen. Am bekanntesten ist die International Conference on Software Engineering (abgekürzt ICSE) der IEEE, die seither im 2-jährigen Zyklus stattfindet. Daneben gibt es das European Symposium on Software Engineering (ESEC), ebenfalls alle zwei Jahre, sowie die jährliche Tagung über Software Engineering der Gesellschaft für Informatik (GI). Zusätzlich zu den in den Tagungsbänden veröffentlichten Beiträgen gibt es mehrere neugegründete Zeitschriften, die sich dem Thema Software Engineering widmen, so die IEEE Transactions on Software Engineering.

Die vielleicht größte Nachwirkung bestand darin, dass das Fachgebiet Computerwissenschaften (engl. computer science) entweder umdefiniert oder aufgeteilt wurde. Überspitzt gesagt, die einer Naturwissenschaft nachempfundene Computerwissenschaft wurde um eine Ingenieur-Auffassung ergänzt oder von dieser abgelöst. Es wurde an vielen Hochschulorten der Welt, vor allem aber in den USA, ein zweiter Studiengang eingerichtet. Da in Deutschland mit der Informatik ein anderes Verständnis vorherrscht als im angelsächsischen Raum – darauf einzugehen würde hier zu weit führen – bestand die Notwendigkeit einer Umorientierung nicht. Lediglich die Universität Stuttgart ging diesen Weg. Hier gibt es heute neben der Informatik den Studiengang Softwaretechnik. In ihm findet – anders als der Name suggeriert – keine Beschränkung auf Software statt, sondern nur eine stärkere Betonung der ‚konstruktiven Aspekte‘.

Nach meiner Meinung ist diese Aufteilung, die die Informatik erfuhr, zu bedauern. So wichtig es auch ist, die Bedeutung und die Eigenart von Software zu erklären und zu betonen, so kann dies auch erfolgen unter Beibehaltung des Namens Informatik. Anders ausgedrückt, es tut der Informatik als Ganzer gut, sich stärker mit Software zu befassen. Software ist das Neue, die Technik, die den Fortschrift bestimmt. Software ohne Hardware zu lehren oder zu betrachten, führt dazu, dass suboptimale Lösungen entstehen, oder aber dass der Boden der Realität verlassen wird.

Fachliche Weiterentwicklung des Feldes

In den letzten 50 Jahren hat sich das, was man unter Software Engineering versteht, signifikant weiterentwickelt. Ich kann längst nicht alle Facetten beleuchten. Ich gebe nur einige Schwerpunkte an. Das Ziel, Software mit systematischen Verfahren zu entwickeln und zu bewerten, fand überall großen Anklang. Unter anderem sah sich das amerikanische Militär veranlasst, seine Aktivitäten stärker zu bündeln. Da die Raumfahrt ohnehin in Fragen der Softwaretechnik einsame Spitze darstellte, zogen Heer, Marine und Luftwaffe nach und gründeten ein Software Engineering Institute (SEI) an der Carnegie-Mellon-Universität in Pittsburgh. Für die technische Leitung gewannen sie meinen früheren IBM-Kollegen Watts Humphrey (1927-2010). Er setzte die bei IBM begonnene Arbeit fort und initiierte ein Software-Prozess-Programm. Zwischen 1986 und 1996 zeichnete er unter anderem verantwortlich für die Entwicklung des Capability Maturity Model (kurz CMM) sowie den Personal Software Process und den Team Software Process.

Humphrey schrieb fast ein Dutzend Bücher, die seine Verfahren begründeten und illustrierten. Einige davon findet man heute in den Institutsbibliotheken führender deutscher Informatik-Institute. Ihre gesamte Auflage erreicht vermutlich nicht ganz die des Bestseller eines anderen Ex-IBMers, nämlich Fred Brooks‘ ‚Mythical Manmonth‘ (geschätzte 300.000). Humphreys Bücher enthalten äußerst wertvolle Ratschläge, sowohl für die technische Seite wie für die organisatorische Seite der Software-Entwicklung. Vieles was er schrieb, probierte er vorher an sich selbst aus. Ein weiterer IBM-Kollege, der sich für die gesamte Branche verdient machte, ist Capers Jones (*1933). Er sammelte Produktivitätsdaten von über 12.000 Projekten von 600 Firmen auf der ganzen Welt, bereitete die Daten auf und bot sie für Vergleichszwecke an. Auch er führte im Ruhestand Arbeiten fort, die er während seiner aktiven IBM-Zeit begonnen hatte.


Finanzielle Geschichte eines SW-Projekts

Zwei Kollegen, die von Praktikern wegen ihrer Beiträge hoch geschätzt werden, sind Barry Boehm (*1935) und Dave Parnas (*1941). Boehm erfand die Methode COCOMO zur Softwarekostenberechnung, das risiko- und kostensenkende Spiral-Vorgehensmodell und eine erweiterte Delphi-Methode (wideband delphi). Parnas verdanken wir das Geheimnisprinzip (Datenkapselung), das eine wesentliche Grundlage der heutigen objektorientierten Programmiersprachen ist. Er engagierte sich gegen das SDI-Programm der USA, ein Raketenabwehr-Projekt, dessen technische Grundlagen sehr unsicher waren.

Dass die Kosten der Software-Entwicklung sowie die Qualität des Produkts erhöhte Aufmerksamkeit erfuhren − auch in akademischen Kreisen − war damals  allgemein zu begrüßen (und ist es auch heute noch). Software-Projekte brauchen kein Abenteuer mehr zu werden. Sie sind planbar, vorhersehbar und kontrollierbar. Nicht ganz denselben Grad an Interesse erreichte bisher das Bemühen, den Wert von Software zu ermitteln. Der Wert ergibt sich aus den Geschäftsmodellen, die verfolgt werden. Davon gibt es viele. Den Wert mit dem Umsatz gleichzusetzen, den man durch Verkauf des Produkts erzielen kann, ist nur eines von vielen. (In einem Blog-Beitrag des Jahres 2016 wurde dieses Thema behandelt)

Ausblick und Fragen

Fast scheint es, als ob die Ziele und Ambitionen, die man mit dem Software Engineering verbindet, beim alten Eisen gelandet sind. Die moderne Zeit hat sie scheinbar überrollt. Das gilt zumindest in zweierlei Hinsicht. Die strenge und systematische Vorgehensweise wird vielfach als Ballast empfunden, den man gern abwirft. Anstatt umfassender Planung bevorzugt man heute wieder das iterative Vorgehen. Man sticht quasi an einer Stelle durch, liefert einen Prototypen aus und verbessert diesen. An die Stelle von ‚clean development‘ tritt ‚lean development‘ oder ‚smart development‘. Die Entwicklungsdauer (engl. time to market) hat in der Regel Vorrang vor Qualität, Kosten, Benutzbarkeit, usw.

Ein anderes Phänomen stellt das Geschäftsmodell und die Marktmacht von Firmen wie Google dar. Ihr Suchdienst wirft derart hohe Gewinne ab, dass sie den eigentlichen Software-Markt total unterlaufen können. Sie ruinieren alle Preise, die man für Software als Produkt erzielen kann, indem sie damit drohen, jedes beliebige Software-Produkt der Welt kostenlos anzubieten. Das ist kein Grund, den Untergang der Software-Industrie vorherzusagen. Jeder muss schließlich das Geschäftsmodell finden und verfolgen, dass ihn trägt.

PS: Sehr lesenswert sind die vor kurzem erschienenen Berichte von zwei Nicht-Teilnehmern der Garmischer Tagung, von Barry Boehm und Manfred Broy.

Kommentare:

  1. Nach dem historisch so bedeutsamen kommunistischen Manifest von 1848 kam im Jahre 2001 das agile Manifest in die Welt. Anstatt an die Proletarier aller Länder wandte es sich an die Kreativen, d.h. die in der Produktentwicklung tätigen Personen. Seine Botschaft lautet: ‚Wertschaffende aller Länder entschleunigt Euch!‘ (engl. value ceators of all lands decelerate!). In meinen Worten ausgedrückt bedeutet es: ‚Ignoriert bewährte Methoden und Werkzeuge, vermeidet die so unbeliebte Dokumentation, macht ja keine verbindlichen Zusagen (engl.: commitments), ändert beliebig oft das Produkt und vergesst möglichst schnell alles früher Gesagte‘.

    AntwortenLöschen
  2. Klaus Küspert aus St. Leon-Rot schrieb: Agilität allenthalben! Schwieriges Thema, aber ich glaube, wir klassisch in der Softwareentwicklung sozialisierten können und dürfen diesbezüglich nicht der „final arbiter“ sein. Anderes Beispiel: Die erste VW Golf Generation der 1970er wurde etwa ein Jahrzehnt lang produziert („Golf 1“). Sehr schön. So etwas war danach schon ab den 1980ern indiskutabel lang - und heute erst recht. Schon nach fünf oder weniger Jahren kauft kaum noch einer die bisherige Modellgeneration.

    Und noch deutlicher dies alles bei Software. Alle ein, zwei Jahre ein neues Release mit neuen Funktionalitäten und dazwischen mal Patches, das war jahrzehntelang angemessen (und ging auch kaum anders). Heute wäre dies indiskutabel lang, wie der Neckermann-, Quelle- oder Otto-Katalog „selig“ alle sechs Monate. Wettbewerber ändern Angebote und Preise täglich und teils sogar mehr als nur das.

    AntwortenLöschen
  3. Manfred Broy aus München schrieb: Ich muss gestehen, dass ich es ein wenig schade finde, dass hier die Gelegenheit, gerade auch in Deutschland, nicht genutzt wird, das Thema Software Engineering noch einmal stärker zu beleuchten und in seiner Bedeutung herauszukehren.

    Wir leben halt doch viel zu sehr in einer Hype-Landschaft. Jetzt spricht alles von KI, von Blockchain, Big Data und Cloud-Computing und vielem mehr. Viel zu wenig wird wahrgenommen, dass bei allen diesen Techniken, exzellentes Software Engineering notwendig ist, um sie zu nutzen und darüber hinaus die riesige Masse von Softwaresystemen, die schon heute unser Leben in vielfältiger Weise bestimmen, direkt von unseren Fähigkeiten abhängt, Software Engineering vernünftig voranzubringen.

    Hier tut sich immer noch viel zu wenig, wird auch zu wenig getan, um die immer noch vorhandene Kluft zwischen Wissenschaft und wirtschaftlicher Anwendung zu überwinden, und in der Praxis gibt es gerade in den großen Unternehmen immer noch zu wenig Fachleute und zu wenig strategische Sichtweisen, die das Thema entschlossen in die richtige Richtung bewegen.

    AntwortenLöschen