Software Engineering
Software ist heutzutage aus Kommunikations- und Haushaltsgeräten, medizinischen Ausrüstungen und Implantaten, Fahrzeugen u. a. nicht mehr wegzudenken. Für die Abwicklung immer mehr unserer alltäglichen Abläufe verwenden wir Softwaresysteme. Wir bestellen unsere Lebensmittel mithilfe von Software, buchen unsere Reisen, kommunizieren und zahlen unsere Steuern mittels Software, etc.
Auch wenn für den durchschnittlichen Nutzer:in der Begriff „Software” gleichgestellt ist mit dem Begriff „Computerprogramm”, reicht diese Definition heutzutage nicht mehr aus, um den Sachverhalt wiederzugeben. Insbesondere wenn man über Erwerbsrechte im Zusammenhang mit Software spricht, wird erwartet, dass alle Dateien, Datenbanken und die Dokumentation, die zum Ausführen und Benutzen der Software notwendig sind, dem Auftraggeber übergeben werden. Dazu kommen eventuell noch Rechte auf Kundenbetreuung und Aktualisierungen.
Herausforderungen der Softwareentwicklung
Wie die Geschichte der Softwaretechnik – manchmal tragisch – gezeigt hat, ist qualitativ hochwertige Software zu entwickeln keine triviale Aufgabe. Dem CHAOS-Report der Standish Group zufolge scheiterten im Jahr 2015 19 % der ca. 5000 Projekte, die in diesem Zeitraum verfolgt wurden, während 36 % erfolgreich abschlossen (vgl. mit 16,2 % im Jahr 1994). Die restlichen 45 % der Projekte wurden eventuell abgeschlossen, konnten aber die Zeit-, Kosten- oder Funktionsanforderungen nicht erfüllen.
Einige Herausforderungen der Softwareentwicklung können wie folgt beschrieben werden:
- A Different World! Im Allgemeinen haben die Entwickler:innen keine bzw. limitierte Kenntnisse über das Anwendungsfeld und die bestehenden Prozesse im Umfeld, in dem die Software eingesetzt werden soll. Die zukünftigen Benutzer:innen der Software wiederum kennen die Fachsprache der Entwickler:innen nicht und haben daher mit einer Kommunikationsbarriere zu kämpfen, wenn sie ihre Anforderungen formulieren wollen. Falls die Benutzer:innen wenig oder zu spät in den Entwicklungsprozess eingebunden werden, kann es vorkommen, dass sie die Software letztendlich nicht benutzen, weil sie diese eher als hinderlich denn als nützlich empfinden.
- Clash of Stakeholders! In größeren Projekten mit vielen Interessenvertreter:innen können Anforderungen an die Software gestellt werden, die in direktem Widerspruch zueinander stehen und zunächst aufgelöst werden müssen, um mit der Entwicklung beginnen zu können.
- The Sky is the Limit! Software ist immateriell und deshalb nicht durch physikalische Gesetze beschränkt. Interessenvertreter:innen meinen oft, dass alles machbar und einfach zu verändern sei. Sie beschreiben unrealistische Anforderungen bzw. ändern ihre Anforderungen ständig, weil sie nicht einschätzen können, wie viel Aufwand mit der Umsetzung verbunden ist.
- Work in Progress! Da es sich bei einer Software um ein digitales Produkt handelt, das nicht über eine endliche Anzahl von Eingaben und Ausgaben verfügt, kann nicht garantiert werden, dass es zu 100 % fehlerfrei ist. Viele Fehler werden erst nach der Auslieferung entdeckt, und es ist schwer anzugeben, wie weit eine Software nun fertig entwickelt ist [Glinz, 2001].
- Better, Cheaper, Faster! Um wettbewerbsfähig zu sein, steigt der Druck auf Entwickler:innen, Software, die außerdem immer höheren Qualitätsanforderungen entsprechen soll, schneller zu entwickeln. Die Software soll beispielsweise auf immer mehr Plattformen laufen, dauerhaft verfügbar, robust gegen Ausfälle und sicher gegen Angriffe sein. Und all dies, ohne die Kosten- und Zeitanforderungen an das Projekt zu überschreiten.
- Side Effects! Während Software als Lösung für bestimmte Problemstellungen entwickelt wird, konstruiert und verändert sie die Realität, in der sie benutzt wird. Oft kommt es daher vor, dass mit der Einführung von Software neue Bedürfnisse erzeugt werden, die es zu lösen gilt [Glinz, 2001].
- Jack of all Trades! Von Entwickler:innen von Software wird nicht nur technische Kompetenz erwartet, sondern auch ein hohes Maß an Kreativität, hervorragende Kommunikationsfähigkeit, die Bereitschaft, in Gruppen und unter Zeitdruck zu arbeiten, etc.
Alle diese Aspekte werden im Studiengang Software Engineering an der WBH nicht nur behandelt, sondern auch in einen sinnvollen Gesamtzusammenhang gesetzt.
Woher stammt der Begriff "Software Engineering"?
Der Begriff „Software Engineering” wurde erstmals von Margaret Hamilton verwendet, als sie an der Software für die Apollo-Missionen arbeitete [Rayl, 2008]. 1968 wurde der Begriff dann auf einer von der NATO geforderten Tagung offiziell eingeführt, die organisiert wurde, um darüber zu diskutieren, wie mit der steigenden Bedeutung und Komplexität von Software umzugehen sei. Laut Organisatoren wurde das Wort „Engineering” bewusst provokativ ausgewählt, um die Notwendigkeit klarzumachen, dass diese Disziplin auf vergleichbaren theoretischen und praktischen Grundlagen basieren müsse, wie sie in etablierten Ingenieurdisziplinen üblich seien [Naur und Randall, 1968]. Im Deutschen wird als Übersetzung der Begriff „Softwaretechnik” verwendet. Softwaretechnik (engl. Software-Engineering) ist die Anwendung eines systematischen, disziplinierten und quantifizierbaren Ansatzes auf die Entwicklung, den Betrieb und die Wartung von Software, das heißt die Anwendung der Prinzipien des Ingenieurwesens auf Software [ISO/IEC/IEEE 24765:2017].
Weitgehend standardisiert, bietet die Softwaretechnik methodische Ansätze zur effektiven Softwareentwicklung, sodass Zeit- und Kostenbeschränkungen eingehalten werden und die entwickelte Software von den Kunden als zufriedenstellend bewertet wird. Robuste Methoden für die Entwicklung, das Testen und die Wartung steigern nämlich das Vertrauen der Kunden in das Endprodukt. Zum Beispiel ist das Spiralmodell (siehe Abbildung 1) zwar auch schon ein Klassiker [Boehm, 1988 und 2000], aber es dient als Vorlage für einige agile Softwareentwicklungsmethoden, wie zum Beispiel SCRUM [Schwaber, 2004]. Auch hier wird der Kunde näher in den Entwicklungsprozess eingebunden, indem immer besser werdende Prototypen entwickelt und dem Kunden vorgestellt werden.
Dieser Glossarbegriff wurde von der WBH-Heft-Autorin Dr. Burcu Yildiz verfasst und von Prof. Dr.-Ing. Michael Fuchs, tätig am Fachbereich Informatik der WBH, redaktionell nur leicht verändert.
Noch unentschlossen?
Sie wollen mehr zu Inhalten, Perspektiven und Spezialisierungen Ihres Studiums an der Wilhelm Büchner Hochschule erfahren? Unser Infopaket informiert Sie umfassend.
Für den Artikel "Software Engineering" verwendete Quellen:
[Boehm, 1988] Boehm, B. W.: A Spiral Model of Software Development and Enhancement. Computer 21:5, S. 61–72, 1988.
[Boehm, 2000] Boehm, B. W.: Spiral Development: Experience, Principles, and Refinements. Special Report, Spiral Development Workshop, February 9, 2000.
[Glinz, 2001] Glinz, M.: Software Engineering I. Vorlesungsskript WS 2001/2002, Universität Zürich, 2001.
[Naur und Randall, 1968] Naur, P.; Randall, B. (eds.): Software Engineering: Report on a Conference Sponsored by the NATO Science Committee. Garmisch, Germany, 7-11 Oct. 1968.
[ISO/IEC/IEEE 24765:2017] ISO/IEC/IEEE 24765:2017(E). ISO/IEC/IEEE International Standard – Systems and Software Engineering – Vocabulary. S. 1–541, 28 Aug. 2017.
[Rayl, 2008] Rayl, A. J. S.: NASA Engineers and Scientists – Transforming Dreams Into Reality. 50th Magazine, NASA, Oktober 2008.
[Schwaber, 2004] Schwaber, K.: Agile Project Management with SCRUM. Microsoft Press, 2004.