Logo Wissenstransfer Gerhard at CichnaDotCom

>> Wissensdatenbank / Grundlagen der industriellen Softwaretechnik

Risiken und Herausforderungen der industriellen Softwaretechnik

Eigenschaften von industriellen Softwaresystemen

Eine gemeinsame Eigenschaft aller industriellen Softwaresysteme ist deren Komplexität in vielfacher Hinsicht:

Als verschärfender Aspekt kommt hinzu, dass man Software - zum Beispiel im Gegensatz zu industriellen Fertigungsanlagen - nicht anfassen kann. Software ist immateriell. Ein fertiges Softwaresystem manifestiert sich als sehr lange Reihe von 0 und 1 auf einer Festplatte oder einer DVD. Das bedeutet, dass man sowohl während der Planung, der Konstruktion und beim Einsatz von Software sich niemals die Bestandteile und deren Abhängigkeiten direkt anschauen kann. So kann sich weder der Projektleiter noch der Kunde ein Bild über den tatsächlichen "Baufortschritt" der Software durch Begehung einer Baustelle verschaffen.

Im industriellen Software Engineering erstellt man also komplexe, teure und unternehmenskritische Systeme, die man weder anfassen noch in einer natürlichen Weise darstellen kann.

Darüber hinaus werden neben der Unterstützung der geforderten Fachfunktionen folgende Eigenschaften von Softwaresystemen gefordert:

Korrektheit

Die fertige Software soll mit ihrer (gemeinten) Spezifikation übereinstimmen. Sie soll genau das tun, was in der Spezifikation festgelegt wurde. Wenn ein System nur ungenau spezifiziert ist, kann nicht entschieden werden, ob die erstellte Software korrekt ist.

Zuverlässigkeit

Die Software ist dauerhaft einsetzbar und der Anwender kann sie im Rahmen seiner geschäftlichen Aktivitäten einsetzen. Je nachdem, wie geschäftskritisch der Einsatzbereich der Software ist und wie hoch ein möglicher Schaden durch Ausfall oder Fehlfunktionen ist, ist die Eigenschaft "Zuverlässigkeit" mehr oder weniger relevant.

Robustheit

Für den Fall, dass die Software nicht wie ursprünglich erwartet bedient wird oder falls sich ein angeschlossenes System nicht so verhält wie ursprünglich geplant, soll sich ein Softwaresystem tolerant verhalten und keine unkontrollierten Fehler oder inkonsistente Daten produzieren.

Usability (deutsch: Gebrauchstauglichkeit)

Software ist benutzerfreundlich, wenn die Anwender sie für einfach benutzbar halten. Seit den Erfolgen der Apple-Produkte und der Einführung von kleinen und einfach zu bedienenden Apps nimmt die Gebrauchstauglichkeit einen immer höheren Stellenwert ein und entscheidet häufig über Erfolg oder Misserfolg von Systemen.

Performanz

Performanz bezeichnet die Einhaltung bestimmter Anforderungen an das Antwortzeitverhalten und den Ressourcenbedarf von Softwaresystemen. Typischerweise spielt die Performanz entweder bei verteilten Systemen, an denen sehr viele Nutzer gleichzeitig arbeiten (z. B. Amazon, Facebook), oder bei Systemen, die große Datenmengen zu ganz bestimmten Zeiten (z. B. Banken, Versicherungen) bearbeiten müssen, eine große Rolle. Grundsätzlich lässt sich diese Eigenschaft durch Messen, Berechnen und Simulation überprüfen.

Wartbarkeit

Industrielle Softwaresysteme werden oft über einen Zeitraum von mehreren Jahren eingesetzt, teilweise auch länger als 10 Jahre. Um in dieser Zeit geänderte gesetzliche Anforderungen zu erfüllen und auf geänderte Marktbedingungen oder neue Technologien zu reagieren, müssen in bestehenden Systemen laufend neue Funktionen umgesetzt oder bestehende angepasst werden. Die Eigenschaft von Software, Änderungen wirtschaftlich sinnvoll duchführen zu können, wird als Wartbarkeit bezeichnet. Wartbarkeit hängt stark von der internen Struktur der Software und ihrer Dokumentation ab. Mit zunehmender Lebensdauer nimmt die Wartbarkeit ab, sodass es wirtschaftlich sinnvoller ist, ein System komplett abzulösen bzw. neu zu entwickeln, als ein bestehendes System weiter zu warten.

Wiederverwendbarkeit

Wiederverwendbarkeit bezeichnet die Wahrscheinlichkeit, mit der ein Softwaresystem oder Teile eines Systems in einem anderen Kontext wiederverwendet werden können. Die Möglichkeit der Wiederverwendbarkeit muss dabei sorgfältig geplant und beim Design eines Systems mit berücksichtigt werden. Sie entsteht nicht zufällig.

Portierbarkeit

Die Eigenschaft Portierbarkeit einer Software ergibt sich aus dem Aufwand, der nötig ist, um eine Software auf einer anderen Plattform (z. B. Datenbank, Betriebssystem, mobiles Gerät) lauffähig zu machen im Vergleich zu dem (Neu-)Entwicklungsaufwand von Software. Insbesondere für Anwendungen, die für den Endanwender bestimmt sind und die damit auf möglichst vielen Geräteklassen und Betriebssystemen funktionieren müssen, ist Portierbarkeit eine relevante Eigenschaft.

Interoperabilität

Ein Softwaresystem ist interoperabel, wenn es sich mit geringem Aufwand mit anderen Systemen zusammenschließen bzw. integrieren lässt. De facto gibt es heute keine Unternehmensanwendung mehr, die isoliert von anderen Anwendungen funktioniert. Anwendungsübergreifende Schnittstellen (z. B. Webservices) sind nahezu in jedem betrieblichen Informationssystem vorhanden.