Bonjour ! Henri Habrias Professeur à l’université de Nantes Nantes ! Le centre du monde ! En poste à l’IUT Responsable du DESS Génie logiciel, économie, droit et normes Enseignant 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 ensembles et 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 aux mé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 vont mettre l’essence de l’être dans les ordinateurs ! S.V.P. Lisez Jacques Arsac
Les 4 sens du verbe « être » G. Frege Existence : « Dieu est » Appartenance : « Socrate est mortel » Inclusion : « le Niçois est français » Dénotation : « l’étoile du matin est l’étoile du soir » « Etoile du matin, étoile du soir dénotent Vénus » G. Fre
Prédicat d’appartenance Dudule : promo Dudule promo Prédicat d’appartenance
Inclusion Un ensemble est inclus dans un autre ensemble. {1, 2, 4, 8} <: {1, 2, 3, 4, 5, 6, 7, 8, 9} Un ensemble peut appartenir à un autre ensemble (qui est alors un ensemble d’ensembles) {1, 2} : {{2}, {}, {1, 2}}
Relation Ensemble de départ Ensemble d ’arrivée ou cible (target) e 1 2 b 3 c 4 Codomaine ou range d 5 domaine Relation quelconque
Fonction partielle e 1 a 2 b 3 c 4 d 5 Fonction partielle
Fonction totale e 1 a 2 b 3 c 4 d 5 Fonction totale
Fonction partielle e a 2 b c d 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 toutes Les relations ont leur domaine qui est égale à l’ensemble de Départ. Alors que reste-t-il comme contrainte ? La contrainte de fonctionnalité, dite aussi « unicité »
Totalisation d’une fonction 1 a 2 b 3 c 4 d 5 nulle Fonction partielle totalisée !
Fonction totale surjective Bijection e a 2 b c d 5 Fonction totale surjective Bijection
Image relationnelle e 1 a 2 b 3 c 4 d 5 R1 [{a, b, c}] = {2, 4}
Restriction de domaine 1 a 2 b 3 c 4 d 5 R1 |> {2, 5} = {(a, 2), (b, 2), (d, 5)} Restriction de codomaine
Restriction de domaine 1 a 2 b 3 c 4 d 5 {a, b} <| r1 = {(b, 2), (c, 4)} Restriction de domaine
Antirestriction de domaine 1 a 2 b 3 c 4 d 5 {b, c} <<| r1= {(a, 2), (a, 4), (d, 5)} Antirestriction de domaine
Composition de relations 1 x a 2 y b 3 z c 4 w d 5 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 ensemble d’étudiants Promo <: ETUDIANT La valeur de Promo peut changer. On peut faire : Promo := Promo \/ {dudule} {dudule, duchnock, dutif} n’est pas une variable ! Un ensemble ne peut être modifié, une variable est modifiable.
Alors, un attribut, c’est quoi ? - soit la valeur d’une fonction f(x) - soit l’image relationnelle d’une relation r [{x}] Application de fonction Image relationnelle f r a 7 a 7 b 8 b c f(a) = 7 R ({a,b}] = {7, 8}
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 Loire Dudule est l’amant d’Huguette 5 = 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} 8 Dudule Sophia-Antipolis {(1, b), (4, b), (7, c)} vrai faux
En B, on passe d’un prédicat à une expression, ainsi : 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 dans la deuxième qui appartient au troisième... Vous obtenez un événement sur lequel on n'a pas fini de jaser ! » R. Devos
Un nom peut devenir valeur ! N°étudiant sexe Bac 23 masc C 45 B 78 fem 93
Attribut devenant valeur ! N° étudiant Attribut Valeur 23 sexe masc bac C 45 B 78 fem 43
Triplets objet, attribut, valeur Attribut : relation binaire d ’un ensemble d ’objets vers un ensemble de valeurs Objets Attribut : couleur Valeurs voiture veste vélo chapeau bleu rouge vert jaune noir
Triplets O-A-V Objet Valeur Attribut Objet Sujet Prédicat Objet Ressource Propriété
Le langage LEAP (Feldman, Rover, 1969) A.O = V fils.Jean Melle = Henri Melle l ’assoc. Si dans la base A.O = x fils.Jean Melle = x fils de Jean Melle A.x = V fils.x = Henri Melle père de Henri Melle x.O = V x.Jean Melle = Henri Melle nom de la relation entre Jean Melle et Henri Melle A.x = z fils.x = z tous les couples père-fils de la base x.Z = V x.z = Henri Melle Toutes les associations ayant Henri Melle comme 3e composant x.O = z x.Jean Melle = z Toutes les associations ayant Jean Melle comme 2e 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 » !
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 le mot 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 Semainomenon : ce qui est exprimé, ou contenu, qui ne représente pas une entité physique signifié référent signifiant Tynchanon : Objet auquel on se réfère, entité physique ou événement ou action Seimainon : expression perçue comme entité physique
Sémiologie Stoïciens Idée, concept de cheval « cheval » signifié signifiant référent Tous les chevaux existant, ayant existé, qui existeront /cheval/
Les stoïciens Platon --> Aristote --> Théophraste --> les Mégarites et les Stoïciens
Sémiologie Existant, ayant existé, qui existeront ? ! « licorne » signifié signifiant référent /licorne/ Ensemble vide ! « le référent licorne n ’a jamais eu d ’ existence réelle »
Sémiologie Exister ? 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ée du 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émiologie Exister ? 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ée du 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émiologie Signifié 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) signifiant référent
Sémiologie signifié signifiant Référent objet (Pierce) denotatum (Morris) Bedeutung (Frege) dénotation (Russell) extension (Carnap) Qu ’est ce que le signe ? Ce qui est à gauche ?
Sémiologie signifié référent Signifiant (Saussure) signe (Pierce) symbole (Ogden(Richards) véhicule du signe (Morris) expression (Hjelmslev) representamen (Pierce) sème (Buyssens)
Sémiologie Linguistique signifié signifiant référent
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 : Une syntaxe formelle Une sémantique formelle (qui peut être dénotationnelle ou opérationnelle Spécifier n’est pas écrire un algorithme. Mais on passe de la Spé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’appartenance Ensembles de base Produit cartésien Ensemble 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érieur de lui-même. X : X
Typage « Dans un village d’Andalousie, le barbier rase toutes les personnes Qui ne se rasent pas elles-mêmes » Qui rase le barbier ?
Invariant MACHINE MDBS SETS ETUDIANT; GROUPE = {g1, g2, g3} VARIABLES promo ,estMembreDe INVARIANT promo <: ETUDIANT & estMembreDe : promo +-> GROUPE INITIALISATION promo := {} || 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 Ensembles donc constantes ! Incommensurables. On n’a pas le droit d’écrire : A /\ B ou encore A \/ B S’écrit en B SETS 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 base et un ensemble.
Eléments des ensembles de base SETS DEPARTEMENT; COMMUNE VARIABLES communes, départements, estDans INVARIANT communes <: COMMUNE & départements <: DEPARTEMENT & estDans : communes -->> départements
SETS SETS COMMUNE VARIABLES communes, départements INVARIANT communes <: COMMUNE & départements <: POW (COMMUNE) Un département est un ensemble de communes. On ne décider de créer deux nouveaux départements sans, en même temps, Décider de communes qui le constitueront. Rien ne distingue un ensemble 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 de communications à 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 Une interface : des « boutons », des noms d’opération avec paramètres d’entrée, de sortie Variables avec un invariant Constantes avec propriétés Un état encapsulé op3 op1 op4 op2 Initialisation Corps des opérations
Machine abstraite MACHINE (paramètres) CONSTRAINTS INVARIANT prédicat sur les paramètres SETS ensembles de base CONSTANTS liste des constantes PROPERTIES prédicat sur les constantes VARIABLES liste des variables INVARIANT prédicat sur les variables INITIALISATION pour s’assurer que notre spec a un modèle OPERATIONS préconditionnées ou gardées END
Autres types de machines En B, on a aussi : des REFINEMENT des IMPLEMENTATIONS Tout le développement est assisté par la preuve.
2 variables INVARIANT promo <: ETUDIANT & VARIABLES estMembreDe : promo +-> GROUPE VARIABLES estMembreDe, promo ETUDIANT GROUPE estMembreDe g1 promo g2 g3
Pré-condition OPERATIONS ajoutMembre (ee, gg) = PRE MACHINE MDBS SETS ETUDIANT; GROUPE = {g1, g2, g3} VARIABLES promo ,estMembreDe INVARIANT promo <: ETUDIANT & estMembreDe : promo +-> GROUPE INITIALISATION promo := {} || 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. Mais Vous ê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 cette opération. Ce n’est pas alors que vous avez sauté par la fenêtre qu’il faut exé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 du domaine du vol. (voir notion de domaine d’une relation)
Fonction de conversion Le crash d’Ariane 5 Accélération : min4..max4 Ariane 4 x : min4..max4 Fonction de conversion de A4 y
Fonction de conversion Ariane 5 Accélération : min5..max5 Non respecté car mas5 > max4 x : min4..max4 Fonction de conversion de A4 Levée d’une exception y Commutation sur un autre calculateur et exécution de la même fonction
La chute…après la faute ! Copie du composant B Y := code erreur Composant B Braquage tuyères
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, b := b, a] (a <= b) = a<= b Plus faible pré-condition (Dijkstra) [a := y ||z := k] (x > k) = y > k
Indéterminisme ajoutEtudiant = PRE ETUDIANT – promo /= {} THEN MACHINE MDBS SETS ETUDIANT; GROUPE = {g1, g2, g3} VARIABLES promo ,estMembreDe INVARIANT promo <: ETUDIANT & estMembreDe : promo +-> GROUPE INITIALISATION promo := {} || estMembreDe := {} ajoutEtudiant = PRE ETUDIANT – promo /= {} THEN ANY ee WHERE ee : ETUDIANT – promo THEN promo := promo \/ {ee} END;
Définitions Une définition n’est pas une variable ! DEFINITIONS MACHINE MDBS SETS ETUDIANT; GROUPE = {g1, g2, g3} VARIABLES promo ,estMembreDe INVARIANT promo <: ETUDIANT & estMembreDe : promo +-> GROUPE INITIALISATION promo := {} || estMembreDe := {} Une définition n’est pas une variable ! DEFINITIONS groupesAffectés = ran (estMembreDe)
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 dans l’invariant. Si invariant « léger », on ne prouvera pas grand chose !
Obligation de preuve Pré-condition & Invariant => [Substitution] Invariant INVARIANT x < 100 OPERATIONS incrémentation = PRE THEN x := 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 => Q P Q (P => Q) & (Q => P) btrue or Q btrue D’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.
Idem non esse et non probari 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 On réduit l’indéterminisme On affaiblit les pré-conditions 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 Réduction indéterminisme Après I Abstrait I Opération S J J Opération T Concret I & J & P => Q & [T] not [S] not J
Composant Comme « objet », le terme recouvre tout et n’importe quoi pourvu Que ç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 composants Encapsule ses services N’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 le comptable) 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 composant dans 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 base de 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 comme un 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 dont l’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 relation est 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’est une 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 de signifiants ! Imaginez la même chose pour le code de la route ou pour un un 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 1 1 A B R ( A, B) A >->> B R1(A, B) R2 (B) 0..1 R2 (A) R3 (B) A 0..1 0..1 B A >+-> B
« association qualifiée » ?! Bât estDans estDans : salle --> Bât salle U aPourN° NAT aPourN° : salle --> NAT estDans >< aPourN° : salle >--> Bât * NAT bâtiment salle Salle (n°)
Manufacturer Bottle product(Date) Size : Number SETS BOUTEILLE; FABRICANT; DATE INVARIANT fabricants <: FABRICANT & bouteilles <: BOUTEILLE & aEtéProduitePar : bouteilles -->> fabricants & aEtéProduiteLe : bouteilles -->> DATE & aPourTaille : bouteilles +-> NAT & aEtéProduitePar >< aEtéProduiteLe : bouteilles >--> fabricants
Automates de Harel en B S1 Sn … SETS SS = {S1, …, Sn} VARIABLES ss INVARIANT ss : SS INITIALISATION ss := S1
Initialisation indéterministe … Sn ss :: SS
Transition S1 E S2 E = IF ss = S1 THEN ss := S2 END;
Plusieurs transitions, même évt … Si E S` OPERATION E = CASE ss OF EITHER S1 THEN ss := S1 … OR Si THEN ss := ss` END;
Action sur événement S1 E/act S2 OPERATIONS E = IF ss = S1 THEN END
Action sur initialisation ss := S1 || act
Condition sur transition E [cond]/act S2 OPERATIONS E = IF ss = S1 & cond THEN ss := S2 || act END;
Conditions sur plusieurs trans. E[cond1]/act S1’ S1 S1’’ E[condi]/acti OPERATIONS E = SELECT ss = S1 & cond1 THEN ss := S1’ || act1 … WHEN ss = S1 & condi THEN ss := Si’ || acti ELSE skip END;
Transition avec paramètre E(para) [cond]/act S1 S2 OPERATIONS E (para) = IF ss = S1 & cond THEN ss := S2 || act END;
Transitions simultanées E(para) = IF ss = S1 & cond1 & cond2 THEN ss := S3 || act1 || act2 END; E(para) [cond1]/act1 S2 [cond2]/act2 S3
Entrée dans super état E S1 R1 R2 … S2 SETS SS = {S1, S2}; RR = {R1, R2} VARIABLES ss, rr INVARIANT ss : SS & rr : RR OPERATIONS E = IF ss = S1 THEN ss := S2 || rr := R1 END;
Etats indépendants simultanés R Q Q1 R1 … … Qn Rm SETS SS = {S1,…, Sn}; QQ = {Q1,.., Qn}; RR = {R1,…, Rm} VARIABLES ss, qq, rr INVARIANT ss : SS & qq : QQ & rr : SS
Transition vers deux sous-états Q1 Qn … S1 R1 Rm … OPERATIONS E = IF ss = S1 THEN ss := S2 || qq := Q1 || rr := R1 END;
2 transitions dans 2 états conc. E Q1 Q2 OPERATIONS E = BEGIN IF qq = Q1 THEN qq := Q2 END || IF rr = R1 THEN rr := R2 END END; R1 E R2
Communication Communication entre états concurrents : Les états concurrents peuvent communiquer par variables globales. Les var. globales peuvent être mises à jour dans les actions et lues Dans les actions et les conditions 2) La condition ou l’action d’une transaction peut dépendre du sous- État concurrent d’un état concurrent 3) Les états concurrents peuvent communiquer par diffusion des Événements. Sur la diffusion d’un événement, tous les états Concurrents 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 E1/E2 S1 S2 OPERATIONS E = IF ss = S1 THEN ss := S2 || E2 END;
MACHINE M SETS P={Q, R}; S = {T, U, V}; W = {X, Y} VARIABLES p, s, w INVARIANT p:P & s:S & w:W INITIALISATION p := Q || s := T || w := X DEFINITIONS Q T S E U H E R V F/G P W G/H X Y E (Q, T, X) -E--> (R, U, X) (R, U, X) - E --> (Q, V, Y) HH = IF p=R THEN p:= Q END; GG = IF w = X THEN w:= Y END;
OPERATIONS E = 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 G = GG; H = HH
Réutiliser des composants - La réutilisation nécessite l’abstraction : on ne doit pas avoir à 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 fait ce 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 processus Séquentiels communicants (CCS de Milner, CSP de Hoare) Ce sera pour une autre fois… mais vous pouvez fréquenter votre bibliothèque et le web. On n’a pas attendu UML pour utiliser automates, expressions régulières, cardinalités (pardon multiplicité !!!) de relations. Bon voyage dans le monde du génie logiciel à construire.