Découvrez quelle solution de test API est arrivée en tête dans le rapport GigaOm Radar. Obtenez votre rapport d'analyse gratuit >>

Découvrez quelle solution de test API est arrivée en tête dans le rapport GigaOm Radar. Obtenez votre rapport d'analyse gratuit >>
Aller à la section
Examiner les meilleures pratiques pour le développement de logiciels critiques pour la sécurité. Découvrez les facteurs importants, les technologies avancées et les tendances du secteur pour développer des systèmes sûrs, sécurisés, fiables et conformes.
Aller à la section
Aller à la section
Lorsqu'il s'agit de concevoir et de programmer des logiciels pour des choses comme les voitures à conduite autonome, vous devez considérer la sécurité comme une priorité absolue. Cela s’applique à bien plus que des idées futuristes en matière de transport. En fait, cela s’applique à de nombreux articles que des millions de personnes utilisent chaque jour. Avions et lignes ferroviaires. Un appareil IRM. Le clignotant ou l'essuie-glace de votre propre voiture.
Tous ces systèmes complexes (et bien d’autres) dépendent de logiciels critiques pour la sécurité, développés en tenant compte du plus grand nombre possible de scénarios de défaillance afin d’atténuer les conséquences.
Mais qu'est-ce qui distingue ce type de développement des autres ? Les défis, les bonnes pratiques et les normes de sécurité impliqués impliquent des enjeux bien plus importants et des frictions avec les méthodologies modernes. Alors, qu'en est-il du développement de logiciels critiques pour la sécurité ?
Les logiciels critiques pour la sécurité sont généralement des applications logicielles intégrées spécialement conçues pour les systèmes qui, en cas de défaillance, disposent de mesures pour éviter les blessures et les pertes de vie. Cela signifie que tout logiciel de ce type doit être vérifié, validé et fiable à chaque étape du cycle de vie du développement.
Un exemple de système critique pour la sécurité serait un stimulateur cardiaque ou d’autres dispositifs de santé et médicaux. D'autres types incluent des fonctionnalités avancées de sécurité automobile comme une caméra de recul ou des systèmes d'assistance de voie. Des exemples plus complexes sont les commandes de vol des avions et les systèmes nucléaires.
Les systèmes critiques pour la sécurité nécessitent que tout logiciel associé respecte des normes de sécurité rigides pendant le développement. Les normes de sécurité sont également régulièrement mises à jour pour résoudre les problèmes et les vulnérabilités à mesure qu’ils surviennent. Cela nécessite que les développeurs de logiciels de systèmes critiques pour la sécurité se tiennent au courant et restent agiles en matière de développement.
De plus, l’objectif de ce type de développement n’est pas la vitesse ni même les fonctionnalités, mais la sécurité. Au cours du cycle de vie, les développeurs doivent envisager autant de scénarios de défaillance réels que possible, en plus de respecter les normes de sécurité de leur secteur. Cela nécessite également des tests, une validation et une vérification robustes.
Si des industries telles que celles des dispositifs médicaux et des systèmes nucléaires peuvent nous venir à l’esprit, bien d’autres encore utilisent des normes de sécurité rigoureuses. Les industries, où les pannes peuvent entraîner des pertes catastrophiques, doivent s'appuyer sur des normes de sécurité qui facilitent l'utilisation des logiciels les plus sûrs possibles. Cela inclut bien sûr l’automobile et l’aérospatiale. Cependant, cela s’applique également à des secteurs tels que le rail et même à la cybersécurité ou aux systèmes financiers.
Comme mentionné précédemment, les industries automobile et aérospatiale dépendent fortement de systèmes critiques pour la sécurité pour fonctionner. Des éléments tels que les freins ABS, le conducteur autonome en constante évolution et même de simples éclairages jouent tous un rôle dans la sécurité des véhicules en termes de développement logiciel. Dans l'aérospatiale, les développeurs doivent tenir compte des normes de sécurité applicables à une variété de systèmes, du recyclage de l'oxygène et de l'air à la combustion des moteurs et à la communication télémétrique.
Mais d’autres secteurs ont également largement recours à des exigences de sécurité élevées, comme les soins de santé, les transports, l’énergie nucléaire et la défense. Un échec pourrait entraîner la perte de vies humaines, des dommages matériels ou des dommages environnementaux, même à petite échelle. C'est inacceptable lorsqu'il s'agit de développement de logiciels dans ces secteurs.
L'Organisation internationale de normalisation (ISO), créée en 1947, établit des normes de sécurité dans de nombreux secteurs avec la contribution de plus de 160 membres de nombreux pays. Aux côtés d'autres organismes, l'ISO travaille constamment à développer et à réévaluer ses normes de sécurité sur des milliers de systèmes dans de nombreux secteurs.
Chaque secteur dispose de ses propres organismes qui exercent la surveillance et la réglementation des appareils et logiciels critiques pour la sécurité. Par exemple, dans l’industrie automobile, il existe la norme internationale ISO 26262 pour sécurité fonctionnelle et la norme ISO/SAE 21434 pour la sécurité automobile. Pour les dispositifs médicaux, vous disposez IEC 62304 et IEC 62443 pour la sécurité. Il existe également des normes de codage telles que MISRA et AUTOSAR C++ 14, connues pour être appliquées à diverses autres industries telles que l'aérospatiale, l'armée, le ferroviaire et le médical. D'autres normes de sécurité pour divers types d'applications incluent CERT, CWE et OWASP.
Essentiellement, il existe des normes de référence distinctes que les développeurs doivent suivre au sein de chaque secteur – et certaines sont intersectorielles. Ces normes sont constamment mises à jour en fonction des dernières technologies et des moyens d'exploiter cette technologie.
Il existe cinq piliers essentiels pour les exigences en matière de développement de logiciels critiques pour la sécurité.
De plus, il existe cinq autres bonnes pratiques à garder à l'esprit lors du développement de logiciels pour des systèmes critiques pour la sécurité.
Les conséquences des erreurs critiques pour la sécurité ne sont pas aussi simples qu’une ampoule qui ne fonctionne pas quand elle le devrait. Les erreurs peuvent aller d’une batterie trop chaude pendant le fonctionnement à quelque chose comme une panne catastrophique du moteur d’un avion. Il peut également y avoir un bilan humain, des dommages matériels et environnementaux, des pertes financières, voire des menaces pour la sécurité nationale.
C'est pourquoi suivre les meilleures pratiques ci-dessus n'est pas seulement conseillé, mais obligatoire. L’obtention de l’approbation réglementaire n’est pas une situation où « assez bien » fonctionnera.
N'oubliez pas : l'objectif du développement de logiciels critiques pour la sécurité n'est pas la vitesse ou les fonctionnalités, mais la sécurité. Il s’agit de l’aspect le plus important à retenir lors du codage des normes de sécurité. L’échec du développement de logiciels critiques pour la sécurité dans ces systèmes peut conduire à des choses comme le Mars Climate Orbiter de la NASA qui entre trop rapidement et trop bas dans l’atmosphère martienne, provoquant sa destruction. Des problèmes comme celui-ci se résument à plusieurs facteurs importants que les équipes doivent garder à l'esprit pendant le cycle de vie du développement afin d'atténuer les pannes logicielles critiques pour la sécurité.
En plus des respecter les exigences de sécurité et les méthodes formelles, gardez ces choses à l'esprit :
La certification est un piège majeur que les développeurs peuvent éviter lorsqu'il s'agit d'outils de développement de logiciels critiques pour la sécurité. L’utilisation d’un outil certifié par l’organisation appropriée peut offrir une tranquillité d’esprit. Les outils certifiés permettent d’atteindre la conformité de manière fiable. Cependant, les logiciels conformes nécessitent des méthodologies de développement adaptées pour éviter des délais et des coûts de développement prolongés. C'est également là que état d'esprit de gauche entre en scène.
Un bon exemple de méthodologies Agile est la coexistence de DevOps CI/CD et Scrum en parallèle, supprimant les silos, favorisant la communication, permettant la productivité et automatisant la vérification et la validation.
Maintenir la qualité et l’abordabilité sont devenus des priorités et des défis uniques pour de nombreuses équipes de développement. Un exemple est l’automatisation des tests logiciels intégrée à un déploiement DevOps CI/CD automobile. Les pipelines CI/CD offrent des tests continus qui peuvent réduire les coûts et les délais du projet. Même en respectant des normes de sécurité rigoureuses telles que la norme ISO 26262, les tests automatisés apportent une couverture de code, une sécurité et des données exploitables supplémentaires.
Doter vos développeurs des meilleurs outils pour leur travail ne peut que rendre leur travail plus simple. Ceci, à son tour, peut conduire à davantage documentation simplifiée, la cohérence et la livraison de votre produit dans les délais et dans les limites du budget, voire même en avance et en dessous du budget.
Parasoft propose une variété de solutions dans de nombreux secteurs lorsqu'il s'agit de développer des logiciels critiques en matière de sûreté et de sécurité. Ces systèmes complexes nécessitent une documentation cohérente et sans ambiguïté, des données de test exploitables et des outils qui responsabilisent les développeurs.
Les tests unitaires, les tests basés sur les exigences, les tests de régression, les tests de sécurité et les tests d'intégration doivent tous inclure traçabilité des exigences et la répétabilité. Les solutions automatisées et certifiées TÜV SÜD telles que C/C++test et C/C++test CT peuvent réduire la charge de travail des développeurs et des testeurs tout en améliorant la qualité du code, la couverture et la qualité globale du produit.
Nos outils prennent directement en charge de nombreuses normes de sécurité, notamment :
Des outils comme Test C/C++ et test C/C++ CT Les solutions Parasoft permettent aux équipes de détecter les défauts de manière précoce, d'automatiser la conformité aux normes du secteur et de tester de manière intelligente. Un excellent exemple concret de la manière dont les solutions Parasoft s'intègrent dans des systèmes critiques pour la sécurité est la façon dont un sous-traitant du ministère américain de la Défense dans le secteur de l'aérospatiale et de la défense a exploité un pipeline DevOps pour améliorer la couverture du code, la rigueur des tests et la durabilité.
Comme pour toute chose, la tendance visible que tout le monde peut constater lors du développement de systèmes critiques pour la sécurité est la hausse des coûts d’exploitation. De plus, la complexité ne cesse de croître. Cela signifie que les développeurs devront être plus diligents avec la documentation et que les managers devront être disposés à former leurs équipes selon leurs besoins en ce qui concerne les normes de sécurité, et ce de manière régulière pour garantir des connaissances à jour.
Cependant, lorsqu’il s’agit de savoir comment le logiciel lui-même devra répondre aux tendances du secteur, les eaux deviennent un peu plus troubles. Nous pouvons remercier l’Internet des objets, l’apprentissage automatique et l’IA pour cela, de manière à la fois bénéfique et fastidieuse. S’il est utile de disposer de plus d’éléments pour pouvoir se parler ou même s’adapter selon les besoins à différents scénarios, cela peut conduire à des vulnérabilités de sécurité supplémentaires. La planification de l’exploitation inévitable de ces nouveaux vecteurs de menace rend les systèmes déjà complexes du génie logiciel encore plus complexes. L’automatisation des tests a commencé à s’étendre à l’IA et à l’apprentissage automatique pour combler cette lacune avant qu’elle ne devienne trop importante.
Edsger W. Dijkstra nous a donné la clé du développement logiciel moderne avec cette citation :
"Ceux qui veulent un logiciel vraiment fiable découvriront qu'ils doivent d'abord trouver le moyen d'éviter la majorité des bugs..."
Après tout, il est plus facile de prévenir les problèmes dès le départ que de lutter contre les incendies dès leur apparition. Cet aspect de la méthodologie Agile change la donne en matière de développement de logiciels critiques pour la sécurité. Les bons outils peuvent rendre le processus encore plus rationalisé.
Construire une architecture de code solide, maintenir un langage cohérent et systématique pour la documentation et effectuer des tests continus et appropriés peuvent aider votre équipe à respecter les normes de conformité.