Qualität statt Quantität – Dies gilt auch für den Bereich der Softwareentwicklung. Viel Code kann unübersichtlich sein, wodurch Fehler leichte Eintrittskarten innerhalb von IT-Systemen bekommen können. Im Hinblick auf vernetzte IT-Systeme, ist die Sicherung der Softwarequalität als Ganzes eine sehr wichtige Komponente. Vernetzte IT-Systeme, die eben auch aus vielen Softwarekomponenten bestehen, können Defizite in der Softwarequalität, wesentliche Störungen wie Systemfehler oder Ausfälle verursachen. Softwarequalität gilt es somit zu sichern. Nach der sogenannten »Rule of Ten« der Fehlerkosten steigen die Kosten der Fehlerbehebung in jedem Schritt der Wertschöpfungskette eines Produkts – in diesem Fall die Software – um den Faktor 10. Ganze 20.000 Euro könnten so gespart werden, wenn der Fehler, dessen anfängliche Behebung 200 Euro betragen würde, nicht erst nach drei Phasen – der Konzeption, Implementierung und des Vertriebs – behoben werden würde. Es lohnt sich also massiv, von Anfang an in die Sicherheit der Softwarequalität zu investieren, um Störungen vorzubeugen und vor allem Personalressourcen und Kosten zu sparen. Dabei müssen aber verschiedene Dimensionen berücksichtigt werden, um die Software-Qualitätssicherung Ihres Unternehmens im Bereich Softwareentwicklung nicht nur aufs nächste Level zu heben, sondern auch nachhaltig zu verankern. Im Folgenden möchte ich die organisatorische, konstruktive und analytische Dimension vorstellen und damit auch beleuchten, warum diese bei der Implementierung von Software nicht ins Hintertreffen geraten sollten.
Organisatorische Dimension: Mehr Softwarequalität in agiler Zusammenarbeit
Die Sicherung der Softwarequalität ist nicht nur eine Implementierungsaufgabe, sondern sollte weitreichend als Querschnittsaufgabe in den Unternehmensprozessen integriert sein. Die organisatorische Dimension ist eine leicht zu unterschätzende Komponente mit hoher Wirkkraft. Sie kommt auf Unternehmens- und Managementebene zum Tragen, welche dafür sorgt, dass die Softwarequalität schon in der Organisation und somit im ganzen Projektgeschehen von Entwicklung, Betrieb und Wartung eingebunden wird. Ansätze wie DevOps, Continous Integration und Continous Delivery können hilfreich sein, um Vorgänge in der Softwareentwicklung zu standardisieren. Solche Vorhergehens-Modelle bzw. Vorhergehensweisen schaffen agile Zusammenarbeiten zwischen Entwicklung und Betrieb und fördern somit die Softwarequalität.
Konstruktive Dimension: Effiziente Teststrategien sind entscheidende Erfolgsfaktoren
Zu der konstruktiven Dimension werden Metriken zur Quantifizierung der Softwarequalität, die Testbarkeit und auch die Einhaltung von Standards wie die ISO 25010 gezählt. Zu Metriken gehören beispielsweise die Anzahl der Codezeilen oder auch die Aufteilung in Klassen. Dies ermöglicht es auch, den Programm-Code zu bewerten und Schwachstellen zu erkennen, ohne ihn auszuführen. Die Testbarkeit der Software ist eine maßgebliche Qualitätssicherungsaufgabe. Konkret bedeutet dies, dass die Software testbar entwickelt werden muss, und zwar schon von Anbeginn der Softwareentwicklung. So können Fehler während der Entwicklungsphase im Code gefunden und behoben werden, damit spätere Störungen gar nicht erst auftreten können. Stichworte für Teststrategien sind beispielsweise Clean Coding, bei dem Entwurfsmuster und Programmierprinzipien verwendet werden oder auch das Test-Driven Development. Hier werden zuerst Softwaretests definiert und so lange programmiert, bis die Tests »grün« sind. Standards können funktionale und nicht-funktionale Qualitätsmerkmale nach der ISO 25010 sein. Dazu gehören unter anderem
- die Kompatibilität, welche die Fähigkeit beschreibt, mit anderen Systemen zusammengefügt zu werden,
- die Wartbarkeit, welche die Test- oder Analysefähigkeit beschreibt,
- die Leistungseffizienz, welche unter anderem die Ressourcenverwendung beinhaltet,
- die Sicherheit, bei der es um die Fähigkeit der Authentizität, Vertraulichkeit oder Verantwortlichkeiten von Softwarekomponenten geht, oder
- die funktionelle Eignung, bei der es um die Korrektheit und Vollständigkeit der vorhandenen Funktionen geht.
Analytische Dimension: Black Box – Software beobachtbar machen
Bei der analytischen Dimension geht es unter anderem um die Beobachtbarkeit einer Software. Sie beschreibt inwieweit sich der Zustand und die Funktionsweise einer Software mittels In- und Outputs ableiten lassen (Abbildung 1). Dazu gehören z.B. Informationen über die Genauigkeit der Daten und deren Aktualität oder auch um die Strukturiertheit der Daten, um Schnittstellen effizient ansprechen zu können. So ist die Beobachtbarkeit »alter« Softwarelösungen (Legacy Systeme) oder auch von Drittanbieter-Software oftmals schwierig, da diese in der Regel eine Art »Black Box« darstellt und keiner weiß, wie die Arbeitsweise einer solchen Software funktioniert. Die Verwendung solcher »Black Box« -Softwarelösungen können bei Integration in die System-Landschaft die bisherige Softwarequalität negativ beeinflussen. Störungserkennung und die Suche nach Ursachen von Störungen lassen sich dann nach der Integration solcher »Black Boxen« schlecht bis gar nicht umsetzen. Damit solche Mängel an Beobachtbarkeit nicht auftreten, haben sich in der Praxis Methoden bewährt, wie Abbildung 1 zeigt:
- Scraping gewinnt strukturierte Informationen aus Benutzeroberflächen
- Datenbankabfragen untersuchen mittels strukturierter Abfragen die Antworten
- Dummy-Requests fragen Schnittstellen ab, damit Reaktionen des Systems untersucht (z.B. Messung der Request-Zeit) werden können
- Dateiuntersuchungen analysieren das Anlegen und Löschen von Dateien auf der Festplatte.
Falls relevante Informationen nicht zu bekommen sind, bedarf es eventuell Nachbesserungen des Systems. Jedoch bieten schon moderne Lösungen auch Softwarebausteine, die als Adapter zwischen Alt- und Neusysteme eingesetzt werden können.
Softwarequalität ist kein Produkt, sondern ein stetiger Arbeitsprozess
Das Zitat von Henry Ford »Der größte Feind der Qualität ist die Eile« zeigt, dass Qualität generell nicht einfach »schnell« hinzugefügt werden kann. Vielmehr ist der Zuwachs von Qualität – und hier im Kontext der Software – ein stetiger Prozess, der jedoch nicht nur in der Software-Entwicklung selbst Einzug hält, sondern das gesamte Unternehmen betrifft. Dies beginnt beim Projektmanagement, über die Entwicklung bis hin zum Vertrieb und der Wartung. Schlussendlich ist Softwarequalität nicht ein Produkt, das gekauft werden kann, es muss stattdessen in jedem Unternehmen individuell vorangetrieben werden. Wie es vorangetrieben werden kann und welche wichtigen Belange zu beachten sind, hat nun dieser Blogbeitrag gezeigt.
Eine weitere Vertiefung in das Thema Qualitätssicherung der Software in vernetzten IT-Systemen zeigt die vom Fraunhofer IAO und dem Anwendungszentrums KEIM durchgeführte Marktstudie zum Thema »Überwachung und Störungserkennung in vernetzten IT-Systemen«. Wie die Störungserkennung in der Praxis in Hinblick auf Standardisierungen oder zukünftigen Entwicklungen gelebt wird, steht im Zentrum des nächsten Blogbeitrags.
Leselinks:
Kategorien: Digitalisierung
Tags: IT-Systeme, Störungserkennung