bonjour ! henri habrias professeur à luniversité de nantes nantes ! le centre du monde ! en poste...
TRANSCRIPT
Bonjour !
Henri HabriasProfesseur à l’université de Nantes
Nantes ! Le centre du monde !
En poste à l’IUTResponsable du DESS Génie logiciel, économie, droit et normesEnseignant en DEA et Formation doctorale
Je viens du centre du monde !
" Le constat est vieux d'un siècle, mais il a curieusement été passé sous silence. Si l'on représente le globe selon une projection polaire en tenant compte, non pas du pôle Nord, mais de la surface des terres émergées, Nantes apparaît au centre du monde." Ce constat a été fait par August Penck à la fin du XIXe siècle.
(voir Sciences & Vie, Hors série, n° 203, juin 1998, Dossier France, p. 10)
Bibliographie
J’ai écrit pour vous des livres :
Henri Habrias, Le modèle relationnel binaire, méthode I.A. (NIAM), Paris, Eyrolles, 1988, ISBN : 2-12-08169
Henri Habrias, Introduction à la spécification, préface de Hervé Gallaire, présentation par Michael Jackson, Masson, 1993, ISBN : 2-225-82768-0
Henri Habrias, La mesure du logiciel, 2ième édition, corrigée et augmentée, Teknea, 1994, ISBN : 2-87717-045-4
Bibliographie
David Lightfoot, La spécification formelle avec Z, traduit par H. Habrias, Teknea, 1994, ISBN : 2-87717-038-1
Henri Habrias, Dictionnaire encyclopédique du génie logiciel, Préface de Jean-Pierre Finance, Masson, 1997, ISBN : 2-225-85328-2
Henri Habrias, Les paradigmes des méthodes d’analyse et de conception in Génie logiciel: principes, méthodes et techniques A. Strohmeier, D. Buchs (Publié sous la direction de), 1996, Presses Polytechniques et universitaires romandes, ISBN:2-88074-296-X
RDV sur la toile…
M. Frappier, H. Habrias - Software Specification Methods, An Overview Using a Case Study, FACIT, Springer, 2000, ISBN : 1-85233-353-7, Site web associé
Henri Habrias, Spécification formelle avec B , Hermes/Lavoisier, octobre 2001, ISBN : 2-7462-0302-2, 416 pages
RDV sur mon site web :http://www.iut-nantes.univ-nantes.fr/~habrias/portailHabrias
Notre but…
Vous fournir des éléments pour aller, au-delà des mots souvent franglais, aux concepts essentiels cachés derrière les « nouveautés de l’informatique »
On parlera de mathématiques élémentaires, de variables, constantes, de substitution, de prédicat, d’expression, de substitution, de machine abstraite, de pré-condition, de garde, d’invariant, de composant logiciel, de méta-modélisation
Et d’UML
Notre parcours…
On remontera à Aristote, avec les entités et les propriétés…
Et on vous proposera de profiter de l’invention des ensembleset des relations
On vous proposera d’abandonner la métaphysique, de vous méfier des objets.
Et on montrera ce que l’on peut prouver sur une spécification.
Concepts de base
Pour éviter de compliquer
Le complexe suffit à la tâche !
Différence entre compliqué et complexe
Attribut, propriété, Attention !
" Des cinq approches discutées dans ce chapitre, l'approche ER est clairement la gagnante en termes de manque de définitions précises, manque de niveaux clairs d'abstraction, et manque de discipline mentale. La popularité de ER réside sans doute dans sa multitude d'interprétations, aussi bien que dans son utilisation de modes de pensée familiers mais obsolètes. »
Ted Codd, The Relational Model for Database Management, Version 2, Addison-Wesley, 1990, ISBN : 020114192 2
Rasoir d’Occam
Ou principe d'économie
Si un concept est inutile, il faut prendre le rasoir et le couper.
" Entia non sunt multiplicanda praeter necessitatem"
Il ne faut pas multiplier les entités au delà du nécessaire
Rasoir d’Occam
Ce principe portant le nom du logicien anglais nominaliste du XIV e siècle Guillaume d'Occam (illustré dans le roman Le nom de la rose d'U. Eco par Guillaume de Baskerville) qui a donné aussi son nom à un langage de programmation, " est illustré au siècle précédent par Thomas d'Aquin, puis Duns Scot, qui l'empruntent tous deux à un adage scolaire tiré d'Aristote (Physique), qui prétend s'inspirer d'Empédocle (!) :
Frustra fit per plura quod potest fieri per pauciora.
Il vaut mieux prendre des principes moins nombreux et de nombre limité, comme fait Empédocle.
La phrase d’Aristote
L'homme est mortel.Socrate est mortel.
mortel est l'attribut de l'homme mortel est l'attribut de Socrate
Le logicien pensait atteindre l'essence des choses à travers ces attributs.
Un jour l'un d'eux ayant entendu que l'homme est un animal sans plume, a collé des plumes à un homme pour montrer que la définition n'avait pas atteint l'essence de l'homme.
Complication
Dudule copie sur Huguette
Dudule est copiant sur Huguette
« copiant sur Huguette » attribut ou propriété de Dudule
Naissance des relations
La pensée scientifique a reconnu l'impossibilité d'atteindre l'essence des choses et la logique des relations
est née.
On ne se demande pas ce qu'est un attribut, on a des ensembles, des relations, un point c'est tout.
Et en ce qui concerne l'essence des choses…laissons ça auxmétaphysiciens
Et l’ontologie ?
C’est la « science de l’être en tant qu’être. »
C’est de la métaphysique.
De nos jours, des informaticiens pensent qu’ils vontmettre l’essence de l’être dans les ordinateurs !
S.V.P. Lisez Jacques Arsac
Les 4 sens du verbe « être »
1) Existence : « Dieu est »
2) Appartenance : « Socrate est mortel »
3) Inclusion : « le Niçois est français »
4) Dénotation : « l’étoile du matin est l’étoile du soir »
« Etoile du matin, étoile du soir dénotent Vénus »
G. Fre
G. Frege
Prédicat d’appartenance
Dudule
promo
Dudule : promo
Prédicat d’appartenance
Inclusion
Un ensemble est inclusdans un autre ensemble.
Un ensemble peut appartenirà un autre ensemble (qui est alors un ensemble d’ensembles)
{1, 2, 4, 8} <: {1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2} : {{2}, {}, {1, 2}}
Relation
a
b
c
d
e 12
3
4
5
Relation quelconque
Ensemble de départ Ensemble d ’arrivéeou cible (target)
domaine
Codomaine ourange
Fonction partielle
a
b
c
d
e 12
3
4
5
Fonction partielle
Fonction totale
a
b
c
d
e 12
3
4
5
Fonction totale
Fonction partielle
a
b
c
d
e
2
5
Fonction partielle surjective
Totaliser les fonctions
On peut rendre une fonction totale en utilisant la « valeur nulle »
Mais si on suppose qu’on a une valeur nulle dans chaque Ensemble de base, toutes les fonctions sont totales et toutesLes relations ont leur domaine qui est égale à l’ensemble deDépart.
Alors que reste-t-il comme contrainte ? La contrainte de fonctionnalité, dite aussi « unicité »
Totalisation d’une fonction
a
b
c
d
e 12
3
4
5
Fonction partielletotalisée !
nulle
Bijection
a
b
c
d
e
2
5
Fonction totale surjectiveBijection
Image relationnelle
a
b
c
d
e 12
3
4
5
R1 [{a, b, c}] = {2, 4}
Image relationnelle
Restriction de domaine
a
b
c
d
e 12
3
4
5
r1
R1 |> {2, 5} = {(a, 2), (b, 2), (d, 5)}
Restriction de codomaine
Restriction de domaine
a
b
c
d
e 12
3
4
5
r1
{a, b} <| r1 = {(b, 2), (c, 4)}
Restriction de domaine
Antirestriction de domaine
a
b
c
d
e 12
3
4
5
r1
{b, c} <<| r1= {(a, 2), (a, 4), (d, 5)}
Antirestriction de domaine
Composition de relations
a
b
c
d
e
2
5
1
3
4w
x
z
y
r1 r2
r1 ; r2 == r2 o r1
Variable, ensemble
Ne pas confondre un ensemble et une variable
Promo est une variable qui a comme invariant d’être un ensembled’étudiantsPromo <: ETUDIANT
La valeur de Promo peut changer.On peut faire :Promo := Promo \/ {dudule}
{dudule, duchnock, dutif} n’est pas une variable ! Un ensemblene peut être modifié, une variable est modifiable.
Alors, un attribut, c’est quoi ?
C’est :- soit la valeur d’une fonction f(x)- soit l’image relationnelle d’une relation r [{x}]
f
f(a) = 7
a 7
r
a 7
b 8
R ({a,b}] = {7, 8}
b
c
Application de fonction Image relationnelle
Attribut
Pour une relation vue sous forme d’un tableau (lignes et colonnes)Attention de ne pas tout mélanger !
- nom d’une colonne - valeur d’une « case »- valeur de plusieurs cases (ex : valeur des numéros produits commandés sur une commande donnée)
Valeur vs objet
Encore complication !
Un peu de théorie élémentaire. Essentiel si on ne veut pas compliquer
Différence entre prédicat et expression
Différence entre prédicat et expression
Un prédicat se prouve. On peut prouver qu’il est faux.
Nantes est sur la LoireDudule est l’amant d’Huguette5 = 8{1, 2, 3} <: {1, 2, 3, 4, 5}2 : {1, 2, 3}
Ce n’a pas de sens de vouloir prouver une expression
{1, 2, 3}8DuduleSophia-Antipolis
vraifaux
{(1, b), (4, b), (7, c)}
Valeurs
On peut appeler les expressions des valeurs.
En B, on passe d’un prédicat à une expression, ainsi :
Bool (5 = 9) = faux
Pourquoi distinguer valeur et objet ?
« Vous savez pourquoi ça n'intéresse pas les gens ?Parce que ce ne sont pas des événements.Ce sont des anecdotes!Première anecdote :La main de ma soeur.Deuxième anecdote :Une culotte.Troisième anecdote :Un zouave.Seulement, si vous prenez la première...que vous la glissiez dansla deuxièmequi appartientau troisième...Vous obtenez un événement sur lequelon n'a pas fini de jaser ! » R. Devos
Un nom peut devenir valeur !
N°étudiant sexe Bac
23 masc C
45 masc B
78 fem C
93 masc C
Attribut devenant valeur !
N° étudiant Attribut Valeur
23 sexe masc
23 bac C
45 sexe masc
45 bac B
78 sexe fem
78 bac C
43 sexe fem
43 bac C
Triplets objet, attribut, valeur
Attribut : relation binaire d ’un ensemble d ’objets vers un ensemble de valeurs
voiturevestevélo
chapeau
bleurougevert
jaunenoir
Objets ValeursAttribut : couleur
Triplets O-A-V
Objet Valeur
PrédicatSujet Objet
Attribut
PropriétéRessource Objet
Le langage LEAP (Feldman, Rover, 1969)
A.O = V fils.Jean Melle = Henri Melle l ’assoc. Si dans la baseA.O = x fils.Jean Melle = x fils de Jean MelleA.x = V fils.x = Henri Melle père de Henri Mellex.O = V x.Jean Melle = Henri Melle nom de la relation entre
Jean Melle et Henri MelleA.x = z fils.x = z tous les couples père-fils
de la basex.Z = V x.z = Henri Melle Toutes les associations
ayant Henri Melle comme3e composant
x.O = z x.Jean Melle = z Toutes les associationsayant Jean Melle comme2e composant
x.y = z x.y = z Toutes les assoc de la base
Langage et métalangage
Huguette, mange ta soupe !Oui maman !Huguette, range la table !Oui, maman !Huguette, arrête de dire « Oui maman » !Oui maman !
Langage et métalangage
C’est complètement fou
Le mot court est plus long que le mot long !
C’est complètement fou « Le mot court est plus long que lemot long » !
C’est complètement fou « Le mot ‘court’ est plus long que le
mot ‘long’ »
Objet, où es-tu ?
" Revenons à une situation décrite par Spade : j’ai devant moi deux stylos à bille noirs. Le point crucial est : combien de couleurs vois-je ? Deux réponses s’offrent. La première : je vois une seule couleur – la noirceur (blackness) qui est " simultanément partagée par les deux stylos ou commune aux deux " -, une seule et même couleur donc, bien qu’inhérente à deux choses distinctes et présente en même temps en deux endroits différents. Cette position, ce que Spade appelle " croire aux universaux ", est le réalisme : admettre que des " entités universelles " comme la noirceur sont partagées par toutes les choses qui présentent une même propriété (ici, être noires) et qu’à ce titre elles leur sont communes.
2 crayons, et pourquoi pas 2 couleurs ?
A l’opposé, évidemment, le nominalisme est caractérisé comme celui qui voit deux noirceurs, autant de noirceurs que de stylos. Deux noirceurs qui sont " semblables ", certes, mais qu’ " il suffit de regarder pour voir qu’elles ne sont pas et n’en restent pas moins deux noirceurs ".
Ainsi illustré, le problème des universaux est simple : y-a-t-il ou non deux couleurs dans les stylos de P.V. Spade ? " Le réalisme et le nominalisme sont les deux principales réponses à cette question. " (…) " le réaliste est celui, qui voyant la noirceur partout où il y a des choses noires, en conclut qu’il y a en chacune la même " entité universelle ". Alain de Libera in La querelle des universaux, Seuil, 1996, p. 18-19
Sémiologie
Stoïciens
signifiéSemainomenon : ce qui est exprimé,ou contenu, qui ne représente pas uneentité physique
référent
Tynchanon :Objet auquel on seréfère, entité physiqueou événement ouaction
signifiant
Seimainon :expression perçuecomme entitéphysique
Sémiologie
Stoïciens
signifiéIdée, concept de cheval« cheval »
référentsignifiant
/cheval/Tous les chevauxexistant, ayant existé,qui existeront
Les stoïciens
Platon --> Aristote --> Théophraste -->les Mégarites et les Stoïciens
SémiologieExistant, ayant existé, qui existeront ? !
signifié
référentsignifiant
/licorne/
« licorne »
Ensemble vide !« le référent licornen ’a jamais eu d ’existence réelle »
SémiologieExister ?
Etre vivant (biologie ?)
N ’y a-t-il pas un objet qui existe bien et qui est la licorne ?
Allez voir la tapisserie de la Dame à la licorne au Muséedu Moyen Age à Paris !
Pourquoi toutes les licornes peintes, sculptées, tissées ne seraient-elles pas des référents ?
Les licornes n ’existeront plus le jour où on aura détruit toutes les licornes, qu ’il n ’y aura plus aucune trace de
licornes dans les livres, musées, etc. Quand la licorne aura disparu de la mémoire de l ’humanité.
SémiologieExister ?
Etre vivant (biologie ?)
N ’y a-t-il pas un objet qui existe bien et qui est la licorne ?
Allez voir la tapisserie de la Dame à la licorne au Muséedu Moyen Age à Paris !
Pourquoi toutes les licornes peintes, sculptées, tissées ne seraient-elles pas des référents ?
Les licornes n ’existeront plus le jour où on aura détruit toutes les licornes, qu ’il n ’y aura plus aucune trace de
licornes dans les livres, musées, etc. Quand la licorne aura disparu de la mémoire de l ’humanité.
SémiologieSignifiéinterprétant (Pierce)sens (Frege)intension (Carnap)designatum (Morris, 1938)signficatum (Morris, 1946)concept (Saussure)connotation (Stuart Mill)image mentale (Saussure, Pierce)contenu (Hjelmslev)état de conscience (Buyssens)
référentsignifiant
Sémiologie
signifié
Référentobjet (Pierce)denotatum (Morris)Bedeutung (Frege)dénotation (Russell)extension (Carnap)
signifiant
Qu ’est ce que le signe ? Ce qui est à gauche ?
Sémiologiesignifié
référentSignifiant (Saussure)signe (Pierce)symbole (Ogden(Richards)véhicule du signe (Morris)expression (Hjelmslev)representamen (Pierce)sème (Buyssens)
Sémiologie
signifié
référentsignifiant
Linguistique
Sémiologie
Signifiant :
« aliquid stat pro aliquo »
« Something which stands to somebody for something in some respect or capacity »
« Quelque chose qui tient lieu pour quelqu ’un de quelque chose sous quelque rapport ou à quelque titre »
Pierce
Sémiologique
Sémantique : le signe dans sa relation à ce qu ’il signifie
syntaxe
pragmatique : le signe est perçu en fonction de ses origines,et des effets qu ’il a sur ses destinataires
Rhétorique
Modèle
Deux sens :
Premier sens
-interprétation : attribution d'un sens à des énoncés formels de sorte qu'ils soient vérifiés
La géométrie devient un modèle d'un langage formel, plutôt que la formalisation de propriétés idéalisées à partir d'observation de l'espace sensible.
Modèle
Etude des relations entre ensembles d'énoncés et ensembles de modèles de ces énoncés.
Un modèle d'un énoncé fait dans un langage formel est une interprétation (association d'un sens aux symboles du langage formel) où cet énoncé est vrai.
Deuxième sens :
-associer à une "réalité empirique" un énoncé formel.
Minsky : Un objet O est un modèle d'une réalité R si O permet des répondre aux questions que l'on se pose sur R.
Modèle et interprétation
" les deux sens du concept de modèle ne sont que les deux faces complémentaires d'une même activité : interpréter
Interpréter est inéluctable, qu'il s'agisse
- d'interpréter un formalisme, ou, inversement- d'interpréter mathématiquement un ensemble de données.
D'une part, parce qu'un langage qui n'aurait pas de modèle n'a aucun intérêt, d'autre part et réciproquement, parce que l'expression n'est pas le miroir de l'expérience."
Hourya Sinaceur
Spécifier
Attention !Spécifier n’est pas dessiner des boîtes et des flèches (boxologie)
Il faut :1) Une syntaxe formelle2) Une sémantique formelle (qui peut être dénotationnelle ouopérationnelle
Spécifier n’est pas écrire un algorithme. Mais on passe de laSpéc au programme en prouvant le raffinage.
Boxologie
Complication
Jules est à côté de Paul.
« à côté de Paul" serait l'attribut de Jules ?!
Et pourquoi pas "à côté de Jules" l'attribut de Paul ?
Théorie des ensembles
Prédicat d’appartenanceEnsembles de baseProduit cartésienEnsemble des sous-ensembles
Rappel : À gauche du signe d’appartenance, si on a un ensemble, à droite on a un ensemble d’ensembles.A gauche du signe d’appartenance, si on a un ensemble d’ensemblesà droite, on a un ensemble d’ensemble d’ensembles
Axiome de fondation
Partant d’un ensemble, si on prend un de ses éléments (une boîte)Et qu’on prend un élément dedans (une boîte),Et qu’on prend un élément dedans cette boîte, etc.On est obligé de s’arrêter.On arrive à un niveau où l’on ne peut plus décomposer.
Cet axiome interdit qu’un ensemble puisse se retrouver à l’intérieurde lui-même.X : X
Typage
« Dans un village d’Andalousie, le barbier rase toutes les personnesQui ne se rasent pas elles-mêmes »
Qui rase le barbier ?
Invariant
MACHINEMDBS
SETSETUDIANT; GROUPE = {g1, g2, g3}
VARIABLESpromo ,estMembreDe
INVARIANT promo <: ETUDIANT &estMembreDe : promo +-> GROUPE
INITIALISATIONpromo := {} || estMembreDe := {}
Ensembles de base
On construit tout ensemble en partant des ensembles de base
Vous êtes habitués par vos profs de maths à écrire :Soient les ensembles A, B, C
S’écrit en B
SETSA; B
Ensembles donc constantes !Incommensurables.
On n’a pas le droit d’écrire :A /\ B ou encore A \/ B
Produit cartésien et POW
On construit des ensembles à l’aide du produit cartésien (*)Et de l’ensemble des sous-ensembles (ens. des parties) POW
Attention ! Ne pas confondre un élément d’un ensemble de baseet un ensemble.
Eléments des ensembles de base
SETS DEPARTEMENT; COMMUNEVARIABLES communes, départements, estDansINVARIANT communes <: COMMUNE & départements <: DEPARTEMENT & estDans : communes -->> départements
SETS
SETS COMMUNEVARIABLES communes, départementsINVARIANT communes <: COMMUNE & départements <: POW (COMMUNE)
Un département est un ensemble de communes. On ne déciderde créer deux nouveaux départements sans, en même temps,Décider de communes qui le constitueront. Rien ne distingue unensemble vide de communes d’un autre !
1ière forme normale de Codd
Qu’est-ce qu’une relation n-aire (à la Codd) en Première forme normale ?
Une relation dont les constituants prennent pour valeur deséléments d’ensembles de base
Et une relation n-aire ?schéma d'une relation:
Personne (N° personne, Nom de Personne, ville de naissance, ville d'études)
attributs de la relation :
N° personne, Nom, ville de naissance, ville d'études
ville de naissance et ville d'études ont le même domaine VILLE
Personne <: NAT * NOM * VILLE * VILLE
Regroupement de fonctions binaires
aPourN° : PERSONNE+-> NAT /* N°personne == ran (aPourN°) */
aPourNom : PERSONNE +-> NOM /* Nom de Personne == ran (aPourNom) */
estNéA : PERSONNE +-> VILLE /* ville de naissance == ran (estNéA) */
faitSesEtudesA : PERSONNE +-> VILLE /* ville d'études == ran (faitSesEtudesA) */
La méthode B
Son auteur : Jean-Raymond Abrial
C’est lui qui a conçu la notation Z,
Puis B
Qui est la méthode qui a fait l’objet du plus grand nombre decommunications à la conf mondiale sur les méthodes formelles
Un succès : le logiciel sécuritaire du métro automatique Meteore.
De la spec au code avec preuve mathématique.
Une machine abstraite
Variablesavec un invariant
Constantesavec propriétés
op1 op3
op4op2
Un état encapsulé
Une interface : des « boutons », des noms d’opération avec paramètresd’entrée, de sortie
Initialisation Corps des opérations
Machine abstraite
MACHINE (paramètres)CONSTRAINTS
prédicat sur les paramètresSETS
ensembles de baseCONSTANTS
liste des constantesPROPERTIES
prédicat sur les constantesVARIABLES
liste des variables
INVARIANTprédicat sur les variables
INITIALISATIONpour s’assurer que
notre spec a un modèleOPERATIONS
préconditionnéesougardées
END
Autres types de machines
En B, on a aussi :des REFINEMENTdes IMPLEMENTATIONS
Tout le développement est assisté par la preuve.
2 variables
promo
ETUDIANTg1
g2
g3
GROUPEestMembreDe
VARIABLES estMembreDe, promo
INVARIANT promo <: ETUDIANT & estMembreDe : promo +-> GROUPE
Pré-condition
MACHINEMDBS
SETSETUDIANT; GROUPE = {g1, g2, g3}
VARIABLESpromo ,estMembreDe
INVARIANT promo <: ETUDIANT &estMembreDe : promo +-> GROUPE
INITIALISATIONpromo := {} || estMembreDe := {}
OPERATIONS ajoutMembre (ee, gg) = PRE ee : promo & gg : GROUPE & ee /: dom (estMembreDe) THEN
estMembreDe := estMembreDe \/ {ee |-> gg}END;
On peut ne pas respecter la pré-condition
Une pré-condition est une pré-condition d’emploi.
Rien ne vous empêche de ne pas respecter la pré-condition. MaisVous êtes prévenus. Si vous voulez que l’opération fasse ce Que dit son nom, il faut respecter la pré-condition.
Ex.
Si vous ne respectez pas la pré-condition de la division, (ne pas donner un diviseur = 0) vous n’aurez pas une fonction division.
Crash !
La pré-condition d’une opération n’est pas dans le code de cetteopération.
Ce n’est pas alors que vous avez sauté par la fenêtre qu’il fautexécuter « si fenêtre à plus de 5 mètres, ne pas sauter »…
Trop tard…C’est le crash !
Comme pour Ariane 5. Qui est sorti dudomaine du vol. (voir notion de domaine d’une relation)
Le crash d’Ariane 5
Accélération : min4..max4
x : min4..max4
Fonction de conversion de A4
y
Ariane 4
Ariane 5
Accélération : min5..max5
x : min4..max4
Fonction de conversion de A4
y
Non respecté car mas5 > max4
Levée d’une exception
Commutation sur un autre calculateur et exécution de la même fonction
La chute…après la faute !
Y := code erreur
ComposantB
Braquage tuyères
Copie du composant B
La garde
La garde empêche d’effectuer l’opération.
Quand on raffine on renforce la garde, on étire le temps.
Si nous avons le temps, nous parlerons du « B événementiel »
Calcul de la WPC
[x:= x + 1] (x < 100)= x + 1 < 100 <=> x < 99
[a := y ||z := k] (x > k)= y > k
[x, b := b, a] (a <= b)= a<= b
Plus faible pré-condition (Dijkstra)
IndéterminismeMACHINE
MDBSSETS
ETUDIANT; GROUPE = {g1, g2, g3}VARIABLES
promo ,estMembreDeINVARIANT
promo <: ETUDIANT &estMembreDe : promo +-> GROUPE
INITIALISATIONpromo := {} || estMembreDe := {}
ajoutEtudiant = PRE ETUDIANT – promo /= {}
THEN ANY ee WHERE ee : ETUDIANT – promo THEN
promo := promo \/ {ee}END;
Définitions
MACHINEMDBS
SETSETUDIANT; GROUPE = {g1, g2, g3}
VARIABLESpromo ,estMembreDe
INVARIANT promo <: ETUDIANT &estMembreDe : promo +-> GROUPE
INITIALISATIONpromo := {} || estMembreDe := {}
DEFINITIONS groupesAffectés = ran (estMembreDe)
Une définition n’est pasune variable !
Ce qu’est une spéc abstraite
Une spécification abstraite :
- n’est pas exécutable- peut être indéterministe- les opérations peuvent être pré-conditionnées- pas de séquencement
Intérêt ?
Pré-condition
La pré-condition permet :
- d’expliciter l’opération par ses conditions d’exécution- de prouver que, si l’on appelle l’opération sous sa
pré-condition, l’invariant est respecté
Bien sûr, la preuve est relative aux « propriétés » exprimées dansl’invariant. Si invariant « léger », on ne prouvera pas grand chose !
Obligation de preuve
Pré-condition & Invariant => [Substitution] Invariant
INVARIANT x < 100
OPERATIONSincrémentation =
PRE x < 100
THENx := x + 1
END;
Calcul de pré-condition
[x:= x + 1] (x < 100)= x + 1 < 100 <=> x < 99
Ex-falso quodlibet
P or Q not P => QP Q (P => Q) & (Q => P)
btrue or Q btrueD’après la définition du or, on a :
btrue or Q not (btrue) => Q bfalse => Q
Donc il faut considérer que bfalse => Q est toujours vrai.
To be or not to be !
Idem non esse et non probari
Ne pas être ou ne pas être prouvé, c'est tout un.
De la logique à l’informatique
Les axiomes des substitutions généralisées
[x := E] P P [E/x][x, y := E, F] P P[E, F/x, y][skip] P P[PRE P THEN S]I P & I => [S] I[SELECT P THEN S] I P => [S] I Garde[CHOICE S OR T] I [S] I & [T] I Choix indéterministe[IF E THEN S ELSE T]I (E & [S]I) or (not E & [T] I)
Le raffinage
1) On réduit l’indéterminisme
2) On affaiblit les pré-conditions
3) On renforce les gardes
4) On s’approche de la machine concrète
Avec introduction de :- du séquencement et donc de la boucle
Et on prouve que le raffinage se fait en respectant les fonctionnalités
Raffinage
Raffinage
Avant Après
Abstrait
Concret
Opération S
Opération T
II
J J
Réduction indéterminisme
I & J & P => Q & [T] not [S] not J
Composant
Comme « objet », le terme recouvre tout et n’importe quoi pourvuQue ça fasse vendre !
D’après Clemens Szyperski :« Component Software, Beyond Object-Oriented Programming »Second edition, Addison-Wesley, 2002, Pearson Publications
Caractéristiques essentielles
-unité indépendante de déploiement
Donc séparé de son environnement et des autres composantsEncapsule ses servicesN’est jamais déployé partiellement
-un tiers ne peut avoir accès aux détails de construction du Composant
Donc a une spécification claire. Il encapsule son implantation.Interagit avec son environnement par une interface bien définie
Caractéristiques essentielles (suite)
- ne doit pas avoir un état observable « extérieurement »
i.e. il ne doit pas pouvoir être distingué de copies de lui-même
(si ce n’est des choses comme son numéro de série pour lecomptable)Un état d’un composant sert pour des raison de performances (comme un cache)Un composant est chargé et activé dans un système.Ca n’a aucun sens d’avoir plusieurs copies d’un composantdans un système
Composant vs Module
Exemples :
-un serveur de base de données
-Attention : ce n’est pas parce qu’il y a peut-être une seule basede données maintenue par ce serveur qu’il faut confondre l’instance avec le concept
L’ensemble { base de données , serveur} peut être vu commeun module avec un état observable.
Le plan vs les objets
-Séparation entre
- le plan que l’on ne peut modifier (« immutable »)
- les instances que l’on peut modifier (« mutable »)
(donc ce sont des variables et non des expressions)
Confusion !
Le concept de composant n’a pas trait au niveau de l’objet !
N ’est donc pas relié à la vie des objets
Ne traite pas de l’état de l’objet.
Objet es-tu là ?
Caractéristiques de l’objet (chez les informaticiens) :
-« unité d’instanciation » (c’est un élément d’un ensemble, Élément obtenu par demande d’instanciation à la classe dontl’objet est un représentant). Il a une « identité unique »(curieuse expression. Qu’est-ce qu’une identité non unique ?)
Ne peut être instancié qu’en partie.
On peut avoir aussi des objets « prototypes » dont on fait des clones.
-doit avoir un état qui peut être observable extérieurement
-Encapsule son état et son comportement
La notation UML…
… utilisons le concept d’ensemble (une relationest un ensemble)
… et évitons les problèmes connus pendant 20 siècles !
Une mauvaise notation (OMT)
Rappel : une information réduit le champs des possible. C’estune contrainte.
A B A B
A B A B
A B
A >->> B A >--> B
A --> B A >+-> B
A <--> B
Une mauvaise notation
Avec cette notation, plus il y a de contrainte, moins on a designifiants !
Imaginez la même chose pour le code de la route ou pour unun code de droit !
Le progrès ?
« C'est vrai, nous devons avoir quelque part, un outil à dessiner des boîtes et des flèches qui s'appelle MEGA. Autrefois il dessinait des rectangles et des ovales (MERISE) aujourd'hui c'est pire, il y a toutes sortes de boîtes et flèches (c'est de l'UML). Inutile de dire que cela n'apporte rien en terme de réflexion sur un développement informatique. Il y a des personnes qui trouvent cela bien car ils remplissent des pages de dessins et quand on leur demande d'en donner la signification précise, on entend tout et n'importe quoi. Bien sûr, le programmeur ne se sert absolument pas de ces dessins, mais il fait semblant pour que tout le monde soit satisfait ... Cela doit être le progrès. » Monsieur X, Chef de projet dans un gros service informatique
Notation UML
A B
A >->> B
1 1 R ( A, B)
A B
A B
A >--> B
A >+-> B
0..1 1R1(A, B)
R2 (B)
0..1 0..1 R1 (A, B)
R2 (A) R3 (B)
« association qualifiée » ?!
salle
NAT
Bât
U
estDans
aPourN°
estDans : salle --> Bât
aPourN° : salle --> NAT
estDans >< aPourN° : salle >--> Bât * NAT
Salle (n°)
salle bâtiment
Bottle
Size : Number product(Date)
SETS BOUTEILLE; FABRICANT; DATEINVARIANT fabricants <: FABRICANT & bouteilles <: BOUTEILLE & aEtéProduitePar : bouteilles -->> fabricants & aEtéProduiteLe : bouteilles -->> DATE & aPourTaille : bouteilles +-> NAT &
aEtéProduitePar >< aEtéProduiteLe : bouteilles >--> fabricants
Manufacturer
Automates de Harel en B
S1 Sn…
SETSSS = {S1, …, Sn}
VARIABLESss
INVARIANTss : SS
INITIALISATIONss := S1
Initialisation indéterministe
S1
Sn
…
Initialisationindéterministe
ss :: SS
Transition
S1 S2E
E =IF ss = S1
THENss := S2
END;
Plusieurs transitions, même évt
S1 S2E
Si S`E
OPERATIONE =
CASE ss OF EITHER S1 THEN ss := S1…OR Si THEN ss := ss` END;
…
Action sur événement
S1 S2E/act
OPERATIONSE =
IF ss = S1 THEN ss := S2 ||act
END
Action sur initialisation
S1/act
INITIALISATIONss := S1 ||act
Condition sur transition
S1 S2E [cond]/act
OPERATIONSE =
IF ss = S1 & cond THEN
ss := S2 ||act
END;
Conditions sur plusieurs trans.
S1
S1’E[cond1]/act
S1’’E[condi]/acti
OPERATIONSE = SELECT ss = S1 & cond1 THEN ss := S1’ || act1…WHEN ss = S1 & condi THEN ss := Si’ || actiELSE skipEND;
Transition avec paramètre
S1 S2E(para) [cond]/act
OPERATIONSE (para) =
IF ss = S1 & cond THENss := S2 ||act
END;
Transitions simultanées
S1
S3
S2
E(para) [cond1]/act1
[cond2]/act2
E(para) =IF ss = S1 & cond1 &cond2 THEN
ss := S3 ||act1 ||act2
END;
Entrée dans super état
S1 R1 R2…E
S2
SETSSS = {S1, S2}; RR = {R1, R2}
VARIABLESss, rr
INVARIANTss : SS & rr : RR
OPERATIONSE = IF ss = S1 THEN ss := S2 || rr := R1 END;
Etats indépendants simultanés
Q1
Qn Rm
R1
… …
Q RS1
SETSSS = {S1,…, Sn};QQ = {Q1,.., Qn};RR = {R1,…, Rm}
VARIABLESss, qq, rr
INVARIANTss : SS & qq : QQ & rr : SS
Transition vers deux sous-états
Q1
R1 Rm
Qn
…
…
S1
S1
OPERATIONSE = IF ss = S1 THEN ss := S2 || qq := Q1 || rr := R1 END;
2 transitions dans 2 états conc.
Q1
R1 R2
Q2
S1
OPERATIONSE = BEGIN IF qq = Q1 THEN
qq := Q2 END || IF rr = R1 THEN
rr := R2 ENDEND;
E
E
Communication
Communication entre états concurrents :
1) Les états concurrents peuvent communiquer par variables globales.Les var. globales peuvent être mises à jour dans les actions et luesDans les actions et les conditions2) La condition ou l’action d’une transaction peut dépendre du sous-État concurrent d’un état concurrent3) Les états concurrents peuvent communiquer par diffusion des Événements. Sur la diffusion d’un événement, tous les étatsConcurrents réagissent simultanément.
Génération des événements
Les événements sont :- soit générés de manière interne à travers une diffusion- soit générés extérieurement par l’environnement
-En B, la diffusion d’un événement, est exprimée par l’appel de l’opé-ration pour cet événement
S1 S2E1/E2
OPERATIONSE = IF ss = S1 THEN ss := S2 || E2 END;
Q
R
T
V
U
X Y
W
P
S
E H E
F/G
G/H
E
(Q, T, X) -E--> (R, U, X)
(R, U, X) - E --> (Q, V, Y)
MACHINEM
SETS P={Q, R}; S = {T, U, V}; W = {X, Y}VARIABLES p, s, wINVARIANT p:P & s:S & w:WINITIALISATION p := Q || s := T || w := XDEFINITIONS
HH = IF p=R THEN p:= Q END;GG = IF w = X THEN w:= Y END;
OPERATIONSE = BEGIN IF p = Q THEN p:= R END|| CASE s OF EITHER T THEN s := U OR V THEN s := T END END || IF w = Y THEN w := X END END;F = IF s = U THEN s := V || GG END;G = GG;H = HHEND;
Réutiliser des composants
- La réutilisation nécessite l’abstraction : on ne doit pasavoir à lire le code de l’opération - de disposer des Pré-conditions d’emploi des opérations- d ’être sûr que si on respecte la pré-condition l’opération faitce qui est annoncé (choisir un nom qui est convenable.)
On ne fera pas l’économie de l’attention au choix des mots.
Vers le génie logiciel
Nous n’avons pas parlé du paradigme des processusSéquentiels communicants (CCS de Milner, CSP de Hoare)
Ce sera pour une autre fois… mais vous pouvez fréquentervotre bibliothèque et le web.
On n’a pas attendu UML pour utiliser automates, expressionsrégulières, cardinalités (pardon multiplicité !!!) de relations.
Bon voyage dans le monde du génie logiciel à construire.