Académique Documents
Professionnel Documents
Culture Documents
Avant-propos V
1 Introduction 11
1.1 Qu’est-ce que le cycle des logiciels ? 11
1.2 Qu’est-ce que le modèle en cascades ? 12
1.3 Qu’est-ce qui distingue l’analyse et la spécification de la conception ? 13
1.4 Pourquoi l’étape d’analyse et spécification est-elle importante ? 16
1.5 Que signifie «Méthodes formelles» ? 18
1.6 Qu’est-ce qu’un langage formel de spécification ? 20
1.7 Pourquoi y-a-t-il plusieurs notations et méthodes différentes ? 21
1.8 Quels sont les principaux bénéfices des spécifications formelles ? 23
1.9 À quelles étapes du cycle de vie les méthodes formelles peuvent-elles être
utilisées ? 25
1.10 Existe-t-il des exemples d’applications industrielles développées à l’aide de
méthodes formelles ? 27
13 VDM et Z 393
13.1 VDM 393
13.2 Z 506
13.3 Sommaire : remarques et conclusions sur VDM et Z 522
14 Spécifications algébriques 529
14.1 Types abstraits de données 529
14.2 Langages de spécifications algébriques : Larch et ACT ONE 530
14.3 Un premier exemple : les piles 531
14.4 Spécifications Larch (LSL) de quelques types abstraits 537
14.5 Un exemple de langage d’interface Larch : LCL 553
14.6 Pourquoi parle-t-on de méthode algébrique ? 559
14.7 Sommaire 563
15 Conceptions et programmation par contrats et utilisation d'assertions 571
15.1 La notion de contrat 573
15.2 Trois langages qui supportent les assertions : Eiffel, Java et C 575
15.3 Quand et comment utiliser les assertions 584
15.4 Sommaire 591
Annexe A Syntaxe formelle de Spec 595
A.1 Éléments de la notation EBNF 595
A.2 Les identificateurs et constantes 596
A.3 Syntaxe EBNF de Spec 597
Annexe B Version Ada de quelques modules 604
B.1 Accumulateurs 604
B.2 Piles non bornées 606
B.3 Piles bornées 608
B.4 Four micro-ondes 612
Annexe C Version Java de quelques modules 615
C.1 Type mutable pour des accumulateurs 615
C.2 Type mutable pour des piles bornées 617
C.3 Type immuable pour des piles non-bornées 619
Bibliographie 622
Index 630
1
INTRODUCTION
Qu’est-ce que les méthodes
formelles ?
1. Analyse et spécification.
2. Conception architecturale.
3. Conception détaillée.
4. Codification.
5. Tests.
6. Livraison et installation.
Besoins et exigences
Validation
Spécification comportementale
(fonctionnelle) du système
Vérification
Structure interne
(architecture) Validation
du système
Vérification
1
Il est clair qu’une spécification peut être satisfaite par plusieurs mises en oeuvre différentes. Cela sera abordé de manière formelle
au chapitre 10.
1 Introduction : Qu'est-ce que les méthodes formelles ? 17
que l’on doit alors corriger la spécification et, ensuite, refaire les étapes
subséquentes de développement — conception, mise en oeuvre, tests — qui
permettent de réaliser les modifications requises.
Des erreurs typiques au niveau des spécifications sont dues à des éléments
incorrects, des omissions, des inconsistances ou des ambiguïtés. La
production et la réalisation d’un document explicite de spécification (DSL)
permettent souvent, par simple inspection de ce document, de détecter
plusieurs de ces erreurs. Par exemple, des études ont démontré que des
revues ou des inspections des documents d’analyse et spécification
pouvaient détecter de 35 à 65% de ces erreurs. Lorsque la spécification est
formelle, d’autres types de vérification peuvent aussi être faits, par exemple,
la vérification de la cohérence interne de la spécification.
Dans les chapitres qui suivront, nous traiterons principalement du
développement de spécifications formelles pour des systèmes et composants
logiciels. L’aspect validation ne sera pas examiné comme tel ; par contre,
l’aspect vérification sera traité dans la deuxième partie (chapitres 9 et 10), où
nous discuterons d’une approche rigoureuse de développement.