Ein sinnvolles Ziel professionellen Arbeitens ist es, Qualität anzustreben – sowohl im Ergebnis wie auch auf dem Weg dorthin: Ein qualitativ hochwertiges Ergebnis dokumentiert die Beherrschung des Lösungsraumes sowie der eingesetzten Fertigkeiten und Werkzeuge. Eine qualitativ hochwertige Software tut nicht nur irgendwie. Vielmehr unterstützt sie den Kunden nach allen Regeln der Kunst. Wer in der Vergangenheit eine solche Qualität demonstriert hat, genießt in Zukunft einen Vertrauensvorschuss des Kunden (den zu bestätigen das Ziel sein muss).
Um Qualität liefern zu können, muss Qualität auch gelebt werden. Eine Antwort auf die Frage, ab wann Qualität als zentraler Aspekt im Prozess verankert sein sollte, liefert die Definition von Qualität nach DIN EN ISO 9000:2015. Die ISO-Norm definiert Qualität als den „Grad, in dem ein Satz inhärenter Merkmale Anforderungen erfüllt“. Qualität erwächst demnach aus guten Anforderungen. Auf Basis der Anforderungen wird Qualität in der Umsetzung berücksichtigt und schließlich vorab im Test bzw. zur Laufzeit durch Monitoring sichergestellt.
Aus Basis dieser Überlegungen ergeben sich für den Softwareentwicklungsprozess vier Kernbereiche, welche für eine hohe Qualität ausschlaggebend sind:
- Die Anforderungsanalyse
- Die Entwicklung
- Das Testing
- Das Monitoring
Qualität in der Anforderungsanalyse
Einem Kunden (oder dem Markt allgemein) genau das Produkt zu liefern, welches er tatsächlich benötigt, ist schwierig. Der Gedanke „Kommunikation ist der Anfang aller Missverständnisse“ bringt dabei eines der beiden Hauptprobleme auf den Punkt: Zunächst muss der Kunde wissen, was er tatsächlich braucht. Dieses Bedürfnis muss der Analyst ermitteln. Der Analyst muss dem Entwickler das Bedürfnis korrekt übersetzen… (Um eine Vorstellung des Ergebnisses dieser Kommunikationskette ohne geeignete Qualitätssicherungsmaßnahmen zu bekommen, bietet sich das Kinderspiel Stille Post an.)
Das zweite Hauptproblem stellt die Zugänglichkeit dar: Die relevanten Informationen zu einer Anforderung müssen jederzeit leicht zugänglich und in hilfreicher Form zur Verfügung stehen. Andernfalls können sie nicht zielführend einfließen.
Qualität in der Entwicklung
Im Bereich der Entwicklung tummelt sich eine Unendlichkeit an Optionen, welche sich mit dem Messen oder Verbessern von Codequalität beschäftigen. Einige Beispiele sind
- Aktivitäten wie Test-Driven-Developement oder Pair Programming,
- Tools wie SonarQube zum Messen und Visualisieren von technischer Schuld sowie
- Frameworks wie NUnit zum Schreiben von Tests.
Die Kunst der Qualitätssicherung in der Entwicklung besteht häufig darin, eine Beschränkung und Vereinheitlichung festzulegen. Welche Optionen werden durchgeführt und wie werden deren Ergebnisse nachhaltig berücksichtigt?
Qualität durch Testing
Häufig wird bei dem Begriff Qualitätssicherung zunächst an Testing gedacht. Dieser Gedanke entspricht jedoch nur der halben Wahrheit. Es ist richtig, dass das Testing den Kreis der Anforderungen schließt. Das entwickelte Produkt wird gegen die Spezifikationen der Anforderungen (funktional sowie nicht-funktional) abgeglichen.
Es gilt jedoch der vielzitierte Gedanke „Qualität kann nicht in ein System hineingetestet werden“: Nur auf Basis qualitativ hochwertiger Anforderungen und einer anschließenden qualitativ hochwertigen Entwicklung kann durch Testing eine hohe Qualität sichergestellt werden. Mit anderen Worten: „Shit in, shit out“.
Wie im Bereich der Entwicklung, so gibt es auch im Bereich des Testings eine Vielzahl an (teilweise denselben) Optionen. Es gilt, den Dschungel der Optionen auf das zu beschränken, was die zur Verfügung stehenden Ressourcen optimale Ergebnisse erzielen lässt.
Qualität durch Monitoring
Eine vollständige Testabdeckung ist utopisch. Nicht alles kann im Vorfeld bedacht und getestet werden. Es kommt stets der Zeitpunkt, da weitere Testaufwände nicht mehr in Relation zum erzielten Nutzen stehen. Es ist wichtig, diesen Zeitpunkt abzupassen und das Testing im Vorfeld durch Monitoring im Livebetrieb zu ergänzen. Durch ein gutes Monitoring der richtigen Kennzahlen mit den richtigen Tools ist es möglich, bei den ersten Anzeichen von Problemen Gegenmaßnahmen einzuleiten.
Fazit
Qualität erwächst aus den Qualitätssicherungsmaßnahmen im gesamten Application LifeCycle: Von der ersten Anforderungsaufnahme bis hin zum Livebetrieb wird die Qualität nachhaltig geprägt. Genügt die Qualität bereits in einer vorherigen Stufe nicht den Ansprüchen, so wird es nahezu unmöglich, sie auf einer nachfolgenden Stufe noch anzuheben.
Ausblick
In den kommenden Monaten werden wir unter dem Titel “Qualität als Konzept” regelmäßig Blogbeiträge zu eben diesem Thema veröffentlichen. Wir wollen für den zentralen Begriff der Qualität sensibilisieren. Wir werden Best Practices, praxiserprobte Tools sowie Frameworks vorstellen, die wir durch unsere Arbeit in über 450 Kundenprojekten gemeistert haben, um die Qualität in der Softwareentwicklung nachhaltig zu steigern.