1.2 - But du génie logiciel

2.2 - Exercice : Analyser et affiner. 3 - Preuve de programmes ... 3.6.9 - Exercice
d page 4. 4 - Conceptions des ... 5.6.1 - Exemple : pile. 5.6.2 - Exemple : Map.

Part of the document


Génie Logiciel 1 - Introduction 5
1.1 - Définition 5
1.2 - But du génie logiciel 5
1.3 - Cycle de Vie logiciel "en V" 5
2 - Conception des systèmes fonctionnels descendant 6
2.1 - Application 6
2.2 - Exercice : Analyser et affiner. 8
3 - Preuve de programmes 10
3.1 - Introduction 10
3.2 - Définitions 11
3.2.1 - Précondition 11
3.2.2 - Postcondition 11
3.2.3 - Invariant 11
3.3 - Exercices 11
3.3.1 - Problème du drapeau français (Dijkstra) 11
3.3.2 - Invariant de boucle de la procédure de la division de 2 entiers
naturels 13
3.3.3 - Invariant de boucle de la procédure de la multiplication de 2
entiers naturels 13
3.3.4 - Invariant de boucle de la procédure du PGDC de 2 entiers
naturels 13
3.4 - Car Hoar : P{S}Q 13
3.4.1 - Exercice 14
3.4.2 - Règle d'affectation « ; » 14
3.4.3 - Règle du schémas conditionnel 14
3.4.4 - Règle du schémas répétitif 14
3.4.5 - Propriétés logiques de la conditionnelle alternative 15
3.4.6 - Exercice 15
3.5 - Dijkstra : Plus faible précondition : wp(S,Q) 17
3.5.1 - Introduction ; 17
3.5.2 - Définition : 18
3.5.3 - Axiome de l'affectation 19
3.5.4 - Règle de la composition séquentielle 19
3.5.5 - Règle de conséquence (cons.) 19
3.5.6 - Règle de conjonction (conj.) 21
3.5.7 - Règle de conséquence relative aux plus faibles preconditions 21
3.5.8 - Plus faible precondition conditionnel alternatif 21
3.5.9 - Schéma itératif = règle du tantque 22
3.6 - Exercices 24
3.6.1 - Hoar / Dijkstra 24
3.6.2 - Dikjstra 24
3.6.3 - Dikjstra 24
3.6.4 - Dikjstra 24
3.6.5 - Dikjstra 25
3.6.6 - Dikjstra 25
3.6.7 - Dikjstra 25
3.6.8 - Dikjstra 25
3.6.9 - Exercice d page 4 25
4 - Conceptions des systèmes modulaire 26
4.1 - Introduction : 26
4.2 - Définition : 26
4.2.1 - Modules 26
4.2.2 - Fonctions & modules 26
4.2.3 - Conception Modulaire Minimale : 27
4.2.4 - Conception détaillée : 27
4.2.5 - Généricité : 27
4.3 - Exemple 27
4.3.1 - Module Tampon 27
4.3.2 - Module Rayon 28
4.4 - 5 principes directeurs de l'approche modulaire 29
4.4.1 - unité syntaxique 30
4.4.2 - peu d'interface 30
4.4.3 - Couplage faible 31
4.4.4 - Interface explicite 31
4.4.5 - Abstraction et encapsulation (masquage d'informations) 32
4.5 - Exemples 33
4.5.1 - La pile 33
4.5.2 - Modula 2 33
4.5.3 - PGCD 33
4.6 - Exercices 34
4.6.1 - écrire un module TAMPON avec deux opérations : Déposer, Prendre.
34
4.6.2 - Transformer Module Tampon => Minimiser le bavardage. 36
4.7 - Conclusion : 37
5 - spécification algébrique (ou approche formelle) 38
5.1 - Introduction 38
5.2 - Définitions 38
5.3 - TAD ( Type abstrait de donnes ) 38
5.3.1 - signature d'un TAD 38
5.4 - Opérations d'un TAD 39
5.4.1 - constructeur 39
5.4.2 - observateur 39
5.4.3 - Exemple : La pile 40
5.5 - Le terme 40
5.5.1 - exemple 40
5.6 - L'axiome 41
5.6.1 - Exemple : pile 41
5.6.2 - Exemple : Map 42
5.6.3 - Exemple : Ensemble 42
5.7 - Formule équationnelle 43
5.7.1 - Equation 43
5.7.2 - Variable libre 43
5.7.3 - Occurrence libre 43
5.7.4 - Ewemple 43
5.7.5 - Formule close 44
5.8 - Critère de complétude suffisante 44
5.9 - Critère de consistance 44
5.10 - Construction d'un trait 44
5.10.1 - Introduction : 44
5.10.2 - Etape 1 : 44
5.10.3 - Etape 2 : 45
5.10.4 - Etape 3 : 45
5.10.5 - Théorème d'un trait. 45
5.11 - Règles de raisonnement équationnel. 46
5.11.1 - Propriétés. 46
5.11.2 - Raisonnement 47
5.11.3 - Exemples 48
5.12 - Exercices 50
5.12.1 - Type NAT 50
5.12.2 - Type bool 51
5.12.3 - Preuve d'équation booléenne 51
6 - Architecture orientée objets ( AOD ) 53
6.1 - Présentation de la notion d'objet 53
6.2 - Définitions 55
6.2.1 - Collections 55
6.2.2 - implémentation 55
6.3 - Classe 55
6.3.1 - Exemple : la classe pile 55
6.4 - Objet 56
6.5 - Structures 57
6.5.1 - Relation client fournisseur ( relation d'utilisation , relation
d'agrégation ) 57
6.6 - Le principe d'encapsulation 57
6.7 - Relation d'héritage 58
6.7.1 - definitions 59
6.7.2 - Etablir l'héritage 60
6.7.3 - Exemple : modélisation d'un parc de véhicules 61
6.7.4 - Les classes abstraites 62
6.7.5 - Les difficultés inhérentes à l'utilisation de l'héritage 62
6.7.6 - Héritage multiple 64
6.7.7 - Héritage multiple répété 65
6.8 - Les interfaces 68
6.9 - Liaison dynamique 69
6.10 - Précondition, Postcondition des fonctions 70
6.11 - Règle de l'invariant 71
6.12 - Traitement d'exception 71
6.13 - L'agrégation 74
6.13.1 - Définition 74
6.14 - Généricité 76
6.15 - Le polymorphisme 77
6.15.1 - Définition 77
6.15.2 - La puissance du polymorphisme 77
6.15.3 - Une forme faible de polymorphisme : la surcharge 78
6.16 - La relation d'association 78
6.17 - Pour conclure sur le modèle objet 79
6.18 - Glossaire 80
7 - Revisions 82
7.1 - Exam du 8 Juin 2000 82
7.1.1 - Ex 1 . a 82
7.1.2 - Ex 1 . b 82
7.1.3 - Ex 1 . c 83
7.2 - Exam du 7 Juin 2001 83
7.2.1 - Ex 2 . a 83
7.2.2 - Ex 2 . a' 84
7.2.3 - Ex 2 . a'' 85
7.2.4 - Ex 2 . b 85
7.2.5 - Ex 2 . b' 85
7.3 - Exam du 25 Janvier 2001 86
7.3.1 - Ex 2 . a 86
7.3.2 - Ex 2 . b 86
7.3.3 - Ex 2 . c 87
7.3.4 - Ex 2 . d 87
7.3.5 - Ex 2 . e 88
Introduction
1 Définition Tout ce qui concerne le logiciel et, en particulier la réalisation
d'architecture telle que le système d'exploitation, compilateur, éditeur,
... Tout ce qui traite du logiciel (analyse, conception, programmation,
test, ...) rentre dans le cadre du génie logiciel.
Spécification : description d'un système en vue de sa réalisation.
Cette description doit être faite dans un langage de
programmation, de conception ou de spécification.
Conception : choix des mécanismes ( relation ) qui permettent de
relier les entités du monde reel.
Système : informatique : modèle opérationnel . Un modèle car il
s'agit de modéliser les entités du monde reel et
opérationnel car ce modèle doit fournir un résultat. 2 But du génie logiciel Le but principal est l'introduction d'un ensemble de techniques
permettant d'améliorer la qualité du logiciel . Critères de qualités exiges ( environ 32 critères )
extensibilité : Facilite permettant d'adapter un logiciel au changement
de ses spécifications
réutilisabilité : aptitude d'un logiciel à être réutilisé en tout ou
partie lors de la conception de nouveaux systèmes
validité : le logiciel doit réaliser exactement les taches définies par
sa spécification
compatibilité : aptitude des logiciels à pouvoir être combinés les uns
avec les autres.
Modularité : qualité supplémentaire implicite
Continuité : idem 3 Cycle de Vie logiciel "en V" traçabilité horizontale
|Expression de |------------------------ |Mise en |
|besoin | |Exploitation |
|Spécification |-------------------- |Tests |
|système | |fonctionnels |
|Conception |---------------- |Tests |
|système | |d'intégration |
|Specification |----------- |Tests de |
|logicielle | |validation |
|Conception |-------- |Tests |
|préliminaire | |d'intégration |
|Conception |--- |Tests unitaires |
|détaillée | | |
| |codage | |
traçabilité verticale
Conception des systèmes fonctionnels descendant Une architecture de ce type est conçue par des compositions partant du
cahier des charges ou fonction initiale ( I ) et en affinant vers des
feuilles plus simples
[pic]
Cette théorie est bonne pour des petites applications mais légère et
faible pour des applications qui évoluent dans le temps. 1 Application | | |[pic] |
| | | |
| | | |
| | | |
|[pic] | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| |( | | f, g, m l, k, p sont des fonctions.
On fait des affinages successifs. procedure f ; (en Pascal)
var procedure m ;
var
begin
(définition de la procédure)
end ; procedure l ;
var
begin
(déf