Empfohlenes Webinar: MISRA C++ 2023: Alles, was Sie wissen müssen | Zum Video

Lesezeit: 7 Minuten

Seit 2012 arbeitet Parasoft mit einem Auftragnehmer des US-Verteidigungsministeriums in der Luft- und Raumfahrt- und Verteidigungsindustrie zusammen, um die Qualität und Sicherheit seiner Software zu verbessern. Der Auftragnehmer leistet einen wesentlichen Beitrag zu einer großen, langfristigen Verteidigungsinitiative. Die Art des Projekts hat sich während der Beziehung zwischen Parasoft und dem Auftragnehmer drastisch weiterentwickelt. Zuletzt hat das DoD Pläne angekündigt, DevOps-Pipelines aufzubauen, um die Initiative zu unterstützen.

Eine DevOps-Pipeline ist eine automatisierte Infrastruktur, die den Code verarbeitet, der von verschiedenen Teams zum Projekt beigetragen hat. Während der Code eingecheckt und durch die Pipeline gepusht wird, werden kontinuierlich Testausführungs- und Codeanalysejobs ausgelöst. Die kontinuierlichen Aktivitäten zur Codequalität geben Softwareingenieuren und Testern Feedback, damit der Build am Ende der Pipeline die Qualitäts-, Sicherheits- und Compliance-Ziele des Unternehmens erfüllt. DevSecOps integriert Sicherheitstestaktivitäten in den Prozess.

Die Größe und Komplexität des Projekts stellt alle beteiligten Anbieter vor eine große Herausforderung. Der Zweck dieser Fallstudie besteht darin, die DevOps-Reise des Unternehmens zu beschreiben und die Technologien und Prozesse hervorzuheben, die DevOps und DevSecOps charakterisieren. Um der Datenschutzrichtlinie des Unternehmens zu entsprechen, wurden identifizierende Informationen entfernt.

Phase 1: Statische Codeanalyse

Die DevOps-Reise des Auftragnehmers begann 2012, als er begann, mit Parasoft zusammenzuarbeiten, um eine automatisierte statische Codeanalyselösung zu implementieren. Der bestehenden statischen Codeanalyselösung des Auftragnehmers fehlten die Automatisierungsfunktionen, die für die pünktliche Bereitstellung unternehmenskritischer Software und in Übereinstimmung mit sicherheitskritischen Richtlinien erforderlich sind.

Die Fähigkeit, die Codequalität zu automatisieren, ist von zentraler Bedeutung für den Betrieb einer DevOps-Pipeline, aber es würde einige Jahre dauern, bis sich die Diskussionen innerhalb der Softwareentwicklung auf DevOps konzentrieren würden, geschweige denn DevSecOps. Zu diesem Zeitpunkt wünschte sich der Auftragnehmer eine effizientere Automatisierung Codequalitätsanalyse um die mit seinem Entwicklungsprozess verbundenen Kosten und Risiken zu reduzieren – und dies auf eine Weise, die es ihm ermöglicht, die Einhaltung von JSF zu erreichen und DO-178.

Darüber hinaus erwog der Auftragnehmer zu diesem Zeitpunkt keine Änderungen seines Software-Sicherheitsansatzes. Sicherheitstests waren eine separate Phase des Entwicklungslebenszyklus mit eigenen Prozessen, die für viele Unternehmen wenig mit statischer Codeanalyse zu tun hatten. Eine DevSecOps-Pipeline hingegen integriert Software-Sicherheitsaktivitäten in den Workflow. Wenn der Code verschiedene Gates passiert, können verschiedene Techniken automatisch angewendet werden, um andere Aspekte des Codes, wie z. B. die Sicherheit, zu validieren.

Der Ansatz von Parasoft bestand schon immer darin, Sicherheit in den Softwareentwicklungsprozess einzubauen. Dies wird erreicht, indem Prüfer aktiviert werden, die Verstöße melden, wenn Muster erkannt werden, von denen bekannt ist, dass sie zu sicherheitsbezogenen Fehlern führen. Tatsächlich folgen bei Ansätzen wie denen von Parasoft die Analyse von Code auf Qualität und die Analyse von Code auf Sicherheit genau dem gleichen Prozess. Der einzige Unterschied besteht darin, welche Checker aktiviert sind. Aufgrund dieses Ansatzes ist die Automatisierung von Qualität und Sicherheit innerhalb einer DevOps-Pipeline einfach.

Die in dieser Phase getätigten Investitionen halfen dem Auftragnehmer, den Grundstein für die DevOps-Initiative zu legen, die in jüngerer Zeit mit der Planung beginnen würde.

Phase 2: Einheitentests und Abdeckung

Die nächste Phase der Reise des Auftragnehmers bestand darin, seine Unit-Testing-Fähigkeiten zu erweitern, auch mit dem Ziel, eine stärkere Automatisierung zu ermöglichen. Komponententests sind eine grundlegende Softwarequalitätsmaßnahme, die Ingenieure und Entwickler in allen Branchen nur schwer konsistent und effizient implementieren können. Es ist aus mehreren Gründen eine notorisch teure Aktivität in Bezug auf technische Ressourcen, darunter:

  • Zeit und Fachkenntnisse, die zum Erstellen von Tests erforderlich sind.
  • Zeit- und Rechenressourcen, die zum Ausführen der Tests erforderlich sind.
  • Kenntnisse und technische Fähigkeiten, die für die Wartung von Komponententests erforderlich sind.
  • Möglichkeit zu identifizieren, welche Tests nach Codeänderungen ausgeführt werden sollen.

Wieder wandte sich der Auftragnehmer an Parasoft, um das vorhandene zu ersetzen Unit-Test-Tools mit Parasoft, weil es seine Unit-Tests effizienter erstellen, ausführen und warten musste. Während jeder Testanbieter seine Vor- und Nachteile hat, ist Parasofts Flaggschiff für eingebettete Testlösungen, Parasoft C / C ++ test, legt Wert auf Testabdeckung und Rückverfolgbarkeit der Anforderungen als integraler Bestandteil des Unit-Testing-Workflows. Die Fähigkeit, Unit-Tests über Frameworks hinweg effizient durchzuführen und prägnante Abdeckungsinformationen zu sammeln, die auf Anforderungen zurückgeführt werden, half dem Auftragnehmer, seine sicherheitskritischen und Compliance-Ziele in dieser Phase effizient zu erreichen.

Unabhängig davon, ob sie ihre eigenen Anwendungen erstellen oder nachgelagerten Code in ihre Projekte integrieren, müssen Organisationen, die Software für sicherheitskritische DoD-Initiativen bereitstellen, in der Lage sein, die Rückverfolgbarkeit von der Anforderung bis zum Test nachzuweisen und die Vollständigkeit der Tests zu melden. Der Software-Integrator ist für alle negativen Auswirkungen verantwortlich, wenn eine aufgedeckte Kompilationseinheit zu unerwartetem Verhalten in der Anwendung führt, wie beispielsweise einem Absturz oder einer ausnutzbaren Oberfläche.

Kontinuierliche und vollständige Informationen über den Status der Anwendung ermöglichten es dem Auftragnehmer, die Software sicher und ohne kritische Fehler zu liefern. Die „Feedback-Schleife“, wie sie allgemein genannt wird, ist für Teams von größter Bedeutung, um die von DevOps versprochenen strengen Release-Zyklen einzuhalten. Dies liegt daran, dass die ideale Feedbackschleife so früh wie möglich gründliche und genaue Test-, Codeanalyse-, Abdeckungs- und Rückverfolgbarkeitsdaten liefert, damit Softwareingenieure Probleme ohne verschwendete Iterationen beheben können. Die durch C/C++test ermöglichte Feedbackschleife ermöglichte es dem Auftragnehmer, Fehler zu finden und aufgedeckten Code zu identifizieren, der für die Sicherheit der Anwendung entscheidend ist, bevor die Kosten für die Behebung dieser Probleme exorbitant wurden.

In jüngerer Zeit hat sich das Unternehmen an Parasoft gewandt, um die Codeabdeckung auf Assembly-Ebene zu messen, wodurch das Unternehmen seine DO-178B/C-Compliance-Ziele erreichen kann. Während viele der Prozesse, die eine echte DevOps-Pipeline auszeichnen, noch implementiert werden müssen, wurde ein Großteil der Infrastruktur bereitgestellt. Darüber hinaus hat die Regierungsbehörde, die die Initiative leitet, verfügt, dass alle Auftragnehmer, die an dem Projekt beteiligt sind, dem DevOps-Modell folgen.

Phase 3: Nachhaltigkeit

Langfristige Regierungsprojekte erreichen schließlich eine Phase, in der sich der Fokus von der Neuentwicklung auf die Nachhaltigkeit verlagert. Das bedeutet, dass die Entwicklung zwar fortgesetzt wird, aber Software und Wartung das Hauptziel werden, wenn die Hardware aktualisiert wird. Das Streben nach Nachhaltigkeit bedeutet eine noch stärkere Betonung der Effizienz von Softwaretests.

Der Auftragnehmer im Zentrum dieser Fallstudie entwickelt derzeit eine DevOps-Pipeline, um die Nachhaltigkeitsphase des Programms zu unterstützen. Die Pipeline soll nicht nur Code verarbeiten, der vom Hauptauftragnehmer beigesteuert wird, sondern auch von mehreren anderen Anbietern, die für verschiedene Teile der Codebasis verantwortlich sind. Ziel ist es, Testaktivitäten mit den Lösungen von Parasoft zu standardisieren und zu automatisieren.

Letztendlich wird die DevOps-Pipeline in einer sicheren, containerisierten Umgebung ausgeführt, die vom Leiter von DevSecOps für das gesamte US-Verteidigungsministerium als Best Practice eingestuft wurde. Auf diese Weise kann das Unternehmen Shift-Left-Testrichtlinien implementieren, die sich auf Sicherheit und Qualität konzentrieren.

Kulturwandel

Einer der Hauptunterschiede zwischen einer DevOps-Pipeline und einer automatisierten Testinfrastruktur besteht darin, dass DevOps kulturelle Veränderungen innerhalb der Organisation erfordert. Automatisierte Test- und Build-Aktivitäten sind ein Teil der Entwicklung hin zu DevOps, aber manchmal müssen neue Technologien eingesetzt werden, die bestimmte Praktiken auf unterschiedliche Weise erfordern. Die Veränderungen ermöglichen es der Organisation, die gleichen Ziele effizienter und mit besseren Ergebnissen zu erreichen.

Parasoft unterstützt beispielsweise DevSecOps unter anderem dadurch, dass in jeder Phase des Entwicklungszyklus umsetzbare Daten bereitgestellt werden – dies ist die Feedbackschleife, die für DevOps-Workflows charakteristisch ist. Die Daten sind nicht nur gründlich und umsetzbar, sondern in vielen Fällen ermöglicht Parasoft auch Behebungsworkflows, die nur einen Klick entfernt sind. Die Ergebnisse der Codeanalyse sind direkt mit dem Codeverstoß und der Dokumentation verknüpft, damit Ingenieure Fehler schnell beheben und die Analyse sofort erneut ausführen können.

Es ist noch in Arbeit, aber der Auftragnehmer für Luft- und Raumfahrt und Verteidigung hat sich verpflichtet, die kulturellen Veränderungen vorzunehmen, die für die Implementierung von DevOps und die Standardisierung auf Parasoft-Lösungen erforderlich sind.

Konklusion

Zum Zeitpunkt der Erstellung dieses Dokuments hat der Auftragnehmer eine automatisierte statische Codeanalyse und automatisierte Unit-Tests mit integrierter Abdeckung und Rückverfolgbarkeit sowie Abdeckung auf Baugruppenebene implementiert. Die Implementierung dieser Technologien ist ein entscheidender Schritt auf dem Weg zu einer echten DevOps-Pipeline, da sie es ermöglichen, vollständige und genaue Daten über den Zustand der Anwendung kontinuierlich an die Softwareingenieure zurückzugeben.

Der Weg zu einer echten DevSecOps-Pipeline wird noch kürzer, da der Auftragnehmer auf Parasoft C/C++test standardisiert. In einem traditionellen Software-Engineering-Modell sind Sicherheitstests ein separater eigenständiger Prozess, der beginnt, nachdem der größte Teil der Anwendung programmiert und auf Qualität getestet wurde. Parasoft C/C++test wurde entwickelt, um Sicherheitstestaktivitäten in den normalen Arbeitsablauf zu integrieren. Der Wechsel von statischer Codeanalyse, die auf Qualität abzielt, zu einer Reihe von Checkern, die auf Sicherheit abzielen, ist einfach und kann sogar parallel ausgeführt werden.

Robuste Unit-Test-, Abdeckungs- und Rückverfolgbarkeitsfunktionen von Parasoft C/C++test lassen sich ebenfalls leicht automatisieren, sodass jedes Software-Engineering-Team schnell das Feedback erhalten kann, das es benötigt, um das Versprechen eines DevSecOps-Modells zu erfüllen.

Geh den nächsten Schritt

Bauen Sie Sicherheit von Anfang an in Ihren Softwareentwicklungsprozess ein.

  • Industrie: Militär & Verteidigung
  • Lösung: C / C ++ - Test