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é. 

Comment savoir si votre projet est adapté au Développement en Architecture Microservices ?

microservices architectures

Comment savoir si votre projet est adapté au Développement en Architecture Microservices ?

Les applications développées en microservices procurent de nombreux avantages. Les utilisateurs jouiront entre autres d’une grande robustesse. De même, il sera plus facile de se lancer dans la maintenance, de par l’indépendance des services entre eux. Au vu des atouts, une entreprise peut envisager le projet. Elle devrait néanmoins connaître ses conditions. 

microservices architectures

Le découpage en blocs fonctionnels

Le principe fondamental d’une architecture microservices est que chaque micro service répond à une fonctionnalité métier, et une seule. Il y a donc un découpage en blocs fonctionnels à faire de l’application à réaliser. Plus le projet est d’importance, plus ce découpage, à condition qu’il soit bien fait (pas ou peu d’interdépendance), accélère l’indépendance du développement, du test et du déploiement de ces microservices. La question peut se poser sur des projets de petite taille.

Beaucoup de microservices = gestion plus complexe ?

La question peut être posée dès lors que l’application finale se constitue de beaucoup de microservices, dont il faut gérer leur intégration et leur répartition dans une architecture physique capable de digérer l’exécution parallélisée de ses microservices. Dans l’hypothèse où il existe des dépendances entre les services, les mises à jour des services peuvent être source de complexité tant sur le plan des tests (pour revérifier une chaîne de microservices dépendants) que sur le plan du déploiement.

Une infrastructure adéquate

La gestion de la mémoire avec une mise en cache, une architecture distribuée restent des points cruciaux dans la mise en place d’une application orientée microservices. Par ailleurs, à l’heure où toutes les entreprises sont concernées par la cybersécurité, un nombre important de microservices peut accroitre une vulnérabilité face à la menace. Il y a donc un travail important de dimensionnement des ressources physiques, et de vérification des potentielles défaillances au niveau de chaque service.

Certaines peuvent être de haut niveau et abstraites, lorsqu’une personne utilise par exemple une remarque sarcastique pour transmettre une information. Pour bien saisir le langage humain, il faut comprendre non seulement les mots, mais aussi comment les concepts sont reliés pour transmettre le message souhaité.

Le text mining : automatisation du traitement de textes volumineux

text mining definition

Le text mining : automatisation du traitement de textes volumineux

text mining definition

Définition

Le Text Mining (fouille de texte ou extraction de connaissances) est l’ensemble des méthodes et outils destinés à l’exploitation de textes écrits volumineux : emails, fichiers word, documents powerpoint…

Afin d’extraire du sens de ces documents, le text mining se base sur des techniques d’analyse linguistique. La fouille de textes s’utilise pour le classement de documents, la réalisation de résumés de synthèses automatiques ou en assistance des veilles technologique et stratégique.

Utiliser l’informatique pour l’automatisation de la synthèse de textes est une pratique aussi ancienne que l’informatique. En effet, un chercheur d’IBM, en 1958, est l’inventeur du terme de « Business Intelligence ».

Actuellement, Google propose ce service à grande échelle en déposant un brevet pour la création d’un contenu original via la synthétisation automatique d’articles lus sur le web.

Applications

La fouille de textes permet l’analyse de la base des emails que reçoit une entreprise et de détecter le motif principal de contact. Il est possible d’élaborer des modèles pour un classement automatique des mails dans plusieurs catégories de motifs de contacts. Cette automatisation permet un envoi plus rapide de la demande au service et à la personne concernée afin d’accroître la satisfaction client.

L’émergence des réseaux sociaux développe l’analyse de sentiments (opinion mining). Elle consiste à analyser les textes volumineux afin d’en extraire les sentiments principaux pour mieux comprendre les opinions et perceptions émanant des textes analysés.

Les données sensibles se rapportant à l’origine raciale, à la santé, à la politique et à la religion des clients, notamment, des partenaires ou collaborateurs sont interdites par la CNIL. Le prochain Règlement Général sur la Protection des Données augmente l’obligation de résoudre cette problématique. Des algorithmes de text mining sont développés à cette fin.

L’extraction de connaissances s’impose dans d’autres tâches : actions marketing (formulaires de contact, réseaux sociaux), gestion de la relation client ou, entre autres, optimisation du contenu web dans le but d’un référencement naturel.

Qu’est-ce que l’ERTMS ?

ERTMS ferroviaire

Qu’est-ce que l’ERTMS ?

Dans un monde hyper connecté, le secteur des transports connaît lui aussi son lot de nouvelles technologies intelligentes. Pour survivre et rester dans la course de la performance, l’industrie des chemins de fer doit s’adapter au changement. Avez-vous entendu parler de l’ERTMS ? C’est un système Européen de gestion du trafic ferroviaire (European Rail Traffic Management System) qui s’inscrit dans une logique d’efficacité et de développement durable, mais pourquoi est-il essentiel de respecter les normes Européennes dans le domaine ferroviaire ?

ERTMS ferroviaire

Moderniser le système d’exploitation de circulation

L’ambition Européenne est d’accélérer la transformation industrielle vers le réseau du futur. Grâce à la norme ERTMS, les serveurs informatiques communiquent entre eux via un réseau de télécommunications dédié à la voie ferrée. Ce concept innovant améliore la conduite des trains à grande vitesse et augmente la fréquence des lignes. Le voyageur bénéficie ainsi d’un service de qualité et d’une information en temps réel.

Harmoniser la signalisation des chemins de fer Européens

Au-delà des frontières, le réseau national est mieux connecté au réseau ferré Européen. Le système nouvelle génération se généralise à tous les pays de l’Union Européenne et permet ainsi d’homogénéiser la circulation entre les villes et de fluidifier les échanges frontaliers. Ce système d’exploitation des infrastructures ferroviaires apporte une meilleure maîtrise du temps et de l’espace.

Sécuriser la circulation sur les rails

Le réseau digital du futur est connecté 24h/24 et permet de garantir une sécurité maximale sur les chemins de fer. La technologie ERTMS contrôle la distance de sécurité entre les machines, transmet en temps réel les consignes de conduite, et signale les incidents. Cette solution novatrice apporte réactivité et souplesse, c’est l’assistant technologique rêvé des conducteurs et aiguilleurs du rail. La normalisation dépasse son objectif avec en prime une réduction des coûts de maintenance.

Avec cette méthode agile de régulation des trains, les défis de performance et d’innovation sont relevés. Tous les feux de signalisation passent au vert : sécurité, fiabilité, et ponctualité !

Certaines peuvent être de haut niveau et abstraites, lorsqu’une personne utilise par exemple une remarque sarcastique pour transmettre une information. Pour bien saisir le langage humain, il faut comprendre non seulement les mots, mais aussi comment les concepts sont reliés pour transmettre le message souhaité.