Académique Documents
Professionnel Documents
Culture Documents
Architecture de Logiciel et
Méthodes Formelles
Dr Imed ABBASSI
Enseignant chercheur à ISIMM
ENIT, LR-OASIS, Université de Tunis El Manar, Tunis
imed.abbassi@enit.utm.tn
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
A propos du cours
Objectifs:
• Apprendre les concepts fondamentaux d’architecture
logicielle
• Apprendre le langage logico-ensembliste
• Apprendre les méthodes formelles B et Event-B
Références :
• Jean-Raymond Abrial. Modeling in Event-B: system and
software engineering. Cambridge University Press, 2010.
• BASS, Len, CLEMENTS, Paul, et KAZMAN, Rick. Software
architecture in practice. Addison-Wesley Professional, 2003.
2
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Plan du cours
3
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
4
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Plan du chapitre
1. Introduction
2. Modélisation avec UML
3. Éléments architecturaux
4. Choix d’une architecture
5. Vérification d’une architecture
5
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Introduction (1)
6
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Introduction (2)
7
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Introduction (3)
8
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Introduction (4)
10
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Niveau 2
Vue des cas d’utilisation (modèle fonctionnel des exigences)
• Diagramme de cas d’utilisation
11
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Diagramme de paquetages
• Les packages sont des espaces de noms :
– deux éléments ne peuvent pas porter le même nom au sein du
même package.
– Par contre, deux éléments appartenant à des packages différents
peuvent porter le même nom.
• La structuration d’un modèle en packages est une activité
délicate.
• Elle doit s’appuyer sur deux principes fondamentaux :
– Cohérence: regrouper les classes qui sont proches d’un point de
vue sémantique.
– Indépendance: minimiser les relations entre les classes des
différentes packages.
12
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
13
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Diagramme de composants
14
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
17
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
21
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
22
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
23
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
24
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
25
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Architecture n-niveaux:
• Pour les systèmes distribués qui peuvent être structurés en
couches.
• Rôles des composants et connecteurs:
– Composants : chaque niveaux est représenté par un composant qui joue le
rôle de client et/ou de serveur
– Connecteurs :
• Relient un client à un serveur.
• Connexion asymétrique.
• Doit supporter les communication distantes (e.g., requêtes RPC,
HTTP, TCP/IP)
• Architecture 2-niveaux: client-serveur
26
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
• Architecture 3-niveaux:
• Architecture 4-niveaux:
27
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
28
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
29
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Chapitre 2: Méthode B
30
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Plan du chapitre
1. Introduction
2. Formalise de modélisation
3. Machines abstraites
4. Raffinement
5. Implémentation
31
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Introduction
Primitives logiques:
• ⊤: désigne la valeur logique true.
• ⊥: désigne la valeur logique false.
Prédicat:
• Constitue l’élément clé de la logique de premier ordre.
• Bivalué: tout prédicat s’évalue soit à true ou à false.
• Souvent défini au moyen des connecteurs logiques:
– Négation: ¬P
– Conjonction: P∧Q
– Disjonction: P∨Q
– Implication: P⇒Q
– Équivalence: P⇔Q
33
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Quantificateurs logiques:
• Quantificateur universel (∀)
• Quantificateur existentiel (∃)
Trois types de prédicats:
1. Prédicats atomiques: n’utilisent pas des connecteurs
logiques et ne sont pas quantifiés.
2. Prédicats non quantifiés (simples): n’utilisent pas des
quantificateurs.
3. Prédicats quantifiés: quantification universelle ou
quantification existentielle.
Exemple: le prédicat « x≠ 0 ∧ 𝑦 ÷ 𝑥 = 3 » se décompose
de deux prédicats atomiques « x≠ 0 » et « 𝑦 ÷ 𝑥 = 3 ».
34
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
36
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
38
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
39
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Exemples:
– A1 = {x. x ∈ 1. . 10 | x ∗ 2}
– A2 = {x^3|x ∈ 1. . 100}
– A3 = {1, 4, 9, 16, 25, 36, 49, 64, 81, 100}
41
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
43
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Minimum:
• min(S) désigne le plus petit nombre de l'ensemble des
entiers S.
• Condition: l’ensemble S doit être non vide et minoré.
Maximum:
• max(S) désigne le plus grand nombre de l'ensemble des
entiers S.
• Condition: l’ensemble S doit être non vide et majoré.
Exemple:
• min({1,3,4,-3, 5,6})= -1;
• max({1,3,4,-3, 5,6})= 6;
44
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Produit cartésien:
• S×T désigne l'ensemble de paires où le premier élément est un
membre de S et le second élément est un membre de T. 𝐱 ↦ 𝐲 est la
paire dont le premier élément est x et le second élément est y.
Relations:
• S⟷T est l'ensemble de toutes les relations définies entre les
ensembles S et T.
• Une relation r (r∈S⟷T) est un ensemble de paires où le premier
élément est de S et le second de T.
• S⟷T est juste une abréviation pour P(S×T).
• r[X] est l’image de l’ensemble X par la relation r. Plus formellement, il
prédéfinit comme suit:
𝑟 𝑋 ≜ 𝑦 ∃ 𝑥. 𝑥 ∈ 𝑋 ∧ 𝑥 ↦ 𝑦 ∈ 𝑟 }
45
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Relations totales:
• S T est l'ensemble de toutes les relations totales définies entre les
ensembles S et T.
• Une relation totale r est une relation qui relie chaque élément de S à
au moins un élément de T.
Relations surjectives:
• S T est l'ensemble de toutes les relations surjectives définies entre
les ensembles S et T.
• Une relation surjective r est une relation où il y a au moins un élément
de S pour chaque élément de T tel que les deux sont liés.
Relations surjectives totales:
• S T est l'ensemble de toutes les relations surjectives totales
définies entre les ensembles S et T.
• Une relation surjective totale r est une relation à la fois surjective et
totale.
46
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
47
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Relations prédéfinies :
• id: la relation d'identité qui relie chaque élément à lui-même.
• 𝐩𝐫𝐣𝟏 : une fonction qui relie une paire à son premier élément.
• 𝐩𝐫𝐣𝟐 : une fonction qui relie une paire à son deuxième élément.
49
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Fonctions partielles
Fonctions totales
Fonctions surjectives
Fonctions bijectives
50
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Fonctions partielles:
• S T est l’ensemble des fonctions partielles.
• Une fonction partielle f de S à T est une relation qui relie un élément de S à au
plus un élément de T. Le domaine de f est inclut dans S.
• ∅ est un cas particulier de fonction partielle.
Fonctions totales:
• S → T est l’ensemble des fonctions totale.
• Une fonction totale f de S à T est une partielle dont le domaine est égale à S.
Fonctions injectives:
• S T est l’ensemble des fonctions injective partielle.
• S ↣ T est l’ensemble des fonctions injective totale.
• Une fonction est injective (totale ou partielle) si deux éléments distincts de S
sont toujours reliés à des éléments distincts de T.
• L’inverse d’une fonction injective est obligatoirement une fonction.
51
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Fonctions surjectives:
• S T est l’ensemble des fonctions surjectives partielles.
• S ↠ T est l’ensemble des fonctions surjectives totales.
• Une fonction f de S à T est un surjective si pour chaque élément de T il existe
un élément dans S qui lui est relié.
Fonctions bijectives:
• S T est l’ensemble des fonctions bijectives.
• Une fonction est bijective si et seulement si elle est injective et surjective.
• L’inverse d’une fonction bijective est une fonction bijective.
52
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Fonction lambda
• ⋌ 𝑝 . 𝐶 𝐸) est une fonction qui relie une entrée p à un résultat E tel
que le prédicat C soit vrai.
• p est un modèle d'identificateurs, de parenthèses et ↦ qui suit les
règles suivantes:
– Tout identifiant x est un modèle.
– Un paire x↦y est un modèle si x et y sont deux modèles.
– (a) est un modèle si a l’est aussi.
Exemples:
• Une fonction double qui renvoie la valeur double d'un nombre naturel:
𝑑𝑜𝑢𝑏𝑙𝑒 = ⋌ 𝑥 . 𝑥 ∈ ℕ 𝑥 ∗ 2)
• Fonction calculant le produit scalaire de vecteurs à deux-dimensions:
𝑑𝑜𝑡𝑝 = ⋌ 𝑎 ↦ 𝑏 ↦ 𝑐 ↦ 𝑑 . {𝑎, 𝑏, 𝑐, 𝑑} ⊂ ℤ 𝑎 ∗ 𝑐 + 𝑏 ∗ 𝑑)
53
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
54
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
56
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
65
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
67
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Raffinement (1)
Principes de raffinement:
P1) Raffiner le modèle B jusqu’à obtenir un modèle complètement
concrétisé.
P2) Assurer que tous les raffinements sont corrects et conformes au
modèle initial. 68
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Raffinement (2)
69
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Raffinement (3)
70
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Raffinement (4)
71
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Raffinement (5)
Raffinement de substitutions:
• Étant données deux substitutions S et T dans le contexte d’une
machine abstraite M,
• S est raffinée par T si T peut être utilisé à la place de S sans que
l’utilisateur de la machine puisse s’en rendre compte.
• Pour cela, il faut que la précondition de T soit plus faible que celle de S, et T
soit plus déterministe que S.
Réduction de l’indéterminisme:
• Lors de la conception d’une maison, l’architecte ne précise pas tout
dès le début. Il laisse des zones imprécises. ➔l’indéterminisme
• Par exemple, il ne précise pas le matériau du toit. Il écrit “toit en tuiles
ou en ardoises”. Cependant, ce choix devra être fait avant la fin de la
construction.
➔il faudra résoudre l’indéterminisme
72
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Raffinement (6)
73
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Raffinement (7)
74
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Implémentation (1)
Implémentation (2)
76
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Implémentation (3)
Implémentation (4)
78
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Implémentation (5)
79
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Implémentation (6)
80
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
81
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Introduction
Contexte (1/3)
83
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Contexte (2/3)
Contexte (3/3)
Machine (1/3)
Machine (2/3)
Machine (3/3)
MACHINE m0
VARIABLES f
INVARIANTS
inv1: f ∈ ℕ⇸ℕ
EVENTS
INITIALISATION
THEN
act1: f ≔ {0↦1}
END
...
END
88
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Évènement (1/4)
Évènement (2/4)
90
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Évènement (3/4)
Évènement (4/4)
Raffinement (1/2)
Raffinement (2/2)
94
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Questions:
• Proposez une modélisation incrémentale en Event-B de ce
système.
• Testez le modèle proposé sur un exemple concret en
utilisant ProB.
96
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Réponse:
• Pour modéliser le système de gestion de cours, nous adoptons la
démarche suivante:
– Étape 1: modélisation des contraintes d'ouverture et de
fermeture des cours.
– Étape 2: modélisation des contraintes de participation aux
cours ouverts.
• La figure suivante présente une vue d'ensemble de l'architecture du
modèle obtenu.
97
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
CONTEXT C0
• Notre contexte initial C0 contient
SETS COURS
donc un ensemble COURS
CONSTANTS m
désignant les cours qui peuvent être
proposés par l'institue (REQ 3). AXIOMS
axm1 : finite(COURS)
axm2 : m∈ℕ1
• De plus, le contexte comprend une
axm3 : m ≤ card(COURS)
constante m indiquant le nombre
END
maximum de cours que l'institue
peut ouvrir en même temps (REQ
8).
98
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
99
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
102
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Event ouvrir
Event fermer
status ordinary
status convergent
REFINES ouvrir
REFINES fermer
any crs
any crs
when
where
grd1 : crs⊆COURS
grd1 : crs⊆dom(inscription)
grd2 : crs≠∅∧crs∩dom(inscription) =∅
grd2 : crs ≠ ∅
grd3 : card(dom(inscription) ∪ crs)≤m
then
then
act1 : inscription≔crs⩤inscription
act1 : inscription≔inscription<+(crs×{∅})
end
end
104
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
105
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
où
– s et c désignent respectivement un ensemble et une constante.
– x désigne un paramètre de l’événement.
– v représente une variable de la machine.
• Les axiomes sont désignés collectivement par A(s, c), tandis que les
invariants sont désignés par I(s, c, v).
• Dans une machine raffinée, les variables concrètes seront désignées
par w et les invariants locaux par J(s, c, w). 107
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
Préservation d’invariants:
• Cette obligation de preuve garantit que chaque événement, y compris
l’initialisation, dans une machine doit préserver tous les invariants.
CONTEXT C2
EXTENDS C1
CONSTANTS
algorithmique java eventB
imed lazhar
abir sarra amira rahma
AXIOMS
axm1: partition(COURS,{algorithmique},{java},{eventB})
axm2: partition(MEMBRE,{imed},{abir},{lazhar},{sarra},{amira},{rahma})
axm3: partition(Enseignants,{imed},{lazhar})
axm4: partition(Participants,{abir},{sarra},{amira},{rahma})
axm5: partition(ensCours,{algorithmique↦lazhar},{java↦imed},{eventB↦imed})
axm6: m=3
END
112
DocuSign Envelope ID: F90469B8-B4C2-466A-B666-3ABF970171D5
114