Langages Applicatifs et Machines Abstraites pour la Couverture de Code Structurelle

Criticitรฉ et sรปretรฉ des applications logicielles

Dรฉfinitions
โ€ข Un systรจme critique est un systรจme dans lequel une panne peut avoir des consรฉquences dramatiques, tels des morts ou des blessรฉs graves, des dommages matรฉriels importants, ou des consรฉquences graves pour lโ€™environnement ou lโ€™รฉconomie.
โ€ข Un logiciel critique est un composant dโ€™un systรจme critique. Son dysfonctionnement mettrait en pรฉril la sรฉcuritรฉ de personnes ou aurait dโ€™autres consรฉquences graves.
โ€ข On parle de sรปretรฉ de logiciels ou de logiciels sรปrs quand on veut sโ€™assurer quโ€™ils ne se comportent pas de maniรจre non conforme aux attentes (e.g., arrรชt intempestif, calculs erronรฉs).
Remarque. La sรฉcuritรฉ des logiciels se base sur lโ€™รฉtude de sa vulnรฉrabilitรฉ et sa capacitรฉ ร  rรฉsister aux attaques. Cโ€™est un domaine qui nโ€™est pas traitรฉ dans cette thรจse et quโ€™il ne faut pas la confondre avec la sรปretรฉ des logiciels.

Dรฉveloppement dโ€™un logiciel critique

Les dรฉveloppements de logiciels critiques suivent des pratiques plus contraignantes que ceux pour des logiciels non critiques, aVn dโ€™obtenir le meilleur niveau de qualitรฉ et de sรปretรฉ. On rappelle quโ€™une dรฉfaillance dโ€™un logiciel critique causant la mort de personnes pourrait avoir des coรปts sans limite. Lโ€™avionique civile est le domaine qui impose les processus de dรฉveloppement les plus stricts et contraignants. Le ferroviaire possรจde des normes similaires avec toutefois un contexte de dรฉploiement diUรฉrent. Le guide DO-178B[73] donne probablement la plus connue des pratiques de dรฉveloppement de logiciels critiques actuellement, notamment du fait de sa rigueur. Cโ€™est un guide destinรฉ au domaine des logiciels utilisรฉs dans lโ€™avionique civile. Un logiciel dรฉveloppรฉ pour un avion ร  usage civil doit rรฉpondre aux exigences de ce document. La version DO-178C[74], publiรฉe en dรฉcembre 2011, commence ร  remplacer la DO-178B. En eUet, dโ€™une part la technologie รฉvolue. On veut introduire de nouvelles techniques de dรฉveloppement de logiciels, mais aussi et surtout de vรฉriVcation. Dโ€™autre part, les besoins รฉvoluent aussi. On nโ€™attend pas la mรชme chose dโ€™un avion aujourdโ€™hui quโ€™on en attendait il y a vingt ansย  .

Certifications, tests et preuves formellesย 

Dรฉfinition. Un certificat est un document qui atteste du suivi et du respect dโ€™une certaine quantitรฉ dโ€™exigences. Il peut รชtre un contrรดle de savoirs ou savoir-faire. Il peut รชtre la dรฉclaration de possession dโ€™un bien matรฉriel. Ou encore il peut attester du respect dโ€™un processus de production. En gรฉnรฉral, un certiVcat doit รชtre vรฉriVable, en ce sens quโ€™il doit exister une dรฉmarche permettant de le vรฉriVer.

ร€ propos de la notion de ยซ certiVcat ยป
Voici quelques exemples de certiVcats dans des contextes trรจs diUรฉrents.
โ€“ un certiVcat dโ€™aptitude professionnelle (C.A.P.) ;
โ€“ un certiVcat dโ€™immatriculation (ex-carte grise) ;
โ€“ un certiVcat dโ€™agriculture biologique ;
โ€“ un certiVcat SSL/TLS (Secure Sockets Layer/Transport Layer Security).

Pour les logiciels critiques, un certiVcat est dรฉlivrรฉ pour un logiciel dont le dรฉveloppement a suivi un cahier des charges prรฉcis et rigoureux. Un certiVcat nโ€™a alors de valeur que si le cahier des charges est pertinent et que lโ€™autoritรฉ de certiVcation est de conVance et compรฉtente. Parmi les quelques exemples de certiVcats dโ€™autres domaines prรฉsentรฉs plus haut, cโ€™est le certiVcat dโ€™agriculture biologique qui en est le plus analogue.

Activitรฉs de tests

Les activitรฉs de tests font partie de la plupart des processus de certiVcation des logiciels. Selon Myers [62], leur premier but est de trouver les erreurs, si bien quโ€™un ensemble de tests ne mettant aucune erreur en รฉvidence est a priori considรฉrรฉ en รฉchec. Il sโ€™agit de vรฉriVer que pour certaines entrรฉes, on obtient bien les sorties attendues, mais surtout il sโ€™agit de chercher et trouver les scรฉnarios oรน les sorties attendues ne correspondent pas aux sorties obtenues. Ces activitรฉs permettront รฉgalement de vรฉriVer quโ€™on nโ€™a pas รฉcrit de code inatteignable. Leur second but est de montrer quโ€™on a bien envisagรฉ tous les cas de Vgure et quโ€™on les a testรฉs, pour ne pas avoir de mauvaise surprise lors de la mise en production. Si le dรฉveloppeur peut faire ses propres tests pour dรฉnicher ses propres erreurs, au Vnal le testeur doit prรฉfรฉrablement รชtre une autre personne aVn de ne pas biaiser les tests. Le testeur vรฉriVe ainsi le travail du dรฉveloppeur, donc la conformitรฉ de la production du dรฉveloppeur par rapport aux spรฉciVcations du cahier des charges. La plupart du temps, le testeur nโ€™a pas accรจs au code produit par le dรฉveloppeur. Il doit produire ses tests dโ€™aprรจs les spรฉciVcations, et non dโ€™aprรจs le code du dรฉveloppeur. Le coรปt des activitรฉs de tests est grand par rapport au coรปt total du dรฉveloppement dโ€™un logiciel. Mais il est gรฉnรฉralement prรฉfรฉrable de payer ce coรปt le plus tรดt possible pour รฉviter les mauvaises surprises une fois le produit mis en production. Cependant, devant la part importante du coรปt du test, dรฉcoule rapidement une volontรฉ de rรฉduire ce coรปt sans altรฉrer la qualitรฉ du produit. De plus, les logiciels devenant de plus en plus complexes, que ce soit ร  cause de leurs tailles ou des fonctionnalitรฉs intrinsรจques, les coรปts de dรฉveloppement et de tests augmentent.

Certificats et preuves

Vis-ร -vis de la sรปretรฉ de fonctionnement, un certiVcat nโ€™est pas une preuve au sens mathรฉmatique ou formel du terme. Ainsi, un logiciel certiVรฉ nโ€™est gรฉnรฉralement pas un logiciel dont le fonctionnement et lโ€™implantation ont รฉtรฉ entiรจrement prouvรฉs mathรฉmatiquement. Cependant, une preuve mathรฉmatique peut รชtre un certiVcat, en partie ou entiรจrement. En eUet, les avancรฉes dans les mรฉthodes formelles sont tout ร  fait intรฉressantes. Par exemple, le projet CompCert[51] propose un compilateur ciblant un assembleur PowerPC pour un grand sousensemble du langage C, dont la majeure spรฉciVcitรฉ est de fournir la preuve mathรฉmatique des diffรฉrentes transformations de langage eUectuรฉes par le compilateur. Cela signiVe que la propriรฉtรฉ de conservation de la sรฉmantique du programme, lors des traductions dโ€™un langage ร  un autre langage, est prouvรฉe. Sans aller jusquโ€™ร  une certiVcation totale dโ€™un logiciel par la preuve, son utilisation partielle a รฉtรฉ validรฉe dans le domaine de lโ€™avionique civile. Notamment, CAVEAT, un prouveur pour programmes รฉcrits en langage C et dรฉveloppรฉ au Commissariat ร  lโ€™ร‰nergie Atomique, a รฉtรฉ utilisรฉ dans le processus de vรฉriVcation dโ€™un logiciel critique destinรฉ ร  lโ€™avionique civile par Airbus [79]. Les preuves servent ร  montrer et ร  garantir des propriรฉtรฉs de sรปretรฉ. Cependant les tests ne pourront probablement jamais รชtre remplacรฉs entiรจrement par les preuves, car on veut sโ€™assurer avec les tests que les spรฉciVcations sont bien implantรฉes mais aussi quโ€™elles expriment eUectivement ce que leurs auteurs pensent quโ€™elles expriment. Ce sera nรฉcessaire tant que les langues naturelles exprimeront des propos sujets ร  interprรฉtation et interviendront dans la conception des logiciels. Dโ€™autre part, actuellement, il est techniquement plus facile de faire des tests que de faire des preuves dรจs que les programmes deviennent complexes. La phrase suivante de Donald Knuth illustre la situation de la preuve face au test : ยซ Beware of the above code ; I have only proved it correct, not tried it. ยป.

Normes ou guides de dรฉveloppement de logiciels critiques

Lโ€™avionique civile en tant que domaine critique

Avant lโ€™arrivรฉe des logiciels critiques, il y avait de maniรจre plus gรฉnรฉrale les systรจmes critiques qui nโ€™embarquaient pas de logiciels. Les premiers avions de ligne civils datent des environs de 1920. Ils permettaient de transporter une dizaine de personnes. Aprรจs la seconde guerre mondiale, sont apparus les avions de ligne transportant une centaine de personnes (e.g., Boeing 377). Aujourdโ€™hui, les avions de ligne transportent jusquโ€™ร  plus de 800 passagers (e.g., Airbus A380) et surtout, ils embarquent des logiciels de plus en plus nombreux et complexes. Pour quโ€™un logiciel critique puisse รชtre utilisรฉ, il faut obtenir lโ€™aval de lโ€™autoritรฉ de rรฉgulation. Pour lโ€™avionique civile, aux ร‰tats-Unis, il sโ€™agit de la Federal Aviation Administration (FAA) . Son homologue europรฉen est lโ€™Agence Europรฉenne de la Sรฉcuritรฉ Aรฉrienne (AESA). Dans le contexte des systรจmes critiques, ces agences sont chargรฉes de promouvoir le plus haut niveau possible de sรฉcuritรฉ pour les passagers. Ces agences exigent que les systรจmes critiques soient conรงus de la maniรจre la plus sรปre possible. Pour les logiciels, tout comme pour le matรฉriel (au sens large, cโ€™est-ร -dire incluant le matรฉriel mรฉcanique et le matรฉriel รฉlectronique), elles recommandent le suivi de normes ou de guides. Aux ร‰tats-Unis, la Radio Technical Commission for Aeronautics (RTCA, Inc.)ย  est lโ€™organisation chargรฉe de dรฉvelopper des guides techniques pour les autoritรฉs gouvernementales et industrielles servant ร  lโ€™avionique, et la FAA est son principal soutien. En 1980, la RTCA a formรฉ un comitรฉ (SC-145) pour รฉtablir un guide pour le dรฉveloppement des logiciels destinรฉs ร  lโ€™avionique, cโ€™est lui qui a produit le document ยซ Software Considerations in Airborne Systems and Equipment CertiVcation ยป, รฉditรฉ en janvier 1982 sous la rรฉfรฉrence DO-178 [46]. Un autre comitรฉ a รฉtรฉ formรฉ pour produire une premiรจre rรฉvision du document, ce qui a donnรฉ en 1985 la publication de la DO-178A [72]. En 1989, un nouveau comitรฉ a รฉtรฉ formรฉ pour travailler sur une nouvelle version aVn de traiter de nouvelles problรฉmatiques dont la qualiVcation des outils, ce qui a donnรฉ en 1992 la publication de la version la plus connue ร  ce jour qui est la DO-178B [73]. En dรฉcembre 2011, la DO-178C tant attendue arrive et complรจte la DO-178B en rรฉpondant ร  de nouvelles demandes dont lโ€™introduction des ยซ mรฉthodes formelles ยป [74]. Celles-ci avaient cependant dรฉjร  รฉtรฉ employรฉes dans le cadre de dรฉveloppements DO-178B [80]. La nouvelle rรฉvision DO-178C remplacera peu ร  peu son prรฉdรฉcesseur DO-178B ; mais il faut du temps pour que la transition se fasse notamment en raison des projets qui ont dรฉmarrรฉ avant sa publication. Dans cette thรจse, on fera par dรฉfaut rรฉfรฉrence ร  la version DO-178B. La plupart du temps, ce qui fait rรฉfรฉrence dans cette thรจse ร  la DO-178B reste valide pour la DO-178C .

Le rapport de stage ou le pfe est un document dโ€™analyse, de synthรจse et dโ€™รฉvaluation de votre apprentissage, cโ€™est pour cela chatpfe.com propose le tรฉlรฉchargement des modรจles complet de projet de fin dโ€™รฉtude, rapport de stage, mรฉmoire, pfe, thรจse, pour connaรฎtre la mรฉthodologie ร  avoir et savoir comment construire les parties dโ€™un projet de fin dโ€™รฉtude.

Table des matiรจres

I Introduction
Objectifs de cette thรจse
Contributions de cette thรจse
Plan du manuscrit
II Dรฉveloppement de logiciels critiques et tests de couverture structurelle
II.1 Criticitรฉ et sรปretรฉ des applications logicielles
II.1.1 Dรฉveloppement dโ€™un logiciel critique
II.2 CertiVcations, tests et preuves formelles
II.2.1 Activitรฉs de tests
II.2.2 CertiVcats et preuves
II.3 Normes ou guides de dรฉveloppement de logiciels critiques
II.3.1 Lโ€™avionique civile en tant que domaine critique
II.3.2 Normes pour dโ€™autres domaines critiques
II.4 Cycle de vie dโ€™un logiciel et processus de dรฉveloppement
II.4.1 La vie dโ€™un logiciel
II.4.2 Agencement de la vie dโ€™un logiciel
II.4.3 Lโ€™importance du processus de dรฉveloppement pour un logiciel critique
II.5 Documentation et traรงabilitรฉ pour les logiciels critiques
II.6 Processus de certiVcation (ou de qualiVcation)
II.7 Activitรฉs de tests
II.8 ร‰volution des activitรฉs de tests
II.8.1 ร‰volution des coรปts
II.8.2 ร‰volution des techniques
II.9 Couverture de code
II.9.1 Objectifs
II.9.2 Outils pour la couverture de code
II.9.3 Un exemple de couverture de code
II.10 Conclusion du chapitre
III Le Langage mCaml et la couverture structurelle des expressions
III.1 Le langage mCaml
III.1.1 Grammaire informelle des expressions du langage mCaml
III.1.2 Sรฉmantique opรฉrationnelle du langage mCaml
III.1.3 Arbre dโ€™รฉvaluation
III.2 SpรฉciVcation de la couverture des expressions pour mCaml
III.2.1 Rรจgles formelles de couverture des expressions pour mCaml
III.2.2 Taux de couverture
III.3 Conclusion du chapitre
IV Couverture des conditions et des dรฉcisions pour mCaml
IV.1 Critรจres de couverture pour les expressions boolรฉennes
IV.1.1 Couverture des conditions (CC)
IV.1.2 Couverture des dรฉcisions (DC)
IV.1.3 Couverture des conditions/dรฉcisions (C/DC)
IV.1.4 Couverture des conditions multiples (MCC)
IV.1.5 Couverture des conditions/dรฉcisions modiVรฉe (MC/DC)
IV.1.6 Autres critรจres de couverture pour les expressions boolรฉennes
IV.2 Conditions et dรฉcisions pour mCaml : quatre sรฉmantiques formelles
IV.2.1 Notations
IV.2.2 Sรฉmantique 1 : repรฉrage syntaxique aux branchements conditionnels
IV.2.3 Sรฉmantique 2 : sรฉmantique intermรฉdiaire, gรฉnรฉralisation aux opรฉrateurs boolรฉens
IV.2.4 Sรฉmantique 3 : une extension de la sรฉmantique 2, gรฉnรฉralisation aux applications ร  retour boolรฉen
IV.2.5 Sรฉmantique 4 : gรฉnรฉralisation aux expressions boolรฉennes
IV.3 Choix de la sรฉmantique
IV.4 Fonction de comptage des conditions dโ€™une expression
IV.5 Conclusion du chapitre
V Conclusion

Rapport PFE, mรฉmoire et thรจse PDFTรฉlรฉcharger le rapport complet

Tรฉlรฉcharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiรฉe. Les champs obligatoires sont indiquรฉs avec *