Construction formelle de logiciels



Documents pareils
Université de Sherbrooke, Département d informatique

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Génération de code à partir d une spécification B : Application aux bases de données

Recherche dans un tableau

OCL - Object Constraint Language

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

MEMOIRE. Présenté à. L École Nationale d Ingénieurs de Sfax. en vue de l obtention du MASTERE

Introduction à MATLAB R

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Corrigé des TD 1 à 5

Introduction à la programmation concurrente

Génie Logiciel avec Ada. 4 février 2013

Algorithmique et Programmation, IMA

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Structurer ses données : les tableaux. Introduction à la programmation

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Vérification formelle de la plate-forme Java Card

Classes et Objets en Ocaml.

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Programmer en JAVA. par Tama

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

UML et les Bases de Données

Qualité du logiciel: Méthodes de test

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

1 Recherche en table par balayage

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Cours 1 : La compilation

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Paginer les données côté serveur, mettre en cache côté client

L ALGORITHMIQUE. Algorithme

Algorithmique des Systèmes Répartis Protocoles de Communications

Application 1- VBA : Test de comportements d'investissements

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Plan du cours Cours théoriques. 29 septembre 2014

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Traduction des Langages : Le Compilateur Micro Java

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

1. Structure d'un programme FORTRAN 95

Cours Informatique Master STEP

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

STAGE IREM 0- Premiers pas en Python

RÉALISATION D UN SITE DE RENCONTRE

Algorithmique et programmation : les bases (VBA) Corrigé

Examen Médian - 1 heure 30

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Problèmes liés à la concurrence

Les processus légers : threads. Système L3, /31

Présentation du langage et premières fonctions

Gestion mémoire et Représentation intermédiaire

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Formula Negator, Outil de négation de formule.

Présentation du PL/SQL

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Université de Bangui. Modélisons en UML

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

PHP 4 PARTIE : BASE DE DONNEES

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Bases de programmation. Cours 5. Structurer les données

TP 1. Prise en main du langage Python

Propagation sur réseau statique et dynamique

Java DataBaseConnectivity

Organigramme / Algorigramme Dossier élève 1 SI

La Certification de la Sécurité des Automatismes de METEOR

Mysql avec EasyPhp. 1 er mars 2006

AWS avancé. Surveiller votre utilisation d EC2

Surveillance et maintenance prédictive : évaluation de la latence de fautes. Zineb SIMEU-ABAZI Univ. Joseph Fourier, LAG)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Utilitaires méconnus de StrataFrame

as Architecture des Systèmes d Information

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Programmation Web. Madalina Croitoru IUT Montpellier

Introduction à la Programmation Parallèle: MPI

CREATION WEB DYNAMIQUE

.NET - Classe de Log

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

1 Modélisation d une base de données pour une société de bourse

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours d algorithmique pour la classe de 2nde

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

PHP. PHP et bases de données

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

IFT2255 : Génie logiciel

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Transcription:

Construction formelle de logiciels La méthode B J. Christian Attiogbé Novembre 2008, maj 11/2009, 10/2010 J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 1 / 48 Plan de la suite Plan 1 Exemple de raffinement 2 La technique de raffinement 3 Substitutions de raffinement 4 Obligations de preuve de raffinement Obligations de preuve 5 Structuration des logiciels Architecture type de construction de logiciels Architecture type de construction de logiciels 6 Composition de machines - architecure 7 Implantation (illustration avec AtelierB V3.7) 8 Implantation avec AtelierB V4 J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 2 / 48

Exemple de raffinement Exemple de raffinement Modélisation et développement d un système de réservation de ressources Il y a N ressources à réserver/libérer On réserve (allocation) en fonction de la disponibilité des ressources les ressources réservées sont par la suite libérées J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 3 / 48 Exemple de raffinement Exemple : Réservation de ressources n rsrc 0..100 Reservation n rsrc = cardinal de l ensemble réserver - 1 élément libérer + 1 élément J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 4 / 48

Exemple de raffinement MACHINE Reservation VARIABLES n_rsrc INVARIANT n_rsrc : 0..100 INITIALISATION n_rsrc := 100 OPERATIONS reserver = PRE n_rsrc > 0 THEN n_rsrc := n_rsrc - 1 ; liberer = PRE n_rsrc < 100 THEN n_rsrc := n_rsrc + 1 ; bb <-- disponibilite = bb :: BOOL // ou bb := bool(0 < n_rsrc) J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 5 / 48 Exemple de raffinement Preuve de cohérence Le développeur de la machine abstraite a deux types d obligations de preuve : montrer que l INITIALISATION établit l invariant Il faut montrer que 100 0..100 [n rsrc := 100](n rsrc 0..100) J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 6 / 48

Exemple de raffinement Preuve de cohérence On doit prouver que chaque opération, lorsqu elle est appelée sous sa PREcondition, préserve l invariant. Pour l opération reserver il faut prouver : n rsrc 0..100 0<n rsrc n rsrc 1 0..100 Pour l opération disponibilite il faut prouver : n rsrc 0..100 (n rsrc>0 (n rsrc>0)) n rsrc 0..100 J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 7 / 48 Exemple de raffinement Réservation de ressources (Raffinement) Reservation1 r_occupées r_libres réserver trouver 1 élément libre libérer trouver 1 élément occupé J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 8 / 48

Exemple de raffinement REFINEMENT Reservation_R1 REFINES Reservation VARIABLES r_libres, r_occupees // n_rscrc est incluse // nouvelles variables moins abstraites INVARIANT r_libres : POW(INTEGER) & r_occupees : POW(INTEGER) & r_libres /\ r_occupees = {} & n_rsrc = card(r_libres) // invariant de liaison INITIALISATION r_libres, r_occupees, n_rsrc := 1..100, {}, 100 J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 9 / 48 Exemple de raffinement OPERATIONS reserver = // reecrite avec les nouvelles variables ANY ss WHERE ss : r_libres // de façon non déterministe THEN r_libres := r_libres - {ss} r_occupees := r_occupees \/ {ss} n_rsrc := n_rsrc - 1 ; J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 10 / 48

Exemple de raffinement liberer = // reecrite avec les nouv var ANY ss WHERE ss : r_occupees THEN r_libres := r_libres \/ {ss} r_occupees := r_occupees - {ss} n_rsrc := n_rsrc + 1 ; bb <-- disponibilite = IF 0 < n_rsrc THEN bb := TRUE ELSE bb := FALSE J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 11 / 48 Exemple de raffinement Réservation de ressources (Implantation) Implantation Tableau (structure prédéfinie) TRUE TRUE FALSE TRUE FALSE 1 100 r_occupées TRUE FALSE r_libres J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 12 / 48

Exemple de raffinement Structure de l implantation IMPLEMENTATION Reservation_I1 REFINES Reservation_R1 IMPORTS // On importe des machines prédéfinies VARIABLES // nouvelles variables concretes INVARIANT INITIALISATION OPERATIONS // elles sont maintenant écrites avec des susbtitutions de raffinement J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 13 / 48 et d implantation (à voir dans la suite du cours) La technique de raffinement Raffinement : technique de développement L idée du raffinement : On part d une machine abstraite définissant un modèle mathématique abstrait, on raffine ce modèle pour obtenir un modèle concret : - le modèle abstrait n est pas exécutable. Pourquoi? (on y utilise des objets mathématiques) - pour obtenir un modèle équivalent sur le plan des fonctionnalités mais plus concret. (on y utilise des objets informatiques) J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 14 / 48

La technique de raffinement Raffinement : technique de développement La finalité du raffinement est l obtention du code exécutable. Il faut garantir que le raffinement est correct : (la preuve du raffinement). obligations de preuve de raffinement J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 15 / 48 La technique de raffinement Démarche de raffinement Quoi raffiner dans le modèle? Les variables et l invariant Partie statique - espace d états Changement de variables : Les opérations Partie dynamique - substitutions généralisées raffinement des substitutions. Introduire des substitutions de raffinement (jusqu à atteindre des substitutions de programmation). J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 16 / 48

La technique de raffinement Démarche de raffinement : Comment raffiner? Introduction de structures de données et représentation de structures par d autres plus concrètes. Utiliser la clause refines pour faire le lien entre la machine abstraite et son raffinement REFINEMENT MM R1 REFINES MM Raffinement de l espace d états : introduire de nouvelles variables (concrètes), choix de structures moins abstraites, liaisons entre les variables concrètes et abstraites par un invariant de liaision J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 17 / 48 La technique de raffinement Démarche de raffinement : Comment raffiner? Raffinement des opérations : Les interfaces ne peuvent pas être modifiées. Réécrire les opérations abstraites avec les nouvelles variables et les substitutions appropriés (introduction des séquences, boucles, var locales). Introduire des substitutions de raffinements. Lever le non-déterminisme Affaiblir dans la machine raffinée (concrète), les préconditions qu avaient les opérations dans la machine abstraite, jusqu à les faire disparaître. compléter le langage de substitutions. J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 18 / 48

La technique de raffinement Exemples de raffinement Exemples déjà vus : Réservation de ressources Division euclidienne J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 19 / 48 Substitutions de raffinement Substitutions de raffinement Substitutions séquentielles Soient S et T deux substitutions, lasubstitutionséquentielleestnotée: S ;T Sa définition sémantique s exprime par : [S;T]R [S][T]R [S]([T]R) S établit[t]r J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 20 / 48

Substitutions de raffinement Substitutions de raffinement Substitution de boucles La substitution de boucle à la forme suivante : while P do invariant variant end S I V J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 21 / 48 Substitutions de raffinement Sémantique de la substitution de boucle sur le plan sémantique, c est I /* le variant est un entier */ x.(i V NATURAL) /* le variant décroit à chaque pas */ (x,n).(i P [n := V][S](V < n)) /* continuation de la boucle */ x.(i P [S]I) @x.([x := x ](I P) x := x )) J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 22 / 48

Substitutions de raffinement Substitution VAR IN Bloc avec variables locales La notation est : var x in // introduction de variables locales S end J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 23 / 48 Obligations de preuve de raffinement Obligations de preuve de raffinement Intuition : la machine concrète ne fait pas ce qu elle ne devrait pas faire (elle ne contredit pas l abstraite) J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 24 / 48

Structuration des logiciels Structure type de construction en B MACHINE Appli /* un scenario pour tester les machines élémentaires */ où on appelle une opération MACHINE Interface où on teste les préconditions avant d appeler les opérations voulues MACHINE MD Où on définit les opérations élémentaires issues du cahier de charges J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 25 / 48 Structuration des logiciels Exemple du développement d une application autour d un annuaire Figure: Architecture type de développement en B J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 26 / 48

Structuration des logiciels Exemple d une application : gestion de positions d un pointeur (x,y) Figure: Architecture type de développement en B J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 27 / 48 Composition de machines - architecure Architecture de grands systèmes Composition de machines machines de grande taille. Modules - Composition - Architecture en couches Modularité Composition de machines Hiérarchisation Les clauses INCLUDES, EXTS, PROMOTES Partage Les clauses SEES, USES J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 28 / 48

Composition de machines - architecure Machines du développement BANQUE refines BANQUE_I imports APPLICATION refines imports INTERFACE_BANQUE refines sees APPLICATION_I INTERFACE_BANQUE_I imports REQUETES imports imports refines REQUETES_I sees sees sees sees Machines de la librairie B BASIC_IO BASIC_ARITHMETIC J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 29 / 48 Hiérarchisation Composition de machines - architecure INCLUDES permet d inclure une machine dans une autre + promotion de certaines opérations PROMOTES MACHINE MA INCLUDES MB /* acces par Opmb aux varb */ PROMOTES Opmb1, Opmb3 /* deviennent des Op. de MA */ J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 30 / 48

Hiérarchisation Composition de machines - architecure EXTS, inclusion mais pas besoin de promotes MACHINE MA EXTS MB op1 op2 op3 Machine A EXTS op1 op2 op3 Machine op4 J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 31 / 48 Partage Composition de machines - architecure SEES fait le partage de type lecture seule MACHINE MA SEES MB J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 32 / 48

Composition de machines - architecure Partage USES fait le partage de type lecture/écriture MACHINE MA USES MB MC includes MA, MB MA USES MB MA et MB devront être incluses dans une autre machines. J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 33 / 48 Implantation (illustration avec AtelierB V3.7) Eléments pour l implantation des machines(atelierb V3.7) L Atelier B propose un ensemble de composants prédéfinis. Ils sont importés via la clause IMPORTS. Référence : Atelier B, Composants réutilisables, manuel de référence, Steria J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 34 / 48

Implantation (illustration avec AtelierB V3.7) Implantation des ensembles différés Les ensembles différés (clause SETS) peuvent être implantés par des ensembles concrets énumérés ou définis par un intervalle. La clause VALUES est utilisée. MACHINE M1 SETS ETAT ; PROCESSUS VARIABLES IMPLEMENTATION M1 I REFINES M1 VALUES ETAT = {actif, pret, bloque} /* énuméré */ ; PROCESSUS = 0..100 /* intervalle */ J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 35 / 48 Implantation (illustration avec AtelierB V3.7) Implantation d ensembles et fonctions Implantation des ensembles par des ensembles prédéfinis Le composant prédéfini L SET réalise un ensemble par une variable nommée set vrb(qui est une séquence injective). Le codomaine de cette séquence représente les images de l ensemble à implanter. Plusieurs opérations sont fournies par ce composant: le cardinal de l ensemble (CARD SET), recherche d un élément de l ensemble (FIND SET), test si l ensemble est plein(is FULL SET), retrait d un élément de l ensemble, etc. J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 36 / 48

Implantation (illustration avec AtelierB V3.7) Implantation d ensembles et fonctions MACHINE Proc SETS PROCESSUS = {p1, p2, p3, p4, p5} VARIABLES prets INVARIANT prets <: PROCESSUS /* ensemble de processus prets */ IMPLEMENTATION Proc I REFINES Proc IMPORTS L SET(5, PROCESSUS) INVARIANT prets = ran(set vrb) INITIALISATION prets := {p2, p4} INITIALISATION INS SET(p2);INS SET(p4); J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 37 / 48 Implantation (illustration avec AtelierB V3.7) Implantation des ensembles et fonctions par des tableaux Les composants prédéfinis L ARRAY1, L ARRAY3, L ARRAY5 sont des réalisations de tableau à une dimension. Ils peuvent être utilisés pour implanter des ensembles (domaine ou codomaine de fonctions). L ARRAY3 réalise un tableau à une dimension nommé arr vrb et fournit plusieurs opérations intéressantes, telles que : initialisation d une portion du tableau avec une même valeur, recherche d une valeur dans une portion du tableau. J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 38 / 48

Exemple Implantation (illustration avec AtelierB V3.7) MACHINE ProcE SETS PROCESSUS = 0..100 ; ETAT = {pret, actif, bloque} VARIABLES etat INVARIANT etat : PROCESSUS --> ETAT /* etat des processus */ INITIALISATION etat := PROCESSUS x {pret} OPERATIONS id, bl <-- chercherproc(pret) = /* recherche d un processus pret */ PRE pret : ran(etat) THEN id :: etat~[{pret}] bl :: BOOL J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 39 / 48 Implantation (illustration avec AtelierB V3.7) Une implantation utilisant L ARRAY3 est présentée ci-dessous. IMPLEMENTATION ProcE I REFINES ProcE IMPORTS etats.l ARRAY3(ETAT, 100) /* importat. d 1 exemplaire (nommé eta de L ARRAY3, BASIC ARITHMETIC /* pour disposer des opérations arithmét., BASIC BOOL /* et booléennes INVARIANT etats.arr vrb = etat /* liaison de la variable abstraite eta la variable concrete arr vrb INITIALISATION etats. SET ARRAY(0,100, pret) /* tous les elts à pret */ OPERATIONS id, bl <-- chercherproc(pret) = id, bl <-- etats. SEACH MAX EQL ARRAY(0,100,pret) J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 40 / 48

Implantation (illustration avec AtelierB V3.7) Implantation des fonctions Le composant L PFNC permet d implanter les fonctions partielles. Plusieurs autres composants sont disponibles pour implanter les fonctions. Exemple : BASIC ARRAY RGE. BASIC ARRAY RGE est une machine de base qui réalise un tableau à deux dimensions. Ce composant offre une réalisation à travers une variable arr vrb de la forme : arr vrb : LIGNES > (COLONNES > VALEURS). J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 41 / 48 Implantation (illustration avec AtelierB V3.7) Implantation des fonctions (suite) arr vrb : LIGNES > (COLONNES > VALEURS). LIGNES représente l intervalle des valeurs d indice des lignes du tableau, COLONNES représente l intervalle des valeurs d indice des colonnes du tableau, et VALEUR représente l intervalle des valeurs des éléments du tableau. J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 42 / 48

Implantation (illustration avec AtelierB V3.7) Implantation des fonctions (suite) MACHINE ProcTrace SETS PROCESSUS = p1, p2, p3 ; DATE = 1..5 ; ETAT = pret, actif, bloque VARIABLES trace5 INVARIANT trace5 : PROCESSUS --> (DATE +-> ETAT) /* On modelise la trace des 5 derniers etats des processus */ INITIALISATION trace5 := (p1,{1 -> pret, 2 -> pret,3 -> pret,4 -> pret, 5 -> pret}), (p2,{1 -> pret, 2 -> pret,3 -> pret,4 -> pret, 5 -> pret}), (p3,{1 -> pret, 2 -> pret,3 -> pret,4 -> pret, 5 -> pret}) J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 43 / 48 Implantation (illustration avec AtelierB V3.7) Implantation des fonctions (suite) Voici une implantation utilisant BASIC ARRAY RGE pour réaliser la machine ProcTrace. IMPLEMENTATION ProcTrace_I REFINES ProcTrace IMPORTS BASIC_ARRAY_RGE(DATE, ETAT, PROCESSUS) INVARIANT arr_vrb = trace5 /* la liaison entre la variable abstraite (trace et la concrete (arr_vrb) INITIALISATION STR_ARR_RGE(p1, 1, pret); STR_ARR_RGE(p1, 2, pret); STR_ARR_RGE(p1, 3, pret); J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 44 / 48

Implantation (illustration avec AtelierB V3.7) Remarque : Les fonctions dom et ran restent applicables aux variables concretes. Par exemple dom(ran(arr vrb)) est l ensemble DATE. De cette façon, l invariant de liaison peut permettre de lier les variables de fonctions n ayant pas strictement la même signature que arr vrb. Exemple MACHINE ProcTracep INVARIANT /* de la machine abstraite */ trace5prime : PROCESSUS x DATE +-> ETAT J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 45 / 48 Implantation (illustration avec AtelierB V3.7) on peut réaliser l implantation de la façon suivante : IMPLEMENTATION ProcTracep_I IMPORTS BASIC_ARRAY_RGE(DATE, ETAT, PROCESSUS) INVARIANT /* dans l implantation */ ran(ran(arr_vrb)) = ran(trace5prime) /* ETAT */ dom(ran(arr_vrb)) = ran(dom(trace5prime)) /* DATE */ dom(arr_vrb) = dom(dom(trace5prime)) /* PROCESSUS */ J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 46 / 48

Implantation (illustration avec AtelierB V3.7) Machines du développement BANQUE refines BANQUE_I imports APPLICATION refines imports INTERFACE_BANQUE refines sees APPLICATION_I INTERFACE_BANQUE_I imports REQUETES imports imports refines REQUETES_I sees sees sees sees Machines de la librairie B BASIC_IO BASIC_ARITHMETIC J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 47 / 48 Implantation avec AtelierB V4 Implantation avec AB V4 Dans la version 4, il n y a plus la bibliothèque de composants réutilisables ; le générateur de code utilisé est ComenC. Voir le mémento prévu à cet effet. J. Christian Attiogbé (Novembre 2008, maj 11/2009, Construction 10/2010) formelle de logiciels 48 / 48