Softwaretechnik

Software Engineering (SE), zumeist auch als Softwaretechnik bezeichnet, ist die praktische Anwendung wissenschaftlicher Erkenntnisse für die wirtschaftliche Herstellung und den wirtschaftlichen Einsatz zuverlässiger und effizienter Software. Die Softwaretechnik berücksichtigt eine Menge von Aspekten insbesondere die Softwarequalität, die Softwareergonomie oder auch die Software-Metrik. Bereits in den 60er Jahren gab es erste Bestrebungen grundlegende Prinzipien zu entwickeln, nach denen der Softwareentwurf erfolgen sollte.


Das Gebiet der Softwaretechnik befasst sich mit der Planung, Entwicklung, Anwendung und Wartung von Software und daher mit Prinzipien, Methoden und Werkzeugen, weshalb dieses Gebiet damit eine Menge von Teildisziplinen integriert. Die Beschäftigung mit den an diesem Prozess beteiligten und betroffenen Menschen gehört ebenfalls in diesen Bereich. Sie hat unter anderem die Disziplinen der Softwareergonomie und die Software-Metrik hervorgebracht.

Das Ziel der Softwaretechnik ist die Erstellung von Qualitätssoftware. Die Qualität einer Software basiert unter anderem auf der Funktionserfüllung, der Zuverlässigkeit, Benutzerfreundlichkeit, Effizienz, Wartbarkeit und Wiederverwendbarkeit. Diese Grundsätze angewendet beispielsweise auf die Objektorientierte Programmierung (OOP) bedeutet dies: Objektorientiertes Programmieren erhöht die Qualität der Software, unter anderem wegen der gestiegenen Möglichkeiten, Software wiederzuverwenden.

Dabei werden innere und äußere Qualitätsmaßstäbe unterschieden. Innere Faktoren sind z.B. der modulare Aufbau eines Systems oder die Lesbarkeit des Quellcodes. Sie sind also dann wichtig, wenn es darum geht, Software in einem Team zu bearbeiten oder an neue Anforderungen anzupassen. Unter äußeren Faktoren versteht man diejenigen Faktoren, die von dem Personenkreis beobachtet werden, der mit dem Programm konfrontiert wird. Zur Qualität von Software gehören die folgenden Aspekte:

Korrektheit. Die Fähigkeit von Softwareprodukten, ihre Aufgaben so zu erfüllen, wie sie durch Anforderungen und Spezifikationen definiert sind.

Robustheit. Die Fähigkeit, auch unter außergewöhnlichen und nicht vorhergesehenen Bedingungen und Bedienungen zu funktionieren.

Erweiterbarkeit. Die Möglichkeiten, mit der Softwareprodukte an Spezifikationsänderungen angepasst werden können.

Wiederverwendbarkeit. Die Eigenschaft, Software ganz oder teilweise für neue Anwendungen wieder einsetzen zu können.

Kompabilität. Die Kompatibilität ist ein Maß dafür, mit dem Softwareprodukte mit anderen verbunden werden können.

Effizienz. Die ökonomische Nutzung von Hardware- und Softwareressourcen wie Prozessoren, Speicherplatz etc. und das Laufzeitverhalten von Software.

Portabilität. Die Portabilität ist ein Maß für die Übertragbarkeit eines Softwareprodukts auf verschiedene Hardware- und Softwareumgebungen.

Verifizierbarkeit. Die Verifizierbarkeit ist ein Maß dafür, wie Abnahmeprozeduren, Testdaten und Prozeduren zur Fehlererkennung und -verfolgung während der Validations- und Betriebsphase generiert werden können.

Integrität. Die Integrität ist die Fähigkeit eines Softwaresystems, seine verschiedenen Komponenten (Programme, Daten und Dokumente) gegen unberechtigte Zugriffe und Veränderungen zu schützen.

Benutzerfreundlichkeit. Die Fähigkeit, mit der die Benutzung von Softwaresystemen, ihre Bedienung, das Bereitstellen von Eingabedaten, die Auswertung der Ergebnisse und das Wiederaufsetzen nach Benutzungsfehlern erlernt werden kann.

Zu den konstruktiven Elementen des Software-Engineering zur Qualitätssicherung gehören jene, die zur Qualitätslenkung beitragen. Es sind dies:

  • Prinzipien (Konzepte), die wir unserem Handeln im Software Engineering zugrunde legen;
  • Methoden, die Software Engineering-Prinzipien unterstützen und die Entwickler zu planbaren Ergebnissen führen;
  • Formalismen, insbesondere Sprachen, die auf die verschiedenen Abstraktionsebenen zur Ergebnisbeschreibung verwendet werden und die die Darstellung von Zwischen- und Endergebnissen des methodischen Arbeitens ermöglichen;
  • Werkzeuge, die die Anwendung von Prinzipien, Methoden und Formalismen unterstützen und sowohl dem Software-Entwickler, als auch der Projektführung und der Software-Qualitätssicherung nutzen;
  • Strukturierung des Entwicklungs- und Pflegeprozesses durch ein standardisiertes Vorgehen im Rahmen eines Vorgehensmodells.
Konstruktive 
   Elemente des Software-Engineering

Konstruktive Elemente des Software-Engineering

Der Zusammenhang dieser Elemente kann in Form eines Dreiecks verdeutlicht werden. Das verbindende Element ist ein standardisiertes Vorgehen, das über Aktivitäten- und Ergebnistypen alle anderen Elemente integriert. Die Beschreibung des standardisierten Vorgehens wird als Vorgehensmodell bezeichnet.

Bereits eine erste Entwicklungsstufe des Software-Engineerings beginnend ca. ab dem Jahr 1968 war geprägt von der Erkenntnis grundlegender Prinzipien, die im Softwareentwurf verfolgt werden sollten. Dies ist vor allem das Prinzip der strukturierten Programmierung, das auf der theoretischen Erkenntnis beruht, dass jedes Programm aus Sequenz, Entscheidung und Iteration zusammengesetzt werden kann. Eine Erweiterung auf parallele Prozesse ist allein durch die drei Bausteine Aufspaltung, Sammlung und Synchronisation möglich.

Die Schlussfolgerung aus dieser Erkenntnis war es u.a., dass der Tätigkeit des Programmierens eine Entwurfsphase vorausgehen kann, die unabhängig von der verwendeten Programmiersprache ist. Zu den weiteren Erkenntnissen bereits aus den Anfängen des Software-Engineerings gehört ebenso das Prinzip der schrittweisen Verfeinerung und - entgegengesetzt - das der Abstraktion und Datenabstraktion z.B. durch abstrakte Datentypen. Erkannt wurden ferner die Sinnhaftigkeit des Geheimnisprinzips und der Ablauf des Software-Lebenszyklus mit den Phasen Spezifikation, Entwurf, Implementierung, Test und Wartung. Dazu ergänzten sich im Laufe der Entwicklung der Softwaretechnik das Requirement Engineering (Anforderungsmanagement), das Qualitäts- und Projektmanagement, das Konfigurationsmanagement sowie die Dokumentation als explizite Phasen.

Das Software-Engineering steht in mehrfachem Zusammenhang zum objektorientierten Programmieren. Zum einen entstand die Idee der objektorientierten Programmierung aus der Erkenntnis, dass dadurch die Qualität der Software erhöht werden kann. Auf der anderen Seite wurden im Rahmen des Software-Engineerings Techniken und Werkzeuge dafür entwickelt, wie ein Problem in eine objektorientierte Software umgesetzt werden kann.

Informationen zum Artikel
Deutsch: Softwaretechnik
Englisch: software engineering - SE
Veröffentlicht: 19.09.2017
Wörter: 847
Tags: #Software-Technologien
Links: requirements engineering, Abstrakter Datentyp, Abstraktion, Aspekt, Benutzerfreundlichkeit