Parasoft-Logo

Sehen Sie Parasoft C/C++test in Aktion!

Machen Sie eine selbstgeführte Produkttour.

Loslegen

WEBINAR

Must-Haves in der CI/CD-Softwareentwicklung für Embedded

Es hat sich gezeigt, dass eine Kultur der Zusammenarbeit innerhalb von Organisationen den Produktentwicklungsprozess rationalisiert. Es legt Wert auf effektive Kommunikation, Integration und funktionsübergreifende Teamarbeit, um eine kontinuierliche und schnelle Lieferung zuverlässiger Produkte zu ermöglichen, die zudem sicher und geschützt sind.

In dieser Sitzung wird untersucht, wie Entwicklungsteams für eingebettete Software moderne, automatisierte Workflows für kontinuierliche Integration, Tests, Bereitstellung und Überwachung implementieren können. Es wird der Wert von Agile, DevOps und CI / CD-Pipelines, mit einer praktischen Demo der in GitLab integrierten Parasoft-Software.

Key Take Away

  • Der erhebliche Wert der Einführung eines modernen Entwicklungsworkflows.
  • Die Bedeutung kontinuierlicher Tests, einschließlich statischer Analyse, Komponententests und Codeabdeckung.
  • Best Practices für die Implementierung der Testautomatisierung.

Agile Entwicklung und Zusammenarbeit

Agile Entwicklung, entstand aus einem Treffen im Jahr 2001 und legt Wert auf Zusammenarbeit und die Reaktion auf Veränderungen. Die im Agile Manifest dargelegten Grundwerte konzentrieren sich auf Individuen und Interaktionen, funktionierende Software, Kundenzusammenarbeit und die Anpassung an Veränderungen. Diese Prinzipien bilden die Grundlage für Methoden wie Scrum und Kanban, die darauf abzielen, Teamsilos aufzubrechen und die Kommunikation zu verbessern.

Scrum, eine beliebte Projektmanagementmethode, bringt funktionsübergreifende Teams mit gemeinsamen Zielen zusammen. Es nutzt iterative Sprints, regelmäßige Meetings zur Fortschrittsüberprüfung und definierte Rollen, um eine vorhersehbare Umsetzung zu gewährleisten und eine intelligentere Arbeitsweise zu fördern. Kanban hingegen legt den Schwerpunkt stark auf Teamarbeit und menschliche Interaktion, was während Planungssitzungen oft durch Post-it-Notizen an der Wand visualisiert wird.

DevOps und die CI/CD-Pipeline

DevOps DevOps baut auf agilen Prinzipien auf und integriert Tools und Automatisierung, um den Softwareentwicklungsprozess zu optimieren. Es automatisiert manuelle Aufgaben, bricht Team-Silos auf und steigert die Produktivität. Der Kern von DevOps ist die CI/CD-Pipeline, die oft durch ein Unendlichkeitssymbol dargestellt wird und einen kontinuierlichen und iterativen Ansatz veranschaulicht.

Phasen des DevOps-Workflows

  1. Planung: Identifizieren von Anforderungen und Definieren von Ergebnissen für jede Iteration. Tools wie Jira werden häufig für das agile Projektmanagement verwendet.
  2. Codierung: Entwickler arbeiten in separaten Zweigen, um Störungen der Hauptentwicklungslinie zu vermeiden. Tools wie Git für das Konfigurationsmanagement und IDEs wie VS Code oder Eclipse sind unerlässlich. C/C++-Test von Parasoft kann zur frühen Codeanalyse in IDEs integriert werden.
  3. Build: Ausgelöst durch Code-Commits wird in dieser Phase der Code kompiliert und erstellt. Automatisierung ist dabei entscheidend, wobei Tools wie CMake und Compiler wie GCC eine Rolle spielen. Auch die Containerisierung mit Docker ist üblich.
  4. Test: Nach einem erfolgreichen Build werden automatisierte Tests gestartet. Dazu gehören statische Analysen, Unit-Tests, Regressionstests und Code Coverage. Der C/C++-Test von Parasoft lässt sich für diese Aufgaben in CI-Pipelines integrieren.
  5. Freisetzung: Wenn der Test erfolgreich und ohne Fehler verläuft, wird der Code in den Hauptzweig integriert, um seine Stabilität sicherzustellen.
  6. Bereitstellen: Bei der Entwicklung eingebetteter Systeme, insbesondere bei sicherheitskritischen Anwendungen, umfasst diese Phase vor der Bereitstellung häufig einen Genehmigungsprozess und Konformitätsprüfungen. Während die Unternehmens-IT die Bereitstellung möglicherweise direkt vornimmt, erfordern eingebettete Systeme eine strengere Validierung.
  7. Operieren: Die Anwendung ist live und wird von Kunden genutzt. Die Organisation überwacht ihre Leistung.
  8. Monitor: Feedback aus der Praxis und von Kunden wird gesammelt. Ineffizienzen in der Pipeline oder im Workflow werden identifiziert und behoben. Das Feedback wird in die zukünftige Planung einbezogen, wodurch der Zyklus neu gestartet wird.

Agile mit funktionalen Sicherheitsstandards verbinden

Agile Methoden passen gut zu den funktionalen Sicherheitsstandards der Branche wie ISO 26262 für die Automobilindustrie, IEC 62304 für medizinische und DO-178 für Avionik. Diese Standards verwenden häufig ein V-Modell-Diagramm, um die erforderlichen Softwareentwicklungsphasen und die entsprechenden Verifizierungs- und Validierungsaktivitäten zu veranschaulichen. Das V-Modell skizziert Phasen wie Anforderungsanalyse, Design, Implementierung und anschließend Verifizierungsphasen wie statische Analyse, Unit-Test, Integrationstests, Systemtests und Abnahmetests. Während diese Standards vorschreiben was aus Sicherheitsgründen getan werden muss, verlassen sie die wie– die spezifische Methodik wie Waterfall oder DevOps – liegt bei der Organisation.

Demo: Parasoft C/C++-Test mit GitLab CI/CD

Die Demonstration zeigte, wie sich Parasoft C/C++test in GitLab CI/CD-Pipelines integriert. Es umfasste das Einrichten einer Pipeline mit statischer Analyse, den Zugriff auf Ergebnisse innerhalb der GitLab-Oberfläche und die Verwendung eines VS-Code-Erweiterung um Probleme direkt in der IDE herunterzuladen und zu beheben. Diese Integration optimiert Arbeitsabläufe, reduziert Compliance-Kosten und verbessert die Entwicklerproduktivität, indem sie Codeanalyse und Problembehebung innerhalb der Entwicklungsumgebung ermöglicht.

Vorteile der Einführung von CI/CD

Kunden, die CI/CD-Verfahren einsetzen, berichten von mehreren wichtigen Vorteilen. Sie profitieren von einer verbesserten Vorhersehbarkeit bei der Softwarebereitstellung, einer besseren Berücksichtigung von Anforderungs- und Designänderungen sowie einem organisierteren und schnelleren Entwicklungsprozess. Ein wesentliches Ergebnis ist die Reduzierung von QA-Problemberichten und Kundentickets, was wiederum niedrigere Test- und Entwicklungskosten bedeutet. Dies führt letztendlich zu qualitativ hochwertigeren Produkten und einer schnelleren Markteinführung.