Reifegrade der statischen Codeanalyse

R 2.0.0

Allgemeine Beschreibung

Art und Umfang der Testaktivitäten, die im Zusammenhang mit einem bestimmten Baustein durchgeführt werden, sagen etwas über die "Reife" eines Projektvorgehens aus. Probieren Sie doch mal, sich anhand unseres Fragebogens selbst einzustufen! Wir definieren für jeden Baustein vier unterschiedliche Reifegrade und geben Ihnen Hinweise darauf, auf welcher "Stufe" Sie sich gerade befinden, bzw. geben Ihnen Hilfestellung durch welche konkreten Maßnahmen Sie eine höhere Stufe, einen höheren Reifegrad also, erreichen können.

Reifegrad "Initial"

Durch jede gängige Integrierte Software-Entwicklungsumgebung (IDE) werden Werkzeuge zur statischen Codeanalyse bereitgestellt. Entwickler bekommen so ein direktes Feedback zur Qualität ihre Codes und werden auf häufige Fehler oder Schwächen aufmerksam gemacht. In der Stufe "Initial" bleibt es aber jedem Einzelnen überlassen mit dieses Warnhinweisen umzugehen. Es gibt keine Programmierrichtlinien. Jedes Mitglied des Entwicklungsteams verwendet seinen eigenen Stil. Eine Integration von statischen Codeanalysen in den Entwicklungs- und Bereitstellungsprozess ist nicht vorgesehen.

Kontrollpunkte

  • Statische Analysen erfolgen individuell

  • Es erfolgt keine systematische Dokumentation des Vorgehens und der Ergebnisse

  • Es gibt keine Vorgaben oder Richtlinien für die Programmierung

  • Statische Codeanalysen sind nicht Teil einer ganzheitlichen Test- und Qualitätssicherungsstrategie

Verbesserungsvorschläge

  • Programmierrichtlinien definieren, sich dabei an gängigen Standards (z.B. SUN Java Code Conventions) orientieren

  • Verbindliche Umsetzung der Programmierrichtlinien in der Entwicklungsumgebung und Anwendung bereits während der Programmierung.

  • Regelmäßige Code Reviews einführen

  • Automatische Sourcecode-Analyse durch Einsatz geeigneter Werkzeuge wie PMD oder findbugs etablieren

  • Ergebnisse der Analysen dokumentieren

Reifegrad "Kontrolliert"

Es erfolgt der geplante und wiederholbare Einsatz der Aktivitäten manueller sowie automatisierter statischer Codeanalysen sowie deren Dokumentation.

Mehrwert

  • Die Einführung von Programmierrichtlinien setzt früh im Entwicklungszyklus an, gehört somit zum "Shift-Left-Ansatz" und stellt eine wichtige konstruktive Qualitätssicherungsmaßnahme dar.

  • Insbesondere wird die Sicherstellung des SW-Qualitätsmerkmals: Änderbarkeit (Wartbarkeit, Maintainability) unterstützt. Durch die Verringerung von Code-der Komplexität, ergibt sich zwangsläufig eine geringere Fehleranfälligkeit.

  • Regelmäßige Sourcecode-Reviews erhöhen Qualität sowie Vertrauen und tragen zum Wissenstransfer unter den Entwicklern bei.

Kontrollpunkte

  • Programmierrichtlinien festlegen und in der Integrierten Entwicklungsumgebung konfigurieren

  • Entwickler auf die Einhaltung der Programmierrichtlinien verpflichten

  • Frühzeitig regelmäßige Code-Reviews durchführen

Verbesserungsvorschläge

  • Schulungen zur Verbesserung der handwerklichen Qualität des Source Code anbieten

  • Echtzeit-Codeanalyse umsetzen (z.B. mit SonarQube)

  • Analyseergebnisse, insbesondere zu Komplexitätsgraden, in eine Risikobasierte Teststrategie integrieren

Reifegrad "Effizient"

Die Aktivitäten zum Einsatz statischer Analysen werden unter Berücksichtigung des Kosten-Nutzen-Verhältnisses optimiert.

Mehrwert

  • Das frühe Einbinden der statischen Verfahren hilft, Fehler am Anfang und somit günstiger zu finden.

  • Der Aufbau von Knowhow in Kombination mit einem klaren Regelwerk wird langfristig dazu führen, dass kostengünstiger entwickelt werden kann.

  • Die Lieferung von standardisierten Reports schafft Transparenz und Vergleichbarkeit.

  • Daten aus der statischen Analyse sind ein hervorragender Indikator für die Begründung weiterer qualitätssichernder Maßnahmen

Kontrollpunkte

  • Ergebnisse aus der statischen Analyse fließen in das Berichtswesen mit ein

  • In der Organisation erfolgt systematisch Wissensaufbau durch Schulungen und die Ergebnisse der Reviews

  • Die statische Analyse ist integraler Bestandteil der Teststrategie und kein Selbstzweck mehr. Ihre Ergebnisse dienen als Eingabe anderer Testmethoden

Verbesserungsvorschläge

  • Regelmäßige Schulungen des gesamten Teams unterstützen die Einführung von Standards.

  • Regelmäßige Prüfung der eingesetzten Werkzeuge auf mögliche und notwendige Erweiterbarkeit vornehmen

  • Die Qualität der Korrekturmaßnahmen regelmäßig verfolgen, überprüfen und verbessern

Reifegrad "Optimierend"

Der Einsatz von statischen Codeanalysen ist fester Bestandteil des Softwareentwicklungszyklus und der qualitätssichernden Maßnahmen. Er unterliegt einem Kontinuierlichen Verbesserungsprozess (KVP).

Mehrwert

  • Durch die regelmäßigen Prüfungen gelingt es, die statischen Analysen zu etablieren.

  • Die Qualität des gesamten Entwicklungs- und Testprozesses steigt durch die genannten Maßnahmen inkl. Automatisierung. Fehlerraten sinken.

Kontrollpunkte

  • Fortlaufende Verbesserung der genannten Punkte ist etabliert

  • Regelmäßiges aktives Einholen von Feedback und Rückmeldungen wird durchgeführt

  • Einheitliche Vorgaben sind akzeptiert, werden gelebt und weitergegeben

  • Es herrscht eine offene und konstruktive Haltung zu stetigen Verbesserungen und kritischen Prüfungen bestehender Prozesse

Quellen

  • TPI NEXT - Geschäftsbasierte Verbesserung des Testprozesses; van Ewijk, Linker, van Oosterwijk, Visser, de Vrie, 1. Auflage 2011