Développement de logiciels critiques

développement logiciel critique

Introduction au Développement de logiciels critiques

A l’issue de la présentation technique de Jean-Pierre ROSEN, expert en langage Ada, les enseignements de base pour développer un logiciel critique ont été tirés :

développement logiciel critique

Qu’est-ce qu’un logiciel critique ?

Un logiciel est qualifié de « critique » si une panne peut avoir des conséquences graves (mort, accident, dégâts matériels, humains, financiers  ou environnementaux graves).  Les logiciels critiques sont présents dans de nombreux domaines comme l’aviation, le ferroviaire, l’automobile, le nucléaire, le médical et bien d’autres secteurs encore.

Compte tenu des conséquences possibles d’un défaut, les méthodes utilisées dans d’autres domaines qui acceptent un certain taux d’erreur ne sont pas acceptables. C’est pourquoi des standards, des processus, et des méthodes spécifiques aux logiciels critiques ont été développés.

Attention : les contraintes portent sur la sécurité (safety en anglais), et ne doivent pas être confondues avec celles portant sur la sûreté, c’est-à-dire qui concernent la résistance à des attaques malveillantes (security en anglais).

Selon les cas, les exigences en matière de sécurité s’appuieront soit sur le seul risque, soit sur un risque pondéré par sa probabilité, selon ce que l’on appelle une matrice de criticité.

Les fondamentaux du développement d’un logiciel critique

Deux aspects sont fondamentaux pour s’assurer qu’un logiciel exécute correctement la fonctionnalité demandée : d’abord,  s’assurer que l’intention est correcte en définissant clairement les exigences et en les vérifiant selon un processus rigoureux. Ensuite, il faut s’assurer que le code corresponde bien avec l’intention. Ceci demande d’assurer la traçabilité entre le code et la conception, de s’assurer de la lisibilité et de la compréhensibilité du développement , de tester le logiciel par rapport aux exigences, et d’utiliser les outils (vérifications, preuves) fournis par le langage.

Comme pour des véhicules, les mesures de sécurité se répartissent en deux classes :

  • La sécurité active qui permet de prévenir l’accident (typage fort, vérifications et preuves du programme).
  • La sécurité passive qui permet de minimiser les conséquences de l’accident (programmation défensive, traitement d’exceptions, mode dégradé).

Standards et certification

Plusieurs normes portant sur les logiciels critiques ont été mises en place selon le domaine d’application. La plus ancienne concerne les logiciels « aviation », et a servi de base aux autres normes : la fameuse DO-178B/ ED-12B, DO-178C. Dans le domaine ferroviaire, c’est la norme EN-50128 qui s’applique. D’autres standards sont  applicables pour l’automobile, les systèmes militaires et spatiaux, le nucléaire et le médical. Les différentes normes imposent des contraintes différentes pour tenir compte des différences dans les domaines d’application, mais toutes concernent principalement les processus à mettre en œuvre.

Il ne suffit pas que le logiciel soit correct. Il faut être capable de prouver que le logiciel est correct. Tout logiciel critique doit se faire certifier (exigence légale) et le certificateur doit être une organisation indépendante. Le bon déroulement de la certification est la responsabilité de l’équipe de sécurité, qui est, elle, interne à la société conceptrice du logiciel.

L’indépendance doit être garantie entre la conception et le développement du logiciel critique. Elle est également requise entre la vérification et les tests afin de repérer toute faille pouvant porter atteinte à la sécurité du logiciel.

En outre, le certificateur doit avoir l’autorité d’arrêter le projet. Quant aux hauts degrés de criticité, le certificateur ne doit pas dépendre hiérarchiquement du chef de projet.

Tests, et au-delà

Bien entendu, les logiciels doivent être testés. Les tests sont fondés sur les exigences : toute exigence doit être testée, mais réciproquement tout test doit correspondre à une exigence. Selon le niveau de criticité, diverses formes de tests de couverture sont exigés : couverture d’instructions, couverture de décisions, couverture de conditions, MC/DC (Modified Condition/Decision Coverage). Plus la couverture est exigeante, plus le nombre de tests requis (et donc le coût) augmente.

Mais si les tests permettent de montrer que le logiciel fonctionne dans certains cas, ils ne peuvent garantir l’absence de défauts dans tous les cas. L’étape suivante qui se développe actuellement est l’utilisation de techniques de preuve de programme au moyen de langages formels.

Pour en savoir plus, rendez-vous sur :

Nous vous proposons des solutions autour du système d’information, système expert, embarqué et édition de logiciels,  nous permettant de répondre à la plupart des exigences du marché. 

Quel est le processus de transformation digitale en France ?

transformation digitale

Quel est le processus de transformation digitale en France ?

Environ 86% des Français utilisent internet en 2021. Cela témoigne de son rôle clé dans le fonctionnement de la société. Face à ce constat implacable, les entreprises ont dû prendre le tournant du numérique. Néanmoins, ce processus de transformation digitale connaît des fortunes diverses. Comment le décrire ?

transformation digitale

Un processus enclenché qui se développe à grande vitesse

La transformation digitale est une réalité et une tendance marquée. Chaque année, des milliers d’entreprises débarquent sur la toile pour conquérir de nouveaux clients. Elles tentent ainsi de séduire une partie des acheteurs en ligne qui sont près de 40 millions en France. De même, près de 40 millions de Français sont présents sur les réseaux sociaux.

Un Français passe en moyenne plus de 2h40 par jour sur internet et près d’une heure 40 sur les réseaux sociaux. Youtube est le réseau social le plus utilisé, suivi de près par Facebook puis par Instagram. En ce sens, avoir une forte présence sur internet pour une entreprise est une nécessité. Cela lui permet de s’exposer à un public large et nombreux et de booster ses ventes. De plus, elle peut promouvoir ses produits sur les réseaux sociaux.

Une transformation digitale inégale

Toutefois, tout le monde n’est pas touché autant par cette forte tendance. En 2020, moins d’un tiers des TPE considéraient en faire partie. Une très large majorité des PME (environ 70%) déclarent ne pas avoir d’outils digitaux efficaces. Les ETI, quant à elles, sont beaucoup plus incluses dans cette tendance. Elles sont plus de 4 sur 5 à être engagées dans ce processus. Cela leur bénéficie puisqu’elles voient leurs chiffres s’envoler et gagnent en visibilité ainsi qu’en efficacité opérationnelle.

On le constate, la transformation digitale gagne du terrain. Néanmoins, elle concerne plus les grandes que les petites et moyennes entreprises.

Domotique, IOT : découvrez les dernières tendances pour une société toujours plus moderne

domotique IOT

Domotique, IOT : découvrez les dernières tendances pour une société toujours plus moderne

L’avancée permanente de notre mode de vie et de nos habitudes de consommation ne cesse de faire naître en nous de nouveaux besoins. Afin de satisfaire ceux-ci, nous développons chaque jour de nouvelles solutions intelligentes qui s’adaptent parfaitement à nos réalités.

domotique IOT

La domotique : pour des maisons toujours plus ergonomiques

Cela ne vous a sans doute pas échappé : les maisons connectées et contrôlables à distance, le contrôle intelligent de la consommation électrique, les alertes de présence au domicile, l’extinction automatique de l’éclairage, le verrouillage automatique des portes, etc. Ces termes ne vous sont plus étrangers. Vous les avez probablement déjà expérimentés chez un parent, un ami ou en avez déjà entendu parler. Toutes ces tâches, autrefois faites manuellement, sont aujourd’hui complètement automatisées grâce à la domotique. Et ce, dans le but de vous apporter le maximum de contrôle (sécurité et gestion de la consommation énergétique notamment) et de facilité (confort) grâce à la technologie.

Le IoT ou le monde des objets connectés

Si le terme iot ne vous évoque rien, c’est probablement parce qu’il est un anglicisme signifiant littéralement « Internet des Objets ». Ce terme regroupe l’ensemble de nos objets du quotidien que nous connectons à Internet. Vous l’aurez compris, cela va de la plus petite enceinte connectée aux caméras de surveillance dans les rues. Et cela dans le but d’optimiser et de faciliter le traitement des informations entre machines avec le minimum d’interventions humaines. Ainsi, les machines communiquant entre elles prennent des décisions permettant d’améliorer notre quotidien. Cela est particulièrement utile dans les industries et dans les grandes chaînes de production où l’automatisation de processus apporte un gain de temps considérable.

IoT et Big Data : une relation forte

Saviez-vous que chaque fois que vous interagissez avec du matériel connecté, vous générez des données ? Effectuer une recherche sur Internet, aller sur un réseau social, écouter de la musique sont autant de moyens aujourd’hui de générer des données. Autant vous le dire, nous produisons des quantités colossales de données chaque jour. Ce sont ces données produites qu’on désigne par le terme « big data ». L’analyse et le traitement de ces données est un enjeu majeur de technologie.

Comment le Machine Learning et le Big Data s’entremêlent aujourd’hui ?

machine learning deep

Comment le Machine Learning et le Big Data s'entremêlent aujourd'hui ?

De nos jours, le Machine learning et le Big data sont étroitement liés. Ils sont même interdépendants. En effet, l’apprentissage automatique des ordinateurs ne peut pas se faire sans le recours à de grands ensembles de données.

Mais en quoi consistent exactement ces deux disciplines ? Dans quelle mesure dépendent-elles l’une de l’autre ?

machine learning deep

Machine learning et Big data : deux disciplines dans l'ère du temps

L’apprentissage automatique est une branche et une technique de l’IA (intelligence artificielle). Elle consiste à apporter des solutions à des problèmes statistiques complexes et d’exploitation de la donnée par la reconnaissance de motifs récurrents dans un ou plusieurs flux de données. De manière plus simple, il s’agit pour l’ordinateur de réaliser des analyses prédictives en s’appuyant sur des techniques statistiques. En quelques fragments de secondes, la machine réalise un forage des données et décèle des comportements anormaux ou suspects, telles les fraudes par exemple.

Le Big data peut être défini comme de vastes ensembles de données qui peuvent être collectés et analysés dans le but d’en dégager des informations stratégiques, utiles aux entreprises. Ces données peuvent aussi être utilisées lors de projets d’apprentissage automatique. Le Big data peut servir plusieurs objectifs : créer des campagnes marketing personnalisées, accélérer la prise de décisions, traiter des plages de données exhaustives entre autres.

Les liens entre l'apprentissage automatique et Big data

Le Machine learning repose sur le Big data. En effet, une machine ne peut pas développer son intelligence par cette technologie si elle ne dispose pas de grands ensembles de données. Plus la quantité de données est élevée, plus la solution finale apportée au problème est fine et précise. Prenons l’exemple des fraudes dans les paris sportifs. Pour apprendre à votre ordinateur à les identifier, il est préférable de lui soumettre les données de beaucoup de parieurs, pour identifier celles qui sont anormales.

On le comprend, ces deux notions fonctionnent ensemble. Le Big data est même le préalable nécessaire au fonctionnement de l’apprentissage automatique des machines.