next up previous contents
Next: 3.2 Ansätze Up: 3. Softwaretechnik-Forschung Previous: 3. Softwaretechnik-Forschung

Unterabschnitte

3.1 Einordnung und Ziele

Die Softwaretechnik, wie auch die meisten anderen Teile der Informatik, kann man als eine Ingenieurdisziplin betrachten: Sie ist damit befaßt, wie man kostengünstig nützliche Artefakte (in diesem Fall Softwaresysteme oder öfter noch die Softwareteile von größeren Systemen) produziert, deren Funktionstüchtigkeit sich während der Konstruktion gezielt sicherstellen läßt. Es stellt sich die Frage, welchen Platz Forschung (also Wissenschaft) in diesem Zusammenhang einnimmt.

3.1.1 Ingenieurwesen oder Wissenschaft?

Fred Brooks [Bro96] sieht die Informatik (engl.: Computer Science) nicht als Wissenschaft, denn sie ist nicht mit der Produktion von Wissen als ihrem Hauptzweck befaßt, sondern mit der Herstellung von Sachen:

The scientist builds in order to study, the engineer studies in order to build. I submit that by any reasonable criterion the discipline we call ,,computer science`` is in fact not a science, but a synthetic, an engineering, discipline. We are concerned with making things, be they computers, algorithms, or software systems.

Aus diesem Blickwinkel bezeichnet er die Informatiker als ,,Werkzeugmacher``:

In contrast with many engineers who make houses, cars, medicines, and clothing for human need and enjoyment, we make things that do not themselves directly satisfy human needs, but which others use in making things that enrich human living. In a word, the computer scientist is a toolsmith -- no more, but no less. It is an honorable calling.
If we perceive our role alright, we then see more clearly the proper criterion for success: a toolmaker succeeds as, and only as, the users of his tools succeed with his aid.

Brooks sieht mehrere Gefahren darin, daß sich die Informatiker als Wissenschaftler betrachten:

1.
Wissenschaft sieht die Entdeckung von Fakten und Gesetzen als Selbstzweck an. Das führt bei der Informatik zu einer Flut von neuen Computern, Algorithmen und Sprachen, deren Neuigheit (weil sie Entwürfe sind) jedoch keinen Wert an sich hat; sie sollten an ihren Kosten und ihrer Nützlichkeit gemessen werden.
2.
Wir neigen dazu, unsere Benutzer und ihre wirklichen Probleme zu vergessen, um uns in den Elfenbeinturm zurückzuziehen und uns mit handhabbaren Abstraktionen von echten Problemen zu beschäftigen -- Abstraktionen, die das Wesen des ursprünglichen Problems oftmals verloren haben.
3.
Die Hochschätzung der Wissenschaft (im Gegensatz zum Ingenieurwesen) führt dazu, daß brilliante Geister von der Lösung herausfordernder praktischer Probleme abgezogen werden, so daß diese Probleme nicht mit der Stärke angepackt werden können, die ihrer Bedeutung zukäme.

Dieser Analyse ist zum Teil zuzustimmen. Es ist richtig, daß die Informatik Ingenieurcharakter hat und den Bau von Dingen anstrebt. Auch der Betrachtung von Informatikprodukten als Werkzeugen kann man überwiegend zustimmen. Es ist ebenfalls richtig, wie wir unten noch sehen werden, daß die Informatik, vor allem die Softwaretechnik, recht ausgeprägt die Probleme hat, die Brooks als Folgen ihrer Betrachtung als Wissenschaft aufführt.

Dennoch muß man Brooks' Sicht in einem entscheidenden Punkt widersprechen: Ingenieurcharakter und Wissenschaftscharakter schließen einander für ein und dasselbe Gesamtfach durchaus nicht aus. Die Beobachtung ``The scientist builds in order to study, the engineer studies in order to build'' ist zwar brilliant und treffend, gilt aber (sogar ihrer sprachlichen Form nach!) eben nicht für ein Fach als ganzes, sondern nur für einzelne Personen, die es betreiben -- und auch da nicht unbedingt lebenslang.

Natürlich ist die Informatik ein Ingenieurfach und die meisten, die es ausüben, sind Ingenieure. Das heißt aber nicht, daß die Informatik nicht auch eine Wissenschaft wäre. Weil der überwiegende Teil der Informatik zweckgerichtet ist und somit Ingenieurcharakter hat, spricht Brooks dem ganzen Fach den Wissenschaftscharakter ab.

Ingenieurwesen (engl. engineering) ist laut Webster's New Encyclopedic Dictionary von 1993

The application of science and mathematics by which the properties of matter and the sources of energy in nature are made useful to human beings.3.1
so daß sich für den Ingenieuranteil der Informatik sofort die Frage stellt, welche Wissenschaft denn das sein könnte, die da zum Wohle der Menschen angewendet wird. Die Mathematik allein ist sicherlich nicht ausreichend, selbst wenn sie nicht ohnehin als Zusatz in jedem Fall gefordert wäre. Die einzig logische Anwort auf diese Frage lautet, daß die Informatik selbst einen wissenschaftlichen Teil hat, der das Wissen produziert, welches die Informatikingenieure dann anwenden.

Der Grund für diese Zweiteilung ist in den Randbedingungen praktischer Ingenieurarbeiten zu suchen: Im Mittelpunkt der Arbeit steht im Ingenieurwesen das konkrete Lösen eines praktischen Problems zu möglichst geringen Kosten. Deshalb bleibt meist keine Zeit, dabei zugleich die Grundlagen dieser Arbeit, nämlich das wissenschaftliche Wissen über das Fach, grundsätzlich zu verbessern. Eine Wissenschaft hat hingegen nur die Produktion und Organisation von Wissen zum Ziel und kann, ja muß, sich genau mit diesen Grundlagen befassen, anstatt nur ein einzelnes Projekt im Auge zu haben.

Für eine Wissenschaft ist es unerheblich, ob die Produktion von Wissen überwiegend Selbstzweck ist, wie beispielsweise die Klassifikation von Pflanzen in der Biologie, oder stark zweckgerichtet wie in den meisten Teilen der Informatik. Bei Betrachtung der Wissenschaftsgeschichte stellt man ohnehin fest, daß fast sämtliche Wissenschaften in weiten Teilen zweckgerichtet waren und sind. Deshalb spricht überhaupt nichts dagegen, die Informatik als Wissenschaft anzusehen, auch wenn sie zugleich als Ingenieurfach ausgeübt wird, im Gegenteil: Zu jedem Ingenieurfach muß es eine zugehörige Wissenschaft geben, damit das Ingenieurwesen größere Fortschritte machen kann.

Alle obigen Überlegungen gelten nicht nur für die Informatik im ganzen, sondern auch insbesondere für die Softwaretechnik. Bei der Softwaretechnik tritt allerdings besonders der Aspekt der Interdisziplinarität mit in den Vordergrund: Da überall der Mensch so eng eingebunden ist, bekommen Überschneidungen mit der Psychologie, Soziologie und anderen Fächern, die sich mit dem Menschen befassen, eine verglichen mit anderen Teilen der Informatik besonders hohe Bedeutung.

Jedenfalls hat die Softwaretechnik-Forschung die Aufgabe, wissenschaftliche Ergebnisse zu liefern, die den Wissensschatz vergrößern, auf den Softwareingenieure zur Lösung ihrer Probleme zurückgreifen. Da die Softwaretechnik eine Ingenieurwissenschaft ist, werden die Ergebnisse an ihrer Nützlichkeit gemessen. Im Einzelfall kann die Abgrenzung zwischen einer wissenschaftlichen Studie und einem Teilstück eines ingenieurmäßigen Problemlösungsvorgangs durchaus schwierig sein.

3.1.2 Methoden zum Erkenntnisgewinn

Hier geht es darum, wie man Wissen über seine Umwelt (hier: Softwaretechnik) erwirbt. Die Menschheit verwendet zum Wissenserwerb eine Reihe verschiedener Ansätze und Techniken, die wir im folgenden kurz vorstellen wollen.

Festhalten: Die einfachste Methode zum Wissenserwerb besteht darin, einfach irgendetwas festzuhalten und als Wissen zu betrachten -- unabhängig davon, ob es korrekt ist oder nicht. Die wichtigsten Beispiele für dieses Vorgehen sind Aberglauben und Gewohnheiten. Bei Aberglauben werden Annahmen über Sachverhalte ohne Begründung als richtig angesehen und an dieser Meinung unabhängig von Bestätigung festgehalten; eventuell wird die Wahrnehmung verändert, um Bestätigungen zu finden. Bei Gewohnheiten wird an einer Verhaltensweise festgehalten, wobei auch dies zumindest teilweise unabhängig von der Zweckmäßigkeit geschieht. Die Herkunft der Gewohnheit kann begründet oder zufällig sein. Festhalten hat zwei Nachteile: Sehr oft ist das erworbene Wissen falsch und es gibt keine Mechanismen, um es zu korrigieren.

Intuition: Erwerb durch Intuition ist verwandt mit dem Festhalten, jedoch kommt das Wissen hier nicht aus völlig beliebigen Quellen, sondern durch spontane Eingebung zustande -- allerdings ohne eine Herleitung oder logisches Schließen. Die Nachteile sind die gleichen wie beim Festhalten.

Autorität: Hier wird eine Aussage deshalb als Wissen angenommen, weil sie aus einer geachteten Quelle stammt. Dies ist nicht zu verwechseln mit der Akzeptanz von Aussagen geachteter Quellen aus inhaltlichen Gründen. Auch diese Methode hat die oben erwähnten Nachteile, ist aber im Gegensatz zu Festhalten und Intuition auch heute noch selbst in eigentlich gebildeten Kreisen sehr häufig.

Rationalismus: Der rationalistische Standpunkt besagt, daß Wissen nur durch reines Schließen erlangt werden soll. Er nimmt an, daß das Wissen korrekt sei, wenn die Schlußweisen korrekt verwendet werden. Problematisch an diesem Standpunkt ist, daß er den Ausgangspunkten des Schließens zu wenig Aufmerksamkeit widmet. Wenn diese Ausgangspunkte nicht ausreichend auf Beobachtungen gegründet sind, können verschiedene Rationalisten trotz korrekter Schlußmethoden zu verschiedenen Ergebnissen gelangen. Dieses Problem ist in der Geschichte der Theologie und der Philosophie in vielfacher Ausführung zu besichtigen. Reiner Rationalismus ist nur für solche Wissensbereiche akzeptabel, die nicht in der Realität gründen. Dies trifft im wesentlichen nur für die reine Mathematik zu.

Empirizismus: Dies ist gewissermaßen die Gegenposition zum Rationalismus. Der empirizistische Standpunkt besagt, daß ich als gültiges Wissen alles das und nur das akzeptiere, was ich selbst erfahren kann. Diese Haltung hat zwei Nachteile: Erstens kann man damit Widersprüche in den Beobachtungen verschiedener Personen über den gleichen Sachverhalt nicht ausräumen, und bekanntlich ist Wahrnehmung etwas subjektives und unzuverlässiges. Zweitens beschränkt der empirizistische Standpunkt den Bereich des Wissens auf das unmittelbar erfahrbare. Theorien über den Ursprung des Universums oder die Farbwahrnehmung von Fröschen zählten demnach nicht zum Wissen.

Wissenschaftliche Methode: Die wissenschaftliche Methode ist der beste bekannte Prozeß zum Wissenserwerb insofern, daß sie den Wissensbereich wenig beschränkt, den Erwerb falschen Wissens weitestgehend vermeidet und die Korrektur solcher Fehler direkt unterstützt. Die wissenschaftliche Methode besteht darin, daß zunächst eine klare, eindeutig beantwortbare Frage formuliert wird und dann eine Hypothese über die Antwort aufgestellt (auf Basis früherer Erfahrungen, insbesondere wissenschaftlicher Untersuchungen). Anschließend wird ein Experiment entworfen und durchgeführt, das dazu dient, die Korrektheit der Hypothese zu prüfen. Die Auswertung der Beobachtungen aus dem Experiment ergibt ein Stück Wissen, das abschließend über eine wissenschaftliche Veröffentlichung dem Rest der Welt bekanntgemacht wird. Der letztere Schritt bewirkt, daß die wissenschaftliche Methode einen kontinuierlichen Fortschritt des Wissensstandes ermöglicht, weil spätere Hypothesen und Experimente auf den Erkenntnissen früherer aufbauen können.

3.1.3 Wissenschaft in der Softwaretechnik

Die Softwaretechnik als praktische technische Disziplin hat heute wenig wissenschaftlichen Charakter. Das vorhandene Wissen stammt überwiegend aus einer Mischung von Intuition und Empirizismus und ist nur in wenigen Fällen wissenschaftlich abgesichert, denn die meisten Beiträge sind Entwürfe (von Modellen, Methoden oder Werkzeugen) und stellen insofern nur Hypothesen dar -- und selbst diese werden meist nicht klar ausgesprochen. Geprüft werden diese Hypothesen bislang nur selten; nicht zuletzt deshalb, weil eine solche Prüfung in der Softwaretechnik meist enorm aufwendig ist.

So wissen wir beispielsweise herzlich wenig darüber, welche Eigenschaften von z.B. Entwurfsmethoden, Programmiersprachen oder Entwicklungswerkzeugen welche Qualitätsattribute der Produkte in welcher Weise beeinflussen, obwohl diese Fragen den Kern unseres Faches betreffen. Wir wissen auch fast nichts darüber, welche Fehler in welchen Situationen gemacht werden und welche Maßnahmen das verhindern könnten, oder wie man die Fehler zumindest schnell wieder findet und behebt.

Als Folge dieses Zustands arbeiten vermutlich die allermeisten softwareerzeugenden Organisationen weit unterhalb ihrer Möglichkeiten, was ihre Produktivität und die Qualität ihrer Produkte angeht.

Eine entscheidende Beobachtung in diesem Zusammenhang lautet, daß die grundsätzliche Arbeitsweise der wissenschaftlichen Methode in abgeschwächter Form auch für sehr praktische Problemstellungen in der Anwendung der Softwaretechnik verwendet werden könnte und sollte. Zum Beispiel kann die Auswahl des besseren von zwei Werkzeugen in der Regel durch ein entsprechend gestaltetes Experiment erledigt werden, wenn zuvor eine klare Fragestellung vorliegt (Was heißt ,,besser``? In welchem Zusammenhang?) und etwas Aufwand investiert wird. Dieser Aufwand könnte sich in vielen Fällen leicht amortisieren, und dennoch werden solche Untersuchungen bisher selten gemacht.


next up previous contents
Next: 3.2 Ansätze Up: 3. Softwaretechnik-Forschung Previous: 3. Softwaretechnik-Forschung
Lutz Prechelt
1999-04-13