• Keine Ergebnisse gefunden

Erkenntnistheoretisch-hermeneutische Ansätze

3 Sprachbasierte Ansätze im Software Engineering

Die Rolle der Sprache und Bedeutung der Kommunikation im Software-Entwicklungsprozess ist eng verbunden mit der Debatte um das Selbstverständnis der Informatik. Dies verwundert kaum, ist doch die Diskussion um das Selbstverständnis (nicht nur) der Informatik eng mit philosophischen Grund-fragen verknüpft. Diese wiederum sind oft mit Begriffsklärungen verbunden. Die sogenannte linguistische Wende in der Philosophie des 20. Jahrhunderts führte dazu, dass die Sprachwissenschaft als Grundlagendisziplin aller Wissenschaften erkannt wurde: „Alle Philosophie ist Sprachkritik“

(Wittgenstein 1994, S.33). Durch Sprach- und Begriffsanalyse sollten philosophische Probleme besser zu klären sein.

Hier nicht Gegenstand der Betrachtung sind formale Sprachen und Computerlinguistik. Formale Sprachen sind mathematische Modelle von Sprachen, die besonders in der theoretischen Informatik und hier vor allem bei der Berechenbarkeitstheorie und dem Compilerbau Anwendung finden. Die natürliche Sprache entzieht sich einer vollständigen Definition, die schließlich festlegt, welche Sätze zu der natürlichen Sprache gehören und welche nicht. Deshalb können Gesetze und Mechanismen der formalen Sprachen nur auf Teilgebiete der natürlichen Sprachen angewandt werden. Die Computerlinguistik, als Gebiet der künstlichen Intelligenz, untersucht, wie natürliche Sprache mit Hilfe des Computers algorithmisch verarbeitet werden kann und ist damit nicht relevant für diese Arbeit.

den Beteiligten gestaltet wird, bleibt in der Informatik offen“ (Floyd 2001). Nun wird hier einmal von Software Engineering und einmal von Informatik gesprochen. Sommerville liefert eine hilfreiche Abgrenzung: Er bezeichnet die Informatik als Theorie und Software Engineering als Praxis, als eine technische Disziplin, die sich mit allen Aspekten der Softwareherstellung beschäftigt (vgl.

Sommerville 2007, S.33). Ein zentraler Aspekt ist also das Managen der Anforderungen im Entwicklungsprozess, auch Requirements Engineering genannt. Dabei handelt es sich um einen kooperativen, iterativen, inkrementellen Prozess, der das Ziel hat, dass alle relevanten Anforderungen bekannt und verstanden sind, dass involvierte Stakeholder eine ausreichende Übereinstimmung über die Anforderungen haben und die Anforderungen konform für den jeweiligen Zweck dokumentiert sind (vgl. Pohl 2007, S.705). Floyd spricht von einem kooperativen Erkenntnisprozess (vgl. Floyd 2001, S.117). Aus dieser Erkenntnis folgt aber ein weiterer Schritt: Die Informatik analysiert nicht nur ihren Gegenstand, sondern sie synthetisiert ihn auch (vgl. Büttemeyer 1995). Was aber ist der Gegenstand der Informatik? Für arbeitsorientierte Systeme, um die es hier geht, sind es Handlungs-systeme. Und für die Analyse und Synthese von Handlungssystemen ist der Bezug zu Sprache, sowohl in Laut- als auch in Schriftform unerlässlich.

Den Arbeitsprozess als Ausgangspunkt der Entwicklung und eine kommunikationsfördernde Projekt-organisation, dies forderte das von Christiane Floyd vorgestellte STEPS-Modell (Software Tech-nology for Evolutionary Participatory System Design) in den 1970er Jahren. Vertreter der skandina-vischen Schule, der Floyd zuzurechnen ist, betonen außerdem die Rolle der Nutzerbeteiligung und die Einbeziehung der Arbeitsumwelt. So benennt Kristen Nygaard in seinem Vortrag „Program Development as a Social Activity“ auf dem IFIP-Weltkongress 1986 in Dublin eine multiperspek-tivische Reflexion sogar als einen zentralen Aspekt von Wissenschaftlichkeit (vgl. Nygaard 1986, S. 3). Er beschreibt, dass es höchst individuelle aber auch von vielen geteilte Perspektiven gibt. Wenn die Prozesse des Programmierens und der Systementwicklung soziale Prozesse sind, und dies leitet er her, dann ist zum Verstehen der Prozesse eine soziale Perspektive erforderlich und Wissen über die soziale Umgebung; „to program is to understand“ (ebd.). Floyd kritisiert die Produktionssicht der Softwareentwicklung und stellt ihre Sicht, die Softwareentwicklung als Designprozess zu betrachten, zur Diskussion. Danach ist Softwareproduktion als konstruktiver Designprozess zu verstehen, d.h. als Zusammenspiel zwischen technischem Entwurf und organisatorischer Gestaltung (vgl. Floyd 1989).

Der Terminus Software Engineering assoziiert das Software konstruiert wird, denn Ingenieure konstruieren. Umgangssprachlich würde man das Konstruieren eher als eng vorgegebenen Prozess und das Entwickeln als Prozess mit mehr Freiheitsgraden verstehen; Design schon als Prozess mit Freiheitsgraden, die nicht mehr allein vom Auftraggeber bestimmt sind. Wenn also das Konstruieren jegliche kreative Lösungsfindung für ein gegebenes Problem ausschließt, ist es passend von Softwareentwicklung oder Design zu sprechen. Impliziert man im Konstruktionsprozess aber auch kreative Aspekte, kann man auch von Softwarekonstruktion sprechen. Schefe (vgl. Schefe 1999)

spricht von der ontologischen Doppelnatur der Software und meint die Doppelheit von Wissenschaft und Kunst als Kennzeichen von Ingenieurstätigkeit. In diesem Sinn gibt es in der Software-entwicklung sowohl entwickelnde, designende als auch konstruierende Aktivitäten.

Findet die Softwareentwicklung im Team statt, spricht Floyd von einer dialogischen Orientierung des Designs (vgl. Pasch 1994). Zusätzlich zu einer Darstellung von Zwischenergebnissen in Form von Dokumenten betont sie die Notwendigkeit von direkter, sprachlicher Kommunikation. Software ist zu komplex und zu speziell, als dass es reicht, wenn ein Entwickler in die Rolle des Nutzers schlüpft.

Sowenig wie ein Nutzer vollständig die Perspektive eines Programmierers einnehmen kann, ist dies umgekehrt möglich oder sinnvoll. Aus diesem Grund findet sich heute in allen gängigen Vorgehens-modellen die Rolle des Usability Engineer als Übersetzer der Nutzungsanforderungen in technische Artefakte und als Moderator für Systementscheidungen. Dazu muss der Übersetzer beide „Sprachen“

sprechen, als Moderator die nötige Kompetenz besitzen (siehe Kapitel 7.3.2).

1990 stellt Rafael Capurro in seiner Antrittsvorlesung an der Universität Stuttgart die Informatik ent-gegen der herkömmlichen Auffassung einer Struktur- und Ingenieurswissenschaft als hermeneutische Wissenschaft dar (vgl. Capurro 1990). Unter Hermeneutik verstand man ursprünglich die Lehre von der Interpretation historischer Texte, die sich damit befasste, ob Texte unabhängig von ihrem Entstehungs- und Rezeptionszusammenhang eine absolute Bedeutung haben oder ob der Inter-pretierende eine Rolle spielt. Philosophisch betrachtet ist Hermeneutik „die methodisch geleitete Rekonstruktion eines ursprünglichen Sinnzusammenhangs in einem sprachlichen Gebilde mit der methodischen Grundforderung, das Einzelne aus dem Sinnzusammenhang eines Ganzen zu ver-stehen.“ (Kirchner/Regenbogen 2005, S.286). „Ursprünglich als Unterscheidungskriterium zwischen Struktur- und Ingenieurswissenschaften auf der einen und den Geisteswissenschaften auf der anderen Seite gesehen, wird der Vorgang der Interpretation heute in der theoretischen, praktischen, tech-nischen und angewandten Informatik zugrunde gelegt“ (Capurro 1990).

Der Betonung des evolutionären Software-Entwicklungsprozesses und der Rekonstruktion von Wirklichkeit als Ansatz setzt sich in den Arbeiten von Winograd und Flores fort. In ihrem Buch

„Erkenntnis Maschinen Verstehen“ beleuchten und kritisieren sie die rationalistische Tradition der Entwicklung von Informationssystemen; damals mit Fokus auf die Diskussion um künstliche Intelligenz (vgl. Winograd/Flores 1989). Ein zentraler Aspekt darin: die Bedeutung der Sprache. Ihre Aussagen basieren auf den zwei Jahre vorher veröffentlichten neurobiologischen Forschungen von Maturana und Varela zu Wahrnehmung und Erkenntnis. Danach ist Sprache kein Mittel zur Darstellung der Außenwelt. Die beiden Forscher beschreiben die Rolle der Lautsprache und deren Funktion als Handlungsauslöser innerhalb einer sozialen Gemeinschaft. Sprache modifiziert nach Auffassung von Maturana und Varela in radikaler Weise menschliches Verhalten und ermöglicht damit Phänomene wie Reflexion und Bewusstsein (vgl. ebd., S.227). Sprache ist demnach eine Erfindung der sozialen Gemeinschaft, deren Fundament sie auch bildet. Alle sozialen Prozesse

beruhen in der menschlichen Gesellschaft auf sprachlichem Austausch, ähnlich wie bei sozialen Insekten, z.B. Ameisen, ein ständiger Austausch chemischer Stoffe (Tropholaxis17) geschieht. Hier-bei werden über gegenseitiges Füttern lebens- und gattungserhaltende Informationen ausgetauscht und die Rollenverteilung festgelegt. „Sprache wurde niemals von jemandem erfunden, nur um damit eine äußere Welt zu internalisieren. Deshalb kann sie nicht als Mittel verwendet werden, mit dem sich eine solche Welt offenbar machen lässt“ (ebd., S.253). „Was wir sagen, reflektiert – außer wenn wir lügen, das, was wir leben, und nicht das, was aus dem Blickwinkel eines unabhängigen Beobachters geschieht.“ (ebd., S.249).

Die neurobiologischen Arbeiten von Maturana und Varela bilden die Grundlage der evolutionären Erkenntnistheorie (vgl. Erb/Peschek-Schröder 1990, S.39). Diese Theorie geht davon aus, dass Menschen nur wahrnehmen, was zum Überleben notwendig ist. Es wird unterschieden in Realität als nicht erkennbare Umwelt und Wirklichkeit als die wahrgenommene Umwelt. Sprache soll gegen-seitigem Verhalten zum Zweck der Selbsterhaltung Orientierung geben. Es geht um den Umgang mit den Dingen in einer „mit-geteilten“ Welt. Winograd und Flores nun stellen in ihrem oben erwähnten Buch der rationalistischen Tradition drei Positionen ausführlich entgegen:

ƒ Gemäß Heideggers philosophischen Thesen zum Verhältnis von Sprache und Welt gilt:

Sprache ist Handlung. Die Bedeutung von Sprache ist demnach nicht nur individuell sondern auch sozial.

ƒ Die neurobiologischen Forschungsergebnisse von Maturana und Varela (vgl. Maturana/

Varela 1987) sehen Sprache als Ausdruck der inneren Welt.

ƒ Nach der Sprechakttheorie von Austin und Searle (Austin 1972) funktioniert Sprache zum einen ohne objektive Bedeutung und ohne vollständige Übereinstimmung zwischen den Kommunikationspartnern, wohingegen zum anderen durch Sprache Verpflichtungen eingegangen werden (vgl. Erb/Peschek-Schröder 1990).

Vor dem Hintergrund der vorgestellten postrationalistischen Positionen gilt demnach: Sprache zeichnet sich nicht einfach durch das Verweisen auf Gegenstände und Sachverhalte aus, deren Bedeutung unabhängig vom Beobachter existieren könnte. Sondern ihre wesentliche Funktion ist es, Verständigung zwischen Menschen über das Wahrgenommene zu erzeugen. Weiter führen die Autoren zur Zuordnung von Bedeutung zu einem Objekt aus: „Bedeutung ist grundlegend sozialer Natur und lässt sich nicht auf sinngebende Tätigkeit einzelner Subjekte reduzieren“ (Winograd/

Flores 1989, S.64). Anlässlich eines Besuchs im Hasso-Plattner-Institut der Universität Potsdam Anfang 2008 erklärte Winograd seine heute von ihm gelehrte Methode des „Design Thinking“ als Bottom-up-Methode, in dem Sinne „dass wir von unseren Beobachtungen, den gesammelten Daten und den Gesprächen mit den Menschen ausgehen und dann erst die Abstraktionen treffen“ (Winograd 2008).

17 Griech.: Nahrungsfluss.

Budde und Züllighoven kommt das Verdienst zu, das Konzept der evolutionären Systementwicklung technisch ausgefüllt zu haben. Sie legen in ihrer Dissertation Ansätze eines hermeneutisch fundierten Werkzeug- und Maschinenbegriffs dar. Dabei spannen sie den Bogen von erkenntnistheoretischen Er-wägungen bis zur softwaretechnischen Konstruktion. Sie beziehen sich in weiten Teilen auf den An-satz Heideggers, der in seinem Werk „Sein und Zeit“ zur Frage unseres täglichen Umgangs mit ver-trauten Gegenständen wichtige Beiträge geliefert hat. Heidegger verallgemeinerte die Hermeneutik von der Textinterpretation zur Interpretation der Welt. Danach ist Interpretation die Grundlage menschlicher Wahrnehmung. Eine These Heideggers lautet: Unsere impliziten Annahmen – unser Vorverständnis – können nicht explizit gemacht werden. Bedeutung ist nicht nur individuell sondern auch sozial. Heidegger lehnt damit die Repräsentationstheorie der Wahrnehmung ab: Budde und Zül-lighoven trennen Software zur Softwareentwicklung in (Software-)Werkzeug und (Programmier-) Material. Werkzeug ist z.B. der Compiler, der Editor oder ein Debugger; Material sind hier Doku-mente, Programmquellen, E-Mail, ein Unix Directory (vgl. Budde/Züllighoven 1990, S.3). Die Autoren zeigen auf, dass die gesamte Diskussion um die Softwareentwicklung stark vom Begriff der Maschine (als Werkzeug) geprägt ist (ebd., S.11) und begründen, warum Software-Werkzeuge nicht kontext- oder wertneutral sind. Werkzeuge stellen immer eine Erweiterung und Verdeckung unserer Handlungsmöglichkeiten auf der Basis einer als wiederholbar erkannten Routine dar, wobei diese Möglichkeiten immer schon in einem sozialen Interaktionsprozess eingebettet sind. „Bei der System-analyse modellieren wir Tätigkeiten von Menschen in einer Organisation. Dazu bilden wir Begriffe.

Konstruieren wir diese Begriffe hierarchisch, müssen wir Basisbegriffe benutzen, die im Rahmen unserer Modellierung nicht definiert sind. Grenzen wir hingegen die Begriffe wechselseitig gegen-einander ab, geraten wir in den Zirkel, dass wir die Begriffsganzheit schon verstanden haben müssen, um jeden einzelnen Begriff verstehen zu können“ (ebd., S.87). Für den Praktiker gehen beide Vorgehensweisen, so die Autoren. „Bei der Modellierung ziehen wir einen Schnitt, der festlegt, welches Zeug und welche Bewandtnis18, die es mit ihm hat, in das Modell aufgenommen werden, und welches Zeug und welche Bewandtnis nicht mehr modelliert werden. Dieser Schnitt ist notwendig, weil es ja auch mit dem Modell seine Bewandtnis hat (und sei es die, dass es endlich fertig werden muss). Wie wir den Schnitt auch legen, wir müssen es beim Modellieren von einigem Zeug und seiner Bewandtnis bewenden lassen. Das hat zur Konsequenz, dass „‚Nicht-modelliertes Zeug und Bewandtnis vom Modellierer mitgedacht werden muss, damit das Modell einen Sinn hat. Sinnvolle Modelle sind ‚offen“ (ebd., S.87). Eine sinnvolle Konstruktion kann nach Budde und Züllighoven niemals rein formal erfolgen. Technische Konzepte müssen immer in den Zusammenhang menschlicher Praxis und eines zyklisch verstandenen Erkenntnisprozesses eingebettet werden. Diese Zyklen zeichnen sich durch einen Wechsel intensionaler und extensionaler Sichtweisen aus, wobei die

18 „Der Begriff „Bewandtnis“ drückt aus, dass wir es beim Umgang mit Dingen bei etwas bewenden lassen (das wir nicht „hinterfragen“), ein für die analytische Arbeit bedeutsamer Aspekt.“ (Budde/Züllighoven 1990, S. 87).

beiden Sichtweisen komplementär zueinander sind. Die Autoren weisen darauf hin, dass ihr Konzept nicht nur für Neuentwicklungen von Software greift, sondern gerade für die Revision und Rekonstruktion bestehender Softwaresysteme geeignet ist. Der Ansatz entlang der Begriffe Werkzeug und Material zeigt, dass Fehler nur im Material (programmiertem Code) analytisch festgestellt werden können. Fehler die sich auf den (Werk-)Zeugaspekt der Software (der Anwendung) beziehen, können immer nur im Umgang mit ihr festgestellt werden. Eine Erkenntnis, die die Notwendigkeit der Ausformulierung von Nutzungsanforderungen, in Ergänzung zur funktionalen Beschreibung, unter-stützt.