Mit Software-Metriken die Qualität Ihrer Software messen und verbessern - Teil 1
Anmerkung des Editors: Um die Qualität der von uns erstellten Software messbar zu machen, setzt unser Team beim Outsourcing der Softwareentwicklung eine Reihe von Software-Metriken ein, die uns helfen, die Softwarequalität zu messen, zu verbessern und zu kontrollieren. Gerne bringen meine Kolleg(inn)en aus ScienceSoft die für 31 Jahre erworbene Erfahrung auch in Ihr Softwareprojekt ein.
Als integraler Bestandteil im Qualitätsmanagement dienen Software-Metriken dazu, ein System von Kennzahlen zu definieren und damit den Entwicklungsprozess effizienter zu planen und zu steuern sowie dessen Transparenz zu schaffen. Die Experten von ScienceSoft unterscheiden zwei Gruppen von Metriken:
- Produktorientierte Software-Metriken, die für die Messung und Überprüfung der Softwarequalität in allen Phasen des Entwicklungsprozesses eingesetzt werden.
- Projektorientierte Software-Metriken, die der Bewertung des gesamten Entwicklungsprozesses sowie der Produktivität aller beteiligten Teams – Entwicklungsteam, UX-Designer, QS- und Support-Team – dienen und ein effizientes Projektcontrolling ermöglichen.
In diesem Blogbeitrag konzentrieren wir uns auf die erste Gruppe von Software-Metriken, die wir häufig in unseren ausgelagerten Entwicklungsprojekten verwenden, um die Qualität von Software zu messen und zu bewerten. Informationen über die nächste Gruppe von Metriken können Sie im zweiten Teil unseres Blogbeitrages finden.
Software-Metriken für die Codequalität
Diese Software-Metriken sind dafür geeignet, den Zustand Ihrer Software durch automatisierte Überprüfungen des Codes zu bewerten und die Frage zu beantworten, wie hoch die Codequalität ist. Die Metriken helfen auch zu verstehen, wie komplex der Code ist, um Schwierigkeiten bei Erweiterungen der Funktionalität sowie Probleme bei der Wartung und dem Support der Software zu vermeiden.
In unseren Projekten setzen wir die folgenden Software-Metriken zur Messung der Codequalität:
- Wartbarkeitsindex (engl. Maintainability Index, MI)
- Zyklomatische Komplexität (engl. Cyclomatic Complexity)
- Tiefe des Vererbungsbaums (engl. Depth of Inheritance Tree)
- Kopplung zwischen Klassen (engl. Coupling Between Classes)
- Anzahl von Code-Zeilen (engl. Lines of Code)
Tools wie Microsoft Visual Studio können diese Performance-Indikatoren automatisch berechnen.
Software-Metriken für die Testqualität
Diese Art von Software-Metriken dient der Abschätzung, ob die Qualität der Software genug hoch ist, um diese auszuliefern. Wir verwenden diese Software-Metriken, um nicht nur den Zustand der Software zu beurteilen, sondern auch die Produktivität unseres QS-Teams zu bewerten und als Ergebnis durch relevante Maßnahmen sowohl die Softwarequalität als auch die Produktivität des Teams zu verbessern.
- Testabdeckung
Die Testabdeckung als Software-Metrik zur Qualitätssicherung gibt an, wie viel Prozent der Softwareanforderungen durch Testfälle abgedeckt sind. Je mehr funktionale und nicht-funktionale Anforderungen durch geeignete Testfälle abgedeckt werden, desto mehr Fehler können identifiziert werden. Dadurch besteht die Möglichkeit, eine Software mit höherer Qualität in Übereinstimmung mit Anforderungen auszuliefern.
- Defekte, die während der Akzeptanztests entdeckt werden
Werden Defekte während der Akzeptanztest gefunden, bedeutet das, dass die Software bestimmten Anforderungen aus Sicht von Benutzern nicht entspricht. Falls die Anzahl der während der Akzeptanztest entdeckten Fehler so groß wie die Anzahl der zuvor gefundenen Fehler ist, kann das darauf hinwiesen, dass sowohl Test- als auch Entwicklungsprozesse optimiert werden müssen.
- Defekte, die nach der Release entdeckt werden
Wenn Fehler frühzeitig nicht gefunden sind und nur nach der Veröffentlichung identifiziert werden, kann das zu Einnahmeverlusten führen, weil es oft sehr teur und nicht einfach umsetzbar ist, Fehler in den späteren Phasen zu korrigieren. Des Weiteren beeinflusst das Nutzererlebnisse negativ, weil Benutzer schon wenig oder gar nicht mit Software arbeiten können und möchten. Daher sollen wir es sicherstellen, dass mindestens 90% der Fehler vor der Veröffentlichung der Softwareversion beseitigt sind.
Software-Metriken zur Messung der Verfügbarkeit
Wenn die Benutzer keinen Zugriff auf eine Software haben und mit bestimmten Problemen bei derer Verwendung konfrontiert sind, sind die Chancen hoch, dass sie diese Software nicht mehr verwenden werden. Um zu messen, wie hoch die Verfügbarkeit einer Software ist, setzen wir eine Reihe von Metriken ein. Diese Software-Metriken zeigen auch, wie effizient ein Team bei der Fehlerbehebung und Verbesserung der Performance gearbeitet hat. Zu den wichtigen Kennzahlen der Verfügbarkeit gehören die folgenden:
- Durchschnittliche Betriebsdauer zwischen Ausfällen (Mean Time Between Failures, MTBF)
Meine Kollegen aus ScienceSoft berechnen MTBF, um erwartete Ausfälle vorherzusagen und damit die Arbeit unseres Support-Teams zu bewerten. In diesem Zusammenhang können niedrige Werte darauf hinweisen, dass die Software-Performance mangelhaft oder unzureichend überwacht wird oder ein Support-Team in der Vergangenheit seine Aufgaben bei der Wiederherstellung schlecht erledigt hat.
- Durchschnittliche Dauer bis zur Wiederherstellung / Reparatur (Mean time to recovery/repair, MTTR)
MTTR gibt an, wie lange es im Durchschnitt dauert, bis das Team nach einem Ausfall Probleme behebt und die Software wieder funktionsfähig ist. Die Wiederherstellzeit beginnt mit der Problemerkennung und -analyse und geht zur Reparatur über. Die reine Reparaturzeit umfasst nur einen Zeitraum, der nur für die Reparatur benötigt wird, um die Funktionsfähigkeit zu testen und wiederherzustellen. Es ist besonders wichtig, zwischen den beiden Begriffen zu unterscheiden, wenn es um ausgelagerte Projekte in der Softwareentwicklung geht und die Wiederherstellung der Verfügbarkeit im Rahmen eines Service Level Agreements (SLA) als Pflicht gilt - beide Parteien sollten doch darüber einig sein, was genau gemessen wird.
Diese zwei Kenngrößen ermöglichen, die Verfügbarkeit (V) mit der folgenden Formel zu berechnen:
V = MTBF/ MTBF+ MTTR
- Anzahl der einzelnen Ausfälle
Diese Software-Metrik gibt an, wie oft pro eine Zeiteinheit (Woche oder Monat) eine Software ausgefallen ist. Die Metrik hilft bei der Analyse von Ursachen und ermöglicht, den Grad der Verfügbarkeit zu erhöhen. Das bedeutet aber nicht, dass Sie eine Verfügbarkeit von 100% anstreben sollten, weil Ausfallzeiten für die geplante Wartung erforderlich sein können. Aber dabei muss man die maximale Betriebszeit mit minimalen Ausfallzeiten gewähren.
- Ladezeit einer Seite (nur für Web-Apps)
Die Ladezeit gibt an, wie schnell der Seiteninhalt komplett geladen wird. Diese Software-Metrik sollte kontinuierlich kontrolliert und optimiert werden, um die Nutzererfahrung positiv zu beeinflussen. Die Ladezeit muss nicht mehr als 2-3 Sekunden dauern. Andernfalls können Besucher die Web-App verlassen. Außerdem können langsame Seiten in den Suchergebnissen auch niedriger angezeigt werden.
Software-Metriken zur Bewertung der Sicherheit
Diese Art von Software-Metriken werden als Indikatoren eingesetzt, um Aktivitäten für das Schwachstellenmanagement zu planen, durchzuführen sowie die Wirksamkeit von Maßnahmen zu bestimmen und als Ergebnis eine sichere Software zu entwickeln. In diesem Fall spielt eine größere Rolle, ob der allgemeine Trend steigend oder sinkend ist.
- Anzahl von Schwachstellen, die durch regelmäßig durchgeführte Pentests gefunden werden
Diese Software-Metrik gibt an, inwiefern die Software den Sicherheitsrisiken ausgesetzt ist. Im Idealfall sollten die Kennzahlen sinken, was darauf hindeutet, dass die Lösung in Sachen Sicherheit ausgereifter wird. Wenn die Kennzahlen steigen, kann das bedeuten, dass Softwareaktualisierungen zu schnell veröffentlicht werden.
- Anzahl von schon identifizierten Sicherheitslücken, die nicht behoben sind
Die Anzahl der gepatchten Sicherheitslücken gibt keinen vollständigen Überblick darüber, wie hoch das Sicherheitsniveau Ihrer Software ist, wenn es noch eine Reihe von nicht behobenen Bugs gibt. Die Kennzahl hilft, diese Lücken vor Augen zu haben und zeitnah erforderliche Maßnahmen zu planen, um die Sicherheit zu verbessern.
- Anzahl und Schweregrad von Sicherheitsvorfällen
Wir setzen diese Software-Metrik ein, um die Vorfälle nach Schwergrad zu priorisieren, um in einer bestimmten Reihenfolge auf diese zu reagieren, je nachdem, welche Auswirkungen ein Vorfall im Hinblick auf Zuverlässigkeit der Software haben kann.
Software-Metriken zur Beurteilung der Benutzerzufriedenheit
Es ist möglich, die Benutzerzufriedenheit mit Hilfe von Umfragen und Fragebögen zu messen. Sie können beispielweise die folgenden Werte in Ihren Umfragen zur Software-Bewertung aus Sicht von Benutzern verwenden:
- Erfüllt die Software Erwartungen von Benutzern hinsichtlich der Funktionalität;
- Bietet die Benutzeroberfläche intuitive Bedienbarkeit;
- Wie Benutzer die Stabilität der Software-Performance bewerten.
Software-Metriken: ein Beispiel
Eine Zusammenfassung von Software-Metriken finden Sie in der Tabelle. Dieses KPI-System zeigt anhand eines exemplarischen Projekts zur Entwicklung von Web-Apps, welche Zielwerte monatlich verfolgt werden können.
Möchten Sie Software-Metriken auch in Ihrem Projekt implementieren?
Die Softwarequalität lässt sich durch die Messung und Bewertung von Code- und Testqualität, Verfügbarkeit, Sicherheit und Zufriedenheit von Benutzern überprüfen. Die Verwendung von unterschiedlichen Software-Metriken bietet eine Möglichkeit, Zielabweichungen rechtzeitig zu entdecken und qualitative Maßnahmen zur Verbesserung nicht nur der Softwarequalität, sondern auch der Produktivität des Teams und jedes einzelnen Projektbeteiligtes zu treffen. Wenn Sie auch möchten Software-Metriken in Ihrem Softwareprojekt zu implementieren, um die Softwarequalität zu messen, durch Bewertungen zu kontrollieren und rechtzeitig Gegenmaßnahmen zu treffen, steht unser Team in der Softwareentwicklung Ihnen zur Verfügung, um geeignete Software-Metriken auch für Ihr Outsourcing-Projekt zu definieren und diese einzusetzen!