Ministre de l'enseignement supérieur et de la
recherche scientifique Algérie
Université Saad Dahled Blida
Faculté des sciences
Département informatique
Projet fin semestre :présentation la méthode Z
Module : validation formelle des systèmes informatiques (VFSI)
Présenter par : Professeure :
Mme:F,Z,Zahra Mr: BENKHAOUA Sidahmed
Mr: BELMABROUK Djamel
Mr: Siahoui Karim
Mr: Miraoui Akli
Introduction
Les méthodes informelle
Les méthodes semi-formelles
Les méthodes formelle
Définition de la méthode Z
Structure du schéma Z
Les Prédicats
Résume symbole au Z
Exemple des fonction dans Z
Raffinement
Exemples d’applications
Variante Z-objets
Bilan et extensions
Conclusion
Reference
La méthode Z
Pant du travail 3
Introduction
Les méthodes de spécification (conception) des systèmes
informatiques :
Méthodes informelles
Méthodes semi-formelles
Méthodes formelles
La méthode Z
Introduction 4
les méthodes informelle
une spécification est dite informelle si elle est exprimée au moyen
d’un langage informel, typiquement le langage naturel. Exemple :
la fonction qui étant donné un réel positif x retourne 𝑥.
La méthode Z
introduction 5
les méthodes semi-formelles
La spécification semi-formelle graphique des connaissances avec le
langage de Modélisation par Objets Typés (MOT) est une activité
qui permet d’extérioriser la connaissance sous la forme d’un
modèle.
La méthode Z
introduction 6
les spécifications formelle
la spécification formelle donne toujours une description de ce que
doit faire le logiciel et non pas comment il doit le faire spécification
formelle ces techniques sont formelles puisqu'elles reposent sur les
bases mathématique le but est d'eliminer les ambiguïtés, les mal
entendus et les mouvais interprétation qui prouvent survenir dans la
description en langage naturel
La méthode Z
introduction 7
Définition de la méthode Z
A l’origine la méthode Z est développé par l’équipe de J.R. Abrial à
l’Université d’Oxford, dans les années 80.
Elle permet d’exprimer les propriétés souhaitables d’un système en
s’appuyant sur des résultats provenant de la théorie des ensembles.
Principe de modularité : décomposition de la spécification en
parties de taille raisonnable, les schémas, portant sur un seul aspect
du système à la fois.
La méthode Z
Définition de la méthode Z 8
Il y a Deux type d’aspects a considéré
Aspects Statiques
La partie statique permet de définir les états et les relations d’invariant qui
sont préservées lors des transitions d’etats. Elle est décrite en Z sous la forme
d’un schéma d’etat.
Aspects Dynamiques
les opérations
les relations entre les entrées et les sorties
les changements d’états.
La méthode Z
Schéma Z 9
Syntaxe
Un Schéma : unité syntaxique qui comporte trois parties principales:
nom, déclarations et prédicats.
La méthode Z
Schéma Z
Nom
Déclarations
Prédicats
10
Introduit les noms et
les types des entités
qui seront utilisés par
le schéma
Établit les relations
entre les entités
déclarés
précédemment
Structure du schéma Z
Déclarations de variable de la forme :
< identificateur > : < type >
Les prédicats précisent les propriétés des variables et les relations
entre variables
Un schéma est utilisé afin de décrire un état ou une opération
La méthode Z
Structure du schéma Z 11
Dans la description d’un état :
Les variables déclarées représentent les composantes de l’état, Les
prédicats expriment les propriétés invariantes de l’état.
Dans la description d’une opération :
Les déclarations incluent les composantes de l’état initial et celles
de l’état final, ainsi que tous les entrées et les sorties de l’opération.
Les prédicats expriment les relations entre les entrées et les sorties, et
entre l’état initial et l’état final.
La méthode Z
Structure du schéma Z 12
Les Types
Un type en Z est interprété comme un ensemble
Les types peuvent être :
types simples :
Prédéfinis: Ex. entier (N), chaîne (String), etc.
Définis par l’utilisateur: Ex. Jour, Mois, etc.
Types composites:
Ensembles d’ensembles Ρ
Produit cartésienne 𝑋
Schémas
La méthode Z
Structure du schéma Z
Les Types
13
Les Prédicats
Syntaxe:
Langage standard de la théorie des ensembles
Constantes:entiers (…,-1,0,1,2,…), ensemblistes (ø), etc.
Opérations etprédicats sur les entiers: +, -, *, div, mod,>, <, etc.
Opérations ensemblistes: =, ∈,∪,∩,⊆,etc
Connecteurs,quantificateurs: ¬,→, ∃, ∀,∧,∨,etc,
La méthode Z
Structure du schéma Z
Les Prédicats
14
Les Prédicats (Suite)
Syntaxe:
Opérateurs sur fonctions etre relations:
relation (X ↔Y),fonction totale (X → Y)ou partielle(X ↛Y)
domaine (dom R), co-domaine (ran R), identité (id R),
composition (Q R),image (X ↦Y)
restrictions:
domaine (Q 𝜔R),
co-domaine (R 𝜔 Q),
surcharge (Q ⨂R),
La méthode Z
Structure du schéma Z
Les Prédicats
15
Resume symbole du langage Z
f: ℘𝑋 f c’est un ensemble de tout les sous –ensemble de X ,
𝑥 ∈ 𝑋 x est un élément de X,
𝑥 ∉ 𝑋 x n’est pas un élément de X,
𝑆 ⊆ 𝑋 s est un sous ensemble de X
𝑆 ⋃𝑋 union de ensemble s avec X,
𝑆⋂𝑋 intersection ensemble S avec X,
𝑆 ∖ 𝑋 Déférence de ensemble S et X,
∅ ensemple vide,
≠ 𝑋 cardinalité de ensemble X,
La méthode Z
Structure du schéma Z
Résume symbole
16
Résume symbole du langage Z
Logique :
P ∧ 𝑄 vrai si P est Q sont vrai ,
P ∨ 𝑄 vrai si P ou Q sont vrai,
𝑃 ⇒ 𝑄 vrai si P est vrai ou Q et faux,
𝑃 ⟺ 𝑄 vrai si P est vrai ou Q et faux et vice versa ,
¬𝑃 vrai si P est faux,
La méthode Z
Structure du schéma Z
Résume symbole
17
Raffinement
Le raffinement permet de remplacer les types de données abstraits
d’une spécification Z par des types de données plus concrets.
Le raffinement d’un schéma d’état est, en outre, accompagne des
raffinements des opérations qui modifient l’état du schéma raffine.
Les opérations sont par conséquent a nouveau spécifiées en
utilisant les nouveaux types de données définis dans le raffinement
du schéma du système.
La méthode Z
Raffinement 18
Voici un exemple de spécification formelle utilisant langage Z
un système de gestion pour le dictionnaire de donnée utilisant dans
l’analyse structurée .
Les champs de ce dectionnaire sont ;
Nom
Allais
Ou/comment utilisé,
Description de continue,
Information supplémentaire ,
Date de création,
La méthode Z
Exemples 19
Exemple d’un dictionnaire
Exemple d’un dictionnaire
Nous établissons les opération suivant pour le system de gestion
Ajouter
Ajouter une description de donnée dans le dictionnaire
Éliminer
Eliminer une description de donnée du dictionnaire
Fouiller
Trouver une description de donnée dans le description dans le dictionnaire
Remplacer
Remplacer une description de données par une autre description
La méthode Z
Exemples 20
Exemple d’un dictionnaire
Nous définissons les type qui seront utilisés dans la spécification du
dictionnaire
Les types dans Z sont définis par des ensembles
Il existe deux types d’ensemble dans Z :
ensemble définis explicitement c'est-à-dire pare énumération pour par
construction .
ensemble de donnée c'est-à-dire dans ensemble indique seulement
par des noms .leur définitions sont extraites plus tard lors de la
conception ou lors de l’implémentation .
On distingue les ensemble donné par des crochets
[ensemble1,ensemble2]
La méthode Z
Exemples 21
La méthode Z
Exemples d’applications exemple de dectionner
Nous définissons les types qui seront
utilisés dans la spécification du
dectionner :
Les schéma Z definissant les types
peut ressembler a ceci
22
Donnéeentresdesctionaire
Nom:[NOM]
Alias:[NOM]
Ou_comment:[TEXTE]
Description:seq char
Information:[DATE]
#description ≤ 2048
#information ≤ 2048Les invariant de
schéma il sont
vrai peu import
état des variables
Nom,TXT et date
sont des ensembles
donnée ,leurs
définition exacte
seront établies plus
tard
La méthode Z
Exemples d’applications exemple de dectionner
Nous définissons maintenant le dictionnaire :
23
DectionaireDonnees
DonnéeentresdIctionaire
dictionnaire : [NOM] ↛ {Donnéeentresdesctionaire}
Le dictionnaire de donnée est
défini comme une fonction
partielle.
Cette fonction partielle
admet comme domaine le
type NOM et comme rang
l’ensemble des valeur du
schéma
DonnéeEntreeDictionniare.
Le dictionnaire est défini par
une fonction partielle puisque
tous les noms ne sont pas
dans le dictionnaire,
La méthode Z
Exemples d’applications exemple de dectionner
Nous définissons maintenant le
dectionner ,
24
Init-dictionnaire
DictionnaireDonnee’
dicitionnaire’=∅
Nous exprimons l’initialisation
du dictionnaire :
La notion X’ (x décoré) signifie
l’état de x après une
opération si x est un schéma Z
alors tout ses variable sont
aussi décriées,
Dans notre cas nous créons le
schème init_Dectaionnaire
pour exprimer la mise en
ouvre du dictionnaire
Exemple d’un dictionnaire
Définissons l’opération ajouter pour notre dictionnaire :
D’abord ,il y aura erreur si le nom de la donnée est déjà dans le
dictionnaire et le continue du dictionnaire ne sera pas changés
Il est recommandé de scinder le spécification de l’opération ajouter
en deux partie:
Une partie qui décrit l’opération normale
L’autre doit décrit les situation d’exception,
La méthode Z
Exemples 25
La méthode Z
Exemples d’applications exemple de dectionner 26
Ajouter_Ok
∆DictionnaireDonnee
nom?:NOM
Entrée?:DonneeEntreeDictionnaire
Nom? ∉ 𝑑𝑜𝑚 dictionnaire
dictionnaire’ =dictionnaire ∪
{nom? ↦ entrée?}
Finalement ,l’opération
spécifiée est la combinaison
ces deux parties ,
Voici l’opération normale de
ajouter:
La méthode Z
Exemples d’applications exemple de dictionnaire 27
Ajouter_Erreur
ΞDictionnaireDonnee
nom?:NOM
erreur!: seq char
nom? ϵ𝑑𝑜𝑚 dictionnaire
erreur! = ‘données déjà dans le
dictionnaire ’
Voici la description des
situations exceptionnelles de
l’opération ajouter ,
La combinaison des schémes
Ajouter_Ok et Ajouter_Erreur
donne la description
compléte de l’operation
Ajouter ≡ Ajouter_OK ∨ Ajouter_Erreur
Exemple d’un dictionnaire
De la même façon , définissons l’opération chercher pour notre
dictionnaire :
D’abord , une erreur est signalée si le nom de la donnée n’est pas
dans dictionnaire et le contenu du dictionnaire ne sera pas changé,
Encore une fois, il est recommandé se scinder la spécification de
l’opération chercher en deux parties:
Une partie qui décrit l’opération normale
L’autre doit décrit les situation d’exception
La méthode Z
Exemples 28
La méthode Z
Exemples d’applications exemple de dectionner 29
Cherche_Ok
ΞDictionnaireDonnee
nom?:NOM
entrée?:DonneeEntreeDictionnaire
Nom? ∈ 𝑑𝑜𝑚 dictionnaire
Entrée! = dictionnaire(nom?)
Finalement ,l’opération
spécifiée est la combinaison
ces deux parties ,
Voici l’opération normale de
chercher :
La méthode Z
Exemples d’applications exemple de dictionnaire 30
recherche_Erreur
ΞDictionnaireDonnee
nom?:NOM
erreur!: seq char
nom? ∈ 𝑑𝑜𝑚 dictionnaire
erreur! = ‘données n’est pas dans
la dictionnaire’
Voici la description des
situations exceptionnelles de
l’opération chercher,
La combinaison des schémes
Chercher_Ok et
Chercher_Erreur donne la
description compléte de
l’operation
chercher ≡ Chercher_Ok ∨ Chercher_Erreur
le Birthday Book est un
exemple connu de
système qui permet de
retenir les dates
d’anniversaire
La méthode Z
Exemples d’applications
Décrire les aspects statiques :
31
le Birthday Book est un
exemple connu de
système qui permet de
retenir les dates
d’anniversaire
La méthode Z
Exemples d’applications
Décrire les aspects dynamiques :
l’opération AddBirthday permet de
rajouter une date d’anniversaire dans
le système :
32
le Birthday Book est un
exemple connu de
système qui permet de
retenir les dates
d’anniversaire
La méthode Z
Exemples d’applications
Décrire les aspects dynamiques :
Pour initialiser, un schéma
InitBirthdayBook est défini :
33
le Birthday Book est un
exemple connu de
système qui permet de
retenir les dates
d’anniversaire
La méthode Z
Exemples d’applications
Décrire les aspects dynamiques :
Puis on fait le raffinement: donc
BirthdayBook est raffine par le schéma
BirthdayBook1
34
le Birthday Book est un
exemple connu de
système qui permet de
retenir les dates
d’anniversaire
La méthode Z
Exemples d’applications
Décrire les aspects dynamiques :
l’opération AddBirthday est raffinée
par :
35
Variant Object-Z
Object-Z est une extension du langage Z qui permet de spécifier des
systèmes dans un style oriente objet. Dans une spécification Z, il est
difficile de déterminer les conséquences des opérations sur un
schéma d’état donne, car les schémas d’opération peuvent agir
sur les états de plusieurs schémas d’etat. La notion de classe est
introduite pour regrouper dans un même schéma toutes les
opérations la concernant.
La méthode Z
Variant Object-Z 36
Une classe Object-Z est représentée par une boîte contenant
la liste des classes héritées.
des définitions de types.
des définitions de constantes.
un schéma d’etat.
un Schema d‘etat Initial.
des schémas d’opération.
Le schéma d’état ne porte généralement pas de nom dans une
classe Object-Z.
La méthode Z
Variant Object-Z 37
Héritage :
L’héritage permet a une classe de considérer les définitions d’une
autre classe, (type, constante et les schémas).
Instanciation :
L’instanciation permet de renommer les variables, les types et les
constantes d’une classe.
La méthode Z
Variant Object-Z 38
Exemple :
Une classe Queue[T] qui
définit une file d’attente
de type FIFO
La méthode Z
Variant Object-Z 39
Bilan et extensions
Bilan
Bon complément d’une modélisation semi-formelle
Documentation rigoureuse
Preuve de programmes
La méthode Z
Bilan et extensions 40
Bilan et extensions
Extensions
Outils
Spécification défensive ou offensive
Orientation objet
La méthode Z
Bilan et extensions 41
Conclusion
Z est manifestement celIe qui nous semble la plus prometteuse,
Z est applicable a tous les domaines de l'informatique,
i1 est statique et non-procedural,
il a une base théorique saine; il est complet,
i1 combine la precision des mathematiques avec l'elegance
d'expression des Lang âges de programmation actuels
La méthode Z
Conclusion 42
Les méthodes formels : Des techniques et des outils basés sur les mathématiques et la logique formelle utilisé pour la spécification et la conception des systèmes informatiques
Les méthodes formels : Des techniques et des outils basés sur les mathématiques et la logique formelle utilisé pour la spécification et la conception des systèmes informatiques
Les méthodes formels : Des techniques et des outils basés sur les mathématiques et la logique formelle utilisé pour la spécification et la conception des systèmes informatiques
Les prédicatsprécisent
les propriétésdes variableset les relationsentre variables.
Les prédicatsprécisent
les propriétésdes variableset les relationsentre variables.
(y a un probleme apré en OUTRE, on devrait mettre un nom pas un verbe)
(y a un probleme apré en OUTRE, on devrait mettre un nom pas un verbe)
(y a un probleme apré en OUTRE, on devrait mettre un nom pas un verbe)
(y a un probleme apré en OUTRE, on devrait mettre un nom pas un verbe)
Les taile de varaible sont limité a 2 ko
Les taile de varaible sont limité a 2 ko
Les taile de varaible sont limité a 2 ko
(y a un probleme apré en OUTRE, on devrait mettre un nom pas un verbe)
Les taile de varaible sont limité a 2 koLe domain d'une terme t, noté Dom(t) est l'ensemble {p ∈ IN∗ | t(p) est déni}. Si Dom(t) est ni, alors t est un terme ni (dit simplement terme). Si Dom(t) est inni, alors t est un terme inni
Les taile de varaible sont limité a 2 ko
(y a un probleme apré en OUTRE, on devrait mettre un nom pas un verbe)
Les taile de varaible sont limité a 2 ko
Les taile de varaible sont limité a 2 ko
La première partie du schéma correspond a la déclaration des variables known et birthday. La seconde partie est la définition de l’invariant. La variable known est ici égale au domaine de la variable birthday.
La notation Δ indique que l’état du schéma BirthdayBook sera modifié par
cette opération. La notation ? signifie que les variables n? et d? sont des paramètres d’entrée de l’opération. Le prédicat n? _∈ known est la pré condition de l’opération. La notation birthday_ indique un changement d’état de la variable birthday par ex´ecution de l’op´eration. En l’occurrence, l’op´eration a pour effet de rajouter un ´élément `a la variable birthday. Un paramètre de sortie d’une opération est dénoté en Z par le nom de la variable suivi d’un
Ce schéma définit les nouvelles variables names, dates et hwm. Cette nouvelle spécification est plus concrète, car les variables sont désormais représentées par des tableaux de données.
L’opération a les mêmes paramètres d’entrée et de sortie que dans la spécification abstraite. L’ajout d’une date d’anniversaire dans le carnet est désormais spécifié en incrémentant la variable hwm de 1, et en surchargeant les variables names et dates pour compléter les tableaux de données par le nouveau nom et la nouvelle date respectivement.
faudrait revoir votre palnt de travail et vos titre
sur un papier et un stylo
Note : Les deux mécanismes sont généralement lies.
Parmi toutes les approches étudiées, Z est manifestement celIe qui nous semble la plus prometteuse, et ce pour de nombreuses raisons : Z est applicable a tous les domaines de l'informatique ; i1 est statique et non-procedural, mais prepare cependant Ie terrain pour des transformations qui aident a parvenir aux programmes; il a une base théorique saine; il est complet, c 'esta-dire que les spécifications peuvent être entièrement exprimées a l'interieur du cadre du langage ; et i1 combine la precision des mathematiques avec l'elegance d'expression des Lang âges de programmation actuels.