Wozu braucht man Software-Engineering?

Wozu braucht man Software-Engineering?

Fangen wir mal zunächst einmal damit an was denn das Software-Engineering ist. Das Software-Engineering umfasst 3 Bereiche:

  • Software Entwicklung
  • Software Projektmanagement
  • Software Qualitätsmanagement

Software-Engineering Definition

Nach Helmut Balzert ist Software-Engineering:

„Zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Software-Systemen. Zielorientiert bedeutet die Berücksichtigung von z.B. Zeit, Kosten, Qualität, Funktionalität.“

Wozu braucht man Software-Engineering?

Ja wozu braucht man denn jetzt das, wenn man doch schon das Programmieren beherrscht? Ganz einfach. In der Vergangenheit gingen schon reichlich Softwareprojekte aufgrund mangelnder Organisation schief. Software wurde im Laufe der Zeit immer bedeutender und auch komplexer. Dadurch steigen natürlich auch die Qualitätsanforderungen. Außerdem muss sich die Software stets weiter entwickeln. Anpassungen an schon fertiger Software machen 2/3 der Arbeit aus.

Eine gute Software besteht viele Jahre und oft sind die ursprünglichen Programmierer bzw. Entwickler gar nicht mehr verfügbar. Durch die Globalisierung arbeiten an einem Projekt Menschen aus den verschiedensten Ländern. Und auch wenn überall Englisch gesprochen wird, so unterscheiden sich die Kulturen und das Verständnis.

Daher ist es wichtig alle Anforderungen, Veränderungen, Anpassungen zu dokumentieren und eine gemeinsame Basis zu haben. Stell dir mal vor, du sollst an einem Code von jemand anderem arbeiten und dieser hat gar nichts dokumentiert. Schwierig, einfach so drauflos zu programmieren. Ja, selbst bei eigenen kleinen Projekten, bei denen man vorher nichts definiert und aufgeschrieben hat, ist es schwer nach ein paar Monaten einfach so wieder mit der Arbeit zu beginnen. Und seinen kommentarlosen Code, den man vor Monaten noch völlig verständlich fand, versteht man auch nicht mehr nach ein paar Monaten.

Ein Meme zu unkommentiertem Programmiercode

1977 gab es pro 1000 Zeilen Code ca. 7-20 Fehler. 1994 nur noch 0,2-0,5. (Mehr zur Fehlerquoute) Das hört sich schon nach verdammt wenig an. Ist es aber nicht. Dein Browser z. B. Google Chrome, Firefox oder was auch immer du gerade zum Surfen benutzt, hat zwischen fünf und zehn Millionen Zeilen Code. Jetzt stell dir mal so viele Fehler bei einer Maschinensoftware für ein Flugzeug vor. Die hat nämlich ähnlich viel Code.

Selbst wenn wir hinnehmen würden, dass so eine Software 0,1% „Defekt“ wäre, wären das 18 Flugzeugabstürze die Woche. Quelle: Helmut Balzert.

Mit Software-Engineering versucht man alldem entgegenzuwirken. Durch Vorgehensmodelle, wie zum Beispiel, Scrum lernt man strukturierte Vorgehensweisen, um Fehler möglichst zu vermeiden. Man lernt die Sprache UML (Unified Modeling Language), sodass ein Entwicklerteam, bestehend aus Menschen aus verschieden Nationen, weiß, was es zu machen hat. Man lernt, die Software so zu designen (nicht visuell), dass damit Anpassungen und Änderungen an neue Anforderungen fehlerfrei gelingen. Man lernt, wie man Software wartet und entdeckte Fehler dokumentiert & bearbeitet.

3 Heftige Softwarefehler

Zum Abschluss noch einpaar interessante Projekte mit Softwarefehlern und gravierenden Auswirkungen.

Bankautometen die Geld verschenken

In Australien hatten rund 40 Bankautomaten eine Störung der Datenbanksoftware. Die Geräte kannten ihr Tageslimit nicht mehr und prüften auch nicht, ob auf dem Konto genügend Geld war. Wer das erkannt hat, konnte sich reichlich die Taschen vollmachen. Auch Geldautomaten der Santander Bank in den USA verschenkten im Jahr 2020 durch einen Softwarefehler Geld. Und bei uns in Deutschland gab es ebenfalls Probleme mit den Bankautomaten der Sparkasse. Leider verschenkten sie kein Geld, sondern waren einfach nur lahmgelegt.

Gas Explosion

1982 gab es bei der Gas-Pipeline in Sibirien einen Bug mit fatalen Folgen. Durch den Absturz der Software explodierte die Pipeline. Anscheinend war dieser Softwarefehler allerdings von der CIA geplant gewesen und absichtlich integriert worden.

-> siehe Bericht vom Spiegel.

Obamacare

Vielleicht hast du schon einmal was davon gehört, weil es eine Zeitlang im Fernsehen zu sehen war. Obama führte in Amerika eine Krankenversicherung ein. Bedauerlicherweise konnten fast die Hälfte der Anträge gar nicht verarbeitet werden. Wegen eines Softwarefehlers wurden die Antragsformulare gar nicht an die Versicherer übermittelt. Das Programm sollte mit dem System der Steuerbehörde zusammenarbeiten. Dieses war aber viel zu langsam. Auf den ersten Blick mag das nicht schlimm sein, aber das Projekt stand mega im Mittelpunkt und kostet 600 Millionen Dollar.

Du liest den Beitrag: Wozu braucht man Software-Engineering?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert