Dieser Gastartikel ist ein Beitrag zum ScienceBlogs Blog-Schreibwettbewerb. Alle eingereichten Beiträge werden im Lauf des Septembers hier im Blog vorgestellt. Danach werden sie von einer Jury bewertet. Aber auch alle Leserinnen und Leser können mitmachen. Wie ihr eure Wertung abgeben könnt, erfahrt ihr hier.
Dieser Beitrag wurde von Markus eingereicht.
———————————————————————————————————————–
Wenn jemand erfährt, dass ich im Fachbereich Softwaretechnik
(oder im Englischen "Software Engineering") meine Doktorarbeit
geschrieben habe, dann wird das meistens mit einem "Aha." und einem freundlichen
Lächeln quittiert. Ich vermute, dass die betreffende Person das dann abheftet
unter "Hat was mit Computern zu tun" und sich gegebenenfalls vornimmt
auf mich zurück zu kommen, wenn der eigene Rechner mal wieder streikt. Im
Zusammenhang mit dieser Wahrnehmung soll der berühmte Informatiker Edsger W.
Dijkstra mal gesagt haben "Computer Science is no more about computers
than astronomy is about telescopes". (Die Informatik hat mit Computern nur
so viel zu tun wie Astronomie mit Teleskopen.) Unabhängig davon ob diese
Zuschreibung nun stimmt oder Folklore ist, verdeutlicht der Satz ein Problem,
das vermutlich viele Berufe haben: Die Allgemeinheit hat ein eher vages Bild
davon, was jemand, der diesen Beruf ausübt eigentlich so macht. Florian hat in
den vergangen Jahren hier viel, viel geschrieben, durch das ich eine Menge über
Astronomie lernen konnte. Und es hat sich dabei eher selten explizit um
Teleskope gedreht. Nun möchte ich für die Softwaretechnik einmal versuchen,
einen kleinen Einblick in diese Disziplin zu geben. Und dabei wird es praktisch
gar nicht um Computer gehen…
Womit beschäftigt sich die Softwaretechnik eigentlich?
Kurz gesagt beschäftigt sich Softwaretechnik mit der
ingenieursmäßigen Entwicklung von Software. (Mit dieser Definition ist man auch
ganz nah dran an der englischen Bezeichnung Software Engineering.) Das ist ganz
ähnlich wie bei anderen Ingenieursberufen. Maschinenbauingenieure beschäftigen
sich mit dem Entwurf und der Konstruktion von Maschinen und industriellen
Anlagen. Bauingenieure kümmern sich um die Planung und den Bau von Gebäuden.
Und Softwaretechniker oder Softwareingenieure entwerfen und entwickeln
Software. Nun ist bei industriellen Anlagen oder Hochhäusern für jeden
einsichtig, dass man Experten benötigt um sowas zu konstruieren. Seinen
Gartenschuppen zimmert vielleicht noch ein jeder auf eigene Faust zusammen.
Aber bei größeren Projekten lässt man das lieber die Profis machen. Um zu
verstehen, warum es sinnvoll und sogar notwendig ist, das bei Software genauso zu
handhaben, muss man zunächst ein wenig über Software und deren Entwicklung im
Allgemeinen wissen.
Warum ist das sinnvoll?
Software steckt längt nicht nur dort, wo es offensichtlich
ist, also in Desktop-Rechnern, Tablet-Computern, Spielkonsolen, Handys, usw.
Mittlerweile steckt in fast jedem Gerät, das einen elektronischen Anteil hat
auch ein Stückchen Software: Kaffeemaschinen, Kühlschränke, Ampelanlagen,
Armbanduhren, Klimaanlagen, und so weiter. Das gilt auch und vor allem für
Autos und für Flugzeuge. Seit Ende der Achtziger Jahre haben Passagiermaschinen
in den meisten Fällen kein mechanisches Notfallsystem für die Steuerung mehr an
Bord. Das heißt die Steuerklappen sind nicht mehr über Stahlseile, Schubstangen
oder Ähnliches mit dem Steuerknüppel im Cockpit verbunden. Alles funktioniert
rein elektronisch mit der Hilfe von Software. Und in modernen Autos stecken
hunderte von eingebetteten „Controllern“. Kleinstrechnern, die bestimmte
Funktionen steuern: Elektrische Fensterheber, Bremsen, Airbags, ESP… Wenn man
sich das vor Augen führt, dann wird schnell klar, dass die Software, die in
diesen Geräten läuft besser gut funktionieren sollte. Damit stellt sich
automatisch die nächste Frage: Ist es eigentlich schwierig korrekt
funktionierende Software zu entwickeln? Und wenn ja, warum?
Warum ist Softwareentwicklung schwierig?
Software wird in den allermeisten Fällen geschrieben. Man
schreibt ein Programm, das der Computer dann ausführen kann. Das hat
Ähnlichkeit mit einem Kochrezept. Zum Beispiel „Öffne Datei X. Suche darin Wert
Y. Zeige Y zusammen mit Ausgabe Z auf dem Bildschirm an.“ Das klingt erstmal
recht simpel, aber es gibt viele Faktoren, die das Schreiben solcher Rezepte
erschweren. Zum Beispiel Interaktivität, Komplexität und Größe:
Kommentare (58)