Webinaire en vedette : MISRA C++ 2023 : tout ce que vous devez savoir | Voir le séminaire

Temps de lecture: 7 minutes

Depuis 2012, Parasoft travaille avec un sous-traitant du département américain de la Défense dans l'industrie de l'aérospatiale et de la défense pour améliorer la qualité et la sécurité de leurs logiciels. L'entrepreneur est un contributeur important à une initiative de défense majeure et de longue durée. La nature du projet a considérablement évolué au cours de la durée de la relation de Parasoft avec l'entrepreneur. Plus récemment, le DoD a annoncé son intention de mettre en place des pipelines DevOps pour soutenir l'initiative.

Un pipeline DevOps est une infrastructure automatisée qui traite le code apporté au projet par différentes équipes. Au fur et à mesure que le code est archivé et poussé dans le pipeline, les tâches d'exécution de test et d'analyse de code sont déclenchées en continu. Les activités continues de qualité du code fournissent des commentaires aux ingénieurs logiciels et aux testeurs afin que la construction à la fin du pipeline réponde aux objectifs de qualité, de sécurité et de conformité de l'organisation. DevSecOps intègre des activités de test de sécurité dans le processus.

La taille et la complexité du projet représentent un défi important pour tous les fournisseurs impliqués. Le but de cette étude de cas est de décrire le parcours DevOps de l'entreprise et de mettre en évidence les technologies et les processus qui caractérisent DevOps et DevSecOps. Pour se conformer à la politique de confidentialité de l'entreprise, les informations d'identification ont été supprimées.

Phase 1 : Analyse de code statique

Le parcours DevOps de l'entrepreneur a commencé en 2012 lorsqu'il a commencé à travailler avec Parasoft pour mettre en œuvre une solution automatisée d'analyse de code statique. La solution d'analyse de code statique existante de l'entrepreneur manquait des capacités d'automatisation nécessaires pour fournir des logiciels critiques à temps et conformément aux directives critiques en matière de sécurité.

La capacité d'automatiser la qualité du code est essentielle à l'exécution d'un pipeline DevOps, mais il faudra quelques années avant que les discussions ayant lieu au sein du développement logiciel se concentrent sur DevOps, et encore moins DevSecOps. À ce stade, l'entrepreneur souhaitait des systèmes automatisés plus efficaces analyse de la qualité du code réduire les coûts et les risques associés à son processus de développement - et le faire d'une manière qui lui a permis d'atteindre la conformité avec JSF et DO-178.

De plus, l'entrepreneur n'envisageait pas pour le moment de modifier son approche en matière de sécurité logicielle. Les tests de sécurité étaient une phase distincte du cycle de vie du développement avec son propre ensemble de processus qui, pour de nombreuses entreprises, avaient peu à voir avec l'analyse de code statique. Un pipeline DevSecOps, cependant, intègre les activités de sécurité logicielle dans le flux de travail. Au fur et à mesure que le code passe par différentes portes, différentes techniques peuvent être automatiquement appliquées pour valider d'autres aspects du code, tels que la sécurité.

L'approche de Parasoft a toujours été d'intégrer la sécurité dans le processus d'ingénierie logicielle. Ceci est accompli en activant les vérificateurs qui signalent les violations lorsque des modèles connus pour entraîner des défauts liés à la sécurité sont détectés. En fait, pour des approches telles que celle de Parasoft, l'analyse du code pour la qualité et l'analyse du code pour la sécurité suivent exactement le même processus. La seule différence réside dans les vérificateurs activés. Grâce à cette approche, l'automatisation de la qualité et de la sécurité au sein d'un pipeline DevOps est simple.

Les investissements réalisés à ce stade ont aidé l'entrepreneur à jeter les bases de l'initiative DevOps qu'il commencerait à planifier plus récemment.

Phase 2 : Tests unitaires et couverture

La phase suivante du parcours de l'entrepreneur consistait à étendre ses capacités de test unitaire, également dans le but de permettre une plus grande automatisation. Les tests unitaires sont une activité fondamentale de qualité logicielle que les ingénieurs et les développeurs de tous les secteurs ont du mal à mettre en œuvre de manière cohérente et efficace. Il s'agit d'une activité notoirement coûteuse en ressources d'ingénierie pour plusieurs raisons, notamment :

  • Temps et expertise requis pour créer des tests.
  • Temps et ressources informatiques nécessaires à l'exécution des tests.
  • Connaissances et compétences techniques requises pour maintenir les tests unitaires.
  • Possibilité d'identifier les tests à exécuter après des modifications de code.

Encore une fois, l'entrepreneur a approché Parasoft pour remplacer son outils de tests unitaires avec Parasoft car il avait besoin de créer, d'exécuter et de maintenir ses tests unitaires plus efficacement. Bien que chaque fournisseur de tests ait ses avantages et ses limites, la solution de test embarquée phare de Parasoft, Parasoft C / C ++test , met l'accent sur couverture des tests et traçabilité des exigences en tant que partie intégrante du flux de travail des tests unitaires. La capacité d'exécuter efficacement des tests unitaires dans tous les frameworks et de collecter des informations de couverture concises remontant aux exigences a aidé l'entrepreneur à atteindre efficacement ses objectifs de sécurité et de conformité à ce stade.

Qu'il s'agisse de produire leurs propres applications ou d'intégrer du code en aval dans leurs projets, les organisations qui fournissent des logiciels pour les initiatives DoD critiques pour la sécurité doivent être en mesure de démontrer la traçabilité de l'exigence au test, ainsi que de rapporter l'exhaustivité des tests. L'intégrateur logiciel est responsable de tout effet négatif si une unité de compilation découverte conduit à produire un comportement inattendu dans l'application, tel qu'un plantage ou une surface exploitable.

Des informations continues et complètes sur l'état de l'application ont permis à l'entrepreneur de livrer en toute confiance un logiciel dépourvu d'erreurs critiques. La « boucle de rétroaction », comme on l'appelle communément, est primordiale pour que les équipes respectent les cycles de publication rigoureux promis par DevOps. En effet, la boucle de rétroaction idéale renvoie le plus tôt possible des données de test, d'analyse de code, de couverture et de traçabilité approfondies et précises afin que les ingénieurs logiciels puissent résoudre les problèmes sans itérations inutiles. La boucle de rétroaction rendue possible par le test C/C++ a permis au sous-traitant de trouver des défauts et d'identifier le code découvert critique pour la sûreté et la sécurité de l'application avant que le coût de la résolution de ces problèmes ne devienne exorbitant.

Plus récemment, l'entreprise s'est tournée vers Parasoft pour mesurer la couverture du code au niveau de l'assemblage, ce qui permet à l'entreprise d'atteindre ses objectifs de conformité DO-178B/C. Alors que de nombreux processus qui marquent un véritable pipeline DevOps doivent encore être mis en œuvre, une grande partie de l'infrastructure a été déployée. De plus, le département gouvernemental qui gère l'initiative a décrété que tous les entrepreneurs contribuant au projet suivent le modèle DevOps.

Phase 3 : Durabilité

Les projets gouvernementaux de longue durée atteignent finalement une phase dans laquelle l'accent passe du nouveau développement à la durabilité. Cela signifie que même si le développement se poursuit, le logiciel et la maintenance deviennent l'objectif principal à mesure que le matériel est actualisé. La poussée vers la durabilité signifie un accent encore plus important sur l'efficacité des tests de logiciels.

L'entrepreneur au centre de cette étude de cas développe actuellement un pipeline DevOps pour soutenir la phase de durabilité du programme. Le pipeline est destiné à traiter le code non seulement fourni par le contractant principal, mais également par plusieurs autres fournisseurs responsables de différentes parties de la base de code. L'objectif est de standardiser et d'automatiser les activités de test à l'aide des solutions de Parasoft.

En fin de compte, le pipeline DevOps fonctionnera dans un environnement conteneurisé sécurisé, ce qui a été considéré comme la meilleure pratique par le chef de DevSecOps pour l'ensemble du département américain de la Défense. Cela permet à l'organisation de mettre en œuvre des politiques de test de décalage à gauche qui se concentrent sur la sécurité et la qualité.

Changement culturel

L'une des principales différences entre un pipeline DevOps et une infrastructure de test automatisé est que DevOps nécessite des changements culturels au sein de l'organisation. Les tests automatisés et les activités de construction font partie de la transition vers DevOps, mais parfois de nouvelles technologies doivent être déployées qui nécessitent que certaines pratiques soient appliquées de différentes manières. Les changements permettent à l'organisation d'atteindre les mêmes objectifs plus efficacement et avec de meilleurs résultats.

Par exemple, l'une des façons dont Parasoft prend en charge DevSecOps est de fournir des données exploitables à chaque étape du cycle de développement. Il s'agit de la boucle de rétroaction caractéristique des workflows DevOps. Non seulement les données sont complètes et exploitables, mais dans de nombreux cas, Parasoft permet des workflows de remédiation à portée de clic. Les résultats de l'analyse du code sont directement liés à la violation du code et à la documentation pour aider les ingénieurs à corriger rapidement les défauts et à relancer immédiatement l'analyse.

Il s'agit toujours d'un travail en cours, mais le sous-traitant de l'aérospatiale et de la défense s'est engagé à apporter les changements culturels nécessaires à la mise en œuvre de DevOps et à la standardisation des solutions Parasoft.

Conclusion

Au moment de la rédaction de ce document, l'entrepreneur a mis en œuvre une analyse de code statique automatisée et des tests unitaires automatisés avec une couverture et une traçabilité intégrées, ainsi qu'une couverture au niveau de l'assemblage. La mise en œuvre de ces technologies est une étape critique vers la mise en place d'un véritable pipeline DevOps, car elles permettent de fournir en continu des données complètes et précises sur l'état de l'application aux ingénieurs logiciels.

Le chemin vers un véritable pipeline DevSecOps sera encore plus court car l'entrepreneur se standardise sur le test Parasoft C/C++. Dans un modèle d'ingénierie logicielle traditionnel, les tests de sécurité sont un processus autonome distinct qui commence après que la plupart de l'application a été programmée et testée pour la qualité. Parasoft C/C++test est conçu pour intégrer les activités de test de sécurité dans le flux de travail normal. Passer d'une analyse de code statique ciblant la qualité à un ensemble de vérificateurs ciblant la sécurité est simple et peut même s'exécuter en parallèle.

Les capacités robustes de test unitaire, de couverture et de traçabilité de Parasoft C/C++test sont également facilement automatisées, permettant à toute équipe d'ingénierie logicielle d'obtenir rapidement les commentaires dont elle a besoin pour tenir la promesse d'un modèle DevSecOps.

Passez à l'étape suivante

Intégrez la sécurité dans votre processus de développement logiciel dès le début.

  • Industrie: Militaire et défense
  • Solution: Test C / C ++