Applications logicielles certifiables 2
Jean-Louis Boulanger
iste
Introduction13
Chapitre 1. Réalisation d'une application logicielle15
1.1. Introduction15
1.2. Qu'est-ce que le logiciel ?18
1.3. Le logiciel au sein d'un système18
1.4. Différents types d'applications logicielles20
1.4.1. Différents types de logiciels20
1.4.2. Différents types d'utilisations20
1.5. Cycle de vie21
1.6. Choix de la stratégie de développement de l'application logicielle22
1.7. Conclusion24
1.8. Annexe A : structure d'un plan d'assurance qualité logiciel25
Chapitre 2. Mise en oeuvre de l'assurance qualité27
2.1. Introduction27
2.2. Système de management de la qualité27
2.3. Caractérisation d'une étape29
2.4. Processus30
2.5. Eléments d'entrée30
2.5.1. Identification du besoin30
2.5.2. Spécification du besoin31
2.5.3. Spécification des exigences de sécurité32
2.6. Descriptions des étapes de la réalisation32
2.6.1. Planification des activités32
2.6.1.1. Objectif32
2.6.1.2. Entrées32
2.6.1.3. Procédures et guides applicables32
2.6.1.4. Sorties33
2.6.1.5. Description33
2.6.2. Spécification de l'application logicielle35
2.6.2.1. Objectif35
2.6.2.2. Entrées35
2.6.2.3. Procédures et guides applicables35
2.6.2.4. Sorties35
2.6.2.5. Description36
2.6.3. Architecture de l'application logicielle38
2.6.3.1. Objectif38
2.6.3.2. Entrées38
2.6.3.3. Procédures et guides applicables38
2.6.3.4. Sorties39
2.6.3.5. Description39
2.6.4. Conception des composants de l'application logicielle41
2.6.4.1. Objectif41
2.6.4.2. Entrées42
2.6.4.3. Procédures et guides applicables42
2.6.4.4. Sorties42
2.6.4.5. Description42
2.6.5. Codage de l'application logicielle43
2.6.5.1. Objectif43
2.6.5.2. Entrées43
2.6.5.3. Procédures et guides applicables43
2.6.5.4. Sorties43
2.6.5.5. Description43
2.6.6. Tests des composants logiciels44
2.6.6.1. Objectif44
2.6.6.2. Entrées44
2.6.6.3. Procédures et guides applicables44
2.6.6.4. Sorties44
2.6.6.5. Description44
2.6.7. Tests d'intégration du logiciel45
2.6.7.1. Objectif45
2.6.7.2. Entrées45
2.6.7.3. Procédures et guides applicables46
2.6.7.4. Sorties46
2.6.7.5. Description46
2.6.8. Tests d'ensemble du logiciel47
2.6.8.1. Objectif47
2.6.8.2. Entrées47
2.6.8.3. Procédures et guides applicables47
2.6.8.4. Sorties47
2.6.8.5. Description47
2.7. Vocabulaire et mode d'expression48
2.8. Plan d'assurance qualité du logiciel : PAQL48
2.9. Conclusion50
Chapitre 3. Processus supports51
3.1. Introduction51
3.2. Processus transversaux54
3.3. Processus supports55
3.4. Processus principaux56
3.5. Gestion de projet56
3.6. Conclusion56
Chapitre 4. Organisation59
4.1. Introduction59
4.2. Premiers besoins59
4.3. Réalisation d'une application logicielle61
4.3.1. Organisation61
4.3.2. Rôle63
4.4. Conclusion63
Chapitre 5. Gestion des ressources humaines65
5.1. Introduction65
5.2. Définition des rôles66
5.3. Gestion des compétences70
5.4. Gestion de la sous-traitance71
5.5. Externalisation72
5.6. Gestion des apprentissages73
5.7. Conclusion73
Chapitre 6. Maîtrise des versions75
6.1. Introduction75
6.2. Définition de la version76
6.2.1. Présentation du besoin76
6.2.1.1. Processus76
6.2.1.2. Approche itérative77
6.2.1.3. Approche incrémentale78
6.2.1.4. Mise en place de versions spécifiques80
6.2.2. Mise en oeuvre81
6.3. Gestion du changement82
6.3.1. Présentation du besoin82
6.3.2. Traitement d'une demande de changement83
6.3.2.1. Présentation83
6.3.2.2. Contrôle et classification de la demande85
6.3.2.3. Analyse d'impact85
6.3.2.4. Evaluer la demande de changement86
6.3.2.5. Acceptation de la demande de changement86
6.3.2.6. Suivi de la demande de changement86
6.3.3. Analyse d'impact86
6.3.4. Comité de contrôle des changements88
6.4. Livraison89
6.4.1. Présentation du besoin89
6.4.2. Mise en oeuvre89
6.5. Conclusion91
6.6. Annexe A : demande d'évolution91
6.7. Annexe B : fiche de version du logiciel92
Chapitre 7. Gestion de la configuration95
7.1. Introduction95
7.2. Gestion de configuration96
7.2.1. Principes96
7.2.2. Formalisation97
7.3. Gestion de configuration d'une application logicielle97
7.3.1. Introduction97
7.3.2. Configuration d'un composant logiciel99
7.3.3. Ligne de produits99
7.3.4. Composants préexistants100
7.3.5. Logiciel générique et logiciel instancié101
7.4. Mise en oeuvre102
7.5. Conclusion104
Chapitre 8. Archivage105
8.1. Introduction105
8.2. Processus d'archivage105
8.2.1. Principe105
8.2.2. Archivage des sources et autres produits liés à l'application logicielle106
8.2.3. Archivage des outils107
8.2.4. Archivage des machines107
8.2.5. Archivage des documents108
8.3. Conclusion109
Chapitre 9. Maintenance d'une application logicielle111
9.1. Introduction111
9.2. Principes112
9.3. Réalisations de la nouvelle version113
9.3.1. Processus113
9.3.2. Contrainte liée à la maintenance et au déploiement114
9.3.2.1. Protection de l'exécutable114
9.3.2.2. Statique versus dynamique114
9.3.2.3. Identification de l'exécutable115
9.3.3. Fiche de version de l'application logicielle115
9.4. Conclusion116
Chapitre 10. Déploiement d'une application logicielle117
10.1. Introduction117
10.2. Principes117
10.3. Mise en oeuvre118
10.4. En réalité120
10.5. Conclusion121
Chapitre 11. Vérification et validation123
11.1. Introduction123
11.2. Concept124
11.2.1. Vérification126
11.2.1.1. Présentation126
11.2.1.2. Activité de vérification127
11.2.2. Validation128
11.3. Techniques, méthodes et pratiques129
11.3.1. Vérification statique129
11.3.1.1. Présentation129
11.3.1.2. Analyse statique manuelle130
11.3.1.3. Analyse statique outillée134
11.3.2. Vérification dynamique154
11.3.2.1. Analyse d'exécution155
11.3.2.2. Test155
11.3.3. Validation159
11.4. Plan de vérification et de validation : PVV159
11.5. Nouvelles problématiques de la VetV159
11.6. Conclusion161
Chapitre 12. Gestion des outils163
12.1. Introduction163
12.2. Liste des outils164
12.3. Description des machines164
12.4. Processus de génération165
12.5. Gestion de configuration des outils167
12.6. Qualification des outils167
12.7. Conclusion168
Chapitre 13. Qualification des outils169
13.1. Introduction169
13.2. Qualification des outils169
13.2.1. Présentation169
13.2.2. Synthèse des normes170
13.2.2.1. DO 178170
13.2.2.2. IEC 61508172
13.2.2.3. ISO 26262172
13.2.2.4. CENELEC EN 50128173
13.3. Processus de qualification176
13.3.1. Dossier de qualification177
13.3.2. Processus de qualification178
13.3.3. Mise en oeuvre du processus de qualification179
13.3.3.1. Identification179
13.3.3.2. Justification de la classe181
13.3.3.3. Spécification184
13.3.3.4. Preuve de conformité184
13.4. Adéquation du besoin188
13.4.1. Méthode de conception188
13.4.2. En cas d'incompatibilité189
13.4.3. Génération de code189
13.5. Gestion des versions190
13.5.1. Identification des versions190
13.5.2. Analyse des défauts191
13.5.3. Changement de version191
13.6. Processus de qualification192
13.6.1. Dossier de qualification192
13.6.2. Au final192
13.6.3. Qualification des outils non commerciaux192
13.7. Conclusion193
Chapitre 14. Paramétrage par les données195
14.1. Introduction195
14.2. Problématique196
14.3. Système paramétré par les données198
14.3.1. Présentation de la problématique198
14.3.2. Caractérisation des données202
14.3.3. Inhibition de service203
14.3.4. Synthèse205
14.4. Du système au logiciel206
14.4.1. Besoin206
14.4.2. Ce que ne dit pas le référentiel CENELEC208
14.5. Processus de préparation des données210
14.5.1. Contexte210
14.5.1.1. Assurance qualité du logiciel210
14.5.1.2. Management de l'assurance sécurité211
14.5.2. Présentation de la section 8 de la norme CENELEC en 50128 : 2011212
14.5.2.1. Cycle de vie212
14.5.2.2. Problème de circularité213
14.6. Processus de préparation des données215
14.6.1. Maîtrise du processus de préparation des données215
14.6.1.1. Planification215
14.6.1.2. Intégration entre les données et le logiciel générique217
14.6.1.3. Processus de production des données218
14.6.1.4. Entrées du processus de préparation des données221
14.6.1.5. Etude de sécurité du processus des données222
14.6.1.6. Synthèse222
14.6.2. Vérification223
14.6.3. Phase de spécification223
14.6.3.1. Description de l'étape223
14.6.3.2. Spécification des exigences de l'application224
14.6.3.3. Tests d'ensemble de la préparation des données226
14.6.3.4. Vérification227
14.6.4. Phase d'architecture227
14.6.4.1. Description de l'architecture et de la conception227
14.6.4.2. Tests d'intégration229
14.6.4.3. Rapport de vérification230
14.6.5. Production des données230
14.6.5.1. Conception des algorithmes230
14.6.5.2. Tests des algorithmes232
14.6.5.3. Vérification des données233
14.6.5.4. Vérification de l'activité234
14.6.5.5. Synthèse234
14.6.6 Intégration de l'application et acceptation des tests236
14.6.6.1. Activités236
14.6.6.2. Vérification de l'activité236
14.6.6.3. Synthèse236
14.6.7. Validation et évaluation de l'application237
14.6.8. Procédure et outils de préparation de l'application237
14.6.8.1. Périmètre237
14.6.8.2. Synthèse238
14.6.9. Développement du logiciel générique238
14.7. Conclusion239
Chapitre 15. Audit241
15.1. Introduction241
15.2. Audit241
15.3. Conclusion242
Conclusion et perspectives243
Glossaire245
Bibliographie251
Index257
Sommaire du volume 1259
Introduction11
Chapitre 1. Système, équipement et logiciel15
1.1. Introduction15
1.2. Impact sur la sûreté de fonctionnement15
1.3. Système de contrôle et de commande17
1.4. Système22
1.5. Processus de réalisation25
1.6. Sécurité : du système au logiciel27
1.7. Application logicielle30
1.7.1. Qu'est-ce que le logiciel ?30
1.7.2. Générique, spécifique ou dédiée31
1.7.3. Différents types de logiciels31
1.7.4. Différents types d'utilisation32
1.8. Conclusion32
1.9. Glossaire33
1.10. Bibliographie34
Chapitre 2. Application logicielle35
2.1. Introduction35
2.2. Application logicielle versus logiciel35
2.3. L'application logicielle dans son contexte38
2.3.1. Cadre général38
2.3.2. Réutilisabilité, maintenabilité et continuité de service39
2.3.3. Architecture modulaire41
2.4. Logiciel générique et logiciel paramétré42
2.5. Module et composant46
2.6. Composant réutilisé et COTS51
2.7. Ligne de produit52
2.8. Conclusion54
2.9. Glossaire54
2.10. Bibliographie55
Chapitre 3. Principe de la sûreté de fonctionnement57
3.1. Introduction57
3.2. Sûreté de fonctionnement58
3.2.1. Concepts de base58
3.2.2. Entrave à la sûreté de fonctionnement59
3.2.3. Moyen64
3.2.4. Exemple d'entrave65
3.2.5. Classification des fautes67
3.2.6. Adaptation aux applications logicielles68
3.3. Description des erreurs du logiciel73
3.4. Mise en sécurité d'une application logicielle73
3.4.1. L'évitement des fautes74
3.4.2. L'élimination des fautes75
3.4.3. La tolérance aux fautes75
3.4.4. La prévision des fautes76
3.4.5. Bilan77
3.5. Conclusion77
3.6. Glossaire78
3.7. Bibliographie78
Chapitre 4. Maîtrise de la sécurité d'une application logicielle81
4.1. Introduction81
4.2. Approche générale83
4.3. Danger, événement redouté, accident, risque84
4.3.1. Définitions84
4.4. Sécurité du système90
4.4.1. Définition90
4.4.2. Maîtrise de la sécurité93
4.4.3. Intégrité de la sécurité99
4.4.4. Gestion des SIL102
4.4.5. Niveau d'intégrité de la sécurité103
4.4.6. Cycle global de la sécurité107
4.5. Plan d'assurance sécurité113
4.6. Dossier de sécurité113
4.6.1. Structure du dossier de sécurité113
4.6.2. Contraintes exportées114
4.6.3. Produit115
4.7. Fiabilité, disponibilité et maintenabilité116
4.7.1. Besoin116
4.7.2. De la problématique particulière de l'utilisation de composants sur étagère117
4.7.3. Plan de FDM118
4.8. Système critique118
4.9. Conclusion119
4.10. Annexe : plan d'assurance sécurité119
4.11. Glossaire120
4.12. Bibliographie121
Chapitre 5. Sécurité d'une application logicielle125
5.1. Introduction125
5.2. Approche générale127
5.2.1. Fiabilité du logiciel127
5.2.2. Disponibilité129
5.2.3. Maintenance130
5.2.4. Sécurité130
5.2.5. Impact du logiciel132
5.3. Niveau de sécurité133
5.4. Activité de démonstration de la sécurité d'une application logicielle134
5.4.1. Analyse de sécurité134
5.4.2. Analyse du code140
5.4.3. Respect des exigences de sécurité142
5.4.4. Analyse des anomalies143
5.5. Conclusion143
5.6. Plan type d'un PASL144
5.7. Glossaire145
5.8. Bibliographie146
Chapitre 6. Technique de sécurisation d'une application logicielle149
6.1. Introduction149
6.2. Techniques de sécurisation d'une application logicielle150
6.2.1. Introduction150
6.2.2. La gestion des erreurs150
6.2.3. Le recouvrement d'erreurs153
6.2.4. La programmation défensive159
6.2.5. La double exécution de l'application logicielle167
6.2.6. La redondance des données175
6.3. D'autres diversités178
6.3.1. La diversité temporelle179
6.3.2. La diversité d'allocation en mémoire179
6.4. Conclusion179
6.5. Glossaire180
6.6. Bibliographie181
Chapitre 7. Evaluation et certification183
7.1. Introduction183
7.2. Produit184
7.3. Evaluation184
7.4. Certification188
7.4.1. Certification de produit188
7.4.2. Evaluation et certification de logiciel190
7.4.3. Cross-acceptance192
7.4.4. Maîtrise des évolutions192
7.4.5. Essais193
7.5. Conclusion195
7.6. Glossaire195
7.7. Bibliographie196
Chapitre 8. Plusieurs domaines et différents référentiels normatifs199
8.1. Introduction199
8.2. Présentation des standards par domaine199
8.2.1. Système E/E/EP199
8.2.2. Domaine ferroviaire204
8.2.4. Aéronautique212
8.2.4. Spatial215
8.2.5. Nucléaire216
8.2.6. Automobile216
8.3. Quelques contraintes220
8.4. Niveau de sécurité220
8.5. Conclusion221
8.6. Glossaire221
8.7. Bibliographie222
Chapitre 9. Maîtrise de la qualité227
9.1. Introduction227
9.2. Amélioration continue228
9.3. Management, mais aussi contrôle de la qualité229
9.4. Maîtrise de la qualité229
9.4.1. Introduction229
9.4.2. ISO 9000230
9.4.3. ISO 9001230
9.4.4. Autres233
9.4.5. Manuel d'assurance qualité, MAQ237
9.4.6. Qualité projet238
9.5. Qu'est-ce que la qualité d'une application logicielle ?239
9.6. Réalisation d'une application logicielle240
9.7. Qualité logiciel241
9.7.1. Caractéristiques d'une application logicielle241
9.7.2. Objectif qualité242
9.8. Mesure de la complexité d'une application logicielle246
9.9. Cycle de réalisation246
9.9.1. Introduction246
9.9.2. Différents cycles de vie247
9.9.3. Cycle en V249
9.9.4. Vérification et validation251
9.10. Vocabulaire et mode d'expression252
9.11. Organisation252
9.11.1. Introduction252
9.11.2. Organisation type253
9.11.3. Gestion des compétences255
9.12. Maîtrise de la gestion de la configuration258
9.13. Management de l'assurance sécurité259
9.14. Plan d'assurance qualité du logiciel (PAQL)261
9.15. Gestion des anomalies263
9.16. Maintenance d'une application logicielle266
9.17. Conclusion266
9.18. Annexe : structure d'un plan d'assurance qualité logiciel267
9.19. Glossaire268
9.20. Bibliographie269
Chapitre 10. Management des exigences271
10.1. Introduction271
10.2. Phase d'acquisition des exigences272
10.2.1. Introduction272
10.2.2. Elucidation des exigences273
10.2.3. Processus d'analyse et de documentation280
10.2.4. Vérification et validation des exigences287
10.3. Spécification des exigences290
10.3.1. Caractérisation des exigences290
10.3.2. Caractérisation de la spécification des exigences295
10.3.3. Expression des exigences295
10.3.4. Validation des exigences300
10.4. Réalisation des exigences300
10.4.1. Processus300
10.4.2. Vérification301
10.4.3. Traçabilité302
10.4.4. Gestion des changements306
10.5. Gestion des exigences309
10.5.1. Activités309
10.5.2. Deux approches310
10.5.3. Mise en place d'outils311
10.6. Conclusion313
10.7. Glossaire313
10.8. Bibliographie314
Conclusion317
Index319