Was und wie misst ein Softwaresachverständiger?

Es gibt je nach Programmiersprache dutzende Werkzeuge, mit denen man hunderte Kennzahlen einer Software ermitteln kann.1 Welche davon nehmen? Selbstverständlich kommt es dabei auf die Fragestellung an. Für die Bewertung der Güte einer Software sind viele ansonsten sehr interessante Metriken wie Prozess- oder Aufwandsmetriken irrelevant, da ja nur das Softwareprodukt an sich bewertet wird. Aber auch nicht alle Produktmetriken sind relevant und helfen bei der Beantwortung der oben genannten Fragen.
Die für die Abschätzung der Güte einer Software relevantesten Metriken und Informationen:
- Fehlerdichte – die Anzahl an noch nicht gefundenen/behobenen Fehlern pro 1.000 Lines of Code – ist ein einfach zu berechnender Wert, der zeigt, ob eine Software je nach Einsatzgebiet produktionsreif ist.
- Umfang – typischerweise in Lines of Code, aber auch manchmal in Form anderer Metriken wie Personentage oder FunctionPoints – zeigt nicht nur, wie groß die Software ist, sondern lässt daraus die Wartungs- und Weiterentwicklungskosten, sowie diverse Risiken ableiten.
- Komplexität – die Komplexität der gesamten Software und die Anzahl an zu komplexen (= unwartbaren) Stellen in der Software – ebenfalls für die Ableitung der Wartungs- und Weiterentwicklungskosten, sowie diverse Risiken wie z. B. Lebensdauer der Software.
- Architektur und Architektureinhaltung – zur Bewertung, ob die Architektur zu der Aufgabenstellung passt und ob die Architektur auch tatsächlich so wie vorgegeben/vermutet eingehalten wurde.
- SBOM – die „software bill of material“ = Liste der verwendeten Libraries und Frameworks, ihrer Versionen und Lizenzen – ebenfalls zur Bewertung, ob diese (noch) zu der Aufgabenstellung passen und ob hier (und anderswo) auf die laufende Aktualisierung geachtet wurde.
Jedem Softwarehersteller und Software-Auftraggeber ist geraten, diese Metriken zu prüfen und zur Bestimmung der Einsatzfähigkeit von Software heranzuziehen. Dazu verwendet man Werkzeuge, die diese Metriken (oder deren Berechnungswerte) automatisiert liefern und auch andere wertvolle Einsichten in die Software bereitstellen. Idealerweise laufen diese Werkzeuge automatisiert während des Builds und sollten als Quality-Gate eingesetzt werden: Erst wenn die Software die geforderten und mit dem Umsetzungsteam vereinbarten Qualitätskriterien erreicht, gilt der jeweilige Prozessschritt (Entwicklung, Test) als abgeschlossen.
Leider vergessen manche beim Einsatz derartiger Werkzeuge, dass sie sich nur dann auszahlen, wenn man auch die damit gewonnenen Erkenntnisse in Verbesserungen der Software umsetzt.
Erkenntnisse:
- Ein Sachverständiger benötigt nur wenige Metriken und Informationen, um daraus wichtige Erkenntnisse zu einer Software ableiten zu können
- Wurde professionell gearbeitet, so sind diese Metriken und Informationen ohnedies vorhanden oder sehr leicht eruierbar
- Wenn man weiß, worauf zu achten ist, kann man eine Software auch selbst prüfen.
- Die Werkzeuge sind oft bereits vorhanden, deren Ergebnisse werden aber meist nicht genutzt.
1. Siehe z. B. die Wikipedia Liste von Werkzeugen zur statischen Codeanalyse. ↩
Kommentare
Kommentar veröffentlichen