Seien Sie am 30. April dabei: Vorstellung von Parasoft C/C++test CT für kontinuierliche Tests und Compliance-Exzellenz | Registrierung

So bewältigen Sie Ihren Rückstand an statischen Analysewarnungen und technischen Schulden

Porträtfoto von William McMullin, Lösungsarchitekt bei Parasoft
19. Mai 2023
8 min lesen

Wenn Sie Schwierigkeiten haben, mit Ihrem Rückstand an statischen Analysewarnungen und technischen Schulden umzugehen, lesen Sie diesen Beitrag, um zu erfahren, wie Sie dieses Problem lösen können.

Nachdem statische Analysewerkzeuge in den täglichen Arbeitsablauf des Entwicklungsteams integriert wurden, wird in der nächsten Phase daran gearbeitet, den Rückstand an Warnungen und technischen Schulden in einem Projekt zu verringern.

Bei einem Produkt, das gewartet oder entwickelt wird, ist wahrscheinlich ein erheblicher Rückstand zu bewältigen. Bei einem Greenfield-Projekt gibt es weniger Rückstand. Die Empfehlungen bleiben jedoch für jede Reifestufe gleich.

Der beste Ausgangspunkt für die Bewältigung eines Rückstaus an Warnungen besteht darin, die Ergebnisse entsprechend dem gewünschten Ergebnis zu priorisieren und zu filtern. Am Beispiel der Sicherheit ist es sinnvoll, den Rückstand in Bezug auf Sicherheitswarnungen nach Kritizität zu priorisieren.

Dies ist eine Fortsetzung des ersten Ansatzes Einführung der statischen Analyse in ein Projekt, aber jetzt liegt der Fokus auf der nächsten verdaulichen Reihe von Warnungen, die das Team analysieren muss. Dies wird von Parasoft C/C++test auf verschiedene Weise gehandhabt, worauf wir weiter unten eingehen werden.

Was sind technische Schulden und warum ist sie wichtig?

Technische Schulden sind die Kosten, die durch die Verzögerung wesentlicher Arbeiten oder die Inanspruchnahme von Abkürzungen während der Softwareentwicklung entstehen. Bei dieser Form der Verschuldung fallen, wie bei Finanzschulden, mit der Zeit Zinsen an und die Behebung kann teuer werden, wenn sie nicht gelöst wird.

Beispiele für technische Schulden sind:

  • Code, dessen Wartung oder Erweiterung schwierig ist
  • Veraltete Abhängigkeiten
  • Sicherheitslücken

Leider sind technische Schulden ein häufiges Problem, da Softwareentwicklungsteams häufig der schnellen Bereitstellung von Funktionen Vorrang vor der Erstellung einer robusten Codebasis geben.

Der Abbau technischer Schulden ist aus mehreren Gründen von entscheidender Bedeutung. Es kann:

  • Beeinträchtigen Sie die Fähigkeit von Softwareteams, qualitativ hochwertige Produkte zu liefern.
  • Verringern Sie die Produktivität.
  • Erhöhen Sie die Entwicklungszeit.
  • Geringere Kundenzufriedenheit.
  • Sicherheitsrisiken darstellen.

Die Lösung technischer Schulden ist für die Entwicklung nachhaltiger und wartbarer Softwareprodukte, die sich an sich ändernde Geschäfts- und Kundenanforderungen anpassen können, von entscheidender Bedeutung.

Arten von technischen Schulden

Wenn es um technische Schulden geht, gibt es zwei große Kategorien.

  1. Vorsätzlich
  2. Unbeabsichtigt

Absichtliche technische Schulden entstehen, wenn ein Team bewusst Abstriche macht, um eine Frist einzuhalten oder ein bestimmtes Ziel zu erreichen. Diese Art technischer Schulden entsteht häufig aus geschäftlichen Gründen, beispielsweise aufgrund des Marktdrucks, und wird als notwendiges Übel angesehen. Der Nachteil besteht darin, dass später zusätzliche Arbeiten erforderlich sein können, beispielsweise eine Umgestaltung, die kostspielig sein kann.

Andererseits entstehen unbeabsichtigte technische Schulden, wenn sich ein Team der Auswirkungen der Entscheidungen, die es während der Entwicklung trifft, nicht bewusst ist. Dies kann auf mangelndes Verständnis oder Fachwissen in einem bestimmten Bereich, mangelnde Ressourcen oder Zeit oder einfach auf mangelnde Disziplin oder Genauigkeit zurückzuführen sein.

Diese Art technischer Schulden ist oft heimtückischer, da sie schwer zu erkennen und zu diagnostizieren ist und später unvorhergesehene Folgen haben kann. Unabhängig von der Art der technischen Schulden ist es wichtig, sich ihrer Existenz bewusst zu sein und Maßnahmen zu ihrer effektiven Bewältigung zu ergreifen, um die langfristige Gesundheit und den Erfolg eines Softwareprojekts sicherzustellen.

Beispiele für technische Schulden

Unbeabsichtigte technische Schulden können sich im Laufe der Zeit ansammeln, wenn sie nicht behoben werden, was letztendlich die Wartung und Weiterentwicklung der Software erschwert. Einige Beispiele für unbeabsichtigte technische Schulden sind:

  • Designschulden entsteht, wenn Entwurfsentscheidungen getroffen werden, um kurzfristige Ziele oder Lieferziele zu erreichen, ohne die langfristigen Auswirkungen dieser Entscheidungen zu berücksichtigen.
  • Code-Schulden entstehen durch schlechte Codierungspraktiken und Abkürzungen zur Einhaltung von Fristen, was zu Problemen wie dupliziertem oder übermäßig komplexem Code führt, der schwer zu warten oder zu testen ist.
  • Schulden testen tritt auf, wenn ordnungsgemäße Tests nicht durchgeführt werden oder unzureichend sind, was zu Herausforderungen bei der Erkennung und Behebung von Fehlern und der Möglichkeit der Veröffentlichung von Fehlern in der Produktion führt.

Absichtlich werden technische Schulden mit der Einsicht aufgenommen, dass sie irgendwann in der Zukunft zurückgezahlt werden müssen. Einige Beispiele für absichtliche technische Schulden sind:

  • Geplante technische Schulden sind bewusst. Dabei geht es darum, Abkürzungen zu nehmen und dabei zu wissen, dass sie in Zukunft behoben werden, beispielsweise die Verwendung einer Bibliothek eines Drittanbieters, die durch eine benutzerdefinierte Lösung ersetzt wird.
  • Geschäftsschulden werden vom Entwicklungsteam absichtlich aufgenommen, um einen Geschäftsbedarf zu erfüllen, beispielsweise um ein Produkt mit weniger Funktionen als geplant auf den Markt zu bringen, um der Marktnachfrage gerecht zu werden, mit dem Wissen, dass es später verbessert werden muss.
  • Strategische Schulden entstehen, wenn ein Team die Arbeit an neuen Funktionen oder Systemen absichtlich verschiebt, um anderen Bereichen Priorität einzuräumen, obwohl es weiß, dass dies in Zukunft teurer sein wird.

Die beste Vorgehensweise bei technischen Schulden besteht darin, einen proaktiven Ansatz zur Verwaltung der Codequalität zu verfolgen, damit Softwareentwickler in der Lage sind reduzieren Sie das Risiko Vermeiden Sie es, zu viele technische Schulden anzuhäufen, und stellen Sie sicher, dass Ihre Software langfristig gesund und nachhaltig bleibt, indem Sie qualitativ hochwertigen Code- und Designpraktiken Priorität einräumen und technische Schulden regelmäßig tilgen. Das bedeutet, in Codequalität, Tests und Dokumentation zu investieren und sicherzustellen, dass die Software im Laufe der Zeit wartbar, skalierbar und sicher bleibt.

Bedeutung der statischen Analyse für die Verwaltung technischer Schulden

Die statische Analyse ist eine automatisierte Methode zur Überprüfung des Quellcodes auf Qualitäts- und Compliance-Probleme. Dies kann nützlich sein, um Sicherheitsprobleme, Sicherheitslücken und Zuverlässigkeitsbedenken zu identifizieren oder Bereiche zu identifizieren, in denen Code in Zukunft möglicherweise schwieriger zu warten oder zu erweitern ist.

Durch die frühzeitige Erkennung technischer Schulden können Teams Maßnahmen ergreifen, um diese zu beheben, bevor sie zu einem größeren Problem werden. Dies kann dazu beitragen, die Codequalität zu verbessern, die Entwicklungszeit zu verkürzen, die Arbeitskosten zu senken und den Gesamtwert von Softwareprodukten zu steigern.

Dashboards für High-Level-Analysen

Parasoft ist zentralisiert Berichts- und Analyse-Dashboards Geben Sie Entwicklern und Managern die Möglichkeit, den aktuellen Status eines Projekts aus verschiedenen Blickwinkeln zu betrachten und bei Bedarf weiter ins Detail zu gehen, um eine Reihe von Warnungen für weitere Untersuchungen festzulegen. Betrachten Sie das folgende Dashboard, das die aktuelle Konformität eines Projekts mit dem CERT C-Sicherheitscodierungsstandard zeigt.

Screenshot, der ein Berichts- und Analyse-Dashboard mit einer Zusammenfassung der CERT C-Sicherheitskonformität zeigt.
Ein Beispiel für ein Webportal-Dashboard. In diesem Fall eine Zusammenfassung der CERT C-Konformität.

Mithilfe dieses Webportals können Benutzer tiefer in die Analyse eintauchen, bei Bedarf bis auf Datei- und Codeebene, und Warnungen vollständig im Webportal oder in einer IDE untersuchen. Warnungen können in dieser Phase priorisiert, Entwicklern zugewiesen, unterdrückt oder als falsch positiv markiert werden. Sehen Sie sich das folgende Beispiel aus dem Parasoft-Explorer an.

Ein Screenshot, der den Parasoft-Verletzungs-Explorer zeigt
Der Parasoft-Verletzungs-Explorer

Verwalten von Verstößen gegen Codierungsstandards

In den meisten Fällen werden bei der Analyse des Quellcodes zur Einhaltung von Codierungsstandards Verstöße als statische Analysewarnungen gemeldet. Bei einem großen Projekt wird es zunächst viele Warnungen geben. Ihre schnelle und effiziente Verwaltung ist von entscheidender Bedeutung. Der Verstoß-Explorer von Parasoft ist das wichtigste Tool zum Navigieren, Bewerten, Priorisieren und Zuweisen gemeldeter Fehler zur Behebung.

Erweist sich ein Verstoß gegen die statische Analyseregel als gültig, aber vertretbar, als harmlos oder nicht anwendbar, kann ein Entwickler den Fehler unterdrücken und eine Abweichung dokumentieren. Diese Abweichungen werden auf jeder Ebene des Projekts an das Dashboard und die Compliance-Dokumentation gemeldet.

Um die Einhaltung von Codierungsstandards für bestehende Projekte zu ermöglichen, ist es wichtig, dass sich die Teams zunächst auf die Regeln konzentrieren, die als verbindlich gelten. Compliance basiert häufig auf der Erfüllung der zwingenden Anforderungen bei Verstößen gegen empfohlene Regeln, sofern diese angemessen dokumentiert sind. Standards ermöglichen die Neukategorisierung von Regeln, wenn sie nicht verbindlich sind, und erlauben Verstöße, wenn sie gerechtfertigt und dokumentiert sind. Ohne dies wird der Versuch, jeden Verstoß zu korrigieren, unmöglich.

Parasoft nutzt künstliche Intelligenz (KI) und maschinelles Lernen (ML). Berichterstattung und Analyse Lernen Sie sowohl aus historischen Interaktionen mit der Codebasis als auch aus früheren statischen Analyseergebnissen, um die Relevanz vorherzusagen und die neuen Ergebnisse zu priorisieren.

Screenshot, der den Assistenten für maschinelles Lernen mit einem „Gut“-Bericht für ein festes statisches Analyseergebnis zeigt.
Maschinelles Lernen zur Priorisierung statischer Analyseergebnisse.

Entwicklungsmanager und Führungskräfte sparen außerdem zusätzliche Arbeitsstunden durch eine navigierbare Benutzeroberfläche, mit der sie Verstöße untersuchen und bei Bedarf automatisch Berichte für Zertifizierungsnachweise erstellen können. Ein Beispiel für einen MISRA C-Abweichungsbericht ist unten dargestellt.

Screenshot, der den Parasoft MISRA C-Abweichungsbericht zeigt
Ein Beispiel für einen Parasoft MISRA C-Abweichungsbericht

Verwalten des Rückstands von Fehler- und Sicherheitswarnungen

Es ist wichtig für Teams, die es sind Übernahme der statischen Analyse um zu verstehen, dass es nicht notwendig ist, alle Warnungen zu beheben oder zu analysieren. Da nicht alle Warnungen gleich erstellt werden, ist der Schweregrad der beste Indikator dafür, wie viel Aufwand in die Untersuchung und Behebung einer Warnung gesteckt werden sollte. Wenn Teams sich mit dem Rückstand an Warnungen befassen, verschieben die Teams die „Grenze im Sand“ jedes Mal ein Stück weiter.

Parasofts Test und C / C ++ - Test Ermöglichen Sie Benutzern, Warnungen innerhalb der IDE mithilfe von Konfigurationen zu priorisieren und zu filtern. Sie können beispielsweise einen Schweregrad und eine Kategorie verwenden, um eine Reihe von Warnungen zu erstellen, die für die Analyse geeignet sind. Ein Beispiel für eine neue Benutzerkonfiguration ist unten dargestellt.

Ein Screenshot, der benutzerdefinierte Testkonfigurationseinstellungen in der IDE zeigt.
Benutzerdefinierte Testkonfigurationseinstellungen innerhalb der IDE

Mit dieser Konfiguration können die Warnungen in der IDE gefiltert werden.

Screenshot mit DTP-Ergebnis, aufgelistet nach Beschreibung, Schweregrad, Risiko/Auswirkung, Priorität und Fälligkeitsdatum.
Konfigurationen können in der Ansicht DTP-Ergebnisse in der IDE ausgewählt werden.

Das schrittweise Verschieben der „Linie im Sand“, um die nächsthöhere Priorität und Kategorie in Angriff zu nehmen, ist der beste Ansatz, um mit einem großen Rückstand an Warnungen umzugehen. Irgendwann erreichen Softwareteams aus Zeit- und Budgetgründen einen Grenzwert. Sie sollten sich jedoch sicher sein können, dass sie trotz eines verbleibenden Rückstands an Warnungen deutliche Verbesserungen bei Qualität und Sicherheit erzielt haben.

Best Practices zur Vermeidung technischer Schulden

Die Vermeidung technischer Schulden erfordert a proaktiven Herangehensweise Daran ist das gesamte Softwareentwicklungsteam beteiligt. Hier sind einige Best Practices, die dabei helfen können, technische Schulden zu vermeiden.

  • Priorisieren und planen. Entwickeln Sie einen klaren Plan und priorisieren Sie Aufgaben basierend auf Geschäftswert und Risiko. Dies kann dazu beitragen, Abkürzungen zu vermeiden, um unrealistische Fristen einzuhalten.
  • Codeüberprüfungen. Führen Sie Codeüberprüfungen durch, um die Codequalität sicherzustellen und potenzielle Probleme frühzeitig im Entwicklungsprozess zu erkennen.
  • Automatisieren Sie Tests. Nutzen Sie automatisierte Tests, um Probleme frühzeitig zu erkennen und das Risiko der Einführung neuer Probleme zu verringern.
  • Kontinuierliche Integration und Bereitstellung. Implementieren Sie kontinuierliche Integration und Bereitstellung, um sicherzustellen, dass Codeänderungen regelmäßig integriert und getestet werden, wodurch das Risiko von Integrationsproblemen verringert wird.
  • Verfolgen Sie technische Schulden. Verfolgen Sie technische Schulden und priorisieren Sie deren Tilgung im Rahmen regelmäßiger Entwicklungszyklen.
  • Wissen teilen. Fördern Sie eine Kultur des Wissensaustauschs, um sicherzustellen, dass das Team über die neuesten Updates und Best Practices auf dem Laufenden ist.

Durch die Befolgung dieser Best Practices können Softwareentwicklungsteams dazu beitragen, technische Schulden zu vermeiden und sicherzustellen, dass sie sichere, zuverlässige und wartbare Softwareprodukte entwickeln.

Zusammenfassung

Bei einem großen Projekt wird es zunächst viele Warnungen geben. Ihre schnelle und effiziente Verwaltung ist von entscheidender Bedeutung. Für Teams, die statische Analysen anwenden, ist es wichtig zu verstehen, dass die Behebung oder Analyse aller Warnungen unnötig ist. Stellen Sie stattdessen sicher, dass Sie ein Tool auswählen, mit dem Sie navigieren, bewerten, priorisieren und gemeldete Fehler zur Behebung zuweisen können. Das schrittweise Verschieben der „Linie im Sand“, um die nächsthöhere Priorität und Kategorie in Angriff zu nehmen, ist der beste Ansatz, um mit einem großen Rückstand an Warnungen umzugehen.

So wählen Sie ein modernes statisches Analysewerkzeug aus

„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.